diff options
| -rw-r--r-- | arch/ia64/sn/kernel/setup.c | 13 | ||||
| -rw-r--r-- | arch/ia64/sn/pci/tioca_provider.c | 3 | ||||
| -rw-r--r-- | include/asm-ia64/sn/sn_sal.h | 39 |
3 files changed, 19 insertions, 36 deletions
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c index 22e10d282c7f..7c7fe441d623 100644 --- a/arch/ia64/sn/kernel/setup.c +++ b/arch/ia64/sn/kernel/setup.c | |||
| @@ -270,7 +270,7 @@ void __init sn_setup(char **cmdline_p) | |||
| 270 | { | 270 | { |
| 271 | long status, ticks_per_sec, drift; | 271 | long status, ticks_per_sec, drift; |
| 272 | int pxm; | 272 | int pxm; |
| 273 | int major = sn_sal_rev_major(), minor = sn_sal_rev_minor(); | 273 | u32 version = sn_sal_rev(); |
| 274 | extern void sn_cpu_init(void); | 274 | extern void sn_cpu_init(void); |
| 275 | 275 | ||
| 276 | ia64_sn_plat_set_error_handling_features(); | 276 | ia64_sn_plat_set_error_handling_features(); |
| @@ -308,22 +308,21 @@ void __init sn_setup(char **cmdline_p) | |||
| 308 | * support here so we don't have to listen to failed keyboard probe | 308 | * support here so we don't have to listen to failed keyboard probe |
| 309 | * messages. | 309 | * messages. |
| 310 | */ | 310 | */ |
| 311 | if ((major < 2 || (major == 2 && minor <= 9)) && | 311 | if (version <= 0x0209 && acpi_kbd_controller_present) { |
| 312 | acpi_kbd_controller_present) { | ||
| 313 | printk(KERN_INFO "Disabling legacy keyboard support as prom " | 312 | printk(KERN_INFO "Disabling legacy keyboard support as prom " |
| 314 | "is too old and doesn't provide FADT\n"); | 313 | "is too old and doesn't provide FADT\n"); |
| 315 | acpi_kbd_controller_present = 0; | 314 | acpi_kbd_controller_present = 0; |
| 316 | } | 315 | } |
| 317 | 316 | ||
| 318 | printk("SGI SAL version %x.%02x\n", major, minor); | 317 | printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF); |
| 319 | 318 | ||
| 320 | /* | 319 | /* |
| 321 | * Confirm the SAL we're running on is recent enough... | 320 | * Confirm the SAL we're running on is recent enough... |
| 322 | */ | 321 | */ |
| 323 | if ((major < SN_SAL_MIN_MAJOR) || (major == SN_SAL_MIN_MAJOR && | 322 | if (version < SN_SAL_MIN_VERSION) { |
| 324 | minor < SN_SAL_MIN_MINOR)) { | ||
| 325 | printk(KERN_ERR "This kernel needs SGI SAL version >= " | 323 | printk(KERN_ERR "This kernel needs SGI SAL version >= " |
| 326 | "%x.%02x\n", SN_SAL_MIN_MAJOR, SN_SAL_MIN_MINOR); | 324 | "%x.%02x\n", SN_SAL_MIN_VERSION >> 8, |
| 325 | SN_SAL_MIN_VERSION & 0x00FF); | ||
| 327 | panic("PROM version too old\n"); | 326 | panic("PROM version too old\n"); |
| 328 | } | 327 | } |
| 329 | 328 | ||
diff --git a/arch/ia64/sn/pci/tioca_provider.c b/arch/ia64/sn/pci/tioca_provider.c index 05aa8c2fe9bb..51cc4e63092c 100644 --- a/arch/ia64/sn/pci/tioca_provider.c +++ b/arch/ia64/sn/pci/tioca_provider.c | |||
| @@ -589,8 +589,7 @@ tioca_bus_fixup(struct pcibus_bussoft *prom_bussoft) | |||
| 589 | 589 | ||
| 590 | /* sanity check prom rev */ | 590 | /* sanity check prom rev */ |
| 591 | 591 | ||
| 592 | if (sn_sal_rev_major() < 4 || | 592 | if (sn_sal_rev() < 0x0406) { |
| 593 | (sn_sal_rev_major() == 4 && sn_sal_rev_minor() < 6)) { | ||
| 594 | printk | 593 | printk |
| 595 | (KERN_ERR "%s: SGI prom rev 4.06 or greater required " | 594 | (KERN_ERR "%s: SGI prom rev 4.06 or greater required " |
| 596 | "for tioca support\n", __FUNCTION__); | 595 | "for tioca support\n", __FUNCTION__); |
diff --git a/include/asm-ia64/sn/sn_sal.h b/include/asm-ia64/sn/sn_sal.h index 1455375d2ce4..27976d223186 100644 --- a/include/asm-ia64/sn/sn_sal.h +++ b/include/asm-ia64/sn/sn_sal.h | |||
| @@ -134,43 +134,28 @@ | |||
| 134 | 134 | ||
| 135 | #define SN_SAL_FAKE_PROM 0x02009999 | 135 | #define SN_SAL_FAKE_PROM 0x02009999 |
| 136 | 136 | ||
| 137 | |||
| 138 | /** | 137 | /** |
| 139 | * sn_sal_rev_major - get the major SGI SAL revision number | 138 | * sn_sal_revision - get the SGI SAL revision number |
| 140 | * | 139 | * |
| 141 | * The SGI PROM stores its version in sal_[ab]_rev_(major|minor). | 140 | * The SGI PROM stores its version in the sal_[ab]_rev_(major|minor). |
| 142 | * This routine simply extracts the major value from the | 141 | * This routine simply extracts the major and minor values and |
| 143 | * @ia64_sal_systab structure constructed by ia64_sal_init(). | 142 | * presents them in a u32 format. |
| 144 | */ | 143 | * |
| 145 | static inline int | 144 | * For example, version 4.05 would be represented at 0x0405. |
| 146 | sn_sal_rev_major(void) | 145 | */ |
| 146 | static inline u32 | ||
| 147 | sn_sal_rev(void) | ||
| 147 | { | 148 | { |
| 148 | struct ia64_sal_systab *systab = efi.sal_systab; | 149 | struct ia64_sal_systab *systab = efi.sal_systab; |
| 149 | 150 | ||
| 150 | return (int)systab->sal_b_rev_major; | 151 | return (u32)(systab->sal_b_rev_major << 8 | systab->sal_b_rev_minor); |
| 151 | } | ||
| 152 | |||
| 153 | /** | ||
| 154 | * sn_sal_rev_minor - get the minor SGI SAL revision number | ||
| 155 | * | ||
| 156 | * The SGI PROM stores its version in sal_[ab]_rev_(major|minor). | ||
| 157 | * This routine simply extracts the minor value from the | ||
| 158 | * @ia64_sal_systab structure constructed by ia64_sal_init(). | ||
| 159 | */ | ||
| 160 | static inline int | ||
| 161 | sn_sal_rev_minor(void) | ||
| 162 | { | ||
| 163 | struct ia64_sal_systab *systab = efi.sal_systab; | ||
| 164 | |||
| 165 | return (int)systab->sal_b_rev_minor; | ||
| 166 | } | 152 | } |
| 167 | 153 | ||
| 168 | /* | 154 | /* |
| 169 | * Specify the minimum PROM revsion required for this kernel. | 155 | * Specify the minimum PROM revsion required for this kernel. |
| 170 | * Note that they're stored in hex format... | 156 | * Note that they're stored in hex format... |
| 171 | */ | 157 | */ |
| 172 | #define SN_SAL_MIN_MAJOR 0x4 /* SN2 kernels need at least PROM 4.0 */ | 158 | #define SN_SAL_MIN_VERSION 0x0404 |
| 173 | #define SN_SAL_MIN_MINOR 0x0 | ||
| 174 | 159 | ||
| 175 | /* | 160 | /* |
| 176 | * Returns the master console nasid, if the call fails, return an illegal | 161 | * Returns the master console nasid, if the call fails, return an illegal |
