device/pnp: Always provide `pnp_unset_and_set_config`

The `pnp_unset_and_set_config` function was only available when building
with `ENV_PNP_SIMPLE_DEVICE` set. Add the complementary definition using
device pointers, for the sake of completeness.

Change-Id: I2a21e635f41f3f786057500fa96a2b3116e30d76
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/55255
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Máté Kukri <kukri.mate@gmail.com>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Michael Niewöhner <foss@mniewoehner.de>
This commit is contained in:
Angel Pons 2021-06-06 19:20:48 +02:00 committed by Patrick Georgi
parent 29bc62475b
commit bb8d00d8f7
2 changed files with 10 additions and 0 deletions

View File

@ -47,6 +47,15 @@ u8 pnp_read_config(struct device *dev, u8 reg)
return inb(dev->path.pnp.port + 1);
}
void pnp_unset_and_set_config(struct device *dev, u8 reg, u8 unset, u8 set)
{
outb(reg, dev->path.pnp.port);
u8 value = inb(dev->path.pnp.port + 1);
value &= ~unset;
value |= set;
outb(value, dev->path.pnp.port + 1);
}
void pnp_set_logical_device(struct device *dev)
{
pnp_write_config(dev, 0x07, dev->path.pnp.device & 0xff);

View File

@ -13,6 +13,7 @@
/* Primitive PNP resource manipulation */
void pnp_write_config(struct device *dev, u8 reg, u8 value);
u8 pnp_read_config(struct device *dev, u8 reg);
void pnp_unset_and_set_config(struct device *dev, u8 reg, u8 unset, u8 set);
void pnp_set_logical_device(struct device *dev);
void pnp_set_enable(struct device *dev, int enable);
int pnp_read_enable(struct device *dev);