AMD Geode GX/LX support
PATCH 2/7 AMD Geode GX/LX support
This patch adds support for the Geode LX processor, including CPU identification, config options, and PCI IDs. Please apply against linux-2.4.15-rc2-mm2.
Signed off by: Jordan Crouse ([email protected])
arch/i386/Kconfig +17 -8
@@ -189,7 +189,7 @@ config M386 - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron. - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D). - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird). - - "Geode GX" for AMD Geode GX processors + - "Geode GX/LX" for AMD Geode GX and LX processors - "Crusoe" for the Transmeta Crusoe series. - "Efficeon" for the Transmeta Efficeon series. - "Winchip-C6" for original IDT Winchip.
@@ -291,8 +291,17 @@ config MK8 config MGEODE_GX bool "Geode GX" help - Select this for AMD Geode GX processors. Enables use of some extended - instructions, and passes appropriate optimization flags to GCC. + Select this for AMD Geode GX and LX processors. + Enables use of some extended instructions, and + passes appropriate optimization flags to GCC. + +config MGEODE_LX + bool "Geode LX" + help + Select this for AMD Geode LX processors. + Enables use of some extended instructions, allows + you to use various on-chip devices, and passes appropriate + optimization flags to GCC. config MCRUSOE bool "Crusoe"
@@ -384,7 +393,7 @@ config X86_L1_CACHE_SHIFT int default "7" if MPENTIUM4 || X86_GENERIC default "4" if X86_ELAN || M486 || M386 - default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODEGX1 || MGEODE_GX + default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODEGX1 || MGEODE_GX || MGEODE_LX default "6" if MK7 || MK8 || MPENTIUMM config RWSEM_GENERIC_SPINLOCK
@@ -453,12 +462,12 @@ config X86_INTEL_USERCOPY config X86_USE_PPRO_CHECKSUM bool - depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON || MGEODE_GX + depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON || MGEODE_GX || MGEODE_LX default y config X86_USE_3DNOW bool - depends on MCYRIXIII || MK7 || MGEODE_GX + depends on MCYRIXIII || MK7 || MGEODE_GX || MGEODE_LX default y config X86_OOSTORE
@@ -539,7 +548,7 @@ source "kernel/Kconfig.preempt" config X86_UP_APIC bool "Local APIC support on uniprocessors" - depends on !SMP && !(X86_VISWS || X86_VOYAGER || MGEODE_GX) + depends on !SMP && !(X86_VISWS || X86_VOYAGER || MGEODE_GX || MGEODE_LX) help A local APIC (Advanced Programmable Interrupt Controller) is an integrated interrupt controller in the CPU. If you have a single-CPU
@@ -756,7 +765,7 @@ config HIGHMEM4G config HIGHMEM64G bool "64GB" - depends on !MGEODE_GX + depends on !MGEODE_GX && !MGEODE_LX help Select this if you have a 32-bit processor and more than 4 gigabytes of physical RAM.
arch/i386/kernel/cpu/amd.c +7 -0
@@ -145,6 +145,13 @@ static void __init init_amd(struct cpuinset_bit (X86_FEATURE_K6_MTRR , c->x86_capability);break ; } + +if ( c->x86_model ==10 ) { +/* AMD Geode LX is model 10 */ +/* placeholder for any needed mods */ +break ; + } +break ;case 6 :/* An Athlon/Duron */
include/asm-i386/module.h +2 -0
@@ -38,6 +38,8 @@ struct mod_arch_specific#define MODULE_PROC_FAMILY "K8 "#elif definedCONFIG_MGEODE_GX #define MODULE_PROC_FAMILY "GEODE_GX " +#elif definedCONFIG_MGEODE_LX +#define MODULE_PROC_FAMILY "GEODE_GX "#elif definedCONFIG_X86_ELAN #define MODULE_PROC_FAMILY "ELAN "#elif definedCONFIG_MCRUSOE
include/linux/pci_ids.h +3 -0
@@ -546,6 +546,9 @@#define PCI_DEVICE_ID_AMD_8151_0 0x7454#define PCI_DEVICE_ID_AMD_8131_APIC 0x7450 +#define PCI_DEVICE_ID_AMD_LX_VIDEO 0x2081 +#define PCI_DEVICE_ID_AMD_LX_AES 0x2082 +#define PCI_VENDOR_ID_TRIDENT 0x1023#define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX 0x2000#define PCI_DEVICE_ID_TRIDENT_4DWAVE_NX 0x2001
Quoted 23 lines · Jordan Crouse
This patch adds support for the Geode LX processor, including CPU identification, config options, and PCI IDs. Please apply against linux-2.4.15-rc2-mm2.
Signed off by: Jordan Crouse ([email protected])
config
X86_USE_3DNOWarch/i386/Kconfig +2
-2bool - depends on MCYRIXIII || MK7 || MGEODE_GX + depends on MCYRIXIII || MK7 || MGEODE_GX || MGEODE_LX default y config X86_OOSTORE@@ -539,7 +548,7 @@ source "kernel/Kconfig.preempt" config X86_UP_APIC bool "Local APIC support on uniprocessors" - depends on !SMP && !(X86_VISWS || X86_VOYAGER || MGEODE_GX) + depends on !SMP && !(X86_VISWS || X86_VOYAGER || MGEODE_GX || MGEODE_LX) help A local APIC (Advanced Programmable Interrupt Controller) is an integrated interrupt controller in the CPU. If you have a single-CPU
arch/i386/Kconfig config HIGHMEM4G · line 769
Quoted 6 lines
arch/i386/Kconfig +1
-1@@ -756,7 +765,7 @@ config HIGHMEM4G config HIGHMEM64G bool "64GB" - depends on !MGEODE_GX + depends on !MGEODE_GX && !MGEODE_LX help
Same question and comments apply to this patch. I've no idea if the 3DNOW is correct since I've not benched an LX but the others look wrong