patch-2.4.22 linux-2.4.22/arch/ppc/platforms/pmac_feature.c
Next file: linux-2.4.22/arch/ppc/platforms/pmac_nvram.c
Previous file: linux-2.4.22/arch/ppc/platforms/pmac_backlight.c
Back to the patch index
Back to the overall index
- Lines: 700
- Date:
2003-08-25 04:44:40.000000000 -0700
- Orig file:
linux-2.4.21/arch/ppc/platforms/pmac_feature.c
- Orig date:
2003-06-13 07:51:31.000000000 -0700
diff -urN linux-2.4.21/arch/ppc/platforms/pmac_feature.c linux-2.4.22/arch/ppc/platforms/pmac_feature.c
@@ -8,9 +8,9 @@
* 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.
- *
- * TODO:
- *
+ *
+ * TODO:
+ *
* - Replace mdelay with some schedule loop if possible
* - Shorten some obfuscated delays on some routines (like modem
* power)
@@ -66,7 +66,7 @@
/*
* Helper functions regarding the various flavors of mac-io
*/
-
+
#define MAX_MACIO_CHIPS 2
enum {
@@ -82,7 +82,7 @@
macio_intrepid,
};
-static const char* macio_names[] __pmacdata =
+static const char* macio_names[] __pmacdata =
{
"Unknown",
"Grand Central",
@@ -116,7 +116,7 @@
{
while(child) {
int i;
-
+
for (i=0; i < MAX_MACIO_CHIPS && macio_chips[i].of_node; i++)
if (child == macio_chips[i].of_node &&
(!type || macio_chips[i].type == type))
@@ -139,7 +139,7 @@
/*
* Uninorth reg. access. Note that Uni-N regs are big endian
*/
-
+
#define UN_REG(r) (uninorth_base + ((r) >> 2))
#define UN_IN(r) (in_be32(UN_REG(r)))
#define UN_OUT(r,v) (out_be32(UN_REG(r), (v)))
@@ -159,7 +159,7 @@
typedef int (*feature_call)(struct device_node* node, int param, int value);
struct feature_table_entry {
- unsigned int selector;
+ unsigned int selector;
feature_call function;
};
@@ -182,7 +182,7 @@
{
struct macio_chip* macio;
unsigned long flags;
-
+
macio = macio_find(node, type);
if (!macio)
return -ENODEV;
@@ -206,7 +206,7 @@
unsigned long flags;
int htw, trans;
unsigned long rmask;
-
+
macio = macio_find(node, 0);
if (!macio)
return -ENODEV;
@@ -226,7 +226,7 @@
#ifdef CONFIG_ADB_PMU
if ((param & 0xfff) == PMAC_SCC_IRDA)
pmu_enable_irled(1);
-#endif /* CONFIG_ADB_PMU */
+#endif /* CONFIG_ADB_PMU */
LOCK(flags);
fcr = MACIO_IN32(OHARE_FCR);
/* Check if scc cell need enabling */
@@ -285,7 +285,7 @@
#ifdef CONFIG_ADB_PMU
if ((param & 0xfff) == PMAC_SCC_IRDA)
pmu_enable_irled(0);
-#endif /* CONFIG_ADB_PMU */
+#endif /* CONFIG_ADB_PMU */
}
return 0;
}
@@ -352,7 +352,7 @@
} else if (value == 0) {
MACIO_BIS(OHARE_FCR, OH_IOBUS_ENABLE);
}
-
+
return 0;
}
@@ -362,7 +362,7 @@
struct macio_chip* macio;
u8 gpio;
unsigned long flags;
-
+
macio = macio_find(node, macio_unknown);
if (!macio)
return -ENODEV;
@@ -414,7 +414,7 @@
{
struct macio_chip* macio;
unsigned long flags;
-
+
macio = macio_find(node, macio_unknown);
if (!macio)
return -ENODEV;
@@ -441,7 +441,7 @@
MACIO_BIC(HEATHROW_MBCR, 0x00040000);
else
MACIO_BIS(HEATHROW_MBCR, 0x00040000);
-#endif
+#endif
(void)MACIO_IN32(HEATHROW_MBCR);
udelay(10);
UNLOCK(flags);
@@ -484,7 +484,7 @@
{
struct macio_chip* macio;
unsigned long flags;
-
+
macio = macio_find(node, 0);
if (!macio)
return -ENODEV;
@@ -520,7 +520,7 @@
if (pmac_mb.model_id == PMAC_TYPE_YOSEMITE ||
pmac_mb.model_id == PMAC_TYPE_YIKES)
return 0;
-
+
macio = macio_find(node, 0);
if (!macio)
return -ENODEV;
@@ -552,7 +552,7 @@
dbdma_save(struct macio_chip* macio, struct dbdma_regs* save)
{
int i;
-
+
/* Save state & config of DBDMA channels */
for (i=0; i<13; i++) {
volatile struct dbdma_regs* chan = (volatile struct dbdma_regs*)
@@ -569,7 +569,7 @@
dbdma_restore(struct macio_chip* macio, struct dbdma_regs* save)
{
int i;
-
+
/* Save state & config of DBDMA channels */
for (i=0; i<13; i++) {
volatile struct dbdma_regs* chan = (volatile struct dbdma_regs*)
@@ -668,7 +668,7 @@
unsigned long flags;
unsigned long chan_mask;
u32 fcr;
-
+
macio = macio_find(node, 0);
if (!macio)
return -ENODEV;
@@ -682,7 +682,7 @@
if (value) {
int need_reset_scc = 0;
int need_reset_irda = 0;
-
+
LOCK(flags);
fcr = MACIO_IN32(KEYLARGO_FCR0);
/* Check if scc cell need enabling */
@@ -770,7 +770,7 @@
unsigned long flags;
/* Hack for internal USB modem */
- if (node == NULL) {
+ if (node == NULL) {
if (macio_chips[0].type != macio_keylargo)
return -ENODEV;
node = macio_chips[0].of_node;
@@ -781,7 +781,7 @@
gpio = MACIO_IN8(KL_GPIO_MODEM_RESET);
gpio |= KEYLARGO_GPIO_OUTPUT_ENABLE;
gpio &= ~KEYLARGO_GPIO_OUTOUT_DATA;
-
+
if (!value) {
LOCK(flags);
MACIO_OUT8(KL_GPIO_MODEM_RESET, gpio);
@@ -820,9 +820,9 @@
struct macio_chip* macio;
u8 gpio;
unsigned long flags;
-
+
/* Hack for internal USB modem */
- if (node == NULL) {
+ if (node == NULL) {
if (macio_chips[0].type != macio_pangea &&
macio_chips[0].type != macio_intrepid)
return -ENODEV;
@@ -834,7 +834,7 @@
gpio = MACIO_IN8(KL_GPIO_MODEM_RESET);
gpio |= KEYLARGO_GPIO_OUTPUT_ENABLE;
gpio &= ~KEYLARGO_GPIO_OUTOUT_DATA;
-
+
if (!value) {
LOCK(flags);
MACIO_OUT8(KL_GPIO_MODEM_RESET, gpio);
@@ -962,7 +962,7 @@
{
unsigned long flags;
struct macio_chip* macio;
-
+
macio = &macio_chips[0];
if (macio->type != macio_keylargo && macio->type != macio_pangea &&
macio->type != macio_intrepid)
@@ -987,7 +987,7 @@
{
struct macio_chip* macio;
unsigned long flags;
-
+
macio = macio_find(node, 0);
if (!macio)
return -ENODEV;
@@ -1018,11 +1018,11 @@
struct macio_chip* macio;
unsigned long flags;
int state;
-
+
macio = macio_find(node, 0);
if (!macio)
return -ENODEV;
-
+
/* Hint: we allow passing of macio itself for the sake of the
* sleep code
*/
@@ -1110,11 +1110,11 @@
KL_GPIO_RESET_CPU1,
KL_GPIO_RESET_CPU2,
KL_GPIO_RESET_CPU3 };
-
+
macio = &macio_chips[0];
if (macio->type != macio_keylargo)
return -ENODEV;
-
+
np = find_path_device("/cpus");
if (np == NULL)
return -ENODEV;
@@ -1130,7 +1130,7 @@
}
if (np == NULL || reset_io == 0)
reset_io = dflt_reset_lines[param];
-
+
LOCK(flags);
MACIO_OUT8(reset_io, KEYLARGO_GPIO_OUTPUT_ENABLE);
(void)MACIO_IN8(reset_io);
@@ -1151,15 +1151,12 @@
char* prop;
int number;
u32 reg;
-
+
macio = &macio_chips[0];
if (macio->type != macio_keylargo && macio->type != macio_pangea &&
macio->type != macio_intrepid)
return -ENODEV;
- /* XXX Fix handling of 3rd USB controller in Intrepid, move the
- * port connect stuff (KL4_*) to the sleep code eventually
- */
prop = (char *)get_property(node, "AAPL,clock-id", NULL);
if (!prop)
return -ENODEV;
@@ -1167,6 +1164,8 @@
number = 0;
else if (strncmp(prop, "usb1u148", 8) == 0)
number = 2;
+ else if (strncmp(prop, "usb2u248", 8) == 0)
+ number = 4;
else
return -ENODEV;
@@ -1183,44 +1182,79 @@
mdelay(1);
LOCK(flags);
MACIO_BIS(KEYLARGO_FCR0, KL0_USB0_CELL_ENABLE);
- } else {
+ } else if (number == 2) {
MACIO_BIC(KEYLARGO_FCR0, (KL0_USB1_PAD_SUSPEND0 | KL0_USB1_PAD_SUSPEND1));
UNLOCK(flags);
(void)MACIO_IN32(KEYLARGO_FCR0);
mdelay(1);
LOCK(flags);
MACIO_BIS(KEYLARGO_FCR0, KL0_USB1_CELL_ENABLE);
+ } else if (number == 4) {
+ MACIO_BIC(KEYLARGO_FCR1, (KL1_USB2_PAD_SUSPEND0 | KL1_USB2_PAD_SUSPEND1));
+ UNLOCK(flags);
+ (void)MACIO_IN32(KEYLARGO_FCR1);
+ mdelay(1);
+ LOCK(flags);
+ MACIO_BIS(KEYLARGO_FCR0, KL1_USB2_CELL_ENABLE);
+ }
+ if (number < 4) {
+ reg = MACIO_IN32(KEYLARGO_FCR4);
+ reg &= ~(KL4_PORT_WAKEUP_ENABLE(number) | KL4_PORT_RESUME_WAKE_EN(number) |
+ KL4_PORT_CONNECT_WAKE_EN(number) | KL4_PORT_DISCONNECT_WAKE_EN(number));
+ reg &= ~(KL4_PORT_WAKEUP_ENABLE(number+1) | KL4_PORT_RESUME_WAKE_EN(number+1) |
+ KL4_PORT_CONNECT_WAKE_EN(number+1) | KL4_PORT_DISCONNECT_WAKE_EN(number+1));
+ MACIO_OUT32(KEYLARGO_FCR4, reg);
+ (void)MACIO_IN32(KEYLARGO_FCR4);
+ udelay(10);
+ } else {
+ reg = MACIO_IN32(KEYLARGO_FCR3);
+ reg &= ~(KL3_IT_PORT_WAKEUP_ENABLE(0) | KL3_IT_PORT_RESUME_WAKE_EN(0) |
+ KL3_IT_PORT_CONNECT_WAKE_EN(0) | KL3_IT_PORT_DISCONNECT_WAKE_EN(0));
+ reg &= ~(KL3_IT_PORT_WAKEUP_ENABLE(1) | KL3_IT_PORT_RESUME_WAKE_EN(1) |
+ KL3_IT_PORT_CONNECT_WAKE_EN(1) | KL3_IT_PORT_DISCONNECT_WAKE_EN(1));
+ MACIO_OUT32(KEYLARGO_FCR3, reg);
+ (void)MACIO_IN32(KEYLARGO_FCR3);
+ udelay(10);
}
- reg = MACIO_IN32(KEYLARGO_FCR4);
- reg &= ~(KL4_PORT_WAKEUP_ENABLE(number) | KL4_PORT_RESUME_WAKE_EN(number) |
- KL4_PORT_CONNECT_WAKE_EN(number) | KL4_PORT_DISCONNECT_WAKE_EN(number));
- reg &= ~(KL4_PORT_WAKEUP_ENABLE(number+1) | KL4_PORT_RESUME_WAKE_EN(number+1) |
- KL4_PORT_CONNECT_WAKE_EN(number+1) | KL4_PORT_DISCONNECT_WAKE_EN(number+1));
- MACIO_OUT32(KEYLARGO_FCR4, reg);
- (void)MACIO_IN32(KEYLARGO_FCR4);
- udelay(10);
} else {
/* Turn OFF */
- reg = MACIO_IN32(KEYLARGO_FCR4);
- reg |= KL4_PORT_WAKEUP_ENABLE(number) | KL4_PORT_RESUME_WAKE_EN(number) |
- KL4_PORT_CONNECT_WAKE_EN(number) | KL4_PORT_DISCONNECT_WAKE_EN(number);
- reg |= KL4_PORT_WAKEUP_ENABLE(number+1) | KL4_PORT_RESUME_WAKE_EN(number+1) |
- KL4_PORT_CONNECT_WAKE_EN(number+1) | KL4_PORT_DISCONNECT_WAKE_EN(number+1);
- MACIO_OUT32(KEYLARGO_FCR4, reg);
- (void)MACIO_IN32(KEYLARGO_FCR4);
- udelay(1);
+ if (number < 4) {
+ reg = MACIO_IN32(KEYLARGO_FCR4);
+ reg |= KL4_PORT_WAKEUP_ENABLE(number) | KL4_PORT_RESUME_WAKE_EN(number) |
+ KL4_PORT_CONNECT_WAKE_EN(number) | KL4_PORT_DISCONNECT_WAKE_EN(number);
+ reg |= KL4_PORT_WAKEUP_ENABLE(number+1) | KL4_PORT_RESUME_WAKE_EN(number+1) |
+ KL4_PORT_CONNECT_WAKE_EN(number+1) | KL4_PORT_DISCONNECT_WAKE_EN(number+1);
+ MACIO_OUT32(KEYLARGO_FCR4, reg);
+ (void)MACIO_IN32(KEYLARGO_FCR4);
+ udelay(1);
+ } else {
+ reg = MACIO_IN32(KEYLARGO_FCR3);
+ reg |= KL3_IT_PORT_WAKEUP_ENABLE(0) | KL3_IT_PORT_RESUME_WAKE_EN(0) |
+ KL3_IT_PORT_CONNECT_WAKE_EN(0) | KL3_IT_PORT_DISCONNECT_WAKE_EN(0);
+ reg |= KL3_IT_PORT_WAKEUP_ENABLE(1) | KL3_IT_PORT_RESUME_WAKE_EN(1) |
+ KL3_IT_PORT_CONNECT_WAKE_EN(1) | KL3_IT_PORT_DISCONNECT_WAKE_EN(1);
+ MACIO_OUT32(KEYLARGO_FCR3, reg);
+ (void)MACIO_IN32(KEYLARGO_FCR3);
+ udelay(1);
+ }
if (number == 0) {
MACIO_BIC(KEYLARGO_FCR0, KL0_USB0_CELL_ENABLE);
(void)MACIO_IN32(KEYLARGO_FCR0);
udelay(1);
MACIO_BIS(KEYLARGO_FCR0, (KL0_USB0_PAD_SUSPEND0 | KL0_USB0_PAD_SUSPEND1));
(void)MACIO_IN32(KEYLARGO_FCR0);
- } else {
+ } else if (number == 2) {
MACIO_BIC(KEYLARGO_FCR0, KL0_USB1_CELL_ENABLE);
(void)MACIO_IN32(KEYLARGO_FCR0);
udelay(1);
MACIO_BIS(KEYLARGO_FCR0, (KL0_USB1_PAD_SUSPEND0 | KL0_USB1_PAD_SUSPEND1));
(void)MACIO_IN32(KEYLARGO_FCR0);
+ } else if (number == 4) {
+ MACIO_BIC(KEYLARGO_FCR1, KL1_USB2_CELL_ENABLE);
+ (void)MACIO_IN32(KEYLARGO_FCR1);
+ udelay(1);
+ MACIO_BIS(KEYLARGO_FCR1, (KL1_USB2_PAD_SUSPEND0 | KL1_USB2_PAD_SUSPEND1));
+ (void)MACIO_IN32(KEYLARGO_FCR1);
}
udelay(1);
}
@@ -1241,7 +1275,7 @@
return -ENODEV;
if (!(macio->flags & MACIO_FLAG_FW_SUPPORTED))
return -ENODEV;
-
+
LOCK(flags);
if (value) {
UN_BIS(UNI_N_CLOCK_CNTL, UNI_N_CLOCK_CNTL_FW);
@@ -1271,7 +1305,7 @@
return -ENODEV;
if (!(macio->flags & MACIO_FLAG_FW_SUPPORTED))
return -ENODEV;
-
+
LOCK(flags);
if (value) {
MACIO_OUT8(KL_GPIO_FW_CABLE_POWER , 0);
@@ -1291,7 +1325,7 @@
core99_read_gpio(struct device_node* node, int param, int value)
{
struct macio_chip* macio = &macio_chips[0];
-
+
return MACIO_IN8(param);
}
@@ -1321,7 +1355,7 @@
KL0_SCC_CELL_ENABLE |
KL0_IRDA_ENABLE | KL0_IRDA_CLK32_ENABLE |
KL0_IRDA_CLK19_ENABLE);
-
+
MACIO_BIC(KEYLARGO_MBCR, KL_MBCR_MB0_DEV_MASK);
MACIO_BIS(KEYLARGO_MBCR, KL_MBCR_MB0_IDE_ENABLE);
@@ -1344,7 +1378,7 @@
if (sleep_mode)
temp |= KL3_SHUTDOWN_PLL_TOTAL;
}
-
+
temp |= KL3_SHUTDOWN_PLLKW6 | KL3_SHUTDOWN_PLLKW4 |
KL3_SHUTDOWN_PLLKW35;
if (sleep_mode)
@@ -1379,7 +1413,7 @@
MACIO_BIC(KEYLARGO_FCR1, KL1_UIDE_RESET_N);
MACIO_BIS(KEYLARGO_FCR2, KL2_ALT_DATA_OUT);
-
+
temp = MACIO_IN32(KEYLARGO_FCR3);
temp |= KL3_SHUTDOWN_PLLKW6 | KL3_SHUTDOWN_PLLKW4 |
KL3_SHUTDOWN_PLLKW35;
@@ -1411,7 +1445,7 @@
MACIO_BIC(KEYLARGO_FCR1, KL1_UIDE_RESET_N);
MACIO_BIS(KEYLARGO_FCR2, KL2_ALT_DATA_OUT);
-
+
temp = MACIO_IN32(KEYLARGO_FCR3);
temp |= KL3_IT_SHUTDOWN_PLL1 | KL3_IT_SHUTDOWN_PLL2 |
KL3_IT_SHUTDOWN_PLL3;
@@ -1435,7 +1469,7 @@
if (macio->type != macio_keylargo && macio->type != macio_pangea &&
macio->type != macio_intrepid)
return -ENODEV;
-
+
/* We power off the wireless slot in case it was not done
* by the driver. We don't power it on automatically however
*/
@@ -1456,7 +1490,7 @@
/* We make sure the sound is off as well */
core99_sound_chip_enable(macio->of_node, 0, 0);
-
+
/*
* Save various bits of KeyLargo
*/
@@ -1482,7 +1516,7 @@
/* Save state & config of DBDMA channels */
dbdma_save(macio, save_dbdma);
-
+
/*
* Turn off as much as we can
*/
@@ -1492,8 +1526,8 @@
intrepid_shutdown(macio, 1);
else if (macio->type == macio_keylargo)
keylargo_shutdown(macio, 1);
-
- /*
+
+ /*
* Put the host bridge to sleep
*/
@@ -1532,7 +1566,7 @@
udelay(10);
UN_OUT(UNI_N_HWINIT_STATE, UNI_N_HWINIT_STATE_RUNNING);
udelay(10);
-
+
/*
* Restore KeyLargo
*/
@@ -1612,7 +1646,7 @@
return pmac_mb.model_id;
case PMAC_MB_INFO_FLAGS:
return pmac_mb.board_flags;
- case PMAC_MB_INFO_NAME:
+ case PMAC_MB_INFO_NAME:
/* hack hack hack... but should work */
*((const char **)value) = pmac_mb.model_name;
break;
@@ -1620,10 +1654,10 @@
return 0;
}
-/*
+/*
* Table definitions
*/
-
+
/* Used on any machine
*/
static struct feature_table_entry any_features[] __pmacdata = {
@@ -1775,7 +1809,7 @@
{ PMAC_FTR_WRITE_GPIO, core99_write_gpio },
{ 0, NULL }
};
-
+
static struct pmac_mb_def pmac_mb_defs[] __pmacdata = {
/* Warning: ordering is important as some models may claim
* beeing compatible with several types
@@ -1928,10 +1962,22 @@
PMAC_TYPE_RACKMAC, rackmac_features,
0,
},
+ { "RackMac1,2", "XServe rev. 2",
+ PMAC_TYPE_RACKMAC, rackmac_features,
+ 0,
+ },
{ "PowerMac3,6", "PowerMac G4 Windtunnel",
PMAC_TYPE_WINDTUNNEL, rackmac_features,
0,
},
+ { "PowerBook5,1", "PowerBook G4 17\"",
+ PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features,
+ PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
+ },
+ { "PowerBook6,1", "PowerBook G4 12\"",
+ PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features,
+ PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
+ },
};
/*
@@ -1944,7 +1990,7 @@
int param, value, i;
feature_call func = NULL;
va_list args;
-
+
if (pmac_mb.features)
for (i=0; pmac_mb.features[i].function; i++)
if (pmac_mb.features[i].selector == selector) {
@@ -1976,7 +2022,7 @@
struct macio_chip* macio = &macio_chips[0];
const char* model = NULL;
struct device_node *dt;
-
+
/* Lookup known motherboard type in device-tree. First try an
* exact match on the "model" property, then try a "compatible"
* match is none is found.
@@ -2028,8 +2074,8 @@
pmac_mb.features = pangea_features;
break;
case macio_intrepid:
- pmac_mb.model_id = PMAC_TYPE_UNKNOWN_PANGEA;
- pmac_mb.model_name = "Unknown Pangea-based";
+ pmac_mb.model_id = PMAC_TYPE_UNKNOWN_INTREPID;
+ pmac_mb.model_name = "Unknown Intrepid-based";
pmac_mb.features = intrepid_features;
break;
default:
@@ -2083,8 +2129,8 @@
if (model && (strncmp(model, "PowerBook", 9) == 0
|| strncmp(model, "iBook", 5) == 0))
pmac_mb.board_flags |= PMAC_MB_MOBILE;
-
-
+
+
printk(KERN_INFO "PowerMac motherboard: %s\n", pmac_mb.model_name);
return 0;
}
@@ -2095,7 +2141,7 @@
probe_uninorth(void)
{
unsigned long actrl;
-
+
/* Locate core99 Uni-N */
uninorth_node = find_devices("uni-n");
if (uninorth_node && uninorth_node->n_addrs > 0) {
@@ -2103,10 +2149,10 @@
uninorth_rev = in_be32(UN_REG(UNI_N_VERSION));
} else
uninorth_node = NULL;
-
+
if (!uninorth_node)
return;
-
+
printk(KERN_INFO "Found Uninorth memory controller & host bridge, revision: %d\n",
uninorth_rev);
printk(KERN_INFO "Mapped at 0x%08lx\n", (unsigned long)uninorth_base);
@@ -2126,7 +2172,7 @@
*/
if ((uninorth_rev >= 0x11 && uninorth_rev <= 0x24) || uninorth_rev == 0xc0)
UN_OUT(0x2160, UN_IN(0x2160) & 0x00ffffff);
-}
+}
static void __init
probe_one_macio(const char* name, const char* compat, int type)
@@ -2135,7 +2181,7 @@
int i;
volatile u32* base;
u32* revp;
-
+
node = find_devices(name);
if (!node || !node->n_addrs)
return;
@@ -2221,7 +2267,7 @@
char *conn;
int port_type = PMAC_SCC_ASYNC;
int modem = 0;
-
+
slots = (struct slot_names_prop *)get_property(np, "slot-names", &len);
conn = get_property(np, "AAPL,connector", &len);
if (conn && (strcmp(conn, "infrared") == 0))
@@ -2243,7 +2289,7 @@
set_initial_features(void)
{
struct device_node* np;
-
+
/* That hack appears to be necessary for some StarMax motherboards
* but I'm not too sure it was audited for side-effects on other
* ohare based machines...
@@ -2286,7 +2332,7 @@
while(np) {
if (np->parent
&& device_is_compatible(np->parent, "uni-north")
- && (device_is_compatible(np, "pci106b,18") ||
+ && (device_is_compatible(np, "pci106b,18") ||
device_is_compatible(np, "pci106b,30") ||
device_is_compatible(np, "pci11c1,5811"))) {
macio_chips[0].flags |= MACIO_FLAG_FW_SUPPORTED;
@@ -2294,7 +2340,7 @@
}
np = np->next;
}
-
+
/* Enable ATA-100 before PCI probe. */
np = find_devices("ata-6");
while(np) {
@@ -2305,7 +2351,7 @@
}
np = np->next;
}
-
+
/* Switch airport off */
np = find_devices("radio");
while(np) {
@@ -2371,7 +2417,7 @@
pmac_feature_late_init(void)
{
struct device_node* np;
-
+
/* Request some resources late */
if (uninorth_node)
request_OF_resource(uninorth_node, 0, NULL);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)