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

Commit 547acec7 authored by Andres Salomon's avatar Andres Salomon Committed by Ingo Molnar
Browse files

x86: GEODE: cache results from geode_has_vsa2() and uninline



This moves geode_has_vsa2 into a .c file, caches the result we get from
the VSA virtual registers, and causes the function to no longer be inline.

[akpm@linux-foundation.org: cleanup]

Signed-off-by: default avatarAndres Salomon <dilinger@debian.org>
Cc: Jordan Crouse <jordan.crouse@amd.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent ac44cc96
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -161,6 +161,25 @@ void geode_gpio_setup_event(unsigned int gpio, int pair, int pme)
}
EXPORT_SYMBOL_GPL(geode_gpio_setup_event);

int geode_has_vsa2(void)
{
	static int has_vsa2 = -1;

	if (has_vsa2 == -1) {
		/*
		 * The VSA has virtual registers that we can query for a
		 * signature.
		 */
		outw(VSA_VR_UNLOCK, VSA_VRC_INDEX);
		outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX);

		has_vsa2 = (inw(VSA_VRC_DATA) == VSA_SIG);
	}

	return has_vsa2;
}
EXPORT_SYMBOL_GPL(geode_has_vsa2);

static int __init geode_southbridge_init(void)
{
	if (!is_geode())
+1 −10
Original line number Diff line number Diff line
@@ -185,16 +185,7 @@ static inline int is_geode(void)
	return (is_geode_gx() || is_geode_lx());
}

/*
 * The VSA has virtual registers that we can query for a signature.
 */
static inline int geode_has_vsa2(void)
{
	outw(VSA_VR_UNLOCK, VSA_VRC_INDEX);
	outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX);

	return (inw(VSA_VRC_DATA) == VSA_SIG);
}
extern int geode_has_vsa2(void);

/* MFGPTs */