mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 22:02:28 +00:00
adf38bb0b5
The low-pin-count (LPC) interface of Hip06/Hip07 accesses I/O port space of peripherals. Implement the LPC host controller driver which performs the I/O operations on the underlying hardware. We don't want to touch existing drivers such as ipmi-bt, so this driver applies the indirect-IO introduced in the previous patch after registering an indirect-IO node to the indirect-IO devices list which will be searched by the I/O accessors to retrieve the host-local I/O port. The driver config is set as a bool instead of a tristate. The reason here is that, by the very nature of the driver providing a logical PIO range, it does not make sense to have this driver as a loadable module. Another more specific reason is that the Huawei D03 board which includes Hip06 SoC requires the LPC bus for UART console, so should be built in. Tested-by: dann frazier <dann.frazier@canonical.com> Signed-off-by: Zou Rongrong <zourongrong@huawei.com> Signed-off-by: Zhichang Yuan <yuanzhichang@hisilicon.com> Signed-off-by: John Garry <john.garry@huawei.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Acked-by: Rob Herring <robh@kernel.org> # dts part
34 lines
1011 B
Plaintext
34 lines
1011 B
Plaintext
Hisilicon Hip06 Low Pin Count device
|
|
Hisilicon Hip06 SoCs implement a Low Pin Count (LPC) controller, which
|
|
provides I/O access to some legacy ISA devices.
|
|
Hip06 is based on arm64 architecture where there is no I/O space. So, the
|
|
I/O ports here are not CPU addresses, and there is no 'ranges' property in
|
|
LPC device node.
|
|
|
|
Required properties:
|
|
- compatible: value should be as follows:
|
|
(a) "hisilicon,hip06-lpc"
|
|
(b) "hisilicon,hip07-lpc"
|
|
- #address-cells: must be 2 which stick to the ISA/EISA binding doc.
|
|
- #size-cells: must be 1 which stick to the ISA/EISA binding doc.
|
|
- reg: base memory range where the LPC register set is mapped.
|
|
|
|
Note:
|
|
The node name before '@' must be "isa" to represent the binding stick to the
|
|
ISA/EISA binding specification.
|
|
|
|
Example:
|
|
|
|
isa@a01b0000 {
|
|
compatible = "hisilicon,hip06-lpc";
|
|
#address-cells = <2>;
|
|
#size-cells = <1>;
|
|
reg = <0x0 0xa01b0000 0x0 0x1000>;
|
|
|
|
ipmi0: bt@e4 {
|
|
compatible = "ipmi-bt";
|
|
device_type = "ipmi";
|
|
reg = <0x01 0xe4 0x04>;
|
|
};
|
|
};
|