diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-26 16:15:31 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-26 16:15:31 -0700 | 
| commit | 4496d937a518fde0d0e1980e4ab470cedb4b50cd (patch) | |
| tree | a02d57e13b44483417973a306f9fd23743959375 /arch/m68k | |
| parent | 8e9d2089723d08d51e66c5eea49253d76e27941e (diff) | |
| parent | 4b2873ba0bda7dc747cde8b6c7dc6c0b01ea6213 (diff) | |
| download | linux-4496d937a518fde0d0e1980e4ab470cedb4b50cd.tar.bz2 | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
  m68k: irq_node.handler() should return irqreturn_t
  m68k: section mismatch fixes: Atari SCSI
  m68k: section mismatch fixes: DMAsound for Atari
  MAINTAINERS: Replace dead link to m68k CVS repository by link to new git repository
  m68k: mac - Add SWIM floppy support
  m68k: mac - Add a new entry in mac_model to identify the floppy controller type.
  m68k: Add install target
Diffstat (limited to 'arch/m68k')
| -rw-r--r-- | arch/m68k/Makefile | 3 | ||||
| -rw-r--r-- | arch/m68k/include/asm/irq_mm.h | 3 | ||||
| -rw-r--r-- | arch/m68k/include/asm/macintosh.h | 7 | ||||
| -rw-r--r-- | arch/m68k/install.sh | 52 | ||||
| -rw-r--r-- | arch/m68k/mac/config.c | 207 | ||||
| -rw-r--r-- | arch/m68k/mac/via.c | 9 | 
6 files changed, 226 insertions, 55 deletions
| diff --git a/arch/m68k/Makefile b/arch/m68k/Makefile index 8133dbc44964..570d85c3f97f 100644 --- a/arch/m68k/Makefile +++ b/arch/m68k/Makefile @@ -117,3 +117,6 @@ endif  archclean:  	rm -f vmlinux.gz vmlinux.bz2 + +install: +	sh $(srctree)/arch/m68k/install.sh $(KERNELRELEASE) vmlinux.gz System.map "$(INSTALL_PATH)" diff --git a/arch/m68k/include/asm/irq_mm.h b/arch/m68k/include/asm/irq_mm.h index 226bfc0f21b1..0cab42cad79e 100644 --- a/arch/m68k/include/asm/irq_mm.h +++ b/arch/m68k/include/asm/irq_mm.h @@ -3,6 +3,7 @@  #include <linux/linkage.h>  #include <linux/hardirq.h> +#include <linux/irqreturn.h>  #include <linux/spinlock_types.h>  /* @@ -80,7 +81,7 @@ struct pt_regs;   * interrupt source (if it supports chaining).   */  typedef struct irq_node { -	int		(*handler)(int, void *); +	irqreturn_t	(*handler)(int, void *);  	void		*dev_id;  	struct irq_node *next;  	unsigned long	flags; diff --git a/arch/m68k/include/asm/macintosh.h b/arch/m68k/include/asm/macintosh.h index 05309f7e3d06..50db3591ca15 100644 --- a/arch/m68k/include/asm/macintosh.h +++ b/arch/m68k/include/asm/macintosh.h @@ -34,6 +34,7 @@ struct mac_model  	char scc_type;  	char ether_type;  	char nubus_type; +	char floppy_type;  };  #define MAC_ADB_NONE		0 @@ -71,6 +72,12 @@ struct mac_model  #define MAC_NO_NUBUS		0  #define MAC_NUBUS		1 +#define MAC_FLOPPY_IWM		0 +#define MAC_FLOPPY_SWIM_ADDR1	1 +#define MAC_FLOPPY_SWIM_ADDR2	2 +#define MAC_FLOPPY_SWIM_IOP	3 +#define MAC_FLOPPY_AV		4 +  /*   *	Gestalt numbers   */ diff --git a/arch/m68k/install.sh b/arch/m68k/install.sh new file mode 100644 index 000000000000..9c6bae6112e3 --- /dev/null +++ b/arch/m68k/install.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# +# This file is subject to the terms and conditions of the GNU General Public +# License.  See the file "COPYING" in the main directory of this archive +# for more details. +# +# Copyright (C) 1995 by Linus Torvalds +# +# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin +# +# "make install" script for m68k architecture +# +# Arguments: +#   $1 - kernel version +#   $2 - kernel image file +#   $3 - kernel map file +#   $4 - default install path (blank if root directory) +# + +verify () { +	if [ ! -f "$1" ]; then +		echo ""                                                   1>&2 +		echo " *** Missing file: $1"                              1>&2 +		echo ' *** You need to run "make" before "make install".' 1>&2 +		echo ""                                                   1>&2 +		exit 1 +	fi +} + +# Make sure the files actually exist +verify "$2" +verify "$3" + +# User may have a custom install script + +if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi +if [ -x /sbin/${CROSS_COMPILE}installkernel ]; then exec /sbin/${CROSS_COMPILE}installkernel "$@"; fi + +# Default install - same as make zlilo + +if [ -f $4/vmlinuz ]; then +	mv $4/vmlinuz $4/vmlinuz.old +fi + +if [ -f $4/System.map ]; then +	mv $4/System.map $4/System.old +fi + +cat $2 > $4/vmlinuz +cp $3 $4/System.map + +sync diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c index 98b6bcfb37bf..be017984a456 100644 --- a/arch/m68k/mac/config.c +++ b/arch/m68k/mac/config.c @@ -22,6 +22,7 @@  /* keyb */  #include <linux/init.h>  #include <linux/vt_kern.h> +#include <linux/platform_device.h>  #define BOOTINFO_COMPAT_1_0  #include <asm/setup.h> @@ -43,6 +44,10 @@  #include <asm/mac_oss.h>  #include <asm/mac_psc.h> +/* platform device info */ + +#define SWIM_IO_SIZE 0x2000	/* SWIM IO resource size */ +  /* Mac bootinfo struct */  struct mac_booter_data mac_bi_data; @@ -224,7 +229,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_II,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_IWM  	},  	/* @@ -239,7 +245,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_II,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_IWM  	}, {  		.ident		= MAC_MODEL_IIX,  		.name		= "IIx", @@ -247,7 +254,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_II,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_IICX,  		.name		= "IIcx", @@ -255,7 +263,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_II,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_SE30,  		.name		= "SE/30", @@ -263,7 +272,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_II,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	},  	/* @@ -280,7 +290,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_IIFX,  		.name		= "IIfx", @@ -288,7 +299,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_IOP, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_IOP  	}, {  		.ident		= MAC_MODEL_IISI,  		.name		= "IIsi", @@ -296,7 +308,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_IIVI,  		.name		= "IIvi", @@ -304,7 +317,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_IIVX,  		.name		= "IIvx", @@ -312,7 +326,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	},  	/* @@ -326,7 +341,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_CCL,  		.name		= "Color Classic", @@ -334,7 +350,9 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS}, +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2 +	},  	/*  	 *	Some Mac LC machines. Basically the same as the IIci, ADB like IIsi @@ -347,7 +365,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_LCII,  		.name		= "LC II", @@ -355,7 +374,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_LCIII,  		.name		= "LC III", @@ -363,7 +383,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	},  	/* @@ -383,7 +404,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_QUADRA,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_Q605_ACC,  		.name		= "Quadra 605", @@ -391,7 +413,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_QUADRA,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_Q610,  		.name		= "Quadra 610", @@ -400,7 +423,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA,  		.scc_type	= MAC_SCC_QUADRA,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_Q630,  		.name		= "Quadra 630", @@ -410,7 +434,8 @@ static struct mac_model mac_data_table[] = {  		.ide_type	= MAC_IDE_QUADRA,  		.scc_type	= MAC_SCC_QUADRA,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_Q650,  		.name		= "Quadra 650", @@ -419,7 +444,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA,  		.scc_type	= MAC_SCC_QUADRA,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	},  	/*	The Q700 does have a NS Sonic */  	{ @@ -430,7 +456,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA2,  		.scc_type	= MAC_SCC_QUADRA,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_Q800,  		.name		= "Quadra 800", @@ -439,7 +466,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA,  		.scc_type	= MAC_SCC_QUADRA,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_Q840,  		.name		= "Quadra 840AV", @@ -448,7 +476,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA3,  		.scc_type	= MAC_SCC_PSC,  		.ether_type	= MAC_ETHER_MACE, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_AV  	}, {  		.ident		= MAC_MODEL_Q900,  		.name		= "Quadra 900", @@ -457,7 +486,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA2,  		.scc_type	= MAC_SCC_IOP,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_IOP  	}, {  		.ident		= MAC_MODEL_Q950,  		.name		= "Quadra 950", @@ -466,7 +496,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA2,  		.scc_type	= MAC_SCC_IOP,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_IOP  	},  	/* @@ -480,7 +511,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_P475,  		.name		=  "Performa 475", @@ -488,7 +520,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_QUADRA,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_P475F,  		.name		=  "Performa 475", @@ -496,7 +529,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_QUADRA,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_P520,  		.name		=  "Performa 520", @@ -504,7 +538,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_P550,  		.name		=  "Performa 550", @@ -512,7 +547,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	},  	/* These have the comm slot, and therefore the possibility of SONIC ethernet */  	{ @@ -523,7 +559,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA,  		.scc_type	= MAC_SCC_II,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_P588,  		.name		= "Performa 588", @@ -533,7 +570,8 @@ static struct mac_model mac_data_table[] = {  		.ide_type	= MAC_IDE_QUADRA,  		.scc_type	= MAC_SCC_II,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type	= MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_TV,  		.name		= "TV", @@ -541,7 +579,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_P600,  		.name		= "Performa 600", @@ -549,7 +588,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_II, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	},  	/* @@ -565,7 +605,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA,  		.scc_type	= MAC_SCC_QUADRA,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_C650,  		.name		= "Centris 650", @@ -574,7 +615,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA,  		.scc_type	= MAC_SCC_QUADRA,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR1  	}, {  		.ident		= MAC_MODEL_C660,  		.name		= "Centris 660AV", @@ -583,7 +625,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_QUADRA3,  		.scc_type	= MAC_SCC_PSC,  		.ether_type	= MAC_ETHER_MACE, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_AV  	},  	/* @@ -599,7 +642,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB145,  		.name		= "PowerBook 145", @@ -607,7 +651,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB150,  		.name		= "PowerBook 150", @@ -616,7 +661,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_OLD,  		.ide_type	= MAC_IDE_PB,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB160,  		.name		= "PowerBook 160", @@ -624,7 +670,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB165,  		.name		= "PowerBook 165", @@ -632,7 +679,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB165C,  		.name		= "PowerBook 165c", @@ -640,7 +688,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB170,  		.name		= "PowerBook 170", @@ -648,7 +697,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB180,  		.name		= "PowerBook 180", @@ -656,7 +706,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB180C,  		.name		= "PowerBook 180c", @@ -664,7 +715,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_QUADRA,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB190,  		.name		= "PowerBook 190", @@ -673,7 +725,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_OLD,  		.ide_type	= MAC_IDE_BABOON,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB520,  		.name		= "PowerBook 520", @@ -682,7 +735,8 @@ static struct mac_model mac_data_table[] = {  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA,  		.ether_type	= MAC_ETHER_SONIC, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	},  	/* @@ -702,7 +756,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB230,  		.name		= "PowerBook Duo 230", @@ -710,7 +765,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB250,  		.name		= "PowerBook Duo 250", @@ -718,7 +774,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB270C,  		.name		= "PowerBook Duo 270c", @@ -726,7 +783,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB280,  		.name		= "PowerBook Duo 280", @@ -734,7 +792,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	}, {  		.ident		= MAC_MODEL_PB280C,  		.name		= "PowerBook Duo 280c", @@ -742,7 +801,8 @@ static struct mac_model mac_data_table[] = {  		.via_type	= MAC_VIA_IIci,  		.scsi_type	= MAC_SCSI_OLD,  		.scc_type	= MAC_SCC_QUADRA, -		.nubus_type	= MAC_NUBUS +		.nubus_type	= MAC_NUBUS, +		.floppy_type    = MAC_FLOPPY_SWIM_ADDR2  	},  	/* @@ -815,3 +875,42 @@ static void mac_get_model(char *str)  	strcpy(str, "Macintosh ");  	strcat(str, macintosh_config->name);  } + +static struct resource swim_resources[1]; + +static struct platform_device swim_device = { +	.name		= "swim", +	.id		= -1, +	.num_resources	= ARRAY_SIZE(swim_resources), +	.resource	= swim_resources, +}; + +static struct platform_device *mac_platform_devices[] __initdata = { +	&swim_device +}; + +int __init mac_platform_init(void) +{ +	u8 *swim_base; + +	switch (macintosh_config->floppy_type) { +	case MAC_FLOPPY_SWIM_ADDR1: +		swim_base = (u8 *)(VIA1_BASE + 0x1E000); +		break; +	case MAC_FLOPPY_SWIM_ADDR2: +		swim_base = (u8 *)(VIA1_BASE + 0x16000); +		break; +	default: +		return 0; +	} + +	swim_resources[0].name = "swim-regs"; +	swim_resources[0].start = (resource_size_t)swim_base; +	swim_resources[0].end = (resource_size_t)(swim_base + SWIM_IO_SIZE); +	swim_resources[0].flags = IORESOURCE_MEM; + +	return platform_add_devices(mac_platform_devices, +				    ARRAY_SIZE(mac_platform_devices)); +} + +arch_initcall(mac_platform_init); diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c index 7d97ba54536e..11bce3cb6482 100644 --- a/arch/m68k/mac/via.c +++ b/arch/m68k/mac/via.c @@ -645,3 +645,12 @@ int via_irq_pending(int irq)  	}  	return 0;  } + +void via1_set_head(int head) +{ +	if (head == 0) +		via1[vBufA] &= ~VIA1A_vHeadSel; +	else +		via1[vBufA] |= VIA1A_vHeadSel; +} +EXPORT_SYMBOL(via1_set_head); |