summaryrefslogtreecommitdiffstats
path: root/arch/ppc/kernel/feature.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-12-04 03:58:56 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-12-04 03:58:56 +0000
commit1d67e90f19a7acfd9a05dc59678e7d0c5090bd0d (patch)
tree357efc7b93f8f5102110d20d293f41360ec212fc /arch/ppc/kernel/feature.c
parentaea27b2e18d69af87e673972246e66657b4fa274 (diff)
Merge with Linux 2.3.21.
Diffstat (limited to 'arch/ppc/kernel/feature.c')
-rw-r--r--arch/ppc/kernel/feature.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/arch/ppc/kernel/feature.c b/arch/ppc/kernel/feature.c
index 25ee3424b..a9a30396a 100644
--- a/arch/ppc/kernel/feature.c
+++ b/arch/ppc/kernel/feature.c
@@ -41,7 +41,9 @@ static u32 feature_bits_pbook[] = {
OH_BAY_FLOPPY_ENABLE, /* FEATURE_Mediabay_floppy_enable */
0, /* FEATURE_BMac_reset */
0, /* FEATURE_BMac_IO_enable */
- 0 /* FEATURE_Modem_Reset -> guess...*/
+ 0, /* FEATURE_Modem_Reset -> guess... */
+ OH_IDE_POWER, /* FEATURE_IDE_DiskPower -> guess... */
+ OH_IDE_RESET /* FEATURE_IDE_Reset (0 based) -> guess... */
};
/* assume these are the same as the ohare until proven otherwise */
@@ -63,7 +65,9 @@ static u32 feature_bits_heathrow[] = {
OH_BAY_FLOPPY_ENABLE, /* FEATURE_Mediabay_floppy_enable */
0x80000000, /* FEATURE_BMac_reset */
0x60000000, /* FEATURE_BMac_IO_enable */
- 0x02000000 /* FEATURE_Modem_Reset -> guess...*/
+ 0x02000000, /* FEATURE_Modem_Reset -> guess...*/
+ OH_IDE_POWER, /* FEATURE_IDE_DiskPower -> guess... */
+ OH_IDE_RESET /* FEATURE_IDE_Reset (0 based) -> guess... */
};
/* definition of a feature controller object */
@@ -191,9 +195,10 @@ feature_set(struct device_node* device, enum system_feature f)
save_flags(flags);
cli();
- st_le32( controllers[controller].reg,
- ld_le32(controllers[controller].reg) |
+ out_le32( controllers[controller].reg,
+ in_le32(controllers[controller].reg) |
controllers[controller].bits[f]);
+ (void)in_le32(controllers[controller].reg);
restore_flags(flags);
udelay(10);
@@ -220,9 +225,10 @@ feature_clear(struct device_node* device, enum system_feature f)
save_flags(flags);
cli();
- st_le32( controllers[controller].reg,
- ld_le32(controllers[controller].reg) &
+ out_le32( controllers[controller].reg,
+ in_le32(controllers[controller].reg) &
~(controllers[controller].bits[f]));
+ (void)in_le32(controllers[controller].reg);
restore_flags(flags);
udelay(10);
@@ -241,7 +247,7 @@ feature_test(struct device_node* device, enum system_feature f)
if (controller < 0)
return controller;
- return (ld_le32(controllers[controller].reg) &
+ return (in_le32(controllers[controller].reg) &
controllers[controller].bits[f]) != 0;
}