Re: [PATCH v1 3/3] ARM64 LPC: update binding doc

Arnd Bergmann
2016-01-04T16:35:04Z

On Tuesday 05 January 2016 00:04:19 Rongrong Zou wrote:
> 在 2016/1/4 19:13, Arnd Bergmann 写道:
> > On Sunday 03 January 2016 20:24:14 Rongrong Zou wrote:
> >> 在 2015/12/31 23:00, Rongrong Zou 写道:
> >> */
> >> compatible = "low-pin-count";
> >> device_type = "isa";
> >> #address-cells = <2>;
> >> #size-cells = <1>;
> >> reg = <0x0 0xa01b0000 0x0 0x10000>;
> >> ranges = <0x1 0x0 0x0 0x0 0x1000>;
> >> /*
> >> * ranges is required, then i can get the IORESOURCE_IO <0xe4,4> from "reg = <0x1, 0x000000e4, 4>".
> >> *
> >> */
> >> ipmi_0:ipmi@000000e4{
> >> device_type = "ipmi";
> >> compatible = "ipmi-bt";
> >> reg = <0x1 0x000000e4 0x4>;
> >> };
> >>
> >
> > This looks wrong: the property above says that the I/O port range is
> > translated to MMIO address 0x00000000 to 0x00010000, which is not
> > true on your hardware. I think this needs to be changed in the code
> > so the ranges property is not required for I/O ports.
>
> Ranges property can set empty, but this means 1:1 translation. the I/O
> port range is translated to MMIO address 0x00000001 00000000 to
> 0x00000001 00000004, it looks wrong else. I wonder if anyone get legacy
> I/O port resource from dts.

As I said, nothing should really require the ranges property here, unless
you have a valid IORESOURCE_MEM translation. The code that requires
the ranges to be present is wrong.

> For ipmi driver, I can get I/O port resource by DMI rather than dts.

No, the ipmi driver uses the resource that belongs to the platform
device already, you can't rely on DMI data to be present there.

Arnd