Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f90b8116 authored by Jordan Crouse's avatar Jordan Crouse Committed by Linus Torvalds
Browse files

[PATCH] Base support for AMD Geode GX/LX processors



Provide basic support for the AMD Geode GX and LX processors.

Signed-off-by: default avatarJordan Crouse <jordan.crouse@amd.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 6b7f430e
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -258,6 +258,13 @@ P: Ivan Kokshaysky
M:	ink@jurassic.park.msu.ru
S:	Maintained for 2.4; PCI support for 2.6.

AMD GEODE PROCESSOR/CHIPSET SUPPORT
P:      Jordan Crouse
M:      info-linux@geode.amd.com
L:	info-linux@geode.amd.com
W:	http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html
S:	Supported

APM DRIVER
P:	Stephen Rothwell
M:	sfr@canb.auug.org.au
+10 −4
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ config M386
	  - "Winchip-2" for IDT Winchip 2.
	  - "Winchip-2A" for IDT Winchips with 3dNow! capabilities.
	  - "GeodeGX1" for Geode GX1 (Cyrix MediaGX).
	  - "Geode GX/LX" For AMD Geode GX and LX processors.
	  - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
	  - "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above).

@@ -171,6 +172,11 @@ config MGEODEGX1
	help
	  Select this for a Geode GX1 (Cyrix MediaGX) chip.

config MGEODE_LX
       bool "Geode GX/LX"
       help
         Select this for AMD Geode GX and LX processors.

config MCYRIXIII
	bool "CyrixIII/VIA-C3"
	help
@@ -220,8 +226,8 @@ config X86_XADD
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
	default "4" if X86_ELAN || M486 || M386 || MGEODEGX1
	default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
	default "6" if MK7 || MK8 || MPENTIUMM

config RWSEM_GENERIC_SPINLOCK
@@ -290,12 +296,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
	depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON || MGEODE_LX
	default y

config X86_USE_3DNOW
	bool
	depends on MCYRIXIII || MK7
	depends on MCYRIXIII || MK7 || MGEODE_LX
	default y

config X86_OOSTORE
+6 −1
Original line number Diff line number Diff line
@@ -161,8 +161,13 @@ static void __init init_amd(struct cpuinfo_x86 *c)
					set_bit(X86_FEATURE_K6_MTRR, c->x86_capability);
				break;
			}
			break;

			if (c->x86_model == 10) {
				/* AMD Geode LX is model 10 */
				/* placeholder for any needed mods */
				break;
			}
			break;
		case 6: /* An Athlon/Duron */
 
			/* Bit 15 of Athlon specific MSR 15, needs to be 0
+26 −1
Original line number Diff line number Diff line
@@ -342,6 +342,31 @@ static void __init init_cyrix(struct cpuinfo_x86 *c)
	return;
}

/*
 * Handle National Semiconductor branded processors
 */
static void __devinit init_nsc(struct cpuinfo_x86 *c)
{
	/* There may be GX1 processors in the wild that are branded
	 * NSC and not Cyrix.
	 *
	 * This function only handles the GX processor, and kicks every
	 * thing else to the Cyrix init function above - that should
	 * cover any processors that might have been branded differently
	 * after NSC aquired Cyrix.
	 *
	 * If this breaks your GX1 horribly, please e-mail
	 * info-linux@ldcmail.amd.com to tell us.
	 */

	/* Handle the GX (Formally known as the GX2) */

	if (c->x86 == 5 && c->x86_model == 5)
		display_cacheinfo(c);
	else
		init_cyrix(c);
}

/*
 * Cyrix CPUs without cpuid or with cpuid not yet enabled can be detected
 * by the fact that they preserve the flags across the division of 5/2.
@@ -422,7 +447,7 @@ int __init cyrix_init_cpu(void)
static struct cpu_dev nsc_cpu_dev __initdata = {
	.c_vendor	= "NSC",
	.c_ident 	= { "Geode by NSC" },
	.c_init		= init_cyrix,
	.c_init		= init_nsc,
	.c_identify	= generic_identify,
};

+3 −1
Original line number Diff line number Diff line
@@ -52,8 +52,10 @@ struct mod_arch_specific
#define MODULE_PROC_FAMILY "CYRIXIII "
#elif defined CONFIG_MVIAC3_2
#define MODULE_PROC_FAMILY "VIAC3-2 "
#elif CONFIG_MGEODEGX1
#elif defined CONFIG_MGEODEGX1
#define MODULE_PROC_FAMILY "GEODEGX1 "
#elif defined CONFIG_MGEODE_LX
#define MODULE_PROC_FAMILY "GEODE "
#else
#error unknown processor family
#endif
Loading