[coreboot] [PATCH] Fix superio enable calls

Peter Stuge peter at stuge.se
Sat Feb 12 18:35:07 CET 2011


Rudolf Marek wrote:
> Hello,
>
> While hunting yet another bug, I noticed that part of my serial log is 
> missing. Especially I missed the Allocating & Setting resources.
>
> It turns out that the code which enables specific LDN is somewhat buggy:
>
>
>
>  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_exit_ext_func_mode(dev);
>  }
>
>
> So 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.
>
> Also makes me wonder some sio call pnp_enable directly, which has yet 
> another semantics, it wont enable already enabled devices just disable 
> those which declared not enabled. And no PnP enter conf magic is called 
> (maybe this is the reason).
>
> Signed-off-by: Rudolf Marek <r.marek at assembler.cz>

Acked-by: Peter Stuge <peter at stuge.se>




More information about the coreboot mailing list