sio/winbond/common: Add function to configure pin mux
Certain mainboards require SuperIO pinmux configuration before peripherals will become operational. Allow each mainboard to configure the pinmux(es) of Winbond chips if needed. Change-Id: Ice19f8d8514b66b15920a5b893700d636ed75cec Signed-off-by: Timothy Pearson <tpearson@raptorengineering.com> Reviewed-on: https://review.coreboot.org/14960 Tested-by: build bot (Jenkins) Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
This commit is contained in:
		| @@ -66,3 +66,16 @@ void winbond_enable_serial(pnp_devfn_t dev, u16 iobase) | ||||
| 	pnp_set_enable(dev, 1); | ||||
| 	pnp_exit_conf_state(dev); | ||||
| } | ||||
|  | ||||
| void winbond_set_pinmux(pnp_devfn_t dev, uint8_t offset, uint8_t mask, uint8_t state) | ||||
| { | ||||
| 	uint8_t byte; | ||||
|  | ||||
| 	/* Configure pin mux */ | ||||
| 	pnp_enter_conf_state(dev); | ||||
| 	byte = pnp_read_config(dev, offset); | ||||
| 	byte &= ~mask; | ||||
| 	byte |= state; | ||||
| 	pnp_write_config(dev, offset, byte); | ||||
| 	pnp_exit_conf_state(dev); | ||||
| } | ||||
|   | ||||
| @@ -20,7 +20,8 @@ | ||||
| #include <arch/io.h> | ||||
| #include <stdint.h> | ||||
|  | ||||
| void winbond_enable_serial(pnp_devfn_t dev, u16 iobase); | ||||
| void winbond_enable_serial(pnp_devfn_t dev, uint16_t iobase); | ||||
| void winbond_set_pinmux(pnp_devfn_t dev, uint8_t offset, uint8_t mask, uint8_t state); | ||||
|  | ||||
| void pnp_enter_conf_state(pnp_devfn_t dev); | ||||
| void pnp_exit_conf_state(pnp_devfn_t dev); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user