b7ce5fe311
Use the second token for an i2c device entry in devicetree.cb to indicate if it should use 10-bit addressing or 7-bit. The default if not provided is to use 7-bit addressing, but it can be changed to 10-bit addressing with the ".1" suffix. For example: chip drivers/i2c/generic device i2c 3a.1 on end end Change-Id: I1d81a7e154fbc040def4d99ad07966fac242a472 Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://review.coreboot.org/14788 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
111 lines
1.7 KiB
C
111 lines
1.7 KiB
C
#ifndef DEVICE_PATH_H
|
|
#define DEVICE_PATH_H
|
|
|
|
enum device_path_type {
|
|
DEVICE_PATH_NONE = 0,
|
|
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,
|
|
DEVICE_PATH_IOAPIC,
|
|
|
|
/*
|
|
* When adding path types to this table, please also update the
|
|
* DEVICE_PATH_NAMES macro below.
|
|
*/
|
|
};
|
|
|
|
#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", \
|
|
"DEVICE_PATH_IOAPIC" \
|
|
}
|
|
|
|
struct domain_path
|
|
{
|
|
unsigned domain;
|
|
};
|
|
|
|
struct pci_path
|
|
{
|
|
unsigned devfn;
|
|
};
|
|
|
|
struct pnp_path
|
|
{
|
|
unsigned port;
|
|
unsigned device;
|
|
};
|
|
|
|
struct i2c_path
|
|
{
|
|
unsigned device;
|
|
unsigned mode_10bit;
|
|
};
|
|
|
|
struct apic_path
|
|
{
|
|
unsigned apic_id;
|
|
unsigned package_id;
|
|
unsigned node_id;
|
|
unsigned core_id;
|
|
unsigned thread_id;
|
|
};
|
|
|
|
struct ioapic_path
|
|
{
|
|
unsigned ioapic_id;
|
|
};
|
|
|
|
struct cpu_cluster_path
|
|
{
|
|
unsigned cluster;
|
|
};
|
|
|
|
struct cpu_path
|
|
{
|
|
unsigned id;
|
|
};
|
|
|
|
struct cpu_bus_path
|
|
{
|
|
unsigned id;
|
|
};
|
|
|
|
|
|
struct device_path {
|
|
enum device_path_type type;
|
|
union {
|
|
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;
|
|
};
|
|
};
|
|
|
|
|
|
#define DEVICE_PATH_MAX 30
|
|
#define BUS_PATH_MAX (DEVICE_PATH_MAX+10)
|
|
|
|
extern int path_eq(struct device_path *path1, struct device_path *path2);
|
|
extern const char *dev_path_name(enum device_path_type type);
|
|
|
|
#endif /* DEVICE_PATH_H */
|