powerpc: Merge various powermac-related header files.
authorPaul Mackerras <paulus@samba.org>
Thu, 20 Oct 2005 10:53:39 +0000 (20:53 +1000)
committerPaul Mackerras <paulus@samba.org>
Thu, 20 Oct 2005 10:53:39 +0000 (20:53 +1000)
Except for smu.h, which moved from asm-ppc64 to asm-powerpc, all
of these moved from asm-ppc to asm-powerpc.  In each case the
asm-ppc64 version (if there was one) was just a single line
including the asm-ppc version.

Signed-off-by: Paul Mackerras <paulus@samba.org>
26 files changed:
include/asm-powerpc/dbdma.h [new file with mode: 0644]
include/asm-powerpc/heathrow.h [new file with mode: 0644]
include/asm-powerpc/keylargo.h [new file with mode: 0644]
include/asm-powerpc/macio.h [new file with mode: 0644]
include/asm-powerpc/mediabay.h [new file with mode: 0644]
include/asm-powerpc/ohare.h [new file with mode: 0644]
include/asm-powerpc/pmac_feature.h [new file with mode: 0644]
include/asm-powerpc/pmac_low_i2c.h [new file with mode: 0644]
include/asm-powerpc/smu.h [new file with mode: 0644]
include/asm-powerpc/uninorth.h [new file with mode: 0644]
include/asm-ppc/dbdma.h [deleted file]
include/asm-ppc/heathrow.h [deleted file]
include/asm-ppc/keylargo.h [deleted file]
include/asm-ppc/macio.h [deleted file]
include/asm-ppc/mediabay.h [deleted file]
include/asm-ppc/ohare.h [deleted file]
include/asm-ppc/pmac_feature.h [deleted file]
include/asm-ppc/pmac_low_i2c.h [deleted file]
include/asm-ppc/uninorth.h [deleted file]
include/asm-ppc64/dbdma.h [deleted file]
include/asm-ppc64/keylargo.h [deleted file]
include/asm-ppc64/macio.h [deleted file]
include/asm-ppc64/pmac_feature.h [deleted file]
include/asm-ppc64/pmac_low_i2c.h [deleted file]
include/asm-ppc64/smu.h [deleted file]
include/asm-ppc64/uninorth.h [deleted file]

diff --git a/include/asm-powerpc/dbdma.h b/include/asm-powerpc/dbdma.h
new file mode 100644 (file)
index 0000000..8973565
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Definitions for using the Apple Descriptor-Based DMA controller
+ * in Power Macintosh computers.
+ *
+ * Copyright (C) 1996 Paul Mackerras.
+ */
+
+#ifdef __KERNEL__
+#ifndef _ASM_DBDMA_H_
+#define _ASM_DBDMA_H_
+/*
+ * DBDMA control/status registers.  All little-endian.
+ */
+struct dbdma_regs {
+    unsigned int control;      /* lets you change bits in status */
+    unsigned int status;       /* DMA and device status bits (see below) */
+    unsigned int cmdptr_hi;    /* upper 32 bits of command address */
+    unsigned int cmdptr;       /* (lower 32 bits of) command address (phys) */
+    unsigned int intr_sel;     /* select interrupt condition bit */
+    unsigned int br_sel;       /* select branch condition bit */
+    unsigned int wait_sel;     /* select wait condition bit */
+    unsigned int xfer_mode;
+    unsigned int data2ptr_hi;
+    unsigned int data2ptr;
+    unsigned int res1;
+    unsigned int address_hi;
+    unsigned int br_addr_hi;
+    unsigned int res2[3];
+};
+
+/* Bits in control and status registers */
+#define RUN    0x8000
+#define PAUSE  0x4000
+#define FLUSH  0x2000
+#define WAKE   0x1000
+#define DEAD   0x0800
+#define ACTIVE 0x0400
+#define BT     0x0100
+#define DEVSTAT        0x00ff
+
+/*
+ * DBDMA command structure.  These fields are all little-endian!
+ */
+struct dbdma_cmd {
+    unsigned short req_count;  /* requested byte transfer count */
+    unsigned short command;    /* command word (has bit-fields) */
+    unsigned int   phy_addr;   /* physical data address */
+    unsigned int   cmd_dep;    /* command-dependent field */
+    unsigned short res_count;  /* residual count after completion */
+    unsigned short xfer_status;        /* transfer status */
+};
+
+/* DBDMA command values in command field */
+#define OUTPUT_MORE    0       /* transfer memory data to stream */
+#define OUTPUT_LAST    0x1000  /* ditto followed by end marker */
+#define INPUT_MORE     0x2000  /* transfer stream data to memory */
+#define INPUT_LAST     0x3000  /* ditto, expect end marker */
+#define STORE_WORD     0x4000  /* write word (4 bytes) to device reg */
+#define LOAD_WORD      0x5000  /* read word (4 bytes) from device reg */
+#define DBDMA_NOP      0x6000  /* do nothing */
+#define DBDMA_STOP     0x7000  /* suspend processing */
+
+/* Key values in command field */
+#define KEY_STREAM0    0       /* usual data stream */
+#define KEY_STREAM1    0x100   /* control/status stream */
+#define KEY_STREAM2    0x200   /* device-dependent stream */
+#define KEY_STREAM3    0x300   /* device-dependent stream */
+#define KEY_REGS       0x500   /* device register space */
+#define KEY_SYSTEM     0x600   /* system memory-mapped space */
+#define KEY_DEVICE     0x700   /* device memory-mapped space */
+
+/* Interrupt control values in command field */
+#define INTR_NEVER     0       /* don't interrupt */
+#define INTR_IFSET     0x10    /* intr if condition bit is 1 */
+#define INTR_IFCLR     0x20    /* intr if condition bit is 0 */
+#define INTR_ALWAYS    0x30    /* always interrupt */
+
+/* Branch control values in command field */
+#define BR_NEVER       0       /* don't branch */
+#define BR_IFSET       0x4     /* branch if condition bit is 1 */
+#define BR_IFCLR       0x8     /* branch if condition bit is 0 */
+#define BR_ALWAYS      0xc     /* always branch */
+
+/* Wait control values in command field */
+#define WAIT_NEVER     0       /* don't wait */
+#define WAIT_IFSET     1       /* wait if condition bit is 1 */
+#define WAIT_IFCLR     2       /* wait if condition bit is 0 */
+#define WAIT_ALWAYS    3       /* always wait */
+
+/* Align an address for a DBDMA command structure */
+#define DBDMA_ALIGN(x) (((unsigned long)(x) + sizeof(struct dbdma_cmd) - 1) \
+                        & -sizeof(struct dbdma_cmd))
+
+/* Useful macros */
+#define DBDMA_DO_STOP(regs) do {                               \
+       out_le32(&((regs)->control), (RUN|FLUSH)<<16);          \
+       while(in_le32(&((regs)->status)) & (ACTIVE|FLUSH))      \
+               ;                                               \
+} while(0)
+
+#endif /* _ASM_DBDMA_H_ */
+#endif /* __KERNEL__ */
diff --git a/include/asm-powerpc/heathrow.h b/include/asm-powerpc/heathrow.h
new file mode 100644 (file)
index 0000000..22ac179
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * heathrow.h: definitions for using the "Heathrow" I/O controller chip.
+ *
+ * Grabbed from Open Firmware definitions on a PowerBook G3 Series
+ *
+ * Copyright (C) 1997 Paul Mackerras.
+ */
+
+/* Front light color on Yikes/B&W G3. 32 bits */
+#define HEATHROW_FRONT_LIGHT           0x32 /* (set to 0 or 0xffffffff) */
+
+/* Brightness/contrast (gossamer iMac ?). 8 bits */
+#define HEATHROW_BRIGHTNESS_CNTL       0x32
+#define HEATHROW_CONTRAST_CNTL         0x33
+
+/* offset from ohare base for feature control register */
+#define HEATHROW_MBCR                  0x34    /* Media bay control */
+#define HEATHROW_FCR                   0x38    /* Feature control */
+#define HEATHROW_AUX_CNTL_REG          0x3c    /* Aux control */
+
+/*
+ * Bits in feature control register.
+ * Bits postfixed with a _N are in inverse logic
+ */
+#define HRW_SCC_TRANS_EN_N     0x00000001      /* Also controls modem power */
+#define HRW_BAY_POWER_N                0x00000002
+#define HRW_BAY_PCI_ENABLE     0x00000004
+#define HRW_BAY_IDE_ENABLE     0x00000008
+#define HRW_BAY_FLOPPY_ENABLE  0x00000010
+#define HRW_IDE0_ENABLE                0x00000020
+#define HRW_IDE0_RESET_N       0x00000040
+#define HRW_BAY_DEV_MASK       0x0000001c
+#define HRW_BAY_RESET_N                0x00000080
+#define HRW_IOBUS_ENABLE       0x00000100      /* Internal IDE ? */
+#define HRW_SCC_ENABLE         0x00000200
+#define HRW_MESH_ENABLE                0x00000400
+#define HRW_SWIM_ENABLE                0x00000800
+#define HRW_SOUND_POWER_N      0x00001000
+#define HRW_SOUND_CLK_ENABLE   0x00002000
+#define HRW_SCCA_IO            0x00004000
+#define HRW_SCCB_IO            0x00008000
+#define HRW_PORT_OR_DESK_VIA_N 0x00010000      /* This one is 0 on PowerBook */
+#define HRW_PWM_MON_ID_N       0x00020000      /* ??? (0) */
+#define HRW_HOOK_MB_CNT_N      0x00040000      /* ??? (0) */
+#define HRW_SWIM_CLONE_FLOPPY  0x00080000      /* ??? (0) */
+#define HRW_AUD_RUN22          0x00100000      /* ??? (1) */
+#define HRW_SCSI_LINK_MODE     0x00200000      /* Read ??? (1) */
+#define HRW_ARB_BYPASS         0x00400000      /* Disable internal PCI arbitrer */
+#define HRW_IDE1_RESET_N       0x00800000      /* Media bay */
+#define HRW_SLOW_SCC_PCLK      0x01000000      /* ??? (0) */
+#define HRW_RESET_SCC          0x02000000
+#define HRW_MFDC_CELL_ENABLE   0x04000000      /* ??? (0) */
+#define HRW_USE_MFDC           0x08000000      /* ??? (0) */
+#define HRW_BMAC_IO_ENABLE     0x60000000      /* two bits, not documented in OF */
+#define HRW_BMAC_RESET         0x80000000      /* not documented in OF */
+
+/* We OR those features at boot on desktop G3s */
+#define HRW_DEFAULTS           (HRW_SCCA_IO | HRW_SCCB_IO | HRW_SCC_ENABLE)
+
+/* Looks like Heathrow has some sort of GPIOs as well... */
+#define HRW_GPIO_MODEM_RESET   0x6d
+
diff --git a/include/asm-powerpc/keylargo.h b/include/asm-powerpc/keylargo.h
new file mode 100644 (file)
index 0000000..a669a3f
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+ * keylargo.h: definitions for using the "KeyLargo" I/O controller chip.
+ *
+ */
+
+/* "Pangea" chipset has keylargo device-id 0x25 while core99
+ * has device-id 0x22. The rev. of the pangea one is 0, so we
+ * fake an artificial rev. in keylargo_rev by oring 0x100
+ */
+#define KL_PANGEA_REV          0x100
+
+/* offset from base for feature control registers */
+#define KEYLARGO_MBCR          0x34    /* KL Only, Media bay control/status */
+#define KEYLARGO_FCR0          0x38
+#define KEYLARGO_FCR1          0x3c
+#define KEYLARGO_FCR2          0x40
+#define KEYLARGO_FCR3          0x44
+#define KEYLARGO_FCR4          0x48
+#define KEYLARGO_FCR5          0x4c    /* Pangea only */
+
+/* K2 aditional FCRs */
+#define K2_FCR6                        0x34
+#define K2_FCR7                        0x30
+#define K2_FCR8                        0x2c
+#define K2_FCR9                        0x28
+#define K2_FCR10               0x24
+
+/* GPIO registers */
+#define KEYLARGO_GPIO_LEVELS0          0x50
+#define KEYLARGO_GPIO_LEVELS1          0x54
+#define KEYLARGO_GPIO_EXTINT_0         0x58
+#define KEYLARGO_GPIO_EXTINT_CNT       18
+#define KEYLARGO_GPIO_0                        0x6A
+#define KEYLARGO_GPIO_CNT              17
+#define KEYLARGO_GPIO_EXTINT_DUAL_EDGE 0x80
+#define KEYLARGO_GPIO_OUTPUT_ENABLE    0x04
+#define KEYLARGO_GPIO_OUTOUT_DATA      0x01
+#define KEYLARGO_GPIO_INPUT_DATA       0x02
+
+/* K2 does only extint GPIOs and does 51 of them */
+#define K2_GPIO_EXTINT_0               0x58
+#define K2_GPIO_EXTINT_CNT             51
+
+/* Specific GPIO regs */
+
+#define KL_GPIO_MODEM_RESET            (KEYLARGO_GPIO_0+0x03)
+#define KL_GPIO_MODEM_POWER            (KEYLARGO_GPIO_0+0x02) /* Pangea */
+
+#define KL_GPIO_SOUND_POWER            (KEYLARGO_GPIO_0+0x05)
+
+/* Hrm... this one is only to be used on Pismo. It seeem to also
+ * control the timebase enable on other machines. Still to be
+ * experimented... --BenH.
+ */
+#define KL_GPIO_FW_CABLE_POWER         (KEYLARGO_GPIO_0+0x09)
+#define KL_GPIO_TB_ENABLE              (KEYLARGO_GPIO_0+0x09)
+
+#define KL_GPIO_ETH_PHY_RESET          (KEYLARGO_GPIO_0+0x10)
+
+#define KL_GPIO_EXTINT_CPU1            (KEYLARGO_GPIO_0+0x0a)
+#define KL_GPIO_EXTINT_CPU1_ASSERT     0x04
+#define KL_GPIO_EXTINT_CPU1_RELEASE    0x38
+
+#define KL_GPIO_RESET_CPU0             (KEYLARGO_GPIO_EXTINT_0+0x03)
+#define KL_GPIO_RESET_CPU1             (KEYLARGO_GPIO_EXTINT_0+0x04)
+#define KL_GPIO_RESET_CPU2             (KEYLARGO_GPIO_EXTINT_0+0x0f)
+#define KL_GPIO_RESET_CPU3             (KEYLARGO_GPIO_EXTINT_0+0x10)
+
+#define KL_GPIO_PMU_MESSAGE_IRQ                (KEYLARGO_GPIO_EXTINT_0+0x09)
+#define KL_GPIO_PMU_MESSAGE_BIT                KEYLARGO_GPIO_INPUT_DATA
+
+#define KL_GPIO_MEDIABAY_IRQ           (KEYLARGO_GPIO_EXTINT_0+0x0e)
+
+#define KL_GPIO_AIRPORT_0              (KEYLARGO_GPIO_EXTINT_0+0x0a)
+#define KL_GPIO_AIRPORT_1              (KEYLARGO_GPIO_EXTINT_0+0x0d)
+#define KL_GPIO_AIRPORT_2              (KEYLARGO_GPIO_0+0x0d)
+#define KL_GPIO_AIRPORT_3              (KEYLARGO_GPIO_0+0x0e)
+#define KL_GPIO_AIRPORT_4              (KEYLARGO_GPIO_0+0x0f)
+
+/*
+ * Bits in feature control register. Those bits different for K2 are
+ * listed separately
+ */
+#define KL_MBCR_MB0_PCI_ENABLE         0x00000800      /* exist ? */
+#define KL_MBCR_MB0_IDE_ENABLE         0x00001000
+#define KL_MBCR_MB0_FLOPPY_ENABLE      0x00002000      /* exist ? */
+#define KL_MBCR_MB0_SOUND_ENABLE       0x00004000      /* hrm... */
+#define KL_MBCR_MB0_DEV_MASK           0x00007800
+#define KL_MBCR_MB0_DEV_POWER          0x00000400
+#define KL_MBCR_MB0_DEV_RESET          0x00000200
+#define KL_MBCR_MB0_ENABLE             0x00000100
+#define KL_MBCR_MB1_PCI_ENABLE         0x08000000      /* exist ? */
+#define KL_MBCR_MB1_IDE_ENABLE         0x10000000
+#define KL_MBCR_MB1_FLOPPY_ENABLE      0x20000000      /* exist ? */
+#define KL_MBCR_MB1_SOUND_ENABLE       0x40000000      /* hrm... */
+#define KL_MBCR_MB1_DEV_MASK           0x78000000
+#define KL_MBCR_MB1_DEV_POWER          0x04000000
+#define KL_MBCR_MB1_DEV_RESET          0x02000000
+#define KL_MBCR_MB1_ENABLE             0x01000000
+
+#define KL0_SCC_B_INTF_ENABLE          0x00000001      /* (KL Only) */
+#define KL0_SCC_A_INTF_ENABLE          0x00000002
+#define KL0_SCC_SLOWPCLK               0x00000004
+#define KL0_SCC_RESET                  0x00000008
+#define KL0_SCCA_ENABLE                        0x00000010
+#define KL0_SCCB_ENABLE                        0x00000020
+#define KL0_SCC_CELL_ENABLE            0x00000040
+#define KL0_IRDA_HIGH_BAND             0x00000100      /* (KL Only) */
+#define KL0_IRDA_SOURCE2_SEL           0x00000200      /* (KL Only) */
+#define KL0_IRDA_SOURCE1_SEL           0x00000400      /* (KL Only) */
+#define KL0_PG_USB0_PMI_ENABLE         0x00000400      /* (Pangea/Intrepid Only) */
+#define KL0_IRDA_RESET                 0x00000800      /* (KL Only) */
+#define KL0_PG_USB0_REF_SUSPEND_SEL    0x00000800      /* (Pangea/Intrepid Only) */
+#define KL0_IRDA_DEFAULT1              0x00001000      /* (KL Only) */
+#define KL0_PG_USB0_REF_SUSPEND                0x00001000      /* (Pangea/Intrepid Only) */
+#define KL0_IRDA_DEFAULT0              0x00002000      /* (KL Only) */
+#define KL0_PG_USB0_PAD_SUSPEND                0x00002000      /* (Pangea/Intrepid Only) */
+#define KL0_IRDA_FAST_CONNECT          0x00004000      /* (KL Only) */
+#define KL0_PG_USB1_PMI_ENABLE         0x00004000      /* (Pangea/Intrepid Only) */
+#define KL0_IRDA_ENABLE                        0x00008000      /* (KL Only) */
+#define KL0_PG_USB1_REF_SUSPEND_SEL    0x00008000      /* (Pangea/Intrepid Only) */
+#define KL0_IRDA_CLK32_ENABLE          0x00010000      /* (KL Only) */
+#define KL0_PG_USB1_REF_SUSPEND                0x00010000      /* (Pangea/Intrepid Only) */
+#define KL0_IRDA_CLK19_ENABLE          0x00020000      /* (KL Only) */
+#define KL0_PG_USB1_PAD_SUSPEND                0x00020000      /* (Pangea/Intrepid Only) */
+#define KL0_USB0_PAD_SUSPEND0          0x00040000
+#define KL0_USB0_PAD_SUSPEND1          0x00080000
+#define KL0_USB0_CELL_ENABLE           0x00100000
+#define KL0_USB1_PAD_SUSPEND0          0x00400000
+#define KL0_USB1_PAD_SUSPEND1          0x00800000
+#define KL0_USB1_CELL_ENABLE           0x01000000
+#define KL0_USB_REF_SUSPEND            0x10000000      /* (KL Only) */
+
+#define KL0_SERIAL_ENABLE              (KL0_SCC_B_INTF_ENABLE | \
+                                       KL0_SCC_SLOWPCLK | \
+                                       KL0_SCC_CELL_ENABLE | KL0_SCCA_ENABLE)
+
+#define KL1_USB2_PMI_ENABLE            0x00000001      /* Intrepid only */
+#define KL1_AUDIO_SEL_22MCLK           0x00000002      /* KL/Pangea only */
+#define KL1_USB2_REF_SUSPEND_SEL       0x00000002      /* Intrepid only */
+#define KL1_USB2_REF_SUSPEND           0x00000004      /* Intrepid only */
+#define KL1_AUDIO_CLK_ENABLE_BIT       0x00000008      /* KL/Pangea only */
+#define KL1_USB2_PAD_SUSPEND_SEL       0x00000008      /* Intrepid only */
+#define KL1_USB2_PAD_SUSPEND0          0x00000010      /* Intrepid only */
+#define KL1_AUDIO_CLK_OUT_ENABLE       0x00000020      /* KL/Pangea only */
+#define KL1_USB2_PAD_SUSPEND1          0x00000020      /* Intrepid only */
+#define KL1_AUDIO_CELL_ENABLE          0x00000040      /* KL/Pangea only */
+#define KL1_USB2_CELL_ENABLE           0x00000040      /* Intrepid only */
+#define KL1_AUDIO_CHOOSE               0x00000080      /* KL/Pangea only */
+#define KL1_I2S0_CHOOSE                        0x00000200      /* KL Only */
+#define KL1_I2S0_CELL_ENABLE           0x00000400
+#define KL1_I2S0_CLK_ENABLE_BIT                0x00001000
+#define KL1_I2S0_ENABLE                        0x00002000
+#define KL1_I2S1_CELL_ENABLE           0x00020000
+#define KL1_I2S1_CLK_ENABLE_BIT                0x00080000
+#define KL1_I2S1_ENABLE                        0x00100000
+#define KL1_EIDE0_ENABLE               0x00800000      /* KL/Intrepid Only */
+#define KL1_EIDE0_RESET_N              0x01000000      /* KL/Intrepid Only */
+#define KL1_EIDE1_ENABLE               0x04000000      /* KL Only */
+#define KL1_EIDE1_RESET_N              0x08000000      /* KL Only */
+#define KL1_UIDE_ENABLE                        0x20000000      /* KL/Pangea Only */
+#define KL1_UIDE_RESET_N               0x40000000      /* KL/Pangea Only */
+
+#define KL2_IOBUS_ENABLE               0x00000002
+#define KL2_SLEEP_STATE_BIT            0x00000100      /* KL Only */
+#define KL2_PG_STOP_ALL_CLOCKS         0x00000100      /* Pangea Only */
+#define KL2_MPIC_ENABLE                        0x00020000
+#define KL2_CARDSLOT_RESET             0x00040000      /* Pangea/Intrepid Only */
+#define KL2_ALT_DATA_OUT               0x02000000      /* KL Only ??? */
+#define KL2_MEM_IS_BIG                 0x04000000
+#define KL2_CARDSEL_16                 0x08000000
+
+#define KL3_SHUTDOWN_PLL_TOTAL         0x00000001      /* KL/Pangea only */
+#define KL3_SHUTDOWN_PLLKW6            0x00000002      /* KL/Pangea only */
+#define KL3_IT_SHUTDOWN_PLL3           0x00000002      /* Intrepid only */
+#define KL3_SHUTDOWN_PLLKW4            0x00000004      /* KL/Pangea only */
+#define KL3_IT_SHUTDOWN_PLL2           0x00000004      /* Intrepid only */
+#define KL3_SHUTDOWN_PLLKW35           0x00000008      /* KL/Pangea only */
+#define KL3_IT_SHUTDOWN_PLL1           0x00000008      /* Intrepid only */
+#define KL3_SHUTDOWN_PLLKW12           0x00000010      /* KL Only */
+#define KL3_IT_ENABLE_PLL3_SHUTDOWN    0x00000010      /* Intrepid only */
+#define KL3_PLL_RESET                  0x00000020      /* KL/Pangea only */
+#define KL3_IT_ENABLE_PLL2_SHUTDOWN    0x00000020      /* Intrepid only */
+#define KL3_IT_ENABLE_PLL1_SHUTDOWN    0x00000010      /* Intrepid only */
+#define KL3_SHUTDOWN_PLL2X             0x00000080      /* KL Only */
+#define KL3_CLK66_ENABLE               0x00000100      /* KL Only */
+#define KL3_CLK49_ENABLE               0x00000200
+#define KL3_CLK45_ENABLE               0x00000400
+#define KL3_CLK31_ENABLE               0x00000800      /* KL/Pangea only */
+#define KL3_TIMER_CLK18_ENABLE         0x00001000
+#define KL3_I2S1_CLK18_ENABLE          0x00002000
+#define KL3_I2S0_CLK18_ENABLE          0x00004000
+#define KL3_VIA_CLK16_ENABLE           0x00008000      /* KL/Pangea only */
+#define KL3_IT_VIA_CLK32_ENABLE                0x00008000      /* Intrepid only */
+#define KL3_STOPPING33_ENABLED         0x00080000      /* KL Only */
+#define KL3_PG_PLL_ENABLE_TEST         0x00080000      /* Pangea Only */
+
+/* Intrepid USB bus 2, port 0,1 */
+#define KL3_IT_PORT_WAKEUP_ENABLE(p)           (0x00080000 << ((p)<<3))
+#define KL3_IT_PORT_RESUME_WAKE_EN(p)          (0x00040000 << ((p)<<3))
+#define KL3_IT_PORT_CONNECT_WAKE_EN(p)         (0x00020000 << ((p)<<3))
+#define KL3_IT_PORT_DISCONNECT_WAKE_EN(p)      (0x00010000 << ((p)<<3))
+#define KL3_IT_PORT_RESUME_STAT(p)             (0x00300000 << ((p)<<3))
+#define KL3_IT_PORT_CONNECT_STAT(p)            (0x00200000 << ((p)<<3))
+#define KL3_IT_PORT_DISCONNECT_STAT(p)         (0x00100000 << ((p)<<3))
+
+/* Port 0,1 : bus 0, port 2,3 : bus 1 */
+#define KL4_PORT_WAKEUP_ENABLE(p)      (0x00000008 << ((p)<<3))
+#define KL4_PORT_RESUME_WAKE_EN(p)     (0x00000004 << ((p)<<3))
+#define KL4_PORT_CONNECT_WAKE_EN(p)    (0x00000002 << ((p)<<3))
+#define KL4_PORT_DISCONNECT_WAKE_EN(p) (0x00000001 << ((p)<<3))
+#define KL4_PORT_RESUME_STAT(p)                (0x00000040 << ((p)<<3))
+#define KL4_PORT_CONNECT_STAT(p)       (0x00000020 << ((p)<<3))
+#define KL4_PORT_DISCONNECT_STAT(p)    (0x00000010 << ((p)<<3))
+
+/* Pangea and Intrepid only */
+#define KL5_VIA_USE_CLK31              0000000001      /* Pangea Only */
+#define KL5_SCC_USE_CLK31              0x00000002      /* Pangea Only */
+#define KL5_PWM_CLK32_EN               0x00000004
+#define KL5_CLK3_68_EN                 0x00000010
+#define KL5_CLK32_EN                   0x00000020
+
+
+/* K2 definitions */
+#define K2_FCR0_USB0_SWRESET           0x00200000
+#define K2_FCR0_USB1_SWRESET           0x02000000
+#define K2_FCR0_RING_PME_DISABLE       0x08000000
+
+#define K2_FCR1_PCI1_BUS_RESET_N       0x00000010
+#define K2_FCR1_PCI1_SLEEP_RESET_EN    0x00000020
+#define K2_FCR1_I2S0_CELL_ENABLE       0x00000400
+#define K2_FCR1_I2S0_RESET             0x00000800
+#define K2_FCR1_I2S0_CLK_ENABLE_BIT    0x00001000
+#define K2_FCR1_I2S0_ENABLE                    0x00002000
+
+#define K2_FCR1_PCI1_CLK_ENABLE                0x00004000
+#define K2_FCR1_FW_CLK_ENABLE          0x00008000
+#define K2_FCR1_FW_RESET_N             0x00010000
+#define K2_FCR1_GMAC_CLK_ENABLE                0x00400000
+#define K2_FCR1_GMAC_POWER_DOWN                0x00800000
+#define K2_FCR1_GMAC_RESET_N           0x01000000
+#define K2_FCR1_SATA_CLK_ENABLE                0x02000000
+#define K2_FCR1_SATA_POWER_DOWN                0x04000000
+#define K2_FCR1_SATA_RESET_N           0x08000000
+#define K2_FCR1_UATA_CLK_ENABLE                0x10000000
+#define K2_FCR1_UATA_RESET_N           0x40000000
+#define K2_FCR1_UATA_CHOOSE_CLK66      0x80000000
+
diff --git a/include/asm-powerpc/macio.h b/include/asm-powerpc/macio.h
new file mode 100644 (file)
index 0000000..b553dd4
--- /dev/null
@@ -0,0 +1,140 @@
+#ifndef __MACIO_ASIC_H__
+#define __MACIO_ASIC_H__
+
+#include <asm/of_device.h>
+
+extern struct bus_type macio_bus_type;
+
+/* MacIO device driver is defined later */
+struct macio_driver;
+struct macio_chip;
+
+#define MACIO_DEV_COUNT_RESOURCES      8
+#define MACIO_DEV_COUNT_IRQS           8
+
+/*
+ * the macio_bus structure is used to describe a "virtual" bus
+ * within a MacIO ASIC. It's typically provided by a macio_pci_asic
+ * PCI device, but could be provided differently as well (nubus
+ * machines using a fake OF tree).
+ *
+ * The pdev field can be NULL on non-PCI machines
+ */
+struct macio_bus
+{
+       struct macio_chip       *chip;          /* macio_chip (private use) */
+       int                     index;          /* macio chip index in system */
+#ifdef CONFIG_PCI
+       struct pci_dev          *pdev;          /* PCI device hosting this bus */
+#endif
+};
+
+/*
+ * the macio_dev structure is used to describe a device
+ * within an Apple MacIO ASIC.
+ */
+struct macio_dev
+{
+       struct macio_bus        *bus;           /* macio bus this device is on */
+       struct macio_dev        *media_bay;     /* Device is part of a media bay */
+       struct of_device        ofdev;
+       int                     n_resources;
+       struct resource         resource[MACIO_DEV_COUNT_RESOURCES];
+       int                     n_interrupts;
+       struct resource         interrupt[MACIO_DEV_COUNT_IRQS];
+};
+#define        to_macio_device(d) container_of(d, struct macio_dev, ofdev.dev)
+#define        of_to_macio_device(d) container_of(d, struct macio_dev, ofdev)
+
+extern struct macio_dev *macio_dev_get(struct macio_dev *dev);
+extern void macio_dev_put(struct macio_dev *dev);
+
+/*
+ * Accessors to resources & interrupts and other device
+ * fields
+ */
+
+static inline int macio_resource_count(struct macio_dev *dev)
+{
+       return dev->n_resources;
+}
+
+static inline unsigned long macio_resource_start(struct macio_dev *dev, int resource_no)
+{
+       return dev->resource[resource_no].start;
+}
+
+static inline unsigned long macio_resource_end(struct macio_dev *dev, int resource_no)
+{
+       return dev->resource[resource_no].end;
+}
+
+static inline unsigned long macio_resource_len(struct macio_dev *dev, int resource_no)
+{
+       struct resource *res = &dev->resource[resource_no];
+       if (res->start == 0 || res->end == 0 || res->end < res->start)
+               return 0;
+       return res->end - res->start + 1;
+}
+
+extern int macio_request_resource(struct macio_dev *dev, int resource_no, const char *name);
+extern void macio_release_resource(struct macio_dev *dev, int resource_no);
+extern int macio_request_resources(struct macio_dev *dev, const char *name);
+extern void macio_release_resources(struct macio_dev *dev);
+
+static inline int macio_irq_count(struct macio_dev *dev)
+{
+       return dev->n_interrupts;
+}
+
+static inline int macio_irq(struct macio_dev *dev, int irq_no)
+{
+       return dev->interrupt[irq_no].start;
+}
+
+static inline void macio_set_drvdata(struct macio_dev *dev, void *data)
+{
+       dev_set_drvdata(&dev->ofdev.dev, data);
+}
+
+static inline void* macio_get_drvdata(struct macio_dev *dev)
+{
+       return dev_get_drvdata(&dev->ofdev.dev);
+}
+
+static inline struct device_node *macio_get_of_node(struct macio_dev *mdev)
+{
+       return mdev->ofdev.node;
+}
+
+#ifdef CONFIG_PCI
+static inline struct pci_dev *macio_get_pci_dev(struct macio_dev *mdev)
+{
+       return mdev->bus->pdev;
+}
+#endif
+
+/*
+ * A driver for a mac-io chip based device
+ */
+struct macio_driver
+{
+       char                    *name;
+       struct of_device_id     *match_table;
+       struct module           *owner;
+
+       int     (*probe)(struct macio_dev* dev, const struct of_device_id *match);
+       int     (*remove)(struct macio_dev* dev);
+
+       int     (*suspend)(struct macio_dev* dev, pm_message_t state);
+       int     (*resume)(struct macio_dev* dev);
+       int     (*shutdown)(struct macio_dev* dev);
+
+       struct device_driver    driver;
+};
+#define        to_macio_driver(drv) container_of(drv,struct macio_driver, driver)
+
+extern int macio_register_driver(struct macio_driver *);
+extern void macio_unregister_driver(struct macio_driver *);
+
+#endif /* __MACIO_ASIC_H__ */
diff --git a/include/asm-powerpc/mediabay.h b/include/asm-powerpc/mediabay.h
new file mode 100644 (file)
index 0000000..9daa325
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * mediabay.h: definitions for using the media bay
+ * on PowerBook 3400 and similar computers.
+ *
+ * Copyright (C) 1997 Paul Mackerras.
+ */
+#ifndef _PPC_MEDIABAY_H
+#define _PPC_MEDIABAY_H
+
+#ifdef __KERNEL__
+
+#define MB_FD          0       /* media bay contains floppy drive (automatic eject ?) */
+#define MB_FD1         1       /* media bay contains floppy drive (manual eject ?) */
+#define MB_SOUND       2       /* sound device ? */
+#define MB_CD          3       /* media bay contains ATA drive such as CD or ZIP */
+#define MB_PCI         5       /* media bay contains a PCI device */
+#define MB_POWER       6       /* media bay contains a Power device (???) */
+#define MB_NO          7       /* media bay contains nothing */
+
+int check_media_bay(struct device_node *which_bay, int what);
+int check_media_bay_by_base(unsigned long base, int what);
+
+/* Number of bays in the machine or 0 */
+extern int media_bay_count;
+
+/* called by pmac-ide.c to register IDE controller for media bay */
+extern int media_bay_set_ide_infos(struct device_node* which_bay,
+                       unsigned long base, int irq, int index);
+
+#endif /* __KERNEL__ */
+#endif /* _PPC_MEDIABAY_H */
diff --git a/include/asm-powerpc/ohare.h b/include/asm-powerpc/ohare.h
new file mode 100644 (file)
index 0000000..023b597
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * ohare.h: definitions for using the "O'Hare" I/O controller chip.
+ *
+ * Copyright (C) 1997 Paul Mackerras.
+ *
+ * BenH: Changed to match those of heathrow (but not all of them). Please
+ *       check if I didn't break anything (especially the media bay).
+ */
+
+/* offset from ohare base for feature control register */
+#define OHARE_MBCR     0x34
+#define OHARE_FCR      0x38
+
+/*
+ * Bits in feature control register.
+ * These were mostly derived by experiment on a powerbook 3400
+ * and may differ for other machines.
+ */
+#define OH_SCC_RESET           1
+#define OH_BAY_POWER_N         2       /* a guess */
+#define OH_BAY_PCI_ENABLE      4       /* a guess */
+#define OH_BAY_IDE_ENABLE      8
+#define OH_BAY_FLOPPY_ENABLE   0x10
+#define OH_IDE0_ENABLE         0x20
+#define OH_IDE0_RESET_N                0x40    /* a guess */
+#define OH_BAY_DEV_MASK                0x1c
+#define OH_BAY_RESET_N         0x80
+#define OH_IOBUS_ENABLE                0x100   /* IOBUS seems to be IDE */
+#define OH_SCC_ENABLE          0x200
+#define OH_MESH_ENABLE         0x400
+#define OH_FLOPPY_ENABLE       0x800
+#define OH_SCCA_IO             0x4000
+#define OH_SCCB_IO             0x8000
+#define OH_VIA_ENABLE          0x10000 /* Is apparently wrong, to be verified */
+#define OH_IDE1_RESET_N                0x800000
+
+/*
+ * Bits to set in the feature control register on PowerBooks.
+ */
+#define PBOOK_FEATURES         (OH_IDE_ENABLE | OH_SCC_ENABLE | \
+                                OH_MESH_ENABLE | OH_SCCA_IO | OH_SCCB_IO)
+
+/*
+ * A magic value to put into the feature control register of the
+ * "ohare" I/O controller on Starmaxes to enable the IDE CD interface.
+ * Contributed by Harry Eaton.
+ */
+#define STARMAX_FEATURES       0xbeff7a
diff --git a/include/asm-powerpc/pmac_feature.h b/include/asm-powerpc/pmac_feature.h
new file mode 100644 (file)
index 0000000..e9683bc
--- /dev/null
@@ -0,0 +1,380 @@
+/*
+ * Definition of platform feature hooks for PowerMacs
+ *
+ * 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) 1998 Paul Mackerras &
+ *                    Ben. Herrenschmidt.
+ *
+ *
+ * Note: I removed media-bay details from the feature stuff, I believe it's
+ *       not worth it, the media-bay driver can directly use the mac-io
+ *       ASIC registers.
+ *
+ * Implementation note: Currently, none of these functions will block.
+ * However, they may internally protect themselves with a spinlock
+ * for way too long. Be prepared for at least some of these to block
+ * in the future.
+ *
+ * Unless specifically defined, the result code is assumed to be an
+ * error when negative, 0 is the default success result. Some functions
+ * may return additional positive result values.
+ *
+ * To keep implementation simple, all feature calls are assumed to have
+ * the prototype parameters (struct device_node* node, int value).
+ * When either is not used, pass 0.
+ */
+
+#ifdef __KERNEL__
+#ifndef __PPC_ASM_PMAC_FEATURE_H
+#define __PPC_ASM_PMAC_FEATURE_H
+
+#include <asm/macio.h>
+#include <asm/machdep.h>
+
+/*
+ * Known Mac motherboard models
+ *
+ * Please, report any error here to benh@kernel.crashing.org, thanks !
+ *
+ * Note that I don't fully maintain this list for Core99 & MacRISC2
+ * and I'm considering removing all NewWorld entries from it and
+ * entirely rely on the model string.
+ */
+
+/* PowerSurge are the first generation of PCI Pmacs. This include
+ * all of the Grand-Central based machines. We currently don't
+ * differenciate most of them.
+ */
+#define PMAC_TYPE_PSURGE               0x10    /* PowerSurge */
+#define PMAC_TYPE_ANS                  0x11    /* Apple Network Server */
+
+/* Here is the infamous serie of OHare based machines
+ */
+#define PMAC_TYPE_COMET                        0x20    /* Beleived to be PowerBook 2400 */
+#define PMAC_TYPE_HOOPER               0x21    /* Beleived to be PowerBook 3400 */
+#define PMAC_TYPE_KANGA                        0x22    /* PowerBook 3500 (first G3) */
+#define PMAC_TYPE_ALCHEMY              0x23    /* Alchemy motherboard base */
+#define PMAC_TYPE_GAZELLE              0x24    /* Spartacus, some 5xxx/6xxx */
+#define PMAC_TYPE_UNKNOWN_OHARE                0x2f    /* Unknown, but OHare based */
+
+/* Here are the Heathrow based machines
+ * FIXME: Differenciate wallstreet,mainstreet,wallstreetII
+ */
+#define PMAC_TYPE_GOSSAMER             0x30    /* Gossamer motherboard */
+#define PMAC_TYPE_SILK                 0x31    /* Desktop PowerMac G3 */
+#define PMAC_TYPE_WALLSTREET           0x32    /* Wallstreet/Mainstreet PowerBook*/
+#define PMAC_TYPE_UNKNOWN_HEATHROW     0x3f    /* Unknown but heathrow based */
+
+/* Here are newworld machines based on Paddington (heathrow derivative)
+ */
+#define PMAC_TYPE_101_PBOOK            0x40    /* 101 PowerBook (aka Lombard) */
+#define PMAC_TYPE_ORIG_IMAC            0x41    /* First generation iMac */
+#define PMAC_TYPE_YOSEMITE             0x42    /* B&W G3 */
+#define PMAC_TYPE_YIKES                        0x43    /* Yikes G4 (PCI graphics) */
+#define PMAC_TYPE_UNKNOWN_PADDINGTON   0x4f    /* Unknown but paddington based */
+
+/* Core99 machines based on UniNorth 1.0 and 1.5
+ *
+ * Note: A single entry here may cover several actual models according
+ * to the device-tree. (Sawtooth is most tower G4s, FW_IMAC is most
+ * FireWire based iMacs, etc...). Those machines are too similar to be
+ * distinguished here, when they need to be differencied, use the
+ * device-tree "model" or "compatible" property.
+ */
+#define PMAC_TYPE_ORIG_IBOOK           0x40    /* First iBook model (no firewire) */
+#define PMAC_TYPE_SAWTOOTH             0x41    /* Desktop G4s */
+#define PMAC_TYPE_FW_IMAC              0x42    /* FireWire iMacs (except Pangea based) */
+#define PMAC_TYPE_FW_IBOOK             0x43    /* FireWire iBooks (except iBook2) */
+#define PMAC_TYPE_CUBE                 0x44    /* Cube PowerMac */
+#define PMAC_TYPE_QUICKSILVER          0x45    /* QuickSilver G4s */
+#define PMAC_TYPE_PISMO                        0x46    /* Pismo PowerBook */
+#define PMAC_TYPE_TITANIUM             0x47    /* Titanium PowerBook */
+#define PMAC_TYPE_TITANIUM2            0x48    /* Titanium II PowerBook (no L3, M6) */
+#define PMAC_TYPE_TITANIUM3            0x49    /* Titanium III PowerBook (with L3 & M7) */
+#define PMAC_TYPE_TITANIUM4            0x50    /* Titanium IV PowerBook (with L3 & M9) */
+#define PMAC_TYPE_EMAC                 0x50    /* eMac */
+#define PMAC_TYPE_UNKNOWN_CORE99       0x5f
+
+/* MacRisc2 with UniNorth 2.0 */
+#define PMAC_TYPE_RACKMAC              0x80    /* XServe */
+#define PMAC_TYPE_WINDTUNNEL           0x81
+
+/* MacRISC2 machines based on the Pangea chipset
+ */
+#define PMAC_TYPE_PANGEA_IMAC          0x100   /* Flower Power iMac */
+#define PMAC_TYPE_IBOOK2               0x101   /* iBook2 (polycarbonate) */
+#define PMAC_TYPE_FLAT_PANEL_IMAC      0x102   /* Flat panel iMac */
+#define PMAC_TYPE_UNKNOWN_PANGEA       0x10f
+
+/* MacRISC2 machines based on the Intrepid chipset
+ */
+#define PMAC_TYPE_UNKNOWN_INTREPID     0x11f   /* Generic */
+
+/* MacRISC4 / G5 machines. We don't have per-machine selection here anymore,
+ * but rather machine families
+ */
+#define PMAC_TYPE_POWERMAC_G5          0x150   /* U3 & U3H based */
+#define PMAC_TYPE_POWERMAC_G5_U3L      0x151   /* U3L based desktop */
+#define PMAC_TYPE_IMAC_G5              0x152   /* iMac G5 */
+#define PMAC_TYPE_XSERVE_G5            0x153   /* Xserve G5 */
+#define PMAC_TYPE_UNKNOWN_K2           0x19f   /* Any other K2 based */
+
+/*
+ * Motherboard flags
+ */
+
+#define PMAC_MB_CAN_SLEEP              0x00000001
+#define PMAC_MB_HAS_FW_POWER           0x00000002
+#define PMAC_MB_OLD_CORE99             0x00000004
+#define PMAC_MB_MOBILE                 0x00000008
+#define PMAC_MB_MAY_SLEEP              0x00000010
+
+/*
+ * Feature calls supported on pmac
+ *
+ */
+
+/*
+ * Use this inline wrapper
+ */
+struct device_node;
+
+static inline long pmac_call_feature(int selector, struct device_node* node,
+                                       long param, long value)
+{
+       if (!ppc_md.feature_call)
+               return -ENODEV;
+       return ppc_md.feature_call(selector, node, param, value);
+}
+
+/* PMAC_FTR_SERIAL_ENABLE      (struct device_node* node, int param, int value)
+ * enable/disable an SCC side. Pass the node corresponding to the
+ * channel side as a parameter.
+ * param is the type of port
+ * if param is ored with PMAC_SCC_FLAG_XMON, then the SCC is locked enabled
+ * for use by xmon.
+ */
+#define PMAC_FTR_SCC_ENABLE            PMAC_FTR_DEF(0)
+       #define PMAC_SCC_ASYNC          0
+       #define PMAC_SCC_IRDA           1
+       #define PMAC_SCC_I2S1           2
+       #define PMAC_SCC_FLAG_XMON      0x00001000
+
+/* PMAC_FTR_MODEM_ENABLE       (struct device_node* node, 0, int value)
+ * enable/disable the internal modem.
+ */
+#define PMAC_FTR_MODEM_ENABLE          PMAC_FTR_DEF(1)
+
+/* PMAC_FTR_SWIM3_ENABLE       (struct device_node* node, 0,int value)
+ * enable/disable the swim3 (floppy) cell of a mac-io ASIC
+ */
+#define PMAC_FTR_SWIM3_ENABLE          PMAC_FTR_DEF(2)
+
+/* PMAC_FTR_MESH_ENABLE                (struct device_node* node, 0, int value)
+ * enable/disable the mesh (scsi) cell of a mac-io ASIC
+ */
+#define PMAC_FTR_MESH_ENABLE           PMAC_FTR_DEF(3)
+
+/* PMAC_FTR_IDE_ENABLE         (struct device_node* node, int busID, int value)
+ * enable/disable an IDE port of a mac-io ASIC
+ * pass the busID parameter
+ */
+#define PMAC_FTR_IDE_ENABLE            PMAC_FTR_DEF(4)
+
+/* PMAC_FTR_IDE_RESET          (struct device_node* node, int busID, int value)
+ * assert(1)/release(0) an IDE reset line (mac-io IDE only)
+ */
+#define PMAC_FTR_IDE_RESET             PMAC_FTR_DEF(5)
+
+/* PMAC_FTR_BMAC_ENABLE                (struct device_node* node, 0, int value)
+ * enable/disable the bmac (ethernet) cell of a mac-io ASIC, also drive
+ * it's reset line
+ */
+#define PMAC_FTR_BMAC_ENABLE           PMAC_FTR_DEF(6)
+
+/* PMAC_FTR_GMAC_ENABLE                (struct device_node* node, 0, int value)
+ * enable/disable the gmac (ethernet) cell of an uninorth ASIC. This
+ * control the cell's clock.
+ */
+#define PMAC_FTR_GMAC_ENABLE           PMAC_FTR_DEF(7)
+
+/* PMAC_FTR_GMAC_PHY_RESET     (struct device_node* node, 0, 0)
+ * Perform a HW reset of the PHY connected to a gmac controller.
+ * Pass the gmac device node, not the PHY node.
+ */
+#define PMAC_FTR_GMAC_PHY_RESET                PMAC_FTR_DEF(8)
+
+/* PMAC_FTR_SOUND_CHIP_ENABLE  (struct device_node* node, 0, int value)
+ * enable/disable the sound chip, whatever it is and provided it can
+ * acually be controlled
+ */
+#define PMAC_FTR_SOUND_CHIP_ENABLE     PMAC_FTR_DEF(9)
+
+/* -- add various tweaks related to sound routing -- */
+
+/* PMAC_FTR_AIRPORT_ENABLE     (struct device_node* node, 0, int value)
+ * enable/disable the airport card
+ */
+#define PMAC_FTR_AIRPORT_ENABLE                PMAC_FTR_DEF(10)
+
+/* PMAC_FTR_RESET_CPU          (NULL, int cpu_nr, 0)
+ * toggle the reset line of a CPU on an uninorth-based SMP machine
+ */
+#define PMAC_FTR_RESET_CPU             PMAC_FTR_DEF(11)
+
+/* PMAC_FTR_USB_ENABLE         (struct device_node* node, 0, int value)
+ * enable/disable an USB cell, along with the power of the USB "pad"
+ * on keylargo based machines
+ */
+#define PMAC_FTR_USB_ENABLE            PMAC_FTR_DEF(12)
+
+/* PMAC_FTR_1394_ENABLE                (struct device_node* node, 0, int value)
+ * enable/disable the firewire cell of an uninorth ASIC.
+ */
+#define PMAC_FTR_1394_ENABLE           PMAC_FTR_DEF(13)
+
+/* PMAC_FTR_1394_CABLE_POWER   (struct device_node* node, 0, int value)
+ * enable/disable the firewire cable power supply of the uninorth
+ * firewire cell
+ */
+#define PMAC_FTR_1394_CABLE_POWER      PMAC_FTR_DEF(14)
+
+/* PMAC_FTR_SLEEP_STATE                (struct device_node* node, 0, int value)
+ * set the sleep state of the motherboard.
+ *
+ * Pass -1 as value to query for sleep capability
+ * Pass 1 to set IOs to sleep
+ * Pass 0 to set IOs to wake
+ */
+#define PMAC_FTR_SLEEP_STATE           PMAC_FTR_DEF(15)
+
+/* PMAC_FTR_GET_MB_INFO                (NULL, selector, 0)
+ *
+ * returns some motherboard infos.
+ * selector: 0  - model id
+ *           1  - model flags (capabilities)
+ *           2  - model name (cast to const char *)
+ */
+#define PMAC_FTR_GET_MB_INFO           PMAC_FTR_DEF(16)
+#define   PMAC_MB_INFO_MODEL   0
+#define   PMAC_MB_INFO_FLAGS   1
+#define   PMAC_MB_INFO_NAME    2
+
+/* PMAC_FTR_READ_GPIO          (NULL, int index, 0)
+ *
+ * read a GPIO from a mac-io controller of type KeyLargo or Pangea.
+ * the value returned is a byte (positive), or a negative error code
+ */
+#define PMAC_FTR_READ_GPIO             PMAC_FTR_DEF(17)
+
+/* PMAC_FTR_WRITE_GPIO         (NULL, int index, int value)
+ *
+ * write a GPIO of a mac-io controller of type KeyLargo or Pangea.
+ */
+#define PMAC_FTR_WRITE_GPIO            PMAC_FTR_DEF(18)
+
+/* PMAC_FTR_ENABLE_MPIC
+ *
+ * Enable the MPIC cell
+ */
+#define PMAC_FTR_ENABLE_MPIC           PMAC_FTR_DEF(19)
+
+/* PMAC_FTR_AACK_DELAY_ENABLE  (NULL, int enable, 0)
+ *
+ * Enable/disable the AACK delay on the northbridge for systems using DFS
+ */
+#define PMAC_FTR_AACK_DELAY_ENABLE             PMAC_FTR_DEF(20)
+
+/* PMAC_FTR_DEVICE_CAN_WAKE
+ *
+ * Used by video drivers to inform system that they can actually perform
+ * wakeup from sleep
+ */
+#define PMAC_FTR_DEVICE_CAN_WAKE       PMAC_FTR_DEF(22)
+
+
+/* Don't use those directly, they are for the sake of pmac_setup.c */
+extern long pmac_do_feature_call(unsigned int selector, ...);
+extern void pmac_feature_init(void);
+
+/* Video suspend tweak */
+extern void pmac_set_early_video_resume(void (*proc)(void *data), void *data);
+extern void pmac_call_early_video_resume(void);
+
+#define PMAC_FTR_DEF(x) ((_MACH_Pmac << 16) | (x))
+
+/* The AGP driver registers itself here */
+extern void pmac_register_agp_pm(struct pci_dev *bridge,
+                                int (*suspend)(struct pci_dev *bridge),
+                                int (*resume)(struct pci_dev *bridge));
+
+/* Those are meant to be used by video drivers to deal with AGP
+ * suspend resume properly
+ */
+extern void pmac_suspend_agp_for_card(struct pci_dev *dev);
+extern void pmac_resume_agp_for_card(struct pci_dev *dev);
+
+/* Used by the via-pmu driver for suspend/resume
+ */
+extern void pmac_tweak_clock_spreading(int enable);
+
+/*
+ * The part below is for use by macio_asic.c only, do not rely
+ * on the data structures or constants below in a normal driver
+ *
+ */
+
+#define MAX_MACIO_CHIPS                2
+
+enum {
+       macio_unknown = 0,
+       macio_grand_central,
+       macio_ohare,
+       macio_ohareII,
+       macio_heathrow,
+       macio_gatwick,
+       macio_paddington,
+       macio_keylargo,
+       macio_pangea,
+       macio_intrepid,
+       macio_keylargo2,
+};
+
+struct macio_chip
+{
+       struct device_node      *of_node;
+       int                     type;
+       const char              *name;
+       int                     rev;
+       volatile u32            __iomem *base;
+       unsigned long           flags;
+
+       /* For use by macio_asic PCI driver */
+       struct macio_bus        lbus;
+};
+
+extern struct macio_chip macio_chips[MAX_MACIO_CHIPS];
+
+#define MACIO_FLAG_SCCA_ON     0x00000001
+#define MACIO_FLAG_SCCB_ON     0x00000002
+#define MACIO_FLAG_SCC_LOCKED  0x00000004
+#define MACIO_FLAG_AIRPORT_ON  0x00000010
+#define MACIO_FLAG_FW_SUPPORTED        0x00000020
+
+extern struct macio_chip* macio_find(struct device_node* child, int type);
+
+#define MACIO_FCR32(macio, r)  ((macio)->base + ((r) >> 2))
+#define MACIO_FCR8(macio, r)   (((volatile u8 __iomem *)((macio)->base)) + (r))
+
+#define MACIO_IN32(r)          (in_le32(MACIO_FCR32(macio,r)))
+#define MACIO_OUT32(r,v)       (out_le32(MACIO_FCR32(macio,r), (v)))
+#define MACIO_BIS(r,v)         (MACIO_OUT32((r), MACIO_IN32(r) | (v)))
+#define MACIO_BIC(r,v)         (MACIO_OUT32((r), MACIO_IN32(r) & ~(v)))
+#define MACIO_IN8(r)           (in_8(MACIO_FCR8(macio,r)))
+#define MACIO_OUT8(r,v)                (out_8(MACIO_FCR8(macio,r), (v)))
+
+#endif /* __PPC_ASM_PMAC_FEATURE_H */
+#endif /* __KERNEL__ */
diff --git a/include/asm-powerpc/pmac_low_i2c.h b/include/asm-powerpc/pmac_low_i2c.h
new file mode 100644 (file)
index 0000000..809a596
--- /dev/null
@@ -0,0 +1,43 @@
+/* 
+ *  include/asm-ppc/pmac_low_i2c.h
+ *
+ *  Copyright (C) 2003 Ben. Herrenschmidt (benh@kernel.crashing.org)
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version
+ *  2 of the License, or (at your option) any later version.
+ *
+ */
+#ifndef __PMAC_LOW_I2C_H__
+#define __PMAC_LOW_I2C_H__
+
+/* i2c mode (based on the platform functions format) */
+enum {
+       pmac_low_i2c_mode_dumb          = 1,
+       pmac_low_i2c_mode_std           = 2,
+       pmac_low_i2c_mode_stdsub        = 3,
+       pmac_low_i2c_mode_combined      = 4,
+};
+
+/* RW bit in address */
+enum {
+       pmac_low_i2c_read               = 0x01,
+       pmac_low_i2c_write              = 0x00
+};
+
+/* Init, called early during boot */
+extern void pmac_init_low_i2c(void);
+
+/* Locking functions exposed to i2c-keywest */
+int pmac_low_i2c_lock(struct device_node *np);
+int pmac_low_i2c_unlock(struct device_node *np);
+
+/* Access functions for platform code */
+int pmac_low_i2c_open(struct device_node *np, int channel);
+int pmac_low_i2c_close(struct device_node *np);
+int pmac_low_i2c_setmode(struct device_node *np, int mode);
+int pmac_low_i2c_xfer(struct device_node *np, u8 addrdir, u8 subaddr, u8 *data, int len);
+
+
+#endif /* __PMAC_LOW_I2C_H__ */
diff --git a/include/asm-powerpc/smu.h b/include/asm-powerpc/smu.h
new file mode 100644 (file)
index 0000000..dee8eef
--- /dev/null
@@ -0,0 +1,379 @@
+#ifndef _SMU_H
+#define _SMU_H
+
+/*
+ * Definitions for talking to the SMU chip in newer G5 PowerMacs
+ */
+
+#include <linux/config.h>
+#include <linux/list.h>
+
+/*
+ * Known SMU commands
+ *
+ * Most of what is below comes from looking at the Open Firmware driver,
+ * though this is still incomplete and could use better documentation here
+ * or there...
+ */
+
+
+/*
+ * Partition info commands
+ *
+ * I do not know what those are for at this point
+ */
+#define SMU_CMD_PARTITION_COMMAND              0x3e
+
+
+/*
+ * Fan control
+ *
+ * This is a "mux" for fan control commands, first byte is the
+ * "sub" command.
+ */
+#define SMU_CMD_FAN_COMMAND                    0x4a
+
+
+/*
+ * Battery access
+ *
+ * Same command number as the PMU, could it be same syntax ?
+ */
+#define SMU_CMD_BATTERY_COMMAND                        0x6f
+#define   SMU_CMD_GET_BATTERY_INFO             0x00
+
+/*
+ * Real time clock control
+ *
+ * This is a "mux", first data byte contains the "sub" command.
+ * The "RTC" part of the SMU controls the date, time, powerup
+ * timer, but also a PRAM
+ *
+ * Dates are in BCD format on 7 bytes:
+ * [sec] [min] [hour] [weekday] [month day] [month] [year]
+ * with month being 1 based and year minus 100
+ */
+#define SMU_CMD_RTC_COMMAND                    0x8e
+#define   SMU_CMD_RTC_SET_PWRUP_TIMER          0x00 /* i: 7 bytes date */
+#define   SMU_CMD_RTC_GET_PWRUP_TIMER          0x01 /* o: 7 bytes date */
+#define   SMU_CMD_RTC_STOP_PWRUP_TIMER         0x02
+#define   SMU_CMD_RTC_SET_PRAM_BYTE_ACC                0x20 /* i: 1 byte (address?) */
+#define   SMU_CMD_RTC_SET_PRAM_AUTOINC         0x21 /* i: 1 byte (data?) */
+#define   SMU_CMD_RTC_SET_PRAM_LO_BYTES        0x22 /* i: 10 bytes */
+#define   SMU_CMD_RTC_SET_PRAM_HI_BYTES        0x23 /* i: 10 bytes */
+#define   SMU_CMD_RTC_GET_PRAM_BYTE            0x28 /* i: 1 bytes (address?) */
+#define   SMU_CMD_RTC_GET_PRAM_LO_BYTES        0x29 /* o: 10 bytes */
+#define   SMU_CMD_RTC_GET_PRAM_HI_BYTES        0x2a /* o: 10 bytes */
+#define          SMU_CMD_RTC_SET_DATETIME              0x80 /* i: 7 bytes date */
+#define   SMU_CMD_RTC_GET_DATETIME             0x81 /* o: 7 bytes date */
+
+ /*
+  * i2c commands
+  *
+  * To issue an i2c command, first is to send a parameter block to the
+  * the SMU. This is a command of type 0x9a with 9 bytes of header
+  * eventually followed by data for a write:
+  *
+  * 0: bus number (from device-tree usually, SMU has lots of busses !)
+  * 1: transfer type/format (see below)
+  * 2: device address. For combined and combined4 type transfers, this
+  *    is the "write" version of the address (bit 0x01 cleared)
+  * 3: subaddress length (0..3)
+  * 4: subaddress byte 0 (or only byte for subaddress length 1)
+  * 5: subaddress byte 1
+  * 6: subaddress byte 2
+  * 7: combined address (device address for combined mode data phase)
+  * 8: data length
+  *
+  * The transfer types are the same good old Apple ones it seems,
+  * that is:
+  *   - 0x00: Simple transfer
+  *   - 0x01: Subaddress transfer (addr write + data tx, no restart)
+  *   - 0x02: Combined transfer (addr write + restart + data tx)
+  *
+  * This is then followed by actual data for a write.
+  *
+  * At this point, the OF driver seems to have a limitation on transfer
+  * sizes of 0xd bytes on reads and 0x5 bytes on writes. I do not know
+  * wether this is just an OF limit due to some temporary buffer size
+  * or if this is an SMU imposed limit. This driver has the same limitation
+  * for now as I use a 0x10 bytes temporary buffer as well
+  *
+  * Once that is completed, a response is expected from the SMU. This is
+  * obtained via a command of type 0x9a with a length of 1 byte containing
+  * 0 as the data byte. OF also fills the rest of the data buffer with 0xff's
+  * though I can't tell yet if this is actually necessary. Once this command
+  * is complete, at this point, all I can tell is what OF does. OF tests
+  * byte 0 of the reply:
+  *   - on read, 0xfe or 0xfc : bus is busy, wait (see below) or nak ?
+  *   - on read, 0x00 or 0x01 : reply is in buffer (after the byte 0)
+  *   - on write, < 0 -> failure (immediate exit)
+  *   - else, OF just exists (without error, weird)
+  *
+  * So on read, there is this wait-for-busy thing when getting a 0xfc or
+  * 0xfe result. OF does a loop of up to 64 retries, waiting 20ms and
+  * doing the above again until either the retries expire or the result
+  * is no longer 0xfe or 0xfc
+  *
+  * The Darwin I2C driver is less subtle though. On any non-success status
+  * from the response command, it waits 5ms and tries again up to 20 times,
+  * it doesn't differenciate between fatal errors or "busy" status.
+  *
+  * This driver provides an asynchronous paramblock based i2c command
+  * interface to be used either directly by low level code or by a higher
+  * level driver interfacing to the linux i2c layer. The current
+  * implementation of this relies on working timers & timer interrupts
+  * though, so be careful of calling context for now. This may be "fixed"
+  * in the future by adding a polling facility.
+  */
+#define SMU_CMD_I2C_COMMAND                    0x9a
+          /* transfer types */
+#define   SMU_I2C_TRANSFER_SIMPLE      0x00
+#define   SMU_I2C_TRANSFER_STDSUB      0x01
+#define   SMU_I2C_TRANSFER_COMBINED    0x02
+
+/*
+ * Power supply control
+ *
+ * The "sub" command is an ASCII string in the data, the
+ * data lenght is that of the string.
+ *
+ * The VSLEW command can be used to get or set the voltage slewing.
+ *  - lenght 5 (only "VSLEW") : it returns "DONE" and 3 bytes of
+ *    reply at data offset 6, 7 and 8.
+ *  - lenght 8 ("VSLEWxyz") has 3 additional bytes appended, and is
+ *    used to set the voltage slewing point. The SMU replies with "DONE"
+ * I yet have to figure out their exact meaning of those 3 bytes in
+ * both cases.
+ *
+ */
+#define SMU_CMD_POWER_COMMAND                  0xaa
+#define   SMU_CMD_POWER_RESTART                        "RESTART"
+#define   SMU_CMD_POWER_SHUTDOWN               "SHUTDOWN"
+#define   SMU_CMD_POWER_VOLTAGE_SLEW           "VSLEW"
+
+/* Misc commands
+ *
+ * This command seem to be a grab bag of various things
+ */
+#define SMU_CMD_MISC_df_COMMAND                        0xdf
+#define   SMU_CMD_MISC_df_SET_DISPLAY_LIT      0x02 /* i: 1 byte */
+#define   SMU_CMD_MISC_df_NMI_OPTION           0x04
+
+/*
+ * Version info commands
+ *
+ * I haven't quite tried to figure out how these work
+ */
+#define SMU_CMD_VERSION_COMMAND                        0xea
+
+
+/*
+ * Misc commands
+ *
+ * This command seem to be a grab bag of various things
+ */
+#define SMU_CMD_MISC_ee_COMMAND                        0xee
+#define   SMU_CMD_MISC_ee_GET_DATABLOCK_REC    0x02
+#define          SMU_CMD_MISC_ee_LEDS_CTRL             0x04 /* i: 00 (00,01) [00] */
+#define   SMU_CMD_MISC_ee_GET_DATA             0x05 /* i: 00 , o: ?? */
+
+
+
+/*
+ * - Kernel side interface -
+ */
+
+#ifdef __KERNEL__
+
+/*
+ * Asynchronous SMU commands
+ *
+ * Fill up this structure and submit it via smu_queue_command(),
+ * and get notified by the optional done() callback, or because
+ * status becomes != 1
+ */
+
+struct smu_cmd;
+
+struct smu_cmd
+{
+       /* public */
+       u8                      cmd;            /* command */
+       int                     data_len;       /* data len */
+       int                     reply_len;      /* reply len */
+       void                    *data_buf;      /* data buffer */
+       void                    *reply_buf;     /* reply buffer */
+       int                     status;         /* command status */
+       void                    (*done)(struct smu_cmd *cmd, void *misc);
+       void                    *misc;
+
+       /* private */
+       struct list_head        link;
+};
+
+/*
+ * Queues an SMU command, all fields have to be initialized
+ */
+extern int smu_queue_cmd(struct smu_cmd *cmd);
+
+/*
+ * Simple command wrapper. This structure embeds a small buffer
+ * to ease sending simple SMU commands from the stack
+ */
+struct smu_simple_cmd
+{
+       struct smu_cmd  cmd;
+       u8              buffer[16];
+};
+
+/*
+ * Queues a simple command. All fields will be initialized by that
+ * function
+ */
+extern int smu_queue_simple(struct smu_simple_cmd *scmd, u8 command,
+                           unsigned int data_len,
+                           void (*done)(struct smu_cmd *cmd, void *misc),
+                           void *misc,
+                           ...);
+
+/*
+ * Completion helper. Pass it to smu_queue_simple or as 'done'
+ * member to smu_queue_cmd, it will call complete() on the struct
+ * completion passed in the "misc" argument
+ */
+extern void smu_done_complete(struct smu_cmd *cmd, void *misc);
+
+/*
+ * Synchronous helpers. Will spin-wait for completion of a command
+ */
+extern void smu_spinwait_cmd(struct smu_cmd *cmd);
+
+static inline void smu_spinwait_simple(struct smu_simple_cmd *scmd)
+{
+       smu_spinwait_cmd(&scmd->cmd);
+}
+
+/*
+ * Poll routine to call if blocked with irqs off
+ */
+extern void smu_poll(void);
+
+
+/*
+ * Init routine, presence check....
+ */
+extern int smu_init(void);
+extern int smu_present(void);
+struct of_device;
+extern struct of_device *smu_get_ofdev(void);
+
+
+/*
+ * Common command wrappers
+ */
+extern void smu_shutdown(void);
+extern void smu_restart(void);
+struct rtc_time;
+extern int smu_get_rtc_time(struct rtc_time *time, int spinwait);
+extern int smu_set_rtc_time(struct rtc_time *time, int spinwait);
+
+/*
+ * SMU command buffer absolute address, exported by pmac_setup,
+ * this is allocated very early during boot.
+ */
+extern unsigned long smu_cmdbuf_abs;
+
+
+/*
+ * Kenrel asynchronous i2c interface
+ */
+
+/* SMU i2c header, exactly matches i2c header on wire */
+struct smu_i2c_param
+{
+       u8      bus;            /* SMU bus ID (from device tree) */
+       u8      type;           /* i2c transfer type */
+       u8      devaddr;        /* device address (includes direction) */
+       u8      sublen;         /* subaddress length */
+       u8      subaddr[3];     /* subaddress */
+       u8      caddr;          /* combined address, filled by SMU driver */
+       u8      datalen;        /* length of transfer */
+       u8      data[7];        /* data */
+};
+
+#define SMU_I2C_READ_MAX       0x0d
+#define SMU_I2C_WRITE_MAX      0x05
+
+struct smu_i2c_cmd
+{
+       /* public */
+       struct smu_i2c_param    info;
+       void                    (*done)(struct smu_i2c_cmd *cmd, void *misc);
+       void                    *misc;
+       int                     status; /* 1 = pending, 0 = ok, <0 = fail */
+
+       /* private */
+       struct smu_cmd          scmd;
+       int                     read;
+       int                     stage;
+       int                     retries;
+       u8                      pdata[0x10];
+       struct list_head        link;
+};
+
+/*
+ * Call this to queue an i2c command to the SMU. You must fill info,
+ * including info.data for a write, done and misc.
+ * For now, no polling interface is provided so you have to use completion
+ * callback.
+ */
+extern int smu_queue_i2c(struct smu_i2c_cmd *cmd);
+
+
+#endif /* __KERNEL__ */
+
+/*
+ * - Userland interface -
+ */
+
+/*
+ * A given instance of the device can be configured for 2 different
+ * things at the moment:
+ *
+ *  - sending SMU commands (default at open() time)
+ *  - receiving SMU events (not yet implemented)
+ *
+ * Commands are written with write() of a command block. They can be
+ * "driver" commands (for example to switch to event reception mode)
+ * or real SMU commands. They are made of a header followed by command
+ * data if any.
+ *
+ * For SMU commands (not for driver commands), you can then read() back
+ * a reply. The reader will be blocked or not depending on how the device
+ * file is opened. poll() isn't implemented yet. The reply will consist
+ * of a header as well, followed by the reply data if any. You should
+ * always provide a buffer large enough for the maximum reply data, I
+ * recommand one page.
+ *
+ * It is illegal to send SMU commands through a file descriptor configured
+ * for events reception
+ *
+ */
+struct smu_user_cmd_hdr
+{
+       __u32           cmdtype;
+#define SMU_CMDTYPE_SMU                        0       /* SMU command */
+#define SMU_CMDTYPE_WANTS_EVENTS       1       /* switch fd to events mode */
+
+       __u8            cmd;                    /* SMU command byte */
+       __u32           data_len;               /* Lenght of data following */
+};
+
+struct smu_user_reply_hdr
+{
+       __u32           status;                 /* Command status */
+       __u32           reply_len;              /* Lenght of data follwing */
+};
+
+#endif /*  _SMU_H */
diff --git a/include/asm-powerpc/uninorth.h b/include/asm-powerpc/uninorth.h
new file mode 100644 (file)
index 0000000..f737732
--- /dev/null
@@ -0,0 +1,229 @@
+/*
+ * uninorth.h: definitions for using the "UniNorth" host bridge chip
+ *             from Apple. This chip is used on "Core99" machines
+ *            This also includes U2 used on more recent MacRISC2/3
+ *             machines and U3 (G5) 
+ *
+ */
+#ifdef __KERNEL__
+#ifndef __ASM_UNINORTH_H__
+#define __ASM_UNINORTH_H__
+
+/*
+ * Uni-N and U3 config space reg. definitions
+ *
+ * (Little endian)
+ */
+
+/* Address ranges selection. This one should work with Bandit too */
+/* Not U3 */
+#define UNI_N_ADDR_SELECT              0x48
+#define UNI_N_ADDR_COARSE_MASK         0xffff0000      /* 256Mb regions at *0000000 */
+#define UNI_N_ADDR_FINE_MASK           0x0000ffff      /*  16Mb regions at f*000000 */
+
+/* AGP registers */
+/* Not U3 */
+#define UNI_N_CFG_GART_BASE            0x8c
+#define UNI_N_CFG_AGP_BASE             0x90
+#define UNI_N_CFG_GART_CTRL            0x94
+#define UNI_N_CFG_INTERNAL_STATUS      0x98
+#define UNI_N_CFG_GART_DUMMY_PAGE      0xa4
+
+/* UNI_N_CFG_GART_CTRL bits definitions */
+#define UNI_N_CFG_GART_INVAL           0x00000001
+#define UNI_N_CFG_GART_ENABLE          0x00000100
+#define UNI_N_CFG_GART_2xRESET         0x00010000
+#define UNI_N_CFG_GART_DISSBADET       0x00020000
+/* The following seems to only be used only on U3 <j.glisse@gmail.com> */
+#define U3_N_CFG_GART_SYNCMODE         0x00040000
+#define U3_N_CFG_GART_PERFRD           0x00080000
+#define U3_N_CFG_GART_B2BGNT           0x00200000
+#define U3_N_CFG_GART_FASTDDR          0x00400000
+
+/* My understanding of UniNorth AGP as of UniNorth rev 1.0x,
+ * revision 1.5 (x4 AGP) may need further changes.
+ *
+ * AGP_BASE register contains the base address of the AGP aperture on
+ * the AGP bus. It doesn't seem to be visible to the CPU as of UniNorth 1.x,
+ * even if decoding of this address range is enabled in the address select
+ * register. Apparently, the only supported bases are 256Mb multiples
+ * (high 4 bits of that register).
+ *
+ * GART_BASE register appear to contain the physical address of the GART
+ * in system memory in the high address bits (page aligned), and the
+ * GART size in the low order bits (number of GART pages)
+ *
+ * The GART format itself is one 32bits word per physical memory page.
+ * This word contains, in little-endian format (!!!), the physical address
+ * of the page in the high bits, and what appears to be an "enable" bit
+ * in the LSB bit (0) that must be set to 1 when the entry is valid.
+ *
+ * Obviously, the GART is not cache coherent and so any change to it
+ * must be flushed to memory (or maybe just make the GART space non
+ * cachable). AGP memory itself doens't seem to be cache coherent neither.
+ *
+ * In order to invalidate the GART (which is probably necessary to inval
+ * the bridge internal TLBs), the following sequence has to be written,
+ * in order, to the GART_CTRL register:
+ *
+ *   UNI_N_CFG_GART_ENABLE | UNI_N_CFG_GART_INVAL
+ *   UNI_N_CFG_GART_ENABLE
+ *   UNI_N_CFG_GART_ENABLE | UNI_N_CFG_GART_2xRESET
+ *   UNI_N_CFG_GART_ENABLE
+ *
+ * As far as AGP "features" are concerned, it looks like fast write may
+ * not be supported but this has to be confirmed.
+ *
+ * Turning on AGP seem to require a double invalidate operation, one before
+ * setting the AGP command register, on after.
+ *
+ * Turning off AGP seems to require the following sequence: first wait
+ * for the AGP to be idle by reading the internal status register, then
+ * write in that order to the GART_CTRL register:
+ *
+ *   UNI_N_CFG_GART_ENABLE | UNI_N_CFG_GART_INVAL
+ *   0
+ *   UNI_N_CFG_GART_2xRESET
+ *   0
+ */
+
+/*
+ * Uni-N memory mapped reg. definitions
+ *
+ * Those registers are Big-Endian !!
+ *
+ * Their meaning come from either Darwin and/or from experiments I made with
+ * the bootrom, I'm not sure about their exact meaning yet
+ *
+ */
+
+/* Version of the UniNorth chip */
+#define UNI_N_VERSION                  0x0000          /* Known versions: 3,7 and 8 */
+
+#define UNI_N_VERSION_107              0x0003          /* 1.0.7 */
+#define UNI_N_VERSION_10A              0x0007          /* 1.0.10 */
+#define UNI_N_VERSION_150              0x0011          /* 1.5 */
+#define UNI_N_VERSION_200              0x0024          /* 2.0 */
+#define UNI_N_VERSION_PANGEA           0x00C0          /* Integrated U1 + K */
+#define UNI_N_VERSION_INTREPID         0x00D2          /* Integrated U2 + K */
+#define UNI_N_VERSION_300              0x0030          /* 3.0 (U3 on G5) */
+
+/* This register is used to enable/disable various clocks */
+#define UNI_N_CLOCK_CNTL               0x0020
+#define UNI_N_CLOCK_CNTL_PCI           0x00000001      /* PCI2 clock control */
+#define UNI_N_CLOCK_CNTL_GMAC          0x00000002      /* GMAC clock control */
+#define UNI_N_CLOCK_CNTL_FW            0x00000004      /* FireWire clock control */
+#define UNI_N_CLOCK_CNTL_ATA100                0x00000010      /* ATA-100 clock control (U2) */
+
+/* Power Management control */
+#define UNI_N_POWER_MGT                        0x0030
+#define UNI_N_POWER_MGT_NORMAL         0x00
+#define UNI_N_POWER_MGT_IDLE2          0x01
+#define UNI_N_POWER_MGT_SLEEP          0x02
+
+/* This register is configured by Darwin depending on the UniN
+ * revision
+ */
+#define UNI_N_ARB_CTRL                 0x0040
+#define UNI_N_ARB_CTRL_QACK_DELAY_SHIFT        15
+#define UNI_N_ARB_CTRL_QACK_DELAY_MASK 0x0e1f8000
+#define UNI_N_ARB_CTRL_QACK_DELAY      0x30
+#define UNI_N_ARB_CTRL_QACK_DELAY105   0x00
+
+/* This one _might_ return the CPU number of the CPU reading it;
+ * the bootROM decides whether to boot or to sleep/spinloop depending
+ * on this register beeing 0 or not
+ */
+#define UNI_N_CPU_NUMBER               0x0050
+
+/* This register appear to be read by the bootROM to decide what
+ *  to do on a non-recoverable reset (powerup or wakeup)
+ */
+#define UNI_N_HWINIT_STATE             0x0070
+#define UNI_N_HWINIT_STATE_SLEEPING    0x01
+#define UNI_N_HWINIT_STATE_RUNNING     0x02
+/* This last bit appear to be used by the bootROM to know the second
+ * CPU has started and will enter it's sleep loop with IP=0
+ */
+#define UNI_N_HWINIT_STATE_CPU1_FLAG   0x10000000
+
+/* This register controls AACK delay, which is set when 2004 iBook/PowerBook
+ * is in low speed mode.
+ */
+#define UNI_N_AACK_DELAY               0x0100
+#define UNI_N_AACK_DELAY_ENABLE                0x00000001
+
+/* Clock status for Intrepid */
+#define UNI_N_CLOCK_STOP_STATUS0       0x0150
+#define UNI_N_CLOCK_STOPPED_EXTAGP     0x00200000
+#define UNI_N_CLOCK_STOPPED_AGPDEL     0x00100000
+#define UNI_N_CLOCK_STOPPED_I2S0_45_49 0x00080000
+#define UNI_N_CLOCK_STOPPED_I2S0_18    0x00040000
+#define UNI_N_CLOCK_STOPPED_I2S1_45_49 0x00020000
+#define UNI_N_CLOCK_STOPPED_I2S1_18    0x00010000
+#define UNI_N_CLOCK_STOPPED_TIMER      0x00008000
+#define UNI_N_CLOCK_STOPPED_SCC_RTCLK18        0x00004000
+#define UNI_N_CLOCK_STOPPED_SCC_RTCLK32        0x00002000
+#define UNI_N_CLOCK_STOPPED_SCC_VIA32  0x00001000
+#define UNI_N_CLOCK_STOPPED_SCC_SLOT0  0x00000800
+#define UNI_N_CLOCK_STOPPED_SCC_SLOT1  0x00000400
+#define UNI_N_CLOCK_STOPPED_SCC_SLOT2  0x00000200
+#define UNI_N_CLOCK_STOPPED_PCI_FBCLKO 0x00000100
+#define UNI_N_CLOCK_STOPPED_VEO0       0x00000080
+#define UNI_N_CLOCK_STOPPED_VEO1       0x00000040
+#define UNI_N_CLOCK_STOPPED_USB0       0x00000020
+#define UNI_N_CLOCK_STOPPED_USB1       0x00000010
+#define UNI_N_CLOCK_STOPPED_USB2       0x00000008
+#define UNI_N_CLOCK_STOPPED_32         0x00000004
+#define UNI_N_CLOCK_STOPPED_45         0x00000002
+#define UNI_N_CLOCK_STOPPED_49         0x00000001
+
+#define UNI_N_CLOCK_STOP_STATUS1       0x0160
+#define UNI_N_CLOCK_STOPPED_PLL4REF    0x00080000
+#define UNI_N_CLOCK_STOPPED_CPUDEL     0x00040000
+#define UNI_N_CLOCK_STOPPED_CPU                0x00020000
+#define UNI_N_CLOCK_STOPPED_BUF_REFCKO 0x00010000
+#define UNI_N_CLOCK_STOPPED_PCI2       0x00008000
+#define UNI_N_CLOCK_STOPPED_FW         0x00004000
+#define UNI_N_CLOCK_STOPPED_GB         0x00002000
+#define UNI_N_CLOCK_STOPPED_ATA66      0x00001000
+#define UNI_N_CLOCK_STOPPED_ATA100     0x00000800
+#define UNI_N_CLOCK_STOPPED_MAX                0x00000400
+#define UNI_N_CLOCK_STOPPED_PCI1       0x00000200
+#define UNI_N_CLOCK_STOPPED_KLPCI      0x00000100
+#define UNI_N_CLOCK_STOPPED_USB0PCI    0x00000080
+#define UNI_N_CLOCK_STOPPED_USB1PCI    0x00000040
+#define UNI_N_CLOCK_STOPPED_USB2PCI    0x00000020
+#define UNI_N_CLOCK_STOPPED_7PCI1      0x00000008
+#define UNI_N_CLOCK_STOPPED_AGP                0x00000004
+#define UNI_N_CLOCK_STOPPED_PCI0       0x00000002
+#define UNI_N_CLOCK_STOPPED_18         0x00000001
+
+/* Intrepid registe to OF do-platform-clockspreading */
+#define UNI_N_CLOCK_SPREADING          0x190
+
+/* Uninorth 1.5 rev. has additional perf. monitor registers at 0xf00-0xf50 */
+
+
+/*
+ * U3 specific registers
+ */
+
+
+/* U3 Toggle */
+#define U3_TOGGLE_REG                  0x00e0
+#define U3_PMC_START_STOP              0x0001
+#define U3_MPIC_RESET                  0x0002
+#define U3_MPIC_OUTPUT_ENABLE          0x0004
+
+/* U3 API PHY Config 1 */
+#define U3_API_PHY_CONFIG_1            0x23030
+
+/* U3 HyperTransport registers */
+#define U3_HT_CONFIG_BASE                      0x70000
+#define U3_HT_LINK_COMMAND             0x100
+#define U3_HT_LINK_CONFIG              0x110
+#define U3_HT_LINK_FREQ                        0x120
+
+#endif /* __ASM_UNINORTH_H__ */
+#endif /* __KERNEL__ */
diff --git a/include/asm-ppc/dbdma.h b/include/asm-ppc/dbdma.h
deleted file mode 100644 (file)
index 8973565..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Definitions for using the Apple Descriptor-Based DMA controller
- * in Power Macintosh computers.
- *
- * Copyright (C) 1996 Paul Mackerras.
- */
-
-#ifdef __KERNEL__
-#ifndef _ASM_DBDMA_H_
-#define _ASM_DBDMA_H_
-/*
- * DBDMA control/status registers.  All little-endian.
- */
-struct dbdma_regs {
-    unsigned int control;      /* lets you change bits in status */
-    unsigned int status;       /* DMA and device status bits (see below) */
-    unsigned int cmdptr_hi;    /* upper 32 bits of command address */
-    unsigned int cmdptr;       /* (lower 32 bits of) command address (phys) */
-    unsigned int intr_sel;     /* select interrupt condition bit */
-    unsigned int br_sel;       /* select branch condition bit */
-    unsigned int wait_sel;     /* select wait condition bit */
-    unsigned int xfer_mode;
-    unsigned int data2ptr_hi;
-    unsigned int data2ptr;
-    unsigned int res1;
-    unsigned int address_hi;
-    unsigned int br_addr_hi;
-    unsigned int res2[3];
-};
-
-/* Bits in control and status registers */
-#define RUN    0x8000
-#define PAUSE  0x4000
-#define FLUSH  0x2000
-#define WAKE   0x1000
-#define DEAD   0x0800
-#define ACTIVE 0x0400
-#define BT     0x0100
-#define DEVSTAT        0x00ff
-
-/*
- * DBDMA command structure.  These fields are all little-endian!
- */
-struct dbdma_cmd {
-    unsigned short req_count;  /* requested byte transfer count */
-    unsigned short command;    /* command word (has bit-fields) */
-    unsigned int   phy_addr;   /* physical data address */
-    unsigned int   cmd_dep;    /* command-dependent field */
-    unsigned short res_count;  /* residual count after completion */
-    unsigned short xfer_status;        /* transfer status */
-};
-
-/* DBDMA command values in command field */
-#define OUTPUT_MORE    0       /* transfer memory data to stream */
-#define OUTPUT_LAST    0x1000  /* ditto followed by end marker */
-#define INPUT_MORE     0x2000  /* transfer stream data to memory */
-#define INPUT_LAST     0x3000  /* ditto, expect end marker */
-#define STORE_WORD     0x4000  /* write word (4 bytes) to device reg */
-#define LOAD_WORD      0x5000  /* read word (4 bytes) from device reg */
-#define DBDMA_NOP      0x6000  /* do nothing */
-#define DBDMA_STOP     0x7000  /* suspend processing */
-
-/* Key values in command field */
-#define KEY_STREAM0    0       /* usual data stream */
-#define KEY_STREAM1    0x100   /* control/status stream */
-#define KEY_STREAM2    0x200   /* device-dependent stream */
-#define KEY_STREAM3    0x300   /* device-dependent stream */
-#define KEY_REGS       0x500   /* device register space */
-#define KEY_SYSTEM     0x600   /* system memory-mapped space */
-#define KEY_DEVICE     0x700   /* device memory-mapped space */
-
-/* Interrupt control values in command field */
-#define INTR_NEVER     0       /* don't interrupt */
-#define INTR_IFSET     0x10    /* intr if condition bit is 1 */
-#define INTR_IFCLR     0x20    /* intr if condition bit is 0 */
-#define INTR_ALWAYS    0x30    /* always interrupt */
-
-/* Branch control values in command field */
-#define BR_NEVER       0       /* don't branch */
-#define BR_IFSET       0x4     /* branch if condition bit is 1 */
-#define BR_IFCLR       0x8     /* branch if condition bit is 0 */
-#define BR_ALWAYS      0xc     /* always branch */
-
-/* Wait control values in command field */
-#define WAIT_NEVER     0       /* don't wait */
-#define WAIT_IFSET     1       /* wait if condition bit is 1 */
-#define WAIT_IFCLR     2       /* wait if condition bit is 0 */
-#define WAIT_ALWAYS    3       /* always wait */
-
-/* Align an address for a DBDMA command structure */
-#define DBDMA_ALIGN(x) (((unsigned long)(x) + sizeof(struct dbdma_cmd) - 1) \
-                        & -sizeof(struct dbdma_cmd))
-
-/* Useful macros */
-#define DBDMA_DO_STOP(regs) do {                               \
-       out_le32(&((regs)->control), (RUN|FLUSH)<<16);          \
-       while(in_le32(&((regs)->status)) & (ACTIVE|FLUSH))      \
-               ;                                               \
-} while(0)
-
-#endif /* _ASM_DBDMA_H_ */
-#endif /* __KERNEL__ */
diff --git a/include/asm-ppc/heathrow.h b/include/asm-ppc/heathrow.h
deleted file mode 100644 (file)
index 22ac179..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * heathrow.h: definitions for using the "Heathrow" I/O controller chip.
- *
- * Grabbed from Open Firmware definitions on a PowerBook G3 Series
- *
- * Copyright (C) 1997 Paul Mackerras.
- */
-
-/* Front light color on Yikes/B&W G3. 32 bits */
-#define HEATHROW_FRONT_LIGHT           0x32 /* (set to 0 or 0xffffffff) */
-
-/* Brightness/contrast (gossamer iMac ?). 8 bits */
-#define HEATHROW_BRIGHTNESS_CNTL       0x32
-#define HEATHROW_CONTRAST_CNTL         0x33
-
-/* offset from ohare base for feature control register */
-#define HEATHROW_MBCR                  0x34    /* Media bay control */
-#define HEATHROW_FCR                   0x38    /* Feature control */
-#define HEATHROW_AUX_CNTL_REG          0x3c    /* Aux control */
-
-/*
- * Bits in feature control register.
- * Bits postfixed with a _N are in inverse logic
- */
-#define HRW_SCC_TRANS_EN_N     0x00000001      /* Also controls modem power */
-#define HRW_BAY_POWER_N                0x00000002
-#define HRW_BAY_PCI_ENABLE     0x00000004
-#define HRW_BAY_IDE_ENABLE     0x00000008
-#define HRW_BAY_FLOPPY_ENABLE  0x00000010
-#define HRW_IDE0_ENABLE                0x00000020
-#define HRW_IDE0_RESET_N       0x00000040
-#define HRW_BAY_DEV_MASK       0x0000001c
-#define HRW_BAY_RESET_N                0x00000080
-#define HRW_IOBUS_ENABLE       0x00000100      /* Internal IDE ? */
-#define HRW_SCC_ENABLE         0x00000200
-#define HRW_MESH_ENABLE                0x00000400
-#define HRW_SWIM_ENABLE                0x00000800
-#define HRW_SOUND_POWER_N      0x00001000
-#define HRW_SOUND_CLK_ENABLE   0x00002000
-#define HRW_SCCA_IO            0x00004000
-#define HRW_SCCB_IO            0x00008000
-#define HRW_PORT_OR_DESK_VIA_N 0x00010000      /* This one is 0 on PowerBook */
-#define HRW_PWM_MON_ID_N       0x00020000      /* ??? (0) */
-#define HRW_HOOK_MB_CNT_N      0x00040000      /* ??? (0) */
-#define HRW_SWIM_CLONE_FLOPPY  0x00080000      /* ??? (0) */
-#define HRW_AUD_RUN22          0x00100000      /* ??? (1) */
-#define HRW_SCSI_LINK_MODE     0x00200000      /* Read ??? (1) */
-#define HRW_ARB_BYPASS         0x00400000      /* Disable internal PCI arbitrer */
-#define HRW_IDE1_RESET_N       0x00800000      /* Media bay */
-#define HRW_SLOW_SCC_PCLK      0x01000000      /* ??? (0) */
-#define HRW_RESET_SCC          0x02000000
-#define HRW_MFDC_CELL_ENABLE   0x04000000      /* ??? (0) */
-#define HRW_USE_MFDC           0x08000000      /* ??? (0) */
-#define HRW_BMAC_IO_ENABLE     0x60000000      /* two bits, not documented in OF */
-#define HRW_BMAC_RESET         0x80000000      /* not documented in OF */
-
-/* We OR those features at boot on desktop G3s */
-#define HRW_DEFAULTS           (HRW_SCCA_IO | HRW_SCCB_IO | HRW_SCC_ENABLE)
-
-/* Looks like Heathrow has some sort of GPIOs as well... */
-#define HRW_GPIO_MODEM_RESET   0x6d
-
diff --git a/include/asm-ppc/keylargo.h b/include/asm-ppc/keylargo.h
deleted file mode 100644 (file)
index a669a3f..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * keylargo.h: definitions for using the "KeyLargo" I/O controller chip.
- *
- */
-
-/* "Pangea" chipset has keylargo device-id 0x25 while core99
- * has device-id 0x22. The rev. of the pangea one is 0, so we
- * fake an artificial rev. in keylargo_rev by oring 0x100
- */
-#define KL_PANGEA_REV          0x100
-
-/* offset from base for feature control registers */
-#define KEYLARGO_MBCR          0x34    /* KL Only, Media bay control/status */
-#define KEYLARGO_FCR0          0x38
-#define KEYLARGO_FCR1          0x3c
-#define KEYLARGO_FCR2          0x40
-#define KEYLARGO_FCR3          0x44
-#define KEYLARGO_FCR4          0x48
-#define KEYLARGO_FCR5          0x4c    /* Pangea only */
-
-/* K2 aditional FCRs */
-#define K2_FCR6                        0x34
-#define K2_FCR7                        0x30
-#define K2_FCR8                        0x2c
-#define K2_FCR9                        0x28
-#define K2_FCR10               0x24
-
-/* GPIO registers */
-#define KEYLARGO_GPIO_LEVELS0          0x50
-#define KEYLARGO_GPIO_LEVELS1          0x54
-#define KEYLARGO_GPIO_EXTINT_0         0x58
-#define KEYLARGO_GPIO_EXTINT_CNT       18
-#define KEYLARGO_GPIO_0                        0x6A
-#define KEYLARGO_GPIO_CNT              17
-#define KEYLARGO_GPIO_EXTINT_DUAL_EDGE 0x80
-#define KEYLARGO_GPIO_OUTPUT_ENABLE    0x04
-#define KEYLARGO_GPIO_OUTOUT_DATA      0x01
-#define KEYLARGO_GPIO_INPUT_DATA       0x02
-
-/* K2 does only extint GPIOs and does 51 of them */
-#define K2_GPIO_EXTINT_0               0x58
-#define K2_GPIO_EXTINT_CNT             51
-
-/* Specific GPIO regs */
-
-#define KL_GPIO_MODEM_RESET            (KEYLARGO_GPIO_0+0x03)
-#define KL_GPIO_MODEM_POWER            (KEYLARGO_GPIO_0+0x02) /* Pangea */
-
-#define KL_GPIO_SOUND_POWER            (KEYLARGO_GPIO_0+0x05)
-
-/* Hrm... this one is only to be used on Pismo. It seeem to also
- * control the timebase enable on other machines. Still to be
- * experimented... --BenH.
- */
-#define KL_GPIO_FW_CABLE_POWER         (KEYLARGO_GPIO_0+0x09)
-#define KL_GPIO_TB_ENABLE              (KEYLARGO_GPIO_0+0x09)
-
-#define KL_GPIO_ETH_PHY_RESET          (KEYLARGO_GPIO_0+0x10)
-
-#define KL_GPIO_EXTINT_CPU1            (KEYLARGO_GPIO_0+0x0a)
-#define KL_GPIO_EXTINT_CPU1_ASSERT     0x04
-#define KL_GPIO_EXTINT_CPU1_RELEASE    0x38
-
-#define KL_GPIO_RESET_CPU0             (KEYLARGO_GPIO_EXTINT_0+0x03)
-#define KL_GPIO_RESET_CPU1             (KEYLARGO_GPIO_EXTINT_0+0x04)
-#define KL_GPIO_RESET_CPU2             (KEYLARGO_GPIO_EXTINT_0+0x0f)
-#define KL_GPIO_RESET_CPU3             (KEYLARGO_GPIO_EXTINT_0+0x10)
-
-#define KL_GPIO_PMU_MESSAGE_IRQ                (KEYLARGO_GPIO_EXTINT_0+0x09)
-#define KL_GPIO_PMU_MESSAGE_BIT                KEYLARGO_GPIO_INPUT_DATA
-
-#define KL_GPIO_MEDIABAY_IRQ           (KEYLARGO_GPIO_EXTINT_0+0x0e)
-
-#define KL_GPIO_AIRPORT_0              (KEYLARGO_GPIO_EXTINT_0+0x0a)
-#define KL_GPIO_AIRPORT_1              (KEYLARGO_GPIO_EXTINT_0+0x0d)
-#define KL_GPIO_AIRPORT_2              (KEYLARGO_GPIO_0+0x0d)
-#define KL_GPIO_AIRPORT_3              (KEYLARGO_GPIO_0+0x0e)
-#define KL_GPIO_AIRPORT_4              (KEYLARGO_GPIO_0+0x0f)
-
-/*
- * Bits in feature control register. Those bits different for K2 are
- * listed separately
- */
-#define KL_MBCR_MB0_PCI_ENABLE         0x00000800      /* exist ? */
-#define KL_MBCR_MB0_IDE_ENABLE         0x00001000
-#define KL_MBCR_MB0_FLOPPY_ENABLE      0x00002000      /* exist ? */
-#define KL_MBCR_MB0_SOUND_ENABLE       0x00004000      /* hrm... */
-#define KL_MBCR_MB0_DEV_MASK           0x00007800
-#define KL_MBCR_MB0_DEV_POWER          0x00000400
-#define KL_MBCR_MB0_DEV_RESET          0x00000200
-#define KL_MBCR_MB0_ENABLE             0x00000100
-#define KL_MBCR_MB1_PCI_ENABLE         0x08000000      /* exist ? */
-#define KL_MBCR_MB1_IDE_ENABLE         0x10000000
-#define KL_MBCR_MB1_FLOPPY_ENABLE      0x20000000      /* exist ? */
-#define KL_MBCR_MB1_SOUND_ENABLE       0x40000000      /* hrm... */
-#define KL_MBCR_MB1_DEV_MASK           0x78000000
-#define KL_MBCR_MB1_DEV_POWER          0x04000000
-#define KL_MBCR_MB1_DEV_RESET          0x02000000
-#define KL_MBCR_MB1_ENABLE             0x01000000
-
-#define KL0_SCC_B_INTF_ENABLE          0x00000001      /* (KL Only) */
-#define KL0_SCC_A_INTF_ENABLE          0x00000002
-#define KL0_SCC_SLOWPCLK               0x00000004
-#define KL0_SCC_RESET                  0x00000008
-#define KL0_SCCA_ENABLE                        0x00000010
-#define KL0_SCCB_ENABLE                        0x00000020
-#define KL0_SCC_CELL_ENABLE            0x00000040
-#define KL0_IRDA_HIGH_BAND             0x00000100      /* (KL Only) */
-#define KL0_IRDA_SOURCE2_SEL           0x00000200      /* (KL Only) */
-#define KL0_IRDA_SOURCE1_SEL           0x00000400      /* (KL Only) */
-#define KL0_PG_USB0_PMI_ENABLE         0x00000400      /* (Pangea/Intrepid Only) */
-#define KL0_IRDA_RESET                 0x00000800      /* (KL Only) */
-#define KL0_PG_USB0_REF_SUSPEND_SEL    0x00000800      /* (Pangea/Intrepid Only) */
-#define KL0_IRDA_DEFAULT1              0x00001000      /* (KL Only) */
-#define KL0_PG_USB0_REF_SUSPEND                0x00001000      /* (Pangea/Intrepid Only) */
-#define KL0_IRDA_DEFAULT0              0x00002000      /* (KL Only) */
-#define KL0_PG_USB0_PAD_SUSPEND                0x00002000      /* (Pangea/Intrepid Only) */
-#define KL0_IRDA_FAST_CONNECT          0x00004000      /* (KL Only) */
-#define KL0_PG_USB1_PMI_ENABLE         0x00004000      /* (Pangea/Intrepid Only) */
-#define KL0_IRDA_ENABLE                        0x00008000      /* (KL Only) */
-#define KL0_PG_USB1_REF_SUSPEND_SEL    0x00008000      /* (Pangea/Intrepid Only) */
-#define KL0_IRDA_CLK32_ENABLE          0x00010000      /* (KL Only) */
-#define KL0_PG_USB1_REF_SUSPEND                0x00010000      /* (Pangea/Intrepid Only) */
-#define KL0_IRDA_CLK19_ENABLE          0x00020000      /* (KL Only) */
-#define KL0_PG_USB1_PAD_SUSPEND                0x00020000      /* (Pangea/Intrepid Only) */
-#define KL0_USB0_PAD_SUSPEND0          0x00040000
-#define KL0_USB0_PAD_SUSPEND1          0x00080000
-#define KL0_USB0_CELL_ENABLE           0x00100000
-#define KL0_USB1_PAD_SUSPEND0          0x00400000
-#define KL0_USB1_PAD_SUSPEND1          0x00800000
-#define KL0_USB1_CELL_ENABLE           0x01000000
-#define KL0_USB_REF_SUSPEND            0x10000000      /* (KL Only) */
-
-#define KL0_SERIAL_ENABLE              (KL0_SCC_B_INTF_ENABLE | \
-                                       KL0_SCC_SLOWPCLK | \
-                                       KL0_SCC_CELL_ENABLE | KL0_SCCA_ENABLE)
-
-#define KL1_USB2_PMI_ENABLE            0x00000001      /* Intrepid only */
-#define KL1_AUDIO_SEL_22MCLK           0x00000002      /* KL/Pangea only */
-#define KL1_USB2_REF_SUSPEND_SEL       0x00000002      /* Intrepid only */
-#define KL1_USB2_REF_SUSPEND           0x00000004      /* Intrepid only */
-#define KL1_AUDIO_CLK_ENABLE_BIT       0x00000008      /* KL/Pangea only */
-#define KL1_USB2_PAD_SUSPEND_SEL       0x00000008      /* Intrepid only */
-#define KL1_USB2_PAD_SUSPEND0          0x00000010      /* Intrepid only */
-#define KL1_AUDIO_CLK_OUT_ENABLE       0x00000020      /* KL/Pangea only */
-#define KL1_USB2_PAD_SUSPEND1          0x00000020      /* Intrepid only */
-#define KL1_AUDIO_CELL_ENABLE          0x00000040      /* KL/Pangea only */
-#define KL1_USB2_CELL_ENABLE           0x00000040      /* Intrepid only */
-#define KL1_AUDIO_CHOOSE               0x00000080      /* KL/Pangea only */
-#define KL1_I2S0_CHOOSE                        0x00000200      /* KL Only */
-#define KL1_I2S0_CELL_ENABLE           0x00000400
-#define KL1_I2S0_CLK_ENABLE_BIT                0x00001000
-#define KL1_I2S0_ENABLE                        0x00002000
-#define KL1_I2S1_CELL_ENABLE           0x00020000
-#define KL1_I2S1_CLK_ENABLE_BIT                0x00080000
-#define KL1_I2S1_ENABLE                        0x00100000
-#define KL1_EIDE0_ENABLE               0x00800000      /* KL/Intrepid Only */
-#define KL1_EIDE0_RESET_N              0x01000000      /* KL/Intrepid Only */
-#define KL1_EIDE1_ENABLE               0x04000000      /* KL Only */
-#define KL1_EIDE1_RESET_N              0x08000000      /* KL Only */
-#define KL1_UIDE_ENABLE                        0x20000000      /* KL/Pangea Only */
-#define KL1_UIDE_RESET_N               0x40000000      /* KL/Pangea Only */
-
-#define KL2_IOBUS_ENABLE               0x00000002
-#define KL2_SLEEP_STATE_BIT            0x00000100      /* KL Only */
-#define KL2_PG_STOP_ALL_CLOCKS         0x00000100      /* Pangea Only */
-#define KL2_MPIC_ENABLE                        0x00020000
-#define KL2_CARDSLOT_RESET             0x00040000      /* Pangea/Intrepid Only */
-#define KL2_ALT_DATA_OUT               0x02000000      /* KL Only ??? */
-#define KL2_MEM_IS_BIG                 0x04000000
-#define KL2_CARDSEL_16                 0x08000000
-
-#define KL3_SHUTDOWN_PLL_TOTAL         0x00000001      /* KL/Pangea only */
-#define KL3_SHUTDOWN_PLLKW6            0x00000002      /* KL/Pangea only */
-#define KL3_IT_SHUTDOWN_PLL3           0x00000002      /* Intrepid only */
-#define KL3_SHUTDOWN_PLLKW4            0x00000004      /* KL/Pangea only */
-#define KL3_IT_SHUTDOWN_PLL2           0x00000004      /* Intrepid only */
-#define KL3_SHUTDOWN_PLLKW35           0x00000008      /* KL/Pangea only */
-#define KL3_IT_SHUTDOWN_PLL1           0x00000008      /* Intrepid only */
-#define KL3_SHUTDOWN_PLLKW12           0x00000010      /* KL Only */
-#define KL3_IT_ENABLE_PLL3_SHUTDOWN    0x00000010      /* Intrepid only */
-#define KL3_PLL_RESET                  0x00000020      /* KL/Pangea only */
-#define KL3_IT_ENABLE_PLL2_SHUTDOWN    0x00000020      /* Intrepid only */
-#define KL3_IT_ENABLE_PLL1_SHUTDOWN    0x00000010      /* Intrepid only */
-#define KL3_SHUTDOWN_PLL2X             0x00000080      /* KL Only */
-#define KL3_CLK66_ENABLE               0x00000100      /* KL Only */
-#define KL3_CLK49_ENABLE               0x00000200
-#define KL3_CLK45_ENABLE               0x00000400
-#define KL3_CLK31_ENABLE               0x00000800      /* KL/Pangea only */
-#define KL3_TIMER_CLK18_ENABLE         0x00001000
-#define KL3_I2S1_CLK18_ENABLE          0x00002000
-#define KL3_I2S0_CLK18_ENABLE          0x00004000
-#define KL3_VIA_CLK16_ENABLE           0x00008000      /* KL/Pangea only */
-#define KL3_IT_VIA_CLK32_ENABLE                0x00008000      /* Intrepid only */
-#define KL3_STOPPING33_ENABLED         0x00080000      /* KL Only */
-#define KL3_PG_PLL_ENABLE_TEST         0x00080000      /* Pangea Only */
-
-/* Intrepid USB bus 2, port 0,1 */
-#define KL3_IT_PORT_WAKEUP_ENABLE(p)           (0x00080000 << ((p)<<3))
-#define KL3_IT_PORT_RESUME_WAKE_EN(p)          (0x00040000 << ((p)<<3))
-#define KL3_IT_PORT_CONNECT_WAKE_EN(p)         (0x00020000 << ((p)<<3))
-#define KL3_IT_PORT_DISCONNECT_WAKE_EN(p)      (0x00010000 << ((p)<<3))
-#define KL3_IT_PORT_RESUME_STAT(p)             (0x00300000 << ((p)<<3))
-#define KL3_IT_PORT_CONNECT_STAT(p)            (0x00200000 << ((p)<<3))
-#define KL3_IT_PORT_DISCONNECT_STAT(p)         (0x00100000 << ((p)<<3))
-
-/* Port 0,1 : bus 0, port 2,3 : bus 1 */
-#define KL4_PORT_WAKEUP_ENABLE(p)      (0x00000008 << ((p)<<3))
-#define KL4_PORT_RESUME_WAKE_EN(p)     (0x00000004 << ((p)<<3))
-#define KL4_PORT_CONNECT_WAKE_EN(p)    (0x00000002 << ((p)<<3))
-#define KL4_PORT_DISCONNECT_WAKE_EN(p) (0x00000001 << ((p)<<3))
-#define KL4_PORT_RESUME_STAT(p)                (0x00000040 << ((p)<<3))
-#define KL4_PORT_CONNECT_STAT(p)       (0x00000020 << ((p)<<3))
-#define KL4_PORT_DISCONNECT_STAT(p)    (0x00000010 << ((p)<<3))
-
-/* Pangea and Intrepid only */
-#define KL5_VIA_USE_CLK31              0000000001      /* Pangea Only */
-#define KL5_SCC_USE_CLK31              0x00000002      /* Pangea Only */
-#define KL5_PWM_CLK32_EN               0x00000004
-#define KL5_CLK3_68_EN                 0x00000010
-#define KL5_CLK32_EN                   0x00000020
-
-
-/* K2 definitions */
-#define K2_FCR0_USB0_SWRESET           0x00200000
-#define K2_FCR0_USB1_SWRESET           0x02000000
-#define K2_FCR0_RING_PME_DISABLE       0x08000000
-
-#define K2_FCR1_PCI1_BUS_RESET_N       0x00000010
-#define K2_FCR1_PCI1_SLEEP_RESET_EN    0x00000020
-#define K2_FCR1_I2S0_CELL_ENABLE       0x00000400
-#define K2_FCR1_I2S0_RESET             0x00000800
-#define K2_FCR1_I2S0_CLK_ENABLE_BIT    0x00001000
-#define K2_FCR1_I2S0_ENABLE                    0x00002000
-
-#define K2_FCR1_PCI1_CLK_ENABLE                0x00004000
-#define K2_FCR1_FW_CLK_ENABLE          0x00008000
-#define K2_FCR1_FW_RESET_N             0x00010000
-#define K2_FCR1_GMAC_CLK_ENABLE                0x00400000
-#define K2_FCR1_GMAC_POWER_DOWN                0x00800000
-#define K2_FCR1_GMAC_RESET_N           0x01000000
-#define K2_FCR1_SATA_CLK_ENABLE                0x02000000
-#define K2_FCR1_SATA_POWER_DOWN                0x04000000
-#define K2_FCR1_SATA_RESET_N           0x08000000
-#define K2_FCR1_UATA_CLK_ENABLE                0x10000000
-#define K2_FCR1_UATA_RESET_N           0x40000000
-#define K2_FCR1_UATA_CHOOSE_CLK66      0x80000000
-
diff --git a/include/asm-ppc/macio.h b/include/asm-ppc/macio.h
deleted file mode 100644 (file)
index b553dd4..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-#ifndef __MACIO_ASIC_H__
-#define __MACIO_ASIC_H__
-
-#include <asm/of_device.h>
-
-extern struct bus_type macio_bus_type;
-
-/* MacIO device driver is defined later */
-struct macio_driver;
-struct macio_chip;
-
-#define MACIO_DEV_COUNT_RESOURCES      8
-#define MACIO_DEV_COUNT_IRQS           8
-
-/*
- * the macio_bus structure is used to describe a "virtual" bus
- * within a MacIO ASIC. It's typically provided by a macio_pci_asic
- * PCI device, but could be provided differently as well (nubus
- * machines using a fake OF tree).
- *
- * The pdev field can be NULL on non-PCI machines
- */
-struct macio_bus
-{
-       struct macio_chip       *chip;          /* macio_chip (private use) */
-       int                     index;          /* macio chip index in system */
-#ifdef CONFIG_PCI
-       struct pci_dev          *pdev;          /* PCI device hosting this bus */
-#endif
-};
-
-/*
- * the macio_dev structure is used to describe a device
- * within an Apple MacIO ASIC.
- */
-struct macio_dev
-{
-       struct macio_bus        *bus;           /* macio bus this device is on */
-       struct macio_dev        *media_bay;     /* Device is part of a media bay */
-       struct of_device        ofdev;
-       int                     n_resources;
-       struct resource         resource[MACIO_DEV_COUNT_RESOURCES];
-       int                     n_interrupts;
-       struct resource         interrupt[MACIO_DEV_COUNT_IRQS];
-};
-#define        to_macio_device(d) container_of(d, struct macio_dev, ofdev.dev)
-#define        of_to_macio_device(d) container_of(d, struct macio_dev, ofdev)
-
-extern struct macio_dev *macio_dev_get(struct macio_dev *dev);
-extern void macio_dev_put(struct macio_dev *dev);
-
-/*
- * Accessors to resources & interrupts and other device
- * fields
- */
-
-static inline int macio_resource_count(struct macio_dev *dev)
-{
-       return dev->n_resources;
-}
-
-static inline unsigned long macio_resource_start(struct macio_dev *dev, int resource_no)
-{
-       return dev->resource[resource_no].start;
-}
-
-static inline unsigned long macio_resource_end(struct macio_dev *dev, int resource_no)
-{
-       return dev->resource[resource_no].end;
-}
-
-static inline unsigned long macio_resource_len(struct macio_dev *dev, int resource_no)
-{
-       struct resource *res = &dev->resource[resource_no];
-       if (res->start == 0 || res->end == 0 || res->end < res->start)
-               return 0;
-       return res->end - res->start + 1;
-}
-
-extern int macio_request_resource(struct macio_dev *dev, int resource_no, const char *name);
-extern void macio_release_resource(struct macio_dev *dev, int resource_no);
-extern int macio_request_resources(struct macio_dev *dev, const char *name);
-extern void macio_release_resources(struct macio_dev *dev);
-
-static inline int macio_irq_count(struct macio_dev *dev)
-{
-       return dev->n_interrupts;
-}
-
-static inline int macio_irq(struct macio_dev *dev, int irq_no)
-{
-       return dev->interrupt[irq_no].start;
-}
-
-static inline void macio_set_drvdata(struct macio_dev *dev, void *data)
-{
-       dev_set_drvdata(&dev->ofdev.dev, data);
-}
-
-static inline void* macio_get_drvdata(struct macio_dev *dev)
-{
-       return dev_get_drvdata(&dev->ofdev.dev);
-}
-
-static inline struct device_node *macio_get_of_node(struct macio_dev *mdev)
-{
-       return mdev->ofdev.node;
-}
-
-#ifdef CONFIG_PCI
-static inline struct pci_dev *macio_get_pci_dev(struct macio_dev *mdev)
-{
-       return mdev->bus->pdev;
-}
-#endif
-
-/*
- * A driver for a mac-io chip based device
- */
-struct macio_driver
-{
-       char                    *name;
-       struct of_device_id     *match_table;
-       struct module           *owner;
-
-       int     (*probe)(struct macio_dev* dev, const struct of_device_id *match);
-       int     (*remove)(struct macio_dev* dev);
-
-       int     (*suspend)(struct macio_dev* dev, pm_message_t state);
-       int     (*resume)(struct macio_dev* dev);
-       int     (*shutdown)(struct macio_dev* dev);
-
-       struct device_driver    driver;
-};
-#define        to_macio_driver(drv) container_of(drv,struct macio_driver, driver)
-
-extern int macio_register_driver(struct macio_driver *);
-extern void macio_unregister_driver(struct macio_driver *);
-
-#endif /* __MACIO_ASIC_H__ */
diff --git a/include/asm-ppc/mediabay.h b/include/asm-ppc/mediabay.h
deleted file mode 100644 (file)
index 9daa325..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * mediabay.h: definitions for using the media bay
- * on PowerBook 3400 and similar computers.
- *
- * Copyright (C) 1997 Paul Mackerras.
- */
-#ifndef _PPC_MEDIABAY_H
-#define _PPC_MEDIABAY_H
-
-#ifdef __KERNEL__
-
-#define MB_FD          0       /* media bay contains floppy drive (automatic eject ?) */
-#define MB_FD1         1       /* media bay contains floppy drive (manual eject ?) */
-#define MB_SOUND       2       /* sound device ? */
-#define MB_CD          3       /* media bay contains ATA drive such as CD or ZIP */
-#define MB_PCI         5       /* media bay contains a PCI device */
-#define MB_POWER       6       /* media bay contains a Power device (???) */
-#define MB_NO          7       /* media bay contains nothing */
-
-int check_media_bay(struct device_node *which_bay, int what);
-int check_media_bay_by_base(unsigned long base, int what);
-
-/* Number of bays in the machine or 0 */
-extern int media_bay_count;
-
-/* called by pmac-ide.c to register IDE controller for media bay */
-extern int media_bay_set_ide_infos(struct device_node* which_bay,
-                       unsigned long base, int irq, int index);
-
-#endif /* __KERNEL__ */
-#endif /* _PPC_MEDIABAY_H */
diff --git a/include/asm-ppc/ohare.h b/include/asm-ppc/ohare.h
deleted file mode 100644 (file)
index 023b597..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * ohare.h: definitions for using the "O'Hare" I/O controller chip.
- *
- * Copyright (C) 1997 Paul Mackerras.
- *
- * BenH: Changed to match those of heathrow (but not all of them). Please
- *       check if I didn't break anything (especially the media bay).
- */
-
-/* offset from ohare base for feature control register */
-#define OHARE_MBCR     0x34
-#define OHARE_FCR      0x38
-
-/*
- * Bits in feature control register.
- * These were mostly derived by experiment on a powerbook 3400
- * and may differ for other machines.
- */
-#define OH_SCC_RESET           1
-#define OH_BAY_POWER_N         2       /* a guess */
-#define OH_BAY_PCI_ENABLE      4       /* a guess */
-#define OH_BAY_IDE_ENABLE      8
-#define OH_BAY_FLOPPY_ENABLE   0x10
-#define OH_IDE0_ENABLE         0x20
-#define OH_IDE0_RESET_N                0x40    /* a guess */
-#define OH_BAY_DEV_MASK                0x1c
-#define OH_BAY_RESET_N         0x80
-#define OH_IOBUS_ENABLE                0x100   /* IOBUS seems to be IDE */
-#define OH_SCC_ENABLE          0x200
-#define OH_MESH_ENABLE         0x400
-#define OH_FLOPPY_ENABLE       0x800
-#define OH_SCCA_IO             0x4000
-#define OH_SCCB_IO             0x8000
-#define OH_VIA_ENABLE          0x10000 /* Is apparently wrong, to be verified */
-#define OH_IDE1_RESET_N                0x800000
-
-/*
- * Bits to set in the feature control register on PowerBooks.
- */
-#define PBOOK_FEATURES         (OH_IDE_ENABLE | OH_SCC_ENABLE | \
-                                OH_MESH_ENABLE | OH_SCCA_IO | OH_SCCB_IO)
-
-/*
- * A magic value to put into the feature control register of the
- * "ohare" I/O controller on Starmaxes to enable the IDE CD interface.
- * Contributed by Harry Eaton.
- */
-#define STARMAX_FEATURES       0xbeff7a
diff --git a/include/asm-ppc/pmac_feature.h b/include/asm-ppc/pmac_feature.h
deleted file mode 100644 (file)
index e9683bc..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Definition of platform feature hooks for PowerMacs
- *
- * 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) 1998 Paul Mackerras &
- *                    Ben. Herrenschmidt.
- *
- *
- * Note: I removed media-bay details from the feature stuff, I believe it's
- *       not worth it, the media-bay driver can directly use the mac-io
- *       ASIC registers.
- *
- * Implementation note: Currently, none of these functions will block.
- * However, they may internally protect themselves with a spinlock
- * for way too long. Be prepared for at least some of these to block
- * in the future.
- *
- * Unless specifically defined, the result code is assumed to be an
- * error when negative, 0 is the default success result. Some functions
- * may return additional positive result values.
- *
- * To keep implementation simple, all feature calls are assumed to have
- * the prototype parameters (struct device_node* node, int value).
- * When either is not used, pass 0.
- */
-
-#ifdef __KERNEL__
-#ifndef __PPC_ASM_PMAC_FEATURE_H
-#define __PPC_ASM_PMAC_FEATURE_H
-
-#include <asm/macio.h>
-#include <asm/machdep.h>
-
-/*
- * Known Mac motherboard models
- *
- * Please, report any error here to benh@kernel.crashing.org, thanks !
- *
- * Note that I don't fully maintain this list for Core99 & MacRISC2
- * and I'm considering removing all NewWorld entries from it and
- * entirely rely on the model string.
- */
-
-/* PowerSurge are the first generation of PCI Pmacs. This include
- * all of the Grand-Central based machines. We currently don't
- * differenciate most of them.
- */
-#define PMAC_TYPE_PSURGE               0x10    /* PowerSurge */
-#define PMAC_TYPE_ANS                  0x11    /* Apple Network Server */
-
-/* Here is the infamous serie of OHare based machines
- */
-#define PMAC_TYPE_COMET                        0x20    /* Beleived to be PowerBook 2400 */
-#define PMAC_TYPE_HOOPER               0x21    /* Beleived to be PowerBook 3400 */
-#define PMAC_TYPE_KANGA                        0x22    /* PowerBook 3500 (first G3) */
-#define PMAC_TYPE_ALCHEMY              0x23    /* Alchemy motherboard base */
-#define PMAC_TYPE_GAZELLE              0x24    /* Spartacus, some 5xxx/6xxx */
-#define PMAC_TYPE_UNKNOWN_OHARE                0x2f    /* Unknown, but OHare based */
-
-/* Here are the Heathrow based machines
- * FIXME: Differenciate wallstreet,mainstreet,wallstreetII
- */
-#define PMAC_TYPE_GOSSAMER             0x30    /* Gossamer motherboard */
-#define PMAC_TYPE_SILK                 0x31    /* Desktop PowerMac G3 */
-#define PMAC_TYPE_WALLSTREET           0x32    /* Wallstreet/Mainstreet PowerBook*/
-#define PMAC_TYPE_UNKNOWN_HEATHROW     0x3f    /* Unknown but heathrow based */
-
-/* Here are newworld machines based on Paddington (heathrow derivative)
- */
-#define PMAC_TYPE_101_PBOOK            0x40    /* 101 PowerBook (aka Lombard) */
-#define PMAC_TYPE_ORIG_IMAC            0x41    /* First generation iMac */
-#define PMAC_TYPE_YOSEMITE             0x42    /* B&W G3 */
-#define PMAC_TYPE_YIKES                        0x43    /* Yikes G4 (PCI graphics) */
-#define PMAC_TYPE_UNKNOWN_PADDINGTON   0x4f    /* Unknown but paddington based */
-
-/* Core99 machines based on UniNorth 1.0 and 1.5
- *
- * Note: A single entry here may cover several actual models according
- * to the device-tree. (Sawtooth is most tower G4s, FW_IMAC is most
- * FireWire based iMacs, etc...). Those machines are too similar to be
- * distinguished here, when they need to be differencied, use the
- * device-tree "model" or "compatible" property.
- */
-#define PMAC_TYPE_ORIG_IBOOK           0x40    /* First iBook model (no firewire) */
-#define PMAC_TYPE_SAWTOOTH             0x41    /* Desktop G4s */
-#define PMAC_TYPE_FW_IMAC              0x42    /* FireWire iMacs (except Pangea based) */
-#define PMAC_TYPE_FW_IBOOK             0x43    /* FireWire iBooks (except iBook2) */
-#define PMAC_TYPE_CUBE                 0x44    /* Cube PowerMac */
-#define PMAC_TYPE_QUICKSILVER          0x45    /* QuickSilver G4s */
-#define PMAC_TYPE_PISMO                        0x46    /* Pismo PowerBook */
-#define PMAC_TYPE_TITANIUM             0x47    /* Titanium PowerBook */
-#define PMAC_TYPE_TITANIUM2            0x48    /* Titanium II PowerBook (no L3, M6) */
-#define PMAC_TYPE_TITANIUM3            0x49    /* Titanium III PowerBook (with L3 & M7) */
-#define PMAC_TYPE_TITANIUM4            0x50    /* Titanium IV PowerBook (with L3 & M9) */
-#define PMAC_TYPE_EMAC                 0x50    /* eMac */
-#define PMAC_TYPE_UNKNOWN_CORE99       0x5f
-
-/* MacRisc2 with UniNorth 2.0 */
-#define PMAC_TYPE_RACKMAC              0x80    /* XServe */
-#define PMAC_TYPE_WINDTUNNEL           0x81
-
-/* MacRISC2 machines based on the Pangea chipset
- */
-#define PMAC_TYPE_PANGEA_IMAC          0x100   /* Flower Power iMac */
-#define PMAC_TYPE_IBOOK2               0x101   /* iBook2 (polycarbonate) */
-#define PMAC_TYPE_FLAT_PANEL_IMAC      0x102   /* Flat panel iMac */
-#define PMAC_TYPE_UNKNOWN_PANGEA       0x10f
-
-/* MacRISC2 machines based on the Intrepid chipset
- */
-#define PMAC_TYPE_UNKNOWN_INTREPID     0x11f   /* Generic */
-
-/* MacRISC4 / G5 machines. We don't have per-machine selection here anymore,
- * but rather machine families
- */
-#define PMAC_TYPE_POWERMAC_G5          0x150   /* U3 & U3H based */
-#define PMAC_TYPE_POWERMAC_G5_U3L      0x151   /* U3L based desktop */
-#define PMAC_TYPE_IMAC_G5              0x152   /* iMac G5 */
-#define PMAC_TYPE_XSERVE_G5            0x153   /* Xserve G5 */
-#define PMAC_TYPE_UNKNOWN_K2           0x19f   /* Any other K2 based */
-
-/*
- * Motherboard flags
- */
-
-#define PMAC_MB_CAN_SLEEP              0x00000001
-#define PMAC_MB_HAS_FW_POWER           0x00000002
-#define PMAC_MB_OLD_CORE99             0x00000004
-#define PMAC_MB_MOBILE                 0x00000008
-#define PMAC_MB_MAY_SLEEP              0x00000010
-
-/*
- * Feature calls supported on pmac
- *
- */
-
-/*
- * Use this inline wrapper
- */
-struct device_node;
-
-static inline long pmac_call_feature(int selector, struct device_node* node,
-                                       long param, long value)
-{
-       if (!ppc_md.feature_call)
-               return -ENODEV;
-       return ppc_md.feature_call(selector, node, param, value);
-}
-
-/* PMAC_FTR_SERIAL_ENABLE      (struct device_node* node, int param, int value)
- * enable/disable an SCC side. Pass the node corresponding to the
- * channel side as a parameter.
- * param is the type of port
- * if param is ored with PMAC_SCC_FLAG_XMON, then the SCC is locked enabled
- * for use by xmon.
- */
-#define PMAC_FTR_SCC_ENABLE            PMAC_FTR_DEF(0)
-       #define PMAC_SCC_ASYNC          0
-       #define PMAC_SCC_IRDA           1
-       #define PMAC_SCC_I2S1           2
-       #define PMAC_SCC_FLAG_XMON      0x00001000
-
-/* PMAC_FTR_MODEM_ENABLE       (struct device_node* node, 0, int value)
- * enable/disable the internal modem.
- */
-#define PMAC_FTR_MODEM_ENABLE          PMAC_FTR_DEF(1)
-
-/* PMAC_FTR_SWIM3_ENABLE       (struct device_node* node, 0,int value)
- * enable/disable the swim3 (floppy) cell of a mac-io ASIC
- */
-#define PMAC_FTR_SWIM3_ENABLE          PMAC_FTR_DEF(2)
-
-/* PMAC_FTR_MESH_ENABLE                (struct device_node* node, 0, int value)
- * enable/disable the mesh (scsi) cell of a mac-io ASIC
- */
-#define PMAC_FTR_MESH_ENABLE           PMAC_FTR_DEF(3)
-
-/* PMAC_FTR_IDE_ENABLE         (struct device_node* node, int busID, int value)
- * enable/disable an IDE port of a mac-io ASIC
- * pass the busID parameter
- */
-#define PMAC_FTR_IDE_ENABLE            PMAC_FTR_DEF(4)
-
-/* PMAC_FTR_IDE_RESET          (struct device_node* node, int busID, int value)
- * assert(1)/release(0) an IDE reset line (mac-io IDE only)
- */
-#define PMAC_FTR_IDE_RESET             PMAC_FTR_DEF(5)
-
-/* PMAC_FTR_BMAC_ENABLE                (struct device_node* node, 0, int value)
- * enable/disable the bmac (ethernet) cell of a mac-io ASIC, also drive
- * it's reset line
- */
-#define PMAC_FTR_BMAC_ENABLE           PMAC_FTR_DEF(6)
-
-/* PMAC_FTR_GMAC_ENABLE                (struct device_node* node, 0, int value)
- * enable/disable the gmac (ethernet) cell of an uninorth ASIC. This
- * control the cell's clock.
- */
-#define PMAC_FTR_GMAC_ENABLE           PMAC_FTR_DEF(7)
-
-/* PMAC_FTR_GMAC_PHY_RESET     (struct device_node* node, 0, 0)
- * Perform a HW reset of the PHY connected to a gmac controller.
- * Pass the gmac device node, not the PHY node.
- */
-#define PMAC_FTR_GMAC_PHY_RESET                PMAC_FTR_DEF(8)
-
-/* PMAC_FTR_SOUND_CHIP_ENABLE  (struct device_node* node, 0, int value)
- * enable/disable the sound chip, whatever it is and provided it can
- * acually be controlled
- */
-#define PMAC_FTR_SOUND_CHIP_ENABLE     PMAC_FTR_DEF(9)
-
-/* -- add various tweaks related to sound routing -- */
-
-/* PMAC_FTR_AIRPORT_ENABLE     (struct device_node* node, 0, int value)
- * enable/disable the airport card
- */
-#define PMAC_FTR_AIRPORT_ENABLE                PMAC_FTR_DEF(10)
-
-/* PMAC_FTR_RESET_CPU          (NULL, int cpu_nr, 0)
- * toggle the reset line of a CPU on an uninorth-based SMP machine
- */
-#define PMAC_FTR_RESET_CPU             PMAC_FTR_DEF(11)
-
-/* PMAC_FTR_USB_ENABLE         (struct device_node* node, 0, int value)
- * enable/disable an USB cell, along with the power of the USB "pad"
- * on keylargo based machines
- */
-#define PMAC_FTR_USB_ENABLE            PMAC_FTR_DEF(12)
-
-/* PMAC_FTR_1394_ENABLE                (struct device_node* node, 0, int value)
- * enable/disable the firewire cell of an uninorth ASIC.
- */
-#define PMAC_FTR_1394_ENABLE           PMAC_FTR_DEF(13)
-
-/* PMAC_FTR_1394_CABLE_POWER   (struct device_node* node, 0, int value)
- * enable/disable the firewire cable power supply of the uninorth
- * firewire cell
- */
-#define PMAC_FTR_1394_CABLE_POWER      PMAC_FTR_DEF(14)
-
-/* PMAC_FTR_SLEEP_STATE                (struct device_node* node, 0, int value)
- * set the sleep state of the motherboard.
- *
- * Pass -1 as value to query for sleep capability
- * Pass 1 to set IOs to sleep
- * Pass 0 to set IOs to wake
- */
-#define PMAC_FTR_SLEEP_STATE           PMAC_FTR_DEF(15)
-
-/* PMAC_FTR_GET_MB_INFO                (NULL, selector, 0)
- *
- * returns some motherboard infos.
- * selector: 0  - model id
- *           1  - model flags (capabilities)
- *           2  - model name (cast to const char *)
- */
-#define PMAC_FTR_GET_MB_INFO           PMAC_FTR_DEF(16)
-#define   PMAC_MB_INFO_MODEL   0
-#define   PMAC_MB_INFO_FLAGS   1
-#define   PMAC_MB_INFO_NAME    2
-
-/* PMAC_FTR_READ_GPIO          (NULL, int index, 0)
- *
- * read a GPIO from a mac-io controller of type KeyLargo or Pangea.
- * the value returned is a byte (positive), or a negative error code
- */
-#define PMAC_FTR_READ_GPIO             PMAC_FTR_DEF(17)
-
-/* PMAC_FTR_WRITE_GPIO         (NULL, int index, int value)
- *
- * write a GPIO of a mac-io controller of type KeyLargo or Pangea.
- */
-#define PMAC_FTR_WRITE_GPIO            PMAC_FTR_DEF(18)
-
-/* PMAC_FTR_ENABLE_MPIC
- *
- * Enable the MPIC cell
- */
-#define PMAC_FTR_ENABLE_MPIC           PMAC_FTR_DEF(19)
-
-/* PMAC_FTR_AACK_DELAY_ENABLE  (NULL, int enable, 0)
- *
- * Enable/disable the AACK delay on the northbridge for systems using DFS
- */
-#define PMAC_FTR_AACK_DELAY_ENABLE             PMAC_FTR_DEF(20)
-
-/* PMAC_FTR_DEVICE_CAN_WAKE
- *
- * Used by video drivers to inform system that they can actually perform
- * wakeup from sleep
- */
-#define PMAC_FTR_DEVICE_CAN_WAKE       PMAC_FTR_DEF(22)
-
-
-/* Don't use those directly, they are for the sake of pmac_setup.c */
-extern long pmac_do_feature_call(unsigned int selector, ...);
-extern void pmac_feature_init(void);
-
-/* Video suspend tweak */
-extern void pmac_set_early_video_resume(void (*proc)(void *data), void *data);
-extern void pmac_call_early_video_resume(void);
-
-#define PMAC_FTR_DEF(x) ((_MACH_Pmac << 16) | (x))
-
-/* The AGP driver registers itself here */
-extern void pmac_register_agp_pm(struct pci_dev *bridge,
-                                int (*suspend)(struct pci_dev *bridge),
-                                int (*resume)(struct pci_dev *bridge));
-
-/* Those are meant to be used by video drivers to deal with AGP
- * suspend resume properly
- */
-extern void pmac_suspend_agp_for_card(struct pci_dev *dev);
-extern void pmac_resume_agp_for_card(struct pci_dev *dev);
-
-/* Used by the via-pmu driver for suspend/resume
- */
-extern void pmac_tweak_clock_spreading(int enable);
-
-/*
- * The part below is for use by macio_asic.c only, do not rely
- * on the data structures or constants below in a normal driver
- *
- */
-
-#define MAX_MACIO_CHIPS                2
-
-enum {
-       macio_unknown = 0,
-       macio_grand_central,
-       macio_ohare,
-       macio_ohareII,
-       macio_heathrow,
-       macio_gatwick,
-       macio_paddington,
-       macio_keylargo,
-       macio_pangea,
-       macio_intrepid,
-       macio_keylargo2,
-};
-
-struct macio_chip
-{
-       struct device_node      *of_node;
-       int                     type;
-       const char              *name;
-       int                     rev;
-       volatile u32            __iomem *base;
-       unsigned long           flags;
-
-       /* For use by macio_asic PCI driver */
-       struct macio_bus        lbus;
-};
-
-extern struct macio_chip macio_chips[MAX_MACIO_CHIPS];
-
-#define MACIO_FLAG_SCCA_ON     0x00000001
-#define MACIO_FLAG_SCCB_ON     0x00000002
-#define MACIO_FLAG_SCC_LOCKED  0x00000004
-#define MACIO_FLAG_AIRPORT_ON  0x00000010
-#define MACIO_FLAG_FW_SUPPORTED        0x00000020
-
-extern struct macio_chip* macio_find(struct device_node* child, int type);
-
-#define MACIO_FCR32(macio, r)  ((macio)->base + ((r) >> 2))
-#define MACIO_FCR8(macio, r)   (((volatile u8 __iomem *)((macio)->base)) + (r))
-
-#define MACIO_IN32(r)          (in_le32(MACIO_FCR32(macio,r)))
-#define MACIO_OUT32(r,v)       (out_le32(MACIO_FCR32(macio,r), (v)))
-#define MACIO_BIS(r,v)         (MACIO_OUT32((r), MACIO_IN32(r) | (v)))
-#define MACIO_BIC(r,v)         (MACIO_OUT32((r), MACIO_IN32(r) & ~(v)))
-#define MACIO_IN8(r)           (in_8(MACIO_FCR8(macio,r)))
-#define MACIO_OUT8(r,v)                (out_8(MACIO_FCR8(macio,r), (v)))
-
-#endif /* __PPC_ASM_PMAC_FEATURE_H */
-#endif /* __KERNEL__ */
diff --git a/include/asm-ppc/pmac_low_i2c.h b/include/asm-ppc/pmac_low_i2c.h
deleted file mode 100644 (file)
index 809a596..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/* 
- *  include/asm-ppc/pmac_low_i2c.h
- *
- *  Copyright (C) 2003 Ben. Herrenschmidt (benh@kernel.crashing.org)
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version
- *  2 of the License, or (at your option) any later version.
- *
- */
-#ifndef __PMAC_LOW_I2C_H__
-#define __PMAC_LOW_I2C_H__
-
-/* i2c mode (based on the platform functions format) */
-enum {
-       pmac_low_i2c_mode_dumb          = 1,
-       pmac_low_i2c_mode_std           = 2,
-       pmac_low_i2c_mode_stdsub        = 3,
-       pmac_low_i2c_mode_combined      = 4,
-};
-
-/* RW bit in address */
-enum {
-       pmac_low_i2c_read               = 0x01,
-       pmac_low_i2c_write              = 0x00
-};
-
-/* Init, called early during boot */
-extern void pmac_init_low_i2c(void);
-
-/* Locking functions exposed to i2c-keywest */
-int pmac_low_i2c_lock(struct device_node *np);
-int pmac_low_i2c_unlock(struct device_node *np);
-
-/* Access functions for platform code */
-int pmac_low_i2c_open(struct device_node *np, int channel);
-int pmac_low_i2c_close(struct device_node *np);
-int pmac_low_i2c_setmode(struct device_node *np, int mode);
-int pmac_low_i2c_xfer(struct device_node *np, u8 addrdir, u8 subaddr, u8 *data, int len);
-
-
-#endif /* __PMAC_LOW_I2C_H__ */
diff --git a/include/asm-ppc/uninorth.h b/include/asm-ppc/uninorth.h
deleted file mode 100644 (file)
index f737732..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * uninorth.h: definitions for using the "UniNorth" host bridge chip
- *             from Apple. This chip is used on "Core99" machines
- *            This also includes U2 used on more recent MacRISC2/3
- *             machines and U3 (G5) 
- *
- */
-#ifdef __KERNEL__
-#ifndef __ASM_UNINORTH_H__
-#define __ASM_UNINORTH_H__
-
-/*
- * Uni-N and U3 config space reg. definitions
- *
- * (Little endian)
- */
-
-/* Address ranges selection. This one should work with Bandit too */
-/* Not U3 */
-#define UNI_N_ADDR_SELECT              0x48
-#define UNI_N_ADDR_COARSE_MASK         0xffff0000      /* 256Mb regions at *0000000 */
-#define UNI_N_ADDR_FINE_MASK           0x0000ffff      /*  16Mb regions at f*000000 */
-
-/* AGP registers */
-/* Not U3 */
-#define UNI_N_CFG_GART_BASE            0x8c
-#define UNI_N_CFG_AGP_BASE             0x90
-#define UNI_N_CFG_GART_CTRL            0x94
-#define UNI_N_CFG_INTERNAL_STATUS      0x98
-#define UNI_N_CFG_GART_DUMMY_PAGE      0xa4
-
-/* UNI_N_CFG_GART_CTRL bits definitions */
-#define UNI_N_CFG_GART_INVAL           0x00000001
-#define UNI_N_CFG_GART_ENABLE          0x00000100
-#define UNI_N_CFG_GART_2xRESET         0x00010000
-#define UNI_N_CFG_GART_DISSBADET       0x00020000
-/* The following seems to only be used only on U3 <j.glisse@gmail.com> */
-#define U3_N_CFG_GART_SYNCMODE         0x00040000
-#define U3_N_CFG_GART_PERFRD           0x00080000
-#define U3_N_CFG_GART_B2BGNT           0x00200000
-#define U3_N_CFG_GART_FASTDDR          0x00400000
-
-/* My understanding of UniNorth AGP as of UniNorth rev 1.0x,
- * revision 1.5 (x4 AGP) may need further changes.
- *
- * AGP_BASE register contains the base address of the AGP aperture on
- * the AGP bus. It doesn't seem to be visible to the CPU as of UniNorth 1.x,
- * even if decoding of this address range is enabled in the address select
- * register. Apparently, the only supported bases are 256Mb multiples
- * (high 4 bits of that register).
- *
- * GART_BASE register appear to contain the physical address of the GART
- * in system memory in the high address bits (page aligned), and the
- * GART size in the low order bits (number of GART pages)
- *
- * The GART format itself is one 32bits word per physical memory page.
- * This word contains, in little-endian format (!!!), the physical address
- * of the page in the high bits, and what appears to be an "enable" bit
- * in the LSB bit (0) that must be set to 1 when the entry is valid.
- *
- * Obviously, the GART is not cache coherent and so any change to it
- * must be flushed to memory (or maybe just make the GART space non
- * cachable). AGP memory itself doens't seem to be cache coherent neither.
- *
- * In order to invalidate the GART (which is probably necessary to inval
- * the bridge internal TLBs), the following sequence has to be written,
- * in order, to the GART_CTRL register:
- *
- *   UNI_N_CFG_GART_ENABLE | UNI_N_CFG_GART_INVAL
- *   UNI_N_CFG_GART_ENABLE
- *   UNI_N_CFG_GART_ENABLE | UNI_N_CFG_GART_2xRESET
- *   UNI_N_CFG_GART_ENABLE
- *
- * As far as AGP "features" are concerned, it looks like fast write may
- * not be supported but this has to be confirmed.
- *
- * Turning on AGP seem to require a double invalidate operation, one before
- * setting the AGP command register, on after.
- *
- * Turning off AGP seems to require the following sequence: first wait
- * for the AGP to be idle by reading the internal status register, then
- * write in that order to the GART_CTRL register:
- *
- *   UNI_N_CFG_GART_ENABLE | UNI_N_CFG_GART_INVAL
- *   0
- *   UNI_N_CFG_GART_2xRESET
- *   0
- */
-
-/*
- * Uni-N memory mapped reg. definitions
- *
- * Those registers are Big-Endian !!
- *
- * Their meaning come from either Darwin and/or from experiments I made with
- * the bootrom, I'm not sure about their exact meaning yet
- *
- */
-
-/* Version of the UniNorth chip */
-#define UNI_N_VERSION                  0x0000          /* Known versions: 3,7 and 8 */
-
-#define UNI_N_VERSION_107              0x0003          /* 1.0.7 */
-#define UNI_N_VERSION_10A              0x0007          /* 1.0.10 */
-#define UNI_N_VERSION_150              0x0011          /* 1.5 */
-#define UNI_N_VERSION_200              0x0024          /* 2.0 */
-#define UNI_N_VERSION_PANGEA           0x00C0          /* Integrated U1 + K */
-#define UNI_N_VERSION_INTREPID         0x00D2          /* Integrated U2 + K */
-#define UNI_N_VERSION_300              0x0030          /* 3.0 (U3 on G5) */
-
-/* This register is used to enable/disable various clocks */
-#define UNI_N_CLOCK_CNTL               0x0020
-#define UNI_N_CLOCK_CNTL_PCI           0x00000001      /* PCI2 clock control */
-#define UNI_N_CLOCK_CNTL_GMAC          0x00000002      /* GMAC clock control */
-#define UNI_N_CLOCK_CNTL_FW            0x00000004      /* FireWire clock control */
-#define UNI_N_CLOCK_CNTL_ATA100                0x00000010      /* ATA-100 clock control (U2) */
-
-/* Power Management control */
-#define UNI_N_POWER_MGT                        0x0030
-#define UNI_N_POWER_MGT_NORMAL         0x00
-#define UNI_N_POWER_MGT_IDLE2          0x01
-#define UNI_N_POWER_MGT_SLEEP          0x02
-
-/* This register is configured by Darwin depending on the UniN
- * revision
- */
-#define UNI_N_ARB_CTRL                 0x0040
-#define UNI_N_ARB_CTRL_QACK_DELAY_SHIFT        15
-#define UNI_N_ARB_CTRL_QACK_DELAY_MASK 0x0e1f8000
-#define UNI_N_ARB_CTRL_QACK_DELAY      0x30
-#define UNI_N_ARB_CTRL_QACK_DELAY105   0x00
-
-/* This one _might_ return the CPU number of the CPU reading it;
- * the bootROM decides whether to boot or to sleep/spinloop depending
- * on this register beeing 0 or not
- */
-#define UNI_N_CPU_NUMBER               0x0050
-
-/* This register appear to be read by the bootROM to decide what
- *  to do on a non-recoverable reset (powerup or wakeup)
- */
-#define UNI_N_HWINIT_STATE             0x0070
-#define UNI_N_HWINIT_STATE_SLEEPING    0x01
-#define UNI_N_HWINIT_STATE_RUNNING     0x02
-/* This last bit appear to be used by the bootROM to know the second
- * CPU has started and will enter it's sleep loop with IP=0
- */
-#define UNI_N_HWINIT_STATE_CPU1_FLAG   0x10000000
-
-/* This register controls AACK delay, which is set when 2004 iBook/PowerBook
- * is in low speed mode.
- */
-#define UNI_N_AACK_DELAY               0x0100
-#define UNI_N_AACK_DELAY_ENABLE                0x00000001
-
-/* Clock status for Intrepid */
-#define UNI_N_CLOCK_STOP_STATUS0       0x0150
-#define UNI_N_CLOCK_STOPPED_EXTAGP     0x00200000
-#define UNI_N_CLOCK_STOPPED_AGPDEL     0x00100000
-#define UNI_N_CLOCK_STOPPED_I2S0_45_49 0x00080000
-#define UNI_N_CLOCK_STOPPED_I2S0_18    0x00040000
-#define UNI_N_CLOCK_STOPPED_I2S1_45_49 0x00020000
-#define UNI_N_CLOCK_STOPPED_I2S1_18    0x00010000
-#define UNI_N_CLOCK_STOPPED_TIMER      0x00008000
-#define UNI_N_CLOCK_STOPPED_SCC_RTCLK18        0x00004000
-#define UNI_N_CLOCK_STOPPED_SCC_RTCLK32        0x00002000
-#define UNI_N_CLOCK_STOPPED_SCC_VIA32  0x00001000
-#define UNI_N_CLOCK_STOPPED_SCC_SLOT0  0x00000800
-#define UNI_N_CLOCK_STOPPED_SCC_SLOT1  0x00000400
-#define UNI_N_CLOCK_STOPPED_SCC_SLOT2  0x00000200
-#define UNI_N_CLOCK_STOPPED_PCI_FBCLKO 0x00000100
-#define UNI_N_CLOCK_STOPPED_VEO0       0x00000080
-#define UNI_N_CLOCK_STOPPED_VEO1       0x00000040
-#define UNI_N_CLOCK_STOPPED_USB0       0x00000020
-#define UNI_N_CLOCK_STOPPED_USB1       0x00000010
-#define UNI_N_CLOCK_STOPPED_USB2       0x00000008
-#define UNI_N_CLOCK_STOPPED_32         0x00000004
-#define UNI_N_CLOCK_STOPPED_45         0x00000002
-#define UNI_N_CLOCK_STOPPED_49         0x00000001
-
-#define UNI_N_CLOCK_STOP_STATUS1       0x0160
-#define UNI_N_CLOCK_STOPPED_PLL4REF    0x00080000
-#define UNI_N_CLOCK_STOPPED_CPUDEL     0x00040000
-#define UNI_N_CLOCK_STOPPED_CPU                0x00020000
-#define UNI_N_CLOCK_STOPPED_BUF_REFCKO 0x00010000
-#define UNI_N_CLOCK_STOPPED_PCI2       0x00008000
-#define UNI_N_CLOCK_STOPPED_FW         0x00004000
-#define UNI_N_CLOCK_STOPPED_GB         0x00002000
-#define UNI_N_CLOCK_STOPPED_ATA66      0x00001000
-#define UNI_N_CLOCK_STOPPED_ATA100     0x00000800
-#define UNI_N_CLOCK_STOPPED_MAX                0x00000400
-#define UNI_N_CLOCK_STOPPED_PCI1       0x00000200
-#define UNI_N_CLOCK_STOPPED_KLPCI      0x00000100
-#define UNI_N_CLOCK_STOPPED_USB0PCI    0x00000080
-#define UNI_N_CLOCK_STOPPED_USB1PCI    0x00000040
-#define UNI_N_CLOCK_STOPPED_USB2PCI    0x00000020
-#define UNI_N_CLOCK_STOPPED_7PCI1      0x00000008
-#define UNI_N_CLOCK_STOPPED_AGP                0x00000004
-#define UNI_N_CLOCK_STOPPED_PCI0       0x00000002
-#define UNI_N_CLOCK_STOPPED_18         0x00000001
-
-/* Intrepid registe to OF do-platform-clockspreading */
-#define UNI_N_CLOCK_SPREADING          0x190
-
-/* Uninorth 1.5 rev. has additional perf. monitor registers at 0xf00-0xf50 */
-
-
-/*
- * U3 specific registers
- */
-
-
-/* U3 Toggle */
-#define U3_TOGGLE_REG                  0x00e0
-#define U3_PMC_START_STOP              0x0001
-#define U3_MPIC_RESET                  0x0002
-#define U3_MPIC_OUTPUT_ENABLE          0x0004
-
-/* U3 API PHY Config 1 */
-#define U3_API_PHY_CONFIG_1            0x23030
-
-/* U3 HyperTransport registers */
-#define U3_HT_CONFIG_BASE                      0x70000
-#define U3_HT_LINK_COMMAND             0x100
-#define U3_HT_LINK_CONFIG              0x110
-#define U3_HT_LINK_FREQ                        0x120
-
-#endif /* __ASM_UNINORTH_H__ */
-#endif /* __KERNEL__ */
diff --git a/include/asm-ppc64/dbdma.h b/include/asm-ppc64/dbdma.h
deleted file mode 100644 (file)
index f2d5d5d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include <asm-ppc/dbdma.h>
-
diff --git a/include/asm-ppc64/keylargo.h b/include/asm-ppc64/keylargo.h
deleted file mode 100644 (file)
index 4d78e3d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include <asm-ppc/keylargo.h>
-
diff --git a/include/asm-ppc64/macio.h b/include/asm-ppc64/macio.h
deleted file mode 100644 (file)
index a3028b3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include <asm-ppc/macio.h>
-
diff --git a/include/asm-ppc64/pmac_feature.h b/include/asm-ppc64/pmac_feature.h
deleted file mode 100644 (file)
index e07e36c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include <asm-ppc/pmac_feature.h>
-
diff --git a/include/asm-ppc64/pmac_low_i2c.h b/include/asm-ppc64/pmac_low_i2c.h
deleted file mode 100644 (file)
index 7bcfc72..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include <asm-ppc/pmac_low_i2c.h>
-
diff --git a/include/asm-ppc64/smu.h b/include/asm-ppc64/smu.h
deleted file mode 100644 (file)
index dee8eef..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-#ifndef _SMU_H
-#define _SMU_H
-
-/*
- * Definitions for talking to the SMU chip in newer G5 PowerMacs
- */
-
-#include <linux/config.h>
-#include <linux/list.h>
-
-/*
- * Known SMU commands
- *
- * Most of what is below comes from looking at the Open Firmware driver,
- * though this is still incomplete and could use better documentation here
- * or there...
- */
-
-
-/*
- * Partition info commands
- *
- * I do not know what those are for at this point
- */
-#define SMU_CMD_PARTITION_COMMAND              0x3e
-
-
-/*
- * Fan control
- *
- * This is a "mux" for fan control commands, first byte is the
- * "sub" command.
- */
-#define SMU_CMD_FAN_COMMAND                    0x4a
-
-
-/*
- * Battery access
- *
- * Same command number as the PMU, could it be same syntax ?
- */
-#define SMU_CMD_BATTERY_COMMAND                        0x6f
-#define   SMU_CMD_GET_BATTERY_INFO             0x00
-
-/*
- * Real time clock control
- *
- * This is a "mux", first data byte contains the "sub" command.
- * The "RTC" part of the SMU controls the date, time, powerup
- * timer, but also a PRAM
- *
- * Dates are in BCD format on 7 bytes:
- * [sec] [min] [hour] [weekday] [month day] [month] [year]
- * with month being 1 based and year minus 100
- */
-#define SMU_CMD_RTC_COMMAND                    0x8e
-#define   SMU_CMD_RTC_SET_PWRUP_TIMER          0x00 /* i: 7 bytes date */
-#define   SMU_CMD_RTC_GET_PWRUP_TIMER          0x01 /* o: 7 bytes date */
-#define   SMU_CMD_RTC_STOP_PWRUP_TIMER         0x02
-#define   SMU_CMD_RTC_SET_PRAM_BYTE_ACC                0x20 /* i: 1 byte (address?) */
-#define   SMU_CMD_RTC_SET_PRAM_AUTOINC         0x21 /* i: 1 byte (data?) */
-#define   SMU_CMD_RTC_SET_PRAM_LO_BYTES        0x22 /* i: 10 bytes */
-#define   SMU_CMD_RTC_SET_PRAM_HI_BYTES        0x23 /* i: 10 bytes */
-#define   SMU_CMD_RTC_GET_PRAM_BYTE            0x28 /* i: 1 bytes (address?) */
-#define   SMU_CMD_RTC_GET_PRAM_LO_BYTES        0x29 /* o: 10 bytes */
-#define   SMU_CMD_RTC_GET_PRAM_HI_BYTES        0x2a /* o: 10 bytes */
-#define          SMU_CMD_RTC_SET_DATETIME              0x80 /* i: 7 bytes date */
-#define   SMU_CMD_RTC_GET_DATETIME             0x81 /* o: 7 bytes date */
-
- /*
-  * i2c commands
-  *
-  * To issue an i2c command, first is to send a parameter block to the
-  * the SMU. This is a command of type 0x9a with 9 bytes of header
-  * eventually followed by data for a write:
-  *
-  * 0: bus number (from device-tree usually, SMU has lots of busses !)
-  * 1: transfer type/format (see below)
-  * 2: device address. For combined and combined4 type transfers, this
-  *    is the "write" version of the address (bit 0x01 cleared)
-  * 3: subaddress length (0..3)
-  * 4: subaddress byte 0 (or only byte for subaddress length 1)
-  * 5: subaddress byte 1
-  * 6: subaddress byte 2
-  * 7: combined address (device address for combined mode data phase)
-  * 8: data length
-  *
-  * The transfer types are the same good old Apple ones it seems,
-  * that is:
-  *   - 0x00: Simple transfer
-  *   - 0x01: Subaddress transfer (addr write + data tx, no restart)
-  *   - 0x02: Combined transfer (addr write + restart + data tx)
-  *
-  * This is then followed by actual data for a write.
-  *
-  * At this point, the OF driver seems to have a limitation on transfer
-  * sizes of 0xd bytes on reads and 0x5 bytes on writes. I do not know
-  * wether this is just an OF limit due to some temporary buffer size
-  * or if this is an SMU imposed limit. This driver has the same limitation
-  * for now as I use a 0x10 bytes temporary buffer as well
-  *
-  * Once that is completed, a response is expected from the SMU. This is
-  * obtained via a command of type 0x9a with a length of 1 byte containing
-  * 0 as the data byte. OF also fills the rest of the data buffer with 0xff's
-  * though I can't tell yet if this is actually necessary. Once this command
-  * is complete, at this point, all I can tell is what OF does. OF tests
-  * byte 0 of the reply:
-  *   - on read, 0xfe or 0xfc : bus is busy, wait (see below) or nak ?
-  *   - on read, 0x00 or 0x01 : reply is in buffer (after the byte 0)
-  *   - on write, < 0 -> failure (immediate exit)
-  *   - else, OF just exists (without error, weird)
-  *
-  * So on read, there is this wait-for-busy thing when getting a 0xfc or
-  * 0xfe result. OF does a loop of up to 64 retries, waiting 20ms and
-  * doing the above again until either the retries expire or the result
-  * is no longer 0xfe or 0xfc
-  *
-  * The Darwin I2C driver is less subtle though. On any non-success status
-  * from the response command, it waits 5ms and tries again up to 20 times,
-  * it doesn't differenciate between fatal errors or "busy" status.
-  *
-  * This driver provides an asynchronous paramblock based i2c command
-  * interface to be used either directly by low level code or by a higher
-  * level driver interfacing to the linux i2c layer. The current
-  * implementation of this relies on working timers & timer interrupts
-  * though, so be careful of calling context for now. This may be "fixed"
-  * in the future by adding a polling facility.
-  */
-#define SMU_CMD_I2C_COMMAND                    0x9a
-          /* transfer types */
-#define   SMU_I2C_TRANSFER_SIMPLE      0x00
-#define   SMU_I2C_TRANSFER_STDSUB      0x01
-#define   SMU_I2C_TRANSFER_COMBINED    0x02
-
-/*
- * Power supply control
- *
- * The "sub" command is an ASCII string in the data, the
- * data lenght is that of the string.
- *
- * The VSLEW command can be used to get or set the voltage slewing.
- *  - lenght 5 (only "VSLEW") : it returns "DONE" and 3 bytes of
- *    reply at data offset 6, 7 and 8.
- *  - lenght 8 ("VSLEWxyz") has 3 additional bytes appended, and is
- *    used to set the voltage slewing point. The SMU replies with "DONE"
- * I yet have to figure out their exact meaning of those 3 bytes in
- * both cases.
- *
- */
-#define SMU_CMD_POWER_COMMAND                  0xaa
-#define   SMU_CMD_POWER_RESTART                        "RESTART"
-#define   SMU_CMD_POWER_SHUTDOWN               "SHUTDOWN"
-#define   SMU_CMD_POWER_VOLTAGE_SLEW           "VSLEW"
-
-/* Misc commands
- *
- * This command seem to be a grab bag of various things
- */
-#define SMU_CMD_MISC_df_COMMAND                        0xdf
-#define   SMU_CMD_MISC_df_SET_DISPLAY_LIT      0x02 /* i: 1 byte */
-#define   SMU_CMD_MISC_df_NMI_OPTION           0x04
-
-/*
- * Version info commands
- *
- * I haven't quite tried to figure out how these work
- */
-#define SMU_CMD_VERSION_COMMAND                        0xea
-
-
-/*
- * Misc commands
- *
- * This command seem to be a grab bag of various things
- */
-#define SMU_CMD_MISC_ee_COMMAND                        0xee
-#define   SMU_CMD_MISC_ee_GET_DATABLOCK_REC    0x02
-#define          SMU_CMD_MISC_ee_LEDS_CTRL             0x04 /* i: 00 (00,01) [00] */
-#define   SMU_CMD_MISC_ee_GET_DATA             0x05 /* i: 00 , o: ?? */
-
-
-
-/*
- * - Kernel side interface -
- */
-
-#ifdef __KERNEL__
-
-/*
- * Asynchronous SMU commands
- *
- * Fill up this structure and submit it via smu_queue_command(),
- * and get notified by the optional done() callback, or because
- * status becomes != 1
- */
-
-struct smu_cmd;
-
-struct smu_cmd
-{
-       /* public */
-       u8                      cmd;            /* command */
-       int                     data_len;       /* data len */
-       int                     reply_len;      /* reply len */
-       void                    *data_buf;      /* data buffer */
-       void                    *reply_buf;     /* reply buffer */
-       int                     status;         /* command status */
-       void                    (*done)(struct smu_cmd *cmd, void *misc);
-       void                    *misc;
-
-       /* private */
-       struct list_head        link;
-};
-
-/*
- * Queues an SMU command, all fields have to be initialized
- */
-extern int smu_queue_cmd(struct smu_cmd *cmd);
-
-/*
- * Simple command wrapper. This structure embeds a small buffer
- * to ease sending simple SMU commands from the stack
- */
-struct smu_simple_cmd
-{
-       struct smu_cmd  cmd;
-       u8              buffer[16];
-};
-
-/*
- * Queues a simple command. All fields will be initialized by that
- * function
- */
-extern int smu_queue_simple(struct smu_simple_cmd *scmd, u8 command,
-                           unsigned int data_len,
-                           void (*done)(struct smu_cmd *cmd, void *misc),
-                           void *misc,
-                           ...);
-
-/*
- * Completion helper. Pass it to smu_queue_simple or as 'done'
- * member to smu_queue_cmd, it will call complete() on the struct
- * completion passed in the "misc" argument
- */
-extern void smu_done_complete(struct smu_cmd *cmd, void *misc);
-
-/*
- * Synchronous helpers. Will spin-wait for completion of a command
- */
-extern void smu_spinwait_cmd(struct smu_cmd *cmd);
-
-static inline void smu_spinwait_simple(struct smu_simple_cmd *scmd)
-{
-       smu_spinwait_cmd(&scmd->cmd);
-}
-
-/*
- * Poll routine to call if blocked with irqs off
- */
-extern void smu_poll(void);
-
-
-/*
- * Init routine, presence check....
- */
-extern int smu_init(void);
-extern int smu_present(void);
-struct of_device;
-extern struct of_device *smu_get_ofdev(void);
-
-
-/*
- * Common command wrappers
- */
-extern void smu_shutdown(void);
-extern void smu_restart(void);
-struct rtc_time;
-extern int smu_get_rtc_time(struct rtc_time *time, int spinwait);
-extern int smu_set_rtc_time(struct rtc_time *time, int spinwait);
-
-/*
- * SMU command buffer absolute address, exported by pmac_setup,
- * this is allocated very early during boot.
- */
-extern unsigned long smu_cmdbuf_abs;
-
-
-/*
- * Kenrel asynchronous i2c interface
- */
-
-/* SMU i2c header, exactly matches i2c header on wire */
-struct smu_i2c_param
-{
-       u8      bus;            /* SMU bus ID (from device tree) */
-       u8      type;           /* i2c transfer type */
-       u8      devaddr;        /* device address (includes direction) */
-       u8      sublen;         /* subaddress length */
-       u8      subaddr[3];     /* subaddress */
-       u8      caddr;          /* combined address, filled by SMU driver */
-       u8      datalen;        /* length of transfer */
-       u8      data[7];        /* data */
-};
-
-#define SMU_I2C_READ_MAX       0x0d
-#define SMU_I2C_WRITE_MAX      0x05
-
-struct smu_i2c_cmd
-{
-       /* public */
-       struct smu_i2c_param    info;
-       void                    (*done)(struct smu_i2c_cmd *cmd, void *misc);
-       void                    *misc;
-       int                     status; /* 1 = pending, 0 = ok, <0 = fail */
-
-       /* private */
-       struct smu_cmd          scmd;
-       int                     read;
-       int                     stage;
-       int                     retries;
-       u8                      pdata[0x10];
-       struct list_head        link;
-};
-
-/*
- * Call this to queue an i2c command to the SMU. You must fill info,
- * including info.data for a write, done and misc.
- * For now, no polling interface is provided so you have to use completion
- * callback.
- */
-extern int smu_queue_i2c(struct smu_i2c_cmd *cmd);
-
-
-#endif /* __KERNEL__ */
-
-/*
- * - Userland interface -
- */
-
-/*
- * A given instance of the device can be configured for 2 different
- * things at the moment:
- *
- *  - sending SMU commands (default at open() time)
- *  - receiving SMU events (not yet implemented)
- *
- * Commands are written with write() of a command block. They can be
- * "driver" commands (for example to switch to event reception mode)
- * or real SMU commands. They are made of a header followed by command
- * data if any.
- *
- * For SMU commands (not for driver commands), you can then read() back
- * a reply. The reader will be blocked or not depending on how the device
- * file is opened. poll() isn't implemented yet. The reply will consist
- * of a header as well, followed by the reply data if any. You should
- * always provide a buffer large enough for the maximum reply data, I
- * recommand one page.
- *
- * It is illegal to send SMU commands through a file descriptor configured
- * for events reception
- *
- */
-struct smu_user_cmd_hdr
-{
-       __u32           cmdtype;
-#define SMU_CMDTYPE_SMU                        0       /* SMU command */
-#define SMU_CMDTYPE_WANTS_EVENTS       1       /* switch fd to events mode */
-
-       __u8            cmd;                    /* SMU command byte */
-       __u32           data_len;               /* Lenght of data following */
-};
-
-struct smu_user_reply_hdr
-{
-       __u32           status;                 /* Command status */
-       __u32           reply_len;              /* Lenght of data follwing */
-};
-
-#endif /*  _SMU_H */
diff --git a/include/asm-ppc64/uninorth.h b/include/asm-ppc64/uninorth.h
deleted file mode 100644 (file)
index 7ad7059..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include <asm-ppc/uninorth.h>
-
This page took 0.061481 seconds and 5 git commands to generate.