mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-19 05:04:35 +00:00
dm: core: Add a way of overriding the ACPI device path
Some devices such as GPIO need to override the normal path that would be generated by driver model. Add a device-tree property for this. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
This commit is contained in:
parent
f02d0eb3fa
commit
f18589576c
3 changed files with 55 additions and 0 deletions
|
@ -17,6 +17,8 @@ the acpi,compatible property.
|
||||||
System) Device Name)
|
System) Device Name)
|
||||||
- acpi,hid : Contains the string to use as the HID (Hardware ID)
|
- acpi,hid : Contains the string to use as the HID (Hardware ID)
|
||||||
identifier _HID
|
identifier _HID
|
||||||
|
- acpi,path : Specifies the full ACPI path for a device. This overrides the
|
||||||
|
normal path built from the driver-model hierarchy
|
||||||
- acpi,name : Provides the ACPI name for a device, which is a string consisting
|
- acpi,name : Provides the ACPI name for a device, which is a string consisting
|
||||||
of four alphanumeric character (upper case)
|
of four alphanumeric character (upper case)
|
||||||
- acpi,uid : _UID value for device
|
- acpi,uid : _UID value for device
|
||||||
|
@ -47,3 +49,24 @@ pcie-a0@14,0 {
|
||||||
interrupts-extended = <&acpi_gpe 0x3c 0>;
|
interrupts-extended = <&acpi_gpe 0x3c 0>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
p2sb: p2sb@d,0 {
|
||||||
|
u-boot,dm-pre-reloc;
|
||||||
|
reg = <0x02006810 0 0 0 0>;
|
||||||
|
compatible = "intel,apl-p2sb";
|
||||||
|
early-regs = <IOMAP_P2SB_BAR 0x100000>;
|
||||||
|
pci,no-autoconfig;
|
||||||
|
|
||||||
|
n {
|
||||||
|
compatible = "intel,apl-pinctrl";
|
||||||
|
u-boot,dm-pre-reloc;
|
||||||
|
intel,p2sb-port-id = <PID_GPIO_N>;
|
||||||
|
acpi,path = "\\_SB.GPO0";
|
||||||
|
gpio_n: gpio-n {
|
||||||
|
compatible = "intel,gpio";
|
||||||
|
u-boot,dm-pre-reloc;
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
linux-name = "INT3452:00";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
@ -82,6 +82,25 @@ int acpi_get_name(const struct udevice *dev, char *out_name)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int acpi_get_path(const struct udevice *dev, char *out_path, int maxlen)
|
||||||
|
{
|
||||||
|
const char *path;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
path = dev_read_string(dev, "acpi,path");
|
||||||
|
if (path) {
|
||||||
|
if (strlen(path) >= maxlen)
|
||||||
|
return -E2BIG;
|
||||||
|
strcpy(out_path, path);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
ret = acpi_device_path(dev, out_path, maxlen);
|
||||||
|
if (ret)
|
||||||
|
return log_msg_ret("dev", ret);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpi_add_item() - Add a new item to the list of data collected
|
* acpi_add_item() - Add a new item to the list of data collected
|
||||||
*
|
*
|
||||||
|
|
|
@ -187,6 +187,19 @@ int acpi_inject_dsdt(struct acpi_ctx *ctx);
|
||||||
*/
|
*/
|
||||||
void acpi_dump_items(enum acpi_dump_option option);
|
void acpi_dump_items(enum acpi_dump_option option);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* acpi_get_path() - Get the full ACPI path for a device
|
||||||
|
*
|
||||||
|
* This checks for any override in the device tree and calls acpi_device_path()
|
||||||
|
* if not
|
||||||
|
*
|
||||||
|
* @dev: Device to check
|
||||||
|
* @out_path: Buffer to place the path in (should be ACPI_PATH_MAX long)
|
||||||
|
* @maxlen: Size of buffer (typically ACPI_PATH_MAX)
|
||||||
|
* @return 0 if OK, -ve on error
|
||||||
|
*/
|
||||||
|
int acpi_get_path(const struct udevice *dev, char *out_path, int maxlen);
|
||||||
|
|
||||||
#endif /* __ACPI__ */
|
#endif /* __ACPI__ */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue