2022-07-27 06:18:26 +02:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
|
|
|
2003-09-02 05:36:25 +02:00
|
|
|
#ifndef DEVICE_PATH_H
|
|
|
|
#define DEVICE_PATH_H
|
|
|
|
|
2018-11-01 11:29:50 +01:00
|
|
|
#include <stdint.h>
|
|
|
|
|
2003-09-02 05:36:25 +02:00
|
|
|
enum device_path_type {
|
|
|
|
DEVICE_PATH_NONE = 0,
|
2003-10-11 08:20:25 +02:00
|
|
|
DEVICE_PATH_ROOT,
|
2003-09-02 05:36:25 +02:00
|
|
|
DEVICE_PATH_PCI,
|
|
|
|
DEVICE_PATH_PNP,
|
|
|
|
DEVICE_PATH_I2C,
|
2004-10-14 22:54:17 +02:00
|
|
|
DEVICE_PATH_APIC,
|
2013-02-12 23:17:15 +01:00
|
|
|
DEVICE_PATH_DOMAIN,
|
2013-02-13 00:20:54 +01:00
|
|
|
DEVICE_PATH_CPU_CLUSTER,
|
2004-11-18 23:38:08 +01:00
|
|
|
DEVICE_PATH_CPU,
|
|
|
|
DEVICE_PATH_CPU_BUS,
|
2012-06-21 22:19:48 +02:00
|
|
|
DEVICE_PATH_IOAPIC,
|
2016-05-08 05:01:34 +02:00
|
|
|
DEVICE_PATH_GENERIC,
|
2017-02-11 19:57:23 +01:00
|
|
|
DEVICE_PATH_SPI,
|
2018-05-07 23:18:13 +02:00
|
|
|
DEVICE_PATH_USB,
|
2018-01-18 01:36:30 +01:00
|
|
|
DEVICE_PATH_MMIO,
|
2020-12-11 21:26:02 +01:00
|
|
|
DEVICE_PATH_GPIO,
|
2022-11-02 15:57:10 +01:00
|
|
|
DEVICE_PATH_MDIO,
|
2016-02-13 15:10:04 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
* When adding path types to this table, please also update the
|
|
|
|
* DEVICE_PATH_NAMES macro below.
|
|
|
|
*/
|
2004-10-16 04:48:37 +02:00
|
|
|
};
|
|
|
|
|
2016-02-13 15:10:04 +01:00
|
|
|
#define DEVICE_PATH_NAMES { \
|
|
|
|
"DEVICE_PATH_NONE", \
|
|
|
|
"DEVICE_PATH_ROOT", \
|
|
|
|
"DEVICE_PATH_PCI", \
|
|
|
|
"DEVICE_PATH_PNP", \
|
|
|
|
"DEVICE_PATH_I2C", \
|
|
|
|
"DEVICE_PATH_APIC", \
|
|
|
|
"DEVICE_PATH_DOMAIN", \
|
|
|
|
"DEVICE_PATH_CPU_CLUSTER", \
|
|
|
|
"DEVICE_PATH_CPU", \
|
|
|
|
"DEVICE_PATH_CPU_BUS", \
|
2016-05-08 05:01:34 +02:00
|
|
|
"DEVICE_PATH_IOAPIC", \
|
2017-02-11 19:57:23 +01:00
|
|
|
"DEVICE_PATH_GENERIC", \
|
|
|
|
"DEVICE_PATH_SPI", \
|
2018-05-07 23:18:13 +02:00
|
|
|
"DEVICE_PATH_USB", \
|
2018-01-18 01:36:30 +01:00
|
|
|
"DEVICE_PATH_MMIO", \
|
2020-12-11 21:26:02 +01:00
|
|
|
"DEVICE_PATH_GPIO", \
|
2022-11-02 15:57:10 +01:00
|
|
|
"DEVICE_PATH_MDIO", \
|
2016-02-13 15:10:04 +01:00
|
|
|
}
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct domain_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int domain;
|
2003-09-02 05:36:25 +02:00
|
|
|
};
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct pci_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int devfn;
|
2003-09-02 05:36:25 +02:00
|
|
|
};
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct pnp_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int port;
|
|
|
|
unsigned int device;
|
2003-09-02 05:36:25 +02:00
|
|
|
};
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct i2c_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int device;
|
|
|
|
unsigned int mode_10bit;
|
2003-09-02 05:36:25 +02:00
|
|
|
};
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct spi_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int cs;
|
2017-02-11 19:57:23 +01:00
|
|
|
};
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct apic_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int apic_id;
|
|
|
|
unsigned int package_id;
|
|
|
|
unsigned int node_id;
|
|
|
|
unsigned int core_id;
|
|
|
|
unsigned int thread_id;
|
2004-10-14 22:54:17 +02:00
|
|
|
};
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct ioapic_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int ioapic_id;
|
2012-06-21 22:19:48 +02:00
|
|
|
};
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct cpu_cluster_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int cluster;
|
2004-10-16 04:48:37 +02:00
|
|
|
};
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct cpu_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int id;
|
2004-11-18 23:38:08 +01:00
|
|
|
};
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct cpu_bus_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int id;
|
2004-11-18 23:38:08 +01:00
|
|
|
};
|
|
|
|
|
2017-03-08 00:11:07 +01:00
|
|
|
struct generic_path {
|
2017-03-07 03:01:04 +01:00
|
|
|
unsigned int id;
|
|
|
|
unsigned int subid;
|
2016-05-08 05:01:34 +02:00
|
|
|
};
|
|
|
|
|
2018-05-07 23:18:13 +02:00
|
|
|
struct usb_path {
|
|
|
|
unsigned int port_type;
|
|
|
|
unsigned int port_id;
|
|
|
|
};
|
|
|
|
|
2018-01-18 01:36:30 +01:00
|
|
|
struct mmio_path {
|
|
|
|
uintptr_t addr;
|
|
|
|
};
|
2004-10-16 04:48:37 +02:00
|
|
|
|
2020-12-11 21:26:02 +01:00
|
|
|
struct gpio_path {
|
|
|
|
unsigned int id;
|
|
|
|
};
|
|
|
|
|
2022-11-02 15:57:10 +01:00
|
|
|
struct mdio_path {
|
|
|
|
unsigned int addr;
|
|
|
|
};
|
|
|
|
|
2003-09-02 05:36:25 +02:00
|
|
|
struct device_path {
|
|
|
|
enum device_path_type type;
|
|
|
|
union {
|
2013-02-13 00:20:54 +01:00
|
|
|
struct pci_path pci;
|
|
|
|
struct pnp_path pnp;
|
|
|
|
struct i2c_path i2c;
|
|
|
|
struct apic_path apic;
|
|
|
|
struct ioapic_path ioapic;
|
|
|
|
struct domain_path domain;
|
|
|
|
struct cpu_cluster_path cpu_cluster;
|
|
|
|
struct cpu_path cpu;
|
|
|
|
struct cpu_bus_path cpu_bus;
|
2016-05-08 05:01:34 +02:00
|
|
|
struct generic_path generic;
|
2017-02-11 19:57:23 +01:00
|
|
|
struct spi_path spi;
|
2018-05-07 23:18:13 +02:00
|
|
|
struct usb_path usb;
|
2018-01-18 01:36:30 +01:00
|
|
|
struct mmio_path mmio;
|
2020-12-11 21:26:02 +01:00
|
|
|
struct gpio_path gpio;
|
2022-11-02 15:57:10 +01:00
|
|
|
struct mdio_path mdio;
|
2009-02-28 21:10:20 +01:00
|
|
|
};
|
2003-09-02 05:36:25 +02:00
|
|
|
};
|
|
|
|
|
2020-07-17 00:48:39 +02:00
|
|
|
#define DEVICE_PATH_MAX 40
|
2005-07-08 04:49:49 +02:00
|
|
|
#define BUS_PATH_MAX (DEVICE_PATH_MAX+10)
|
2003-09-02 05:36:25 +02:00
|
|
|
|
2016-02-13 15:10:04 +01:00
|
|
|
extern const char *dev_path_name(enum device_path_type type);
|
2003-09-02 05:36:25 +02:00
|
|
|
|
|
|
|
#endif /* DEVICE_PATH_H */
|