Nico Huber (nico.huber@secunet.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3480
-gerrit
commit 393dedc8bdd4956a904db0f0e8b420eaa58e4151 Author: Nico Huber nico.h@gmx.de Date: Mon Jun 10 22:57:12 2013 +0200
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 --- src/device/pnp_device.c | 6 ++++++ src/include/device/pnp.h | 1 + src/superio/fintek/f71805f/superio.c | 3 +-- src/superio/fintek/f71859/superio.c | 3 +-- src/superio/fintek/f71863fg/superio.c | 3 +-- src/superio/fintek/f71872/superio.c | 3 +-- src/superio/fintek/f71889/superio.c | 3 +-- src/superio/fintek/f81865f/superio.c | 3 +-- src/superio/intel/i3100/superio.c | 3 +-- src/superio/ite/it8712f/superio.c | 3 +-- src/superio/ite/it8716f/superio.c | 3 +-- src/superio/ite/it8772f/superio.c | 3 +-- src/superio/nuvoton/nct5104d/superio.c | 3 +-- src/superio/smsc/kbc1100/superio.c | 9 +-------- src/superio/smsc/lpc47b272/superio.c | 3 +-- src/superio/smsc/lpc47b397/superio.c | 3 +-- src/superio/smsc/lpc47m10x/superio.c | 3 +-- src/superio/smsc/lpc47m15x/superio.c | 3 +-- src/superio/smsc/mec1308/superio.c | 9 +-------- src/superio/smsc/sch4037/superio.c | 9 +-------- src/superio/smsc/sio1036/superio.c | 9 +-------- src/superio/smsc/smscsuperio/superio.c | 3 +-- src/superio/via/vt1211/vt1211.c | 3 +-- src/superio/winbond/w83627dhg/superio.c | 3 +-- src/superio/winbond/w83627ehg/superio.c | 3 +-- src/superio/winbond/w83627hf/superio.c | 3 +-- src/superio/winbond/w83697hf/superio.c | 3 +-- 27 files changed, 32 insertions(+), 74 deletions(-)
diff --git a/src/device/pnp_device.c b/src/device/pnp_device.c index da691f8..f39f8f9 100644 --- a/src/device/pnp_device.c +++ b/src/device/pnp_device.c @@ -155,6 +155,12 @@ void pnp_enable(device_t dev) } }
+void pnp_alt_enable(device_t dev) +{ + pnp_set_logical_device(dev); + pnp_set_enable(dev, !!dev->enabled); +} + struct device_operations pnp_ops = { .read_resources = pnp_read_resources, .set_resources = pnp_set_resources, diff --git a/src/include/device/pnp.h b/src/include/device/pnp.h index f97b05d..5667223 100644 --- a/src/include/device/pnp.h +++ b/src/include/device/pnp.h @@ -21,6 +21,7 @@ void pnp_read_resources(device_t dev); void pnp_set_resources(device_t dev); void pnp_enable_resources(device_t dev); void pnp_enable(device_t dev); +void pnp_alt_enable(device_t dev);
extern struct device_operations pnp_ops;
diff --git a/src/superio/fintek/f71805f/superio.c b/src/superio/fintek/f71805f/superio.c index 964f105..f46bd67 100644 --- a/src/superio/fintek/f71805f/superio.c +++ b/src/superio/fintek/f71805f/superio.c @@ -62,8 +62,7 @@ static void f71805f_pnp_enable_resources(device_t dev) static void f71805f_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - pnp_set_enable(dev, !!dev->enabled); + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/fintek/f71859/superio.c b/src/superio/fintek/f71859/superio.c index db7834d..ed5da6e 100644 --- a/src/superio/fintek/f71859/superio.c +++ b/src/superio/fintek/f71859/superio.c @@ -63,8 +63,7 @@ static void f71859_pnp_enable_resources(device_t dev) static void f71859_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - pnp_set_enable(dev, !!dev->enabled); + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/fintek/f71863fg/superio.c b/src/superio/fintek/f71863fg/superio.c index ab86922..d133745 100644 --- a/src/superio/fintek/f71863fg/superio.c +++ b/src/superio/fintek/f71863fg/superio.c @@ -72,8 +72,7 @@ static void f71863fg_pnp_enable_resources(device_t dev) static void f71863fg_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - pnp_set_enable(dev, !!dev->enabled); + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/fintek/f71872/superio.c b/src/superio/fintek/f71872/superio.c index ae53608..5a2719b 100644 --- a/src/superio/fintek/f71872/superio.c +++ b/src/superio/fintek/f71872/superio.c @@ -69,8 +69,7 @@ static void f71872_pnp_enable_resources(device_t dev) static void f71872_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - pnp_set_enable(dev, !!dev->enabled); + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/fintek/f71889/superio.c b/src/superio/fintek/f71889/superio.c index 98306f9..8daf766 100644 --- a/src/superio/fintek/f71889/superio.c +++ b/src/superio/fintek/f71889/superio.c @@ -70,8 +70,7 @@ static void f71889_pnp_enable_resources(device_t dev) static void f71889_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - pnp_set_enable(dev, !!dev->enabled); + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/fintek/f81865f/superio.c b/src/superio/fintek/f81865f/superio.c index e09adbb..eaae09c 100644 --- a/src/superio/fintek/f81865f/superio.c +++ b/src/superio/fintek/f81865f/superio.c @@ -69,8 +69,7 @@ static void f81865f_pnp_enable_resources(device_t dev) static void f81865f_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - (dev->enabled) ? pnp_set_enable(dev, 1) : pnp_set_enable(dev, 0); + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/intel/i3100/superio.c b/src/superio/intel/i3100/superio.c index 3d4f28a..152e419 100644 --- a/src/superio/intel/i3100/superio.c +++ b/src/superio/intel/i3100/superio.c @@ -60,8 +60,7 @@ static void i3100_pnp_enable_resources(device_t dev) static void i3100_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/ite/it8712f/superio.c b/src/superio/ite/it8712f/superio.c index bf649da..66b0aec 100644 --- a/src/superio/ite/it8712f/superio.c +++ b/src/superio/ite/it8712f/superio.c @@ -89,8 +89,7 @@ static void it8712f_pnp_enable_resources(device_t dev) static void it8712f_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/ite/it8716f/superio.c b/src/superio/ite/it8716f/superio.c index 98b6732..f021a0b 100644 --- a/src/superio/ite/it8716f/superio.c +++ b/src/superio/ite/it8716f/superio.c @@ -113,8 +113,7 @@ static void it8716f_pnp_enable_resources(device_t dev) static void it8716f_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/ite/it8772f/superio.c b/src/superio/ite/it8772f/superio.c index b6c4405..de1c179 100644 --- a/src/superio/ite/it8772f/superio.c +++ b/src/superio/ite/it8772f/superio.c @@ -205,8 +205,7 @@ static void it8772f_pnp_enable_resources(device_t dev) static void it8772f_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/nuvoton/nct5104d/superio.c b/src/superio/nuvoton/nct5104d/superio.c index 3c78cbc..ea6a342 100755 --- a/src/superio/nuvoton/nct5104d/superio.c +++ b/src/superio/nuvoton/nct5104d/superio.c @@ -55,8 +55,7 @@ static void nct5104d_pnp_enable_resources(device_t dev) static void nct5104d_pnp_enable(device_t dev) { pnp_enter_exteded_mode(dev); - pnp_set_logical_device(dev); - (dev->enabled) ? pnp_set_enable(dev,1) : pnp_set_enable(dev,0); + pnp_alt_enable(dev); pnp_exit_extended_mode(dev); }
diff --git a/src/superio/smsc/kbc1100/superio.c b/src/superio/smsc/kbc1100/superio.c index b3d3d49..a8dad5e 100644 --- a/src/superio/smsc/kbc1100/superio.c +++ b/src/superio/smsc/kbc1100/superio.c @@ -80,14 +80,7 @@ static void kbc1100_pnp_enable_resources(device_t dev) static void kbc1100_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - - if(dev->enabled) { - pnp_set_enable(dev, 1); - } - else { - pnp_set_enable(dev, 0); - } + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/smsc/lpc47b272/superio.c b/src/superio/smsc/lpc47b272/superio.c index 79d07bb..8217769 100644 --- a/src/superio/smsc/lpc47b272/superio.c +++ b/src/superio/smsc/lpc47b272/superio.c @@ -103,8 +103,7 @@ static void lpc47b272_pnp_enable_resources(device_t dev) static void lpc47b272_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - pnp_set_enable(dev, !!dev->enabled); + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/smsc/lpc47b397/superio.c b/src/superio/smsc/lpc47b397/superio.c index fd13b03..cc78c36 100644 --- a/src/superio/smsc/lpc47b397/superio.c +++ b/src/superio/smsc/lpc47b397/superio.c @@ -105,8 +105,7 @@ static void lpc47b397_pnp_enable_resources(device_t dev) static void lpc47b397_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - pnp_set_enable(dev, !!dev->enabled); + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/smsc/lpc47m10x/superio.c b/src/superio/smsc/lpc47m10x/superio.c index 53356d2..d133c47 100644 --- a/src/superio/smsc/lpc47m10x/superio.c +++ b/src/superio/smsc/lpc47m10x/superio.c @@ -102,8 +102,7 @@ static void lpc47m10x_pnp_enable_resources(device_t dev) static void lpc47m10x_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - pnp_set_enable(dev, !!dev->enabled); + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/smsc/lpc47m15x/superio.c b/src/superio/smsc/lpc47m15x/superio.c index e70c6e1..253bfdc 100644 --- a/src/superio/smsc/lpc47m15x/superio.c +++ b/src/superio/smsc/lpc47m15x/superio.c @@ -85,8 +85,7 @@ static void lpc47m15x_pnp_enable_resources(device_t dev) static void lpc47m15x_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - pnp_set_enable(dev, !!dev->enabled); + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/smsc/mec1308/superio.c b/src/superio/smsc/mec1308/superio.c index b4a1adf..0fe473c 100644 --- a/src/superio/smsc/mec1308/superio.c +++ b/src/superio/smsc/mec1308/superio.c @@ -60,14 +60,7 @@ static void mec1308_pnp_enable_resources(device_t dev) static void mec1308_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - - if(dev->enabled) { - pnp_set_enable(dev, 1); - } - else { - pnp_set_enable(dev, 0); - } + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/smsc/sch4037/superio.c b/src/superio/smsc/sch4037/superio.c index 386eafd..9a19033 100644 --- a/src/superio/smsc/sch4037/superio.c +++ b/src/superio/smsc/sch4037/superio.c @@ -81,14 +81,7 @@ static void sch4037_pnp_enable_resources(device_t dev) static void sch4037_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - - if(dev->enabled) { - pnp_set_enable(dev, 1); - } - else { - pnp_set_enable(dev, 0); - } + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/smsc/sio1036/superio.c b/src/superio/smsc/sio1036/superio.c index 46f3f46..c25a674 100644 --- a/src/superio/smsc/sio1036/superio.c +++ b/src/superio/smsc/sio1036/superio.c @@ -80,14 +80,7 @@ static void sio1036_pnp_enable_resources(device_t dev) static void sio1036_pnp_enable(device_t dev) { pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - - if(dev->enabled) { - pnp_set_enable(dev, 1); - } - else { - pnp_set_enable(dev, 0); - } + pnp_alt_enable(dev); pnp_exit_conf_state(dev); }
diff --git a/src/superio/smsc/smscsuperio/superio.c b/src/superio/smsc/smscsuperio/superio.c index d687bd1..cdd223b 100644 --- a/src/superio/smsc/smscsuperio/superio.c +++ b/src/superio/smsc/smscsuperio/superio.c @@ -194,8 +194,7 @@ static void smsc_pnp_enable_resources(device_t dev) static void smsc_pnp_enable(device_t dev) { smsc_pnp_enter_conf_state(dev); - pnp_set_logical_device(dev); - pnp_set_enable(dev, !!dev->enabled); + pnp_alt_enable(dev); smsc_pnp_exit_conf_state(dev); }
diff --git a/src/superio/via/vt1211/vt1211.c b/src/superio/via/vt1211/vt1211.c index abcae77..0f56ee2 100644 --- a/src/superio/via/vt1211/vt1211.c +++ b/src/superio/via/vt1211/vt1211.c @@ -177,8 +177,7 @@ static void vt1211_pnp_set_resources(struct device *dev) static void vt1211_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/w83627dhg/superio.c b/src/superio/winbond/w83627dhg/superio.c index bbde26a..5310426 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 b5234f1..e0eea1b 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 82408d4..a117e05 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 56d1358..e3ce7e2 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); }