summaryrefslogtreecommitdiff
path: root/src/superio/winbond
diff options
context:
space:
mode:
authorNico Huber <nico.h@gmx.de>2013-06-10 22:57:12 +0200
committerStefan Reinauer <stefan.reinauer@coreboot.org>2013-06-17 21:38:37 +0200
commitf898f7ba4d10146b45241afe65fd54b3c049cc4f (patch)
treed0aa5c8874521f998f794c12fce9b5dfc80abeed /src/superio/winbond
parenta00f9830fb58d3f5061aab71be8553f3ff2e1f70 (diff)
downloadcoreboot-f898f7ba4d10146b45241afe65fd54b3c049cc4f.tar.xz
pnp: Provide alternative pnp_enable() implementation
The current default implementation of pnp_enable() only disables devices - if set so in the devicetree - but does not enable them. Enablement takes place in pnp_enable_resources(). Yet, many PnP chips implement their own version of pnp_enable() which also enables devices if set in the devicetree. It's arguable, if enabling those devices makes sense, before they get resources assigned. Maybe we can't write the resource registers if not, who knows? The least we can do is providing a common implementation for this behavior, and get rid of some code duplication. Used the following cocci: @@ expression e; @@ +pnp_alt_enable(e); -pnp_set_logical_device(e); ( -pnp_set_enable(e, !!e->enabled); | -(e->enabled) ? pnp_set_enable(e, 1) : pnp_set_enable(e, 0); | -if (e->enabled) { pnp_set_enable(e, 1); } -else { pnp_set_enable(e, 0); } ) Change-Id: I8d695e8fcd3cf8b847b1aa99326b51a554700bc4 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: http://review.coreboot.org/3480 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Ronald G. Minnich <rminnich@gmail.com> Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'src/superio/winbond')
-rw-r--r--src/superio/winbond/w83627dhg/superio.c3
-rw-r--r--src/superio/winbond/w83627ehg/superio.c3
-rw-r--r--src/superio/winbond/w83627hf/superio.c3
-rw-r--r--src/superio/winbond/w83697hf/superio.c3
4 files changed, 4 insertions, 8 deletions
diff --git a/src/superio/winbond/w83627dhg/superio.c b/src/superio/winbond/w83627dhg/superio.c
index bbde26a67e..5310426793 100644
--- a/src/superio/winbond/w83627dhg/superio.c
+++ b/src/superio/winbond/w83627dhg/superio.c
@@ -82,8 +82,7 @@ static void w83627dhg_pnp_enable_resources(device_t dev)
static void w83627dhg_pnp_enable(device_t dev)
{
pnp_enter_ext_func_mode(dev);
- pnp_set_logical_device(dev);
- pnp_set_enable(dev, !!dev->enabled);
+ pnp_alt_enable(dev);
pnp_exit_ext_func_mode(dev);
}
diff --git a/src/superio/winbond/w83627ehg/superio.c b/src/superio/winbond/w83627ehg/superio.c
index b5234f1839..e0eea1b574 100644
--- a/src/superio/winbond/w83627ehg/superio.c
+++ b/src/superio/winbond/w83627ehg/superio.c
@@ -152,8 +152,7 @@ static void w83627ehg_pnp_enable_resources(device_t dev)
static void w83627ehg_pnp_enable(device_t dev)
{
pnp_enter_ext_func_mode(dev);
- pnp_set_logical_device(dev);
- pnp_set_enable(dev, !!dev->enabled);
+ pnp_alt_enable(dev);
pnp_exit_ext_func_mode(dev);
}
diff --git a/src/superio/winbond/w83627hf/superio.c b/src/superio/winbond/w83627hf/superio.c
index 82408d4d9f..a117e05b2c 100644
--- a/src/superio/winbond/w83627hf/superio.c
+++ b/src/superio/winbond/w83627hf/superio.c
@@ -157,8 +157,7 @@ static void w83627hf_pnp_enable_resources(device_t dev)
static void w83627hf_pnp_enable(device_t dev)
{
pnp_enter_ext_func_mode(dev);
- pnp_set_logical_device(dev);
- pnp_set_enable(dev, !!dev->enabled);
+ pnp_alt_enable(dev);
pnp_exit_ext_func_mode(dev);
}
diff --git a/src/superio/winbond/w83697hf/superio.c b/src/superio/winbond/w83697hf/superio.c
index 56d1358409..e3ce7e2818 100644
--- a/src/superio/winbond/w83697hf/superio.c
+++ b/src/superio/winbond/w83697hf/superio.c
@@ -91,8 +91,7 @@ static void w83697hf_pnp_set_resources(device_t dev)
static void w83697hf_pnp_enable(device_t dev)
{
pnp_enter_ext_func_mode(dev);
- pnp_set_logical_device(dev);
- pnp_set_enable(dev, !!dev->enabled);
+ pnp_alt_enable(dev);
pnp_exit_ext_func_mode(dev);
}