summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/device/pci_device.c23
-rw-r--r--src/include/device/device.h39
-rw-r--r--src/include/device/pci.h42
3 files changed, 53 insertions, 51 deletions
diff --git a/src/device/pci_device.c b/src/device/pci_device.c
index 75e9a7910d35..f43de451d4f1 100644
--- a/src/device/pci_device.c
+++ b/src/device/pci_device.c
@@ -162,7 +162,7 @@ unsigned pci_find_next_capability(struct device *dev, unsigned cap,
* @param cap PCI_CAP_LIST_ID of the PCI capability we're looking for.
* @return The next matching capability.
*/
-unsigned pci_find_capability(device_t dev, unsigned cap)
+unsigned int pci_find_capability(struct device *dev, unsigned int cap)
{
return pci_find_next_capability(dev, cap, 0);
}
@@ -781,7 +781,7 @@ struct device_operations default_pci_ops_bus = {
* @param dev Pointer to the device structure of the bridge.
* @return Appropriate bridge operations.
*/
-static struct device_operations *get_pci_bridge_ops(device_t dev)
+static struct device_operations *get_pci_bridge_ops(struct device *dev)
{
#if IS_ENABLED(CONFIG_PCIX_PLUGIN_SUPPORT)
unsigned int pcixpos;
@@ -976,7 +976,8 @@ static struct device *pci_scan_get_dev(struct device **list, unsigned int devfn)
* @param devfn A device/function number to look at.
* @return The device structure for the device (if found), NULL otherwise.
*/
-device_t pci_probe_dev(device_t dev, struct bus *bus, unsigned devfn)
+struct device *pci_probe_dev(struct device *dev, struct bus *bus,
+ unsigned int devfn)
{
u32 id, class;
u8 hdr_type;
@@ -1083,7 +1084,7 @@ device_t pci_probe_dev(device_t dev, struct bus *bus, unsigned devfn)
* @param sdev Simple device model identifier, created with PCI_DEV().
* @return Non-zero if bus:dev.fn of device matches.
*/
-unsigned int pci_match_simple_dev(device_t dev, pci_devfn_t sdev)
+unsigned int pci_match_simple_dev(struct device *dev, pci_devfn_t sdev)
{
return dev->bus->secondary == PCI_DEV2SEGBUS(sdev) &&
dev->path.pci.devfn == PCI_DEV2DEVFN(sdev);
@@ -1152,7 +1153,7 @@ void pci_scan_bus(struct bus *bus, unsigned min_devfn,
* There's probably a problem in devicetree.cb.
*/
if (old_devices) {
- device_t left;
+ struct device *left;
printk(BIOS_WARNING, "PCI: Left over static devices:\n");
for (left = old_devices; left; left = left->sibling)
printk(BIOS_WARNING, "%s\n", dev_path(left));
@@ -1289,7 +1290,7 @@ void pci_scan_bridge(struct device *dev)
*
* @param dev Pointer to the domain.
*/
-void pci_domain_scan_bus(device_t dev)
+void pci_domain_scan_bus(struct device *dev)
{
struct bus *link = dev->link_list;
pci_scan_bus(link, PCI_DEVFN(0, 0), 0xff);
@@ -1335,10 +1336,10 @@ const char *pin_to_str(int pin)
* @return The interrupt pin number (1 - 4) that 'dev' will
* trigger when generating an interrupt
*/
-static int swizzle_irq_pins(device_t dev, device_t *parent_bridge)
+static int swizzle_irq_pins(struct device *dev, struct device **parent_bridge)
{
- device_t parent; /* Our current device's parent device */
- device_t child; /* The child device of the parent */
+ struct device *parent; /* Our current device's parent device */
+ struct device *child; /* The child device of the parent */
uint8_t parent_bus = 0; /* Parent Bus number */
uint16_t parent_devfn = 0; /* Parent Device and Function number */
uint16_t child_devfn = 0; /* Child Device and Function number */
@@ -1403,7 +1404,7 @@ static int swizzle_irq_pins(device_t dev, device_t *parent_bridge)
* Errors: -1 is returned if the device is not enabled
* -2 is returned if a parent bridge could not be found.
*/
-int get_pci_irq_pins(device_t dev, device_t *parent_bdg)
+int get_pci_irq_pins(struct device *dev, struct device **parent_bdg)
{
uint8_t bus = 0; /* The bus this device is on */
uint16_t devfn = 0; /* This device's device and function numbers */
@@ -1465,7 +1466,7 @@ void pci_assign_irqs(unsigned bus, unsigned slot,
const unsigned char pIntAtoD[4])
{
unsigned int funct;
- device_t pdev;
+ struct device *pdev;
u8 line, irq;
/* Each slot may contain up to eight functions. */
diff --git a/src/include/device/device.h b/src/include/device/device.h
index 242d29762c9b..54d4ec314f3d 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -18,6 +18,8 @@ struct device;
#ifndef __SIMPLE_DEVICE__
typedef struct device *device_t;
+#endif
+
struct pci_operations;
struct pci_bus_operations;
struct i2c_bus_operations;
@@ -43,33 +45,33 @@ struct smbios_type11;
struct acpi_rsdp;
struct device_operations {
- void (*read_resources)(device_t dev);
- void (*set_resources)(device_t dev);
- void (*enable_resources)(device_t dev);
- void (*init)(device_t dev);
- void (*final)(device_t dev);
- void (*scan_bus)(device_t bus);
- void (*enable)(device_t dev);
- void (*disable)(device_t dev);
- void (*set_link)(device_t dev, unsigned int link);
+ void (*read_resources)(struct device *dev);
+ void (*set_resources)(struct device *dev);
+ void (*enable_resources)(struct device *dev);
+ void (*init)(struct device *dev);
+ void (*final)(struct device *dev);
+ void (*scan_bus)(struct device *bus);
+ void (*enable)(struct device *dev);
+ void (*disable)(struct device *dev);
+ void (*set_link)(struct device *dev, unsigned int link);
void (*reset_bus)(struct bus *bus);
#if IS_ENABLED(CONFIG_GENERATE_SMBIOS_TABLES)
- int (*get_smbios_data)(device_t dev, int *handle,
+ int (*get_smbios_data)(struct device *dev, int *handle,
unsigned long *current);
- void (*get_smbios_strings)(device_t dev, struct smbios_type11 *t);
+ void (*get_smbios_strings)(struct device *dev, struct smbios_type11 *t);
#endif
#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
- unsigned long (*write_acpi_tables)(device_t dev, unsigned long start,
- struct acpi_rsdp *rsdp);
- void (*acpi_fill_ssdt_generator)(device_t dev);
- void (*acpi_inject_dsdt_generator)(device_t dev);
- const char *(*acpi_name)(device_t dev);
+ unsigned long (*write_acpi_tables)(struct device *dev,
+ unsigned long start, struct acpi_rsdp *rsdp);
+ void (*acpi_fill_ssdt_generator)(struct device *dev);
+ void (*acpi_inject_dsdt_generator)(struct device *dev);
+ const char *(*acpi_name)(struct device *dev);
#endif
const struct pci_operations *ops_pci;
const struct i2c_bus_operations *ops_i2c_bus;
const struct spi_bus_operations *ops_spi_bus;
const struct smbus_bus_operations *ops_smbus_bus;
- const struct pci_bus_operations * (*ops_pci_bus)(device_t dev);
+ const struct pci_bus_operations * (*ops_pci_bus)(struct device *dev);
const struct pnp_mode_ops *ops_pnp_mode;
};
@@ -79,9 +81,6 @@ struct device_operations {
static inline void device_noop(struct device *dev) {}
#define DEVICE_NOOP device_noop
-#endif /* ! __SIMPLE_DEVICE__ */
-
-
struct bus {
DEVTREE_CONST struct device *dev; /* This bridge device */
diff --git a/src/include/device/pci.h b/src/include/device/pci.h
index 0f2d2bde0022..bc7fada090a1 100644
--- a/src/include/device/pci.h
+++ b/src/include/device/pci.h
@@ -27,14 +27,13 @@
#include <device/pci_ops.h>
#include <device/pci_rom.h>
-#ifndef __SIMPLE_DEVICE__
/* Common pci operations without a standard interface */
struct pci_operations {
/* set the Subsystem IDs for the PCI device */
- void (*set_subsystem)(device_t dev, unsigned int vendor,
+ void (*set_subsystem)(struct device *dev, unsigned int vendor,
unsigned int device);
- void (*set_L1_ss_latency)(device_t dev, unsigned int off);
+ void (*set_L1_ss_latency)(struct device *dev, unsigned int off);
};
/* Common pci bus operations */
@@ -57,7 +56,11 @@ struct pci_driver {
const unsigned short *devices;
};
+#ifdef __SIMPLE_DEVICE__
+#define __pci_driver __attribute__((unused))
+#else
#define __pci_driver __attribute__((used, __section__(".rodata.pci_driver")))
+#endif
/** start of compile time generated pci driver array */
extern struct pci_driver _pci_drivers[];
/** end of compile time generated pci driver array */
@@ -67,19 +70,20 @@ extern struct pci_driver _epci_drivers[];
extern struct device_operations default_pci_ops_dev;
extern struct device_operations default_pci_ops_bus;
-void pci_dev_read_resources(device_t dev);
-void pci_bus_read_resources(device_t dev);
-void pci_dev_set_resources(device_t dev);
-void pci_dev_enable_resources(device_t dev);
-void pci_bus_enable_resources(device_t dev);
+void pci_dev_read_resources(struct device *dev);
+void pci_bus_read_resources(struct device *dev);
+void pci_dev_set_resources(struct device *dev);
+void pci_dev_enable_resources(struct device *dev);
+void pci_bus_enable_resources(struct device *dev);
void pci_bus_reset(struct bus *bus);
-device_t pci_probe_dev(device_t dev, struct bus *bus, unsigned int devfn);
+struct device *pci_probe_dev(struct device *dev, struct bus *bus,
+ unsigned int devfn);
void do_pci_scan_bridge(device_t bus,
void (*do_scan_bus)(struct bus *bus,
unsigned int min_devfn, unsigned int max_devfn));
-void pci_scan_bridge(device_t bus);
+void pci_scan_bridge(struct device *bus);
void pci_scan_bus(struct bus *bus, unsigned int min_devfn,
unsigned int max_devfn);
@@ -87,22 +91,22 @@ uint8_t pci_moving_config8(struct device *dev, unsigned int reg);
uint16_t pci_moving_config16(struct device *dev, unsigned int reg);
uint32_t pci_moving_config32(struct device *dev, unsigned int reg);
struct resource *pci_get_resource(struct device *dev, unsigned long index);
-void pci_dev_set_subsystem(device_t dev, unsigned int vendor,
+void pci_dev_set_subsystem(struct device *dev, unsigned int vendor,
unsigned int device);
void pci_dev_init(struct device *dev);
-unsigned int pci_match_simple_dev(device_t dev, pci_devfn_t sdev);
+unsigned int pci_match_simple_dev(struct device *dev, pci_devfn_t sdev);
const char *pin_to_str(int pin);
-int get_pci_irq_pins(device_t dev, device_t *parent_bdg);
+int get_pci_irq_pins(struct device *dev, struct device **parent_bdg);
void pci_assign_irqs(unsigned int bus, unsigned int slot,
const unsigned char pIntAtoD[4]);
-const char *get_pci_class_name(device_t dev);
-const char *get_pci_subclass_name(device_t dev);
+const char *get_pci_class_name(struct device *dev);
+const char *get_pci_subclass_name(struct device *dev);
#define PCI_IO_BRIDGE_ALIGN 4096
#define PCI_MEM_BRIDGE_ALIGN (1024*1024)
-static inline const struct pci_operations *ops_pci(device_t dev)
+static inline const struct pci_operations *ops_pci(struct device *dev)
{
const struct pci_operations *pops;
pops = 0;
@@ -111,16 +115,14 @@ static inline const struct pci_operations *ops_pci(device_t dev)
return pops;
}
-#endif /* ! __SIMPLE_DEVICE__ */
-
#ifdef __SIMPLE_DEVICE__
unsigned int pci_find_next_capability(pci_devfn_t dev, unsigned int cap,
unsigned int last);
unsigned int pci_find_capability(pci_devfn_t dev, unsigned int cap);
#else /* !__SIMPLE_DEVICE__ */
-unsigned int pci_find_next_capability(device_t dev, unsigned int cap,
+unsigned int pci_find_next_capability(struct device *dev, unsigned int cap,
unsigned int last);
-unsigned int pci_find_capability(device_t dev, unsigned int cap);
+unsigned int pci_find_capability(struct device *dev, unsigned int cap);
#endif /* __SIMPLE_DEVICE__ */
void pci_early_bridge_init(void);