x86: pci: Drop the first parameter in pci_x86_r/w_config()

This parameter is needed by the PCI driver-mode interface but is always
NULL on x86. There are a number of calls to this function so it makes
sense to minimise the parameters.

Adjust the x86 function to omit the first parameter, and introduce stub
functions to handle the conversion.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
[bmeng: rebase the patch against u-boot-x86/next to get it applied cleanly]
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Simon Glass 2019-08-31 21:23:18 -06:00 committed by Bin Meng
parent 49a0f8cc96
commit a827ba910c
5 changed files with 31 additions and 30 deletions

View file

@ -103,11 +103,8 @@ int print_cpuinfo(void)
void board_debug_uart_init(void) void board_debug_uart_init(void)
{ {
struct udevice *bus = NULL;
/* com1 / com2 decode range */ /* com1 / com2 decode range */
pci_x86_write_config(bus, PCH_DEV_LPC, LPC_IO_DEC, 1 << 4, PCI_SIZE_16); pci_x86_write_config(PCH_DEV_LPC, LPC_IO_DEC, 1 << 4, PCI_SIZE_16);
pci_x86_write_config(bus, PCH_DEV_LPC, LPC_EN, COMA_LPC_EN, pci_x86_write_config(PCH_DEV_LPC, LPC_EN, COMA_LPC_EN, PCI_SIZE_16);
PCI_SIZE_16);
} }

View file

@ -199,6 +199,5 @@ int print_cpuinfo(void)
void board_debug_uart_init(void) void board_debug_uart_init(void)
{ {
/* This enables the debug UART */ /* This enables the debug UART */
pci_x86_write_config(NULL, PCH_LPC_DEV, LPC_EN, COMA_LPC_EN, pci_x86_write_config(PCH_LPC_DEV, LPC_EN, COMA_LPC_EN, PCI_SIZE_16);
PCI_SIZE_16);
} }

View file

@ -16,12 +16,8 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/pci.h> #include <asm/pci.h>
/* int pci_x86_read_config(pci_dev_t bdf, uint offset, ulong *valuep,
* TODO(sjg@chromium.org): Drop the first parameter from each of these enum pci_size_t size)
* functions since it is not used.
*/
int pci_x86_read_config(struct udevice *bus, pci_dev_t bdf, uint offset,
ulong *valuep, enum pci_size_t size)
{ {
outl(bdf | (offset & 0xfc) | PCI_CFG_EN, PCI_REG_ADDR); outl(bdf | (offset & 0xfc) | PCI_CFG_EN, PCI_REG_ADDR);
switch (size) { switch (size) {
@ -39,8 +35,8 @@ int pci_x86_read_config(struct udevice *bus, pci_dev_t bdf, uint offset,
return 0; return 0;
} }
int pci_x86_write_config(struct udevice *bus, pci_dev_t bdf, uint offset, int pci_x86_write_config(pci_dev_t bdf, uint offset, ulong value,
ulong value, enum pci_size_t size) enum pci_size_t size)
{ {
outl(bdf | (offset & 0xfc) | PCI_CFG_EN, PCI_REG_ADDR); outl(bdf | (offset & 0xfc) | PCI_CFG_EN, PCI_REG_ADDR);
switch (size) { switch (size) {
@ -58,19 +54,19 @@ int pci_x86_write_config(struct udevice *bus, pci_dev_t bdf, uint offset,
return 0; return 0;
} }
int pci_x86_clrset_config(struct udevice *bus, pci_dev_t bdf, uint offset, int pci_x86_clrset_config(pci_dev_t bdf, uint offset, ulong clr, ulong set,
ulong clr, ulong set, enum pci_size_t size) enum pci_size_t size)
{ {
ulong value; ulong value;
int ret; int ret;
ret = pci_x86_read_config(bus, bdf, offset, &value, size); ret = pci_x86_read_config(bdf, offset, &value, size);
if (ret) if (ret)
return ret; return ret;
value &= ~clr; value &= ~clr;
value |= set; value |= set;
return pci_x86_write_config(bus, bdf, offset, value, size); return pci_x86_write_config(bdf, offset, value, size);
} }
void pci_assign_irqs(int bus, int device, u8 irq[4]) void pci_assign_irqs(int bus, int device, u8 irq[4])

View file

@ -22,30 +22,28 @@
* *
* This function can be called before PCI is set up in driver model. * This function can be called before PCI is set up in driver model.
* *
* @bus: Bus to read from (ignored, can be NULL)
* @bdf: PCI device address: bus, device and function -see PCI_BDF() * @bdf: PCI device address: bus, device and function -see PCI_BDF()
* @offset: Register offset to read * @offset: Register offset to read
* @valuep: Place to put the returned value * @valuep: Place to put the returned value
* @size: Access size * @size: Access size
* @return 0 if OK, -ve on error * @return 0 if OK, -ve on error
*/ */
int pci_x86_read_config(struct udevice *bus, pci_dev_t bdf, uint offset, int pci_x86_read_config(pci_dev_t bdf, uint offset, ulong *valuep,
ulong *valuep, enum pci_size_t size); enum pci_size_t size);
/** /**
* pci_bus_write_config() - Write a configuration value to a device * pci_bus_write_config() - Write a configuration value to a device
* *
* This function can be called before PCI is set up in driver model. * This function can be called before PCI is set up in driver model.
* *
* @bus: Bus to read from (ignored, can be NULL)
* @bdf: PCI device address: bus, device and function -see PCI_BDF() * @bdf: PCI device address: bus, device and function -see PCI_BDF()
* @offset: Register offset to write * @offset: Register offset to write
* @value: Value to write * @value: Value to write
* @size: Access size * @size: Access size
* @return 0 if OK, -ve on error * @return 0 if OK, -ve on error
*/ */
int pci_x86_write_config(struct udevice *bus, pci_dev_t bdf, uint offset, int pci_x86_write_config(pci_dev_t bdf, uint offset, ulong value,
ulong value, enum pci_size_t size); enum pci_size_t size);
/** /**
* pci_bus_clrset_config32() - Update a configuration value for a device * pci_bus_clrset_config32() - Update a configuration value for a device
@ -53,15 +51,14 @@ int pci_x86_write_config(struct udevice *bus, pci_dev_t bdf, uint offset,
* The register at @offset is updated to (oldvalue & ~clr) | set. This function * The register at @offset is updated to (oldvalue & ~clr) | set. This function
* can be called before PCI is set up in driver model. * can be called before PCI is set up in driver model.
* *
* @bus: Bus to read from (ignored, can be NULL)
* @bdf: PCI device address: bus, device and function -see PCI_BDF() * @bdf: PCI device address: bus, device and function -see PCI_BDF()
* @offset: Register offset to update * @offset: Register offset to update
* @clr: Bits to clear * @clr: Bits to clear
* @set: Bits to set * @set: Bits to set
* @return 0 if OK, -ve on error * @return 0 if OK, -ve on error
*/ */
int pci_x86_clrset_config(struct udevice *bus, pci_dev_t bdf, uint offset, int pci_x86_clrset_config(pci_dev_t bdf, uint offset, ulong clr, ulong set,
ulong clr, ulong set, enum pci_size_t size); enum pci_size_t size);
/** /**
* Assign IRQ number to a PCI device * Assign IRQ number to a PCI device

View file

@ -8,9 +8,21 @@
#include <pci.h> #include <pci.h>
#include <asm/pci.h> #include <asm/pci.h>
static int _pci_x86_read_config(struct udevice *bus, pci_dev_t bdf, uint offset,
ulong *valuep, enum pci_size_t size)
{
return pci_x86_read_config(bdf, offset, valuep, size);
}
static int _pci_x86_write_config(struct udevice *bus, pci_dev_t bdf,
uint offset, ulong value, enum pci_size_t size)
{
return pci_x86_write_config(bdf, offset, value, size);
}
static const struct dm_pci_ops pci_x86_ops = { static const struct dm_pci_ops pci_x86_ops = {
.read_config = pci_x86_read_config, .read_config = _pci_x86_read_config,
.write_config = pci_x86_write_config, .write_config = _pci_x86_write_config,
}; };
static const struct udevice_id pci_x86_ids[] = { static const struct udevice_id pci_x86_ids[] = {