It turns out that the code which enables specific LDN is somewhat buggy.
authorRudolf Marek <r.marek@assembler.cz>
Sat, 19 Feb 2011 14:51:31 +0000 (14:51 +0000)
committerRudolf Marek <r.marek@assembler.cz>
Sat, 19 Feb 2011 14:51:31 +0000 (14:51 +0000)
Instead of enable the device the device gets disabled. However after some time the serial line gets back, most likely some "enable resources" might fix it.
I'm attaching patch which somewhat fixes the problem and changes the function to look same in all superio code. Some boards even did not convert the dev->enabled to 0,1 values.

Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Acked-by: Peter Stuge <peter@stuge.se>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6373 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

20 files changed:
src/superio/fintek/f71805f/superio.c
src/superio/fintek/f71859/superio.c
src/superio/fintek/f71863fg/superio.c
src/superio/fintek/f71872/superio.c
src/superio/fintek/f71889/superio.c
src/superio/intel/i3100/superio.c
src/superio/ite/it8712f/superio.c
src/superio/ite/it8716f/superio.c
src/superio/smsc/lpc47b272/superio.c
src/superio/smsc/lpc47b397/superio.c
src/superio/smsc/lpc47m10x/superio.c
src/superio/smsc/lpc47m15x/superio.c
src/superio/smsc/lpc47n217/superio.c
src/superio/smsc/lpc47n227/superio.c
src/superio/smsc/smscsuperio/superio.c
src/superio/via/vt1211/vt1211.c
src/superio/winbond/w83627dhg/superio.c
src/superio/winbond/w83627ehg/superio.c
src/superio/winbond/w83627hf/superio.c
src/superio/winbond/w83697hf/superio.c

index e1012bae51ca6c3a41c21ffb6373065c89fc420f..6b2b9c2df65dd97f29a8039f5fc0d33e94de2b35 100644 (file)
@@ -77,7 +77,7 @@ static void f71805f_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_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index d7d71c6ec862e300a93f5aed6edd32cc2f98d4ab..6c74d815169306befea1f67ceef2067877511c00 100755 (executable)
@@ -74,7 +74,7 @@ static void f71859_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_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index 92e317b02c68c1b2929cb4d217df6010741dc965..3c7ebd277af1518794abe49621ef655add6a1559 100644 (file)
@@ -81,7 +81,7 @@ static void f71863fg_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_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index f1a27e470de4108c5b79dbe1259b7f4f7aca9008..0e1f4d0169f750ddb7e18266294e76641946ef41 100644 (file)
@@ -79,7 +79,7 @@ static void f71872_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_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index b26b41133d916acb4319ff52a5a710ca1a997430..5f4ca3fc23ff7633293c9393ef18c03d3f0ff84e 100644 (file)
@@ -80,7 +80,7 @@ static void f71889_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_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index 120790a194160b69041ed2e160ce283d6edfc5a5..143e649ed7e4a6e7d9168f266ad38eea27d80d5c 100644 (file)
@@ -78,7 +78,7 @@ 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_set_enable(dev, !!dev->enabled);
        pnp_exit_ext_func_mode(dev);
 }
 
index 67bbac4403d81d9756dc44be37279342689c64c2..c84a92916fc4f26637ad79dc302e366b5fea05c5 100644 (file)
@@ -99,7 +99,7 @@ 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_set_enable(dev, !!dev->enabled);
        pnp_exit_ext_func_mode(dev);
 }
 
index 54e640f913c5795eddc9e056fff7853f9969388f..c7109465b55c84b757507227890de5835da4e63a 100644 (file)
@@ -122,7 +122,7 @@ 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_set_enable(dev, !!dev->enabled);
        pnp_exit_ext_func_mode(dev);
 }
 
index 5bf385c7fb49307d382529be92f9fad95d15f3b1..0f5ea9272b826d361ea85907abe8721074c2d9cb 100644 (file)
@@ -105,7 +105,7 @@ static void lpc47b272_pnp_enable(device_t dev)
 {
        pnp_enter_conf_state(dev);
        pnp_set_logical_device(dev);
-       pnp_set_enable(dev, (dev->enabled) ? 1 : 0);
+       pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index 9c4d8d9f10f24d905ae0914eb971ff46edd10fae..a0a6c1db19eccc15e54ba87ca1e429bc34e85050 100644 (file)
@@ -116,7 +116,7 @@ static void lpc47b397_pnp_enable(device_t dev)
 {
        pnp_enter_conf_state(dev);
        pnp_set_logical_device(dev);
-       pnp_set_enable(dev, (dev->enabled) ? 1 : 0);
+       pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index c935d628cfb0cfc12a98cabd0bc02ffdcdd277b9..04140b13f84b1cdd458d937309d8528ca0bd6a8b 100644 (file)
@@ -103,7 +103,7 @@ static void lpc47m10x_pnp_enable(device_t dev)
 {
        pnp_enter_conf_state(dev);
        pnp_set_logical_device(dev);
-       pnp_set_enable(dev, (dev->enabled) ? 1 : 0);
+       pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index acd4b39c2b823f92422b9b87dc79ccaec25ffcb6..54762de1c164866364b16ea9976c3a8770091507 100644 (file)
@@ -87,7 +87,7 @@ static void lpc47m15x_pnp_enable(device_t dev)
 {
        pnp_enter_conf_state(dev);
        pnp_set_logical_device(dev);
-       pnp_set_enable(dev, (dev->enabled) ? 1 : 0);
+       pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index 4cc580643fed02372ae4dd09ac5f6d96d1d0cc51..b1455330d0210cd84b38a7b05e2514dcac1bf9de 100644 (file)
@@ -119,7 +119,7 @@ static void lpc47n217_pnp_enable_resources(device_t dev)
 static void lpc47n217_pnp_enable(device_t dev)
 {
        pnp_enter_conf_state(dev);
-       lpc47n217_pnp_set_enable(dev, (dev->enabled) ? 1 : 0);
+       lpc47n217_pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index 2a4ead988476c0849f1008034671e9fcfcf9f220..20345b823009300ecd4ec18a659593fea056ad67 100644 (file)
@@ -116,7 +116,7 @@ void lpc47n227_pnp_enable_resources(device_t dev)
 void lpc47n227_pnp_enable(device_t dev)
 {
        pnp_enter_conf_state(dev);
-       lpc47n227_pnp_set_enable(dev, (dev->enabled) ? 1 : 0);
+       lpc47n227_pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_conf_state(dev);
 }
 
index ff8b1b926c067821ff0ec894a61b04693937d0c0..e618823fa404d2d99b28272d2f8b214e993fd04f 100644 (file)
@@ -193,7 +193,7 @@ static void smsc_pnp_enable(device_t dev)
 {
        smsc_pnp_enter_conf_state(dev);
        pnp_set_logical_device(dev);
-       (dev->enabled) ? pnp_set_enable(dev, 1) : pnp_set_enable(dev, 0);
+       pnp_set_enable(dev, !!dev->enabled);
        smsc_pnp_exit_conf_state(dev);
 }
 
index 3cfeea66a418de59ede5a11a31611289d544c2d2..dbe74043689943492751607cd2db81cca261a30f 100644 (file)
@@ -186,12 +186,9 @@ static void vt1211_pnp_set_resources(struct device *dev)
 
 static void vt1211_pnp_enable(device_t dev)
 {
-       if (dev->enabled)
-               return;
-
        pnp_enter_ext_func_mode(dev);
        pnp_set_logical_device(dev);
-       pnp_set_enable(dev, 0);
+       pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_ext_func_mode(dev);
 }
 
index b10ff9781f427c8af25f41c3d708a83ba3d8ac11..7f7bf21d3a4b204ebd00361ce4d821b5b542026f 100644 (file)
@@ -76,12 +76,9 @@ static void w83627dhg_pnp_enable_resources(device_t dev)
 
 static void w83627dhg_pnp_enable(device_t dev)
 {
-       if (!dev->enabled)
-               return;
-
        pnp_enter_ext_func_mode(dev);
        pnp_set_logical_device(dev);
-       pnp_set_enable(dev, 0);
+       pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_ext_func_mode(dev);
 }
 
index 34ea3d46c6720743f39f6006a65243386b2f5ca0..d174cace8f535afb717d25f52207a9e9730adc0d 100644 (file)
@@ -160,12 +160,9 @@ static void w83627ehg_pnp_enable_resources(device_t dev)
 
 static void w83627ehg_pnp_enable(device_t dev)
 {
-       if (dev->enabled)
-               return;
-
        pnp_enter_ext_func_mode(dev);
        pnp_set_logical_device(dev);
-       pnp_set_enable(dev, 0);
+       pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_ext_func_mode(dev);
 }
 
index 30275b66812c5b550a9748ab2b6d8e795bc75567..2a86aa8c47024812a053d081aad956b47d900726 100644 (file)
@@ -179,12 +179,9 @@ static void w83627hf_pnp_enable_resources(device_t dev)
 
 static void w83627hf_pnp_enable(device_t dev)
 {
-       if (dev->enabled)
-               return;
-
        pnp_enter_ext_func_mode(dev);
        pnp_set_logical_device(dev);
-       pnp_set_enable(dev, 0);
+       pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_ext_func_mode(dev);
 }
 
index b96e69bce5c692a05d9fb4857af795fe0d300210..9159fc2547357f6713c9a38ce89c5126057522d8 100644 (file)
@@ -70,12 +70,9 @@ static void w83697hf_pnp_set_resources(device_t dev)
 
 static void w83697hf_pnp_enable(device_t dev)
 {
-       if (dev->enabled)
-               return;
-
        pnp_enter_ext_func_mode(dev);
        pnp_set_logical_device(dev);
-       pnp_set_enable(dev, 0);
+       pnp_set_enable(dev, !!dev->enabled);
        pnp_exit_ext_func_mode(dev);
 }