[PATCH] arm: gic-v3-its: Add irq UCLASS_DRIVER

Rayagonda Kokatanur rayagonda.kokatanur at broadcom.com
Thu Sep 10 10:13:18 CEST 2020


Hi Stefan,

On Thu, Sep 10, 2020, 1:16 PM Stefan Roese <sr at denx.de> wrote:

> On 10.09.20 07:58, Rayagonda Kokatanur wrote:
> > Hi Stefan,
> >
> > On Thu, Sep 10, 2020 at 10:53 AM Stefan Roese <sr at denx.de> wrote:
> >>
> >> Hi Rayagonda,
> >>
> >> On 09.09.20 19:15, Rayagonda Kokatanur wrote:
> >>> Hi Stefan,
> >>>
> >>> On Wed, Sep 9, 2020 at 1:57 PM Stefan Roese <sr at denx.de> wrote:
> >>>>
> >>>> On 09.09.20 10:14, Priyanka Jain wrote:
> >>>>> This is required to fix
> >>>>> "Error binding driver 'gic-v3': -96"
> >>>>> on lx2160a platforms.
> >>>>>
> >>>>> Signed-off-by: Priyanka Jain <priyanka.jain at nxp.com>
> >>>>> ---
> >>>>>     arch/arm/lib/gic-v3-its.c | 5 +++++
> >>>>>     1 file changed, 5 insertions(+)
> >>>>>
> >>>>> diff --git a/arch/arm/lib/gic-v3-its.c b/arch/arm/lib/gic-v3-its.c
> >>>>> index a1657e3853..6c6b7c430c 100644
> >>>>> --- a/arch/arm/lib/gic-v3-its.c
> >>>>> +++ b/arch/arm/lib/gic-v3-its.c
> >>>>> @@ -208,3 +208,8 @@ U_BOOT_DRIVER(gic_lpi_syscon) = {
> >>>>>         .id             = UCLASS_SYSCON,
> >>>>>         .of_match       = gic_lpi_syscon_ids,
> >>>>>     };
> >>>>> +
> >>>>> +UCLASS_DRIVER(irq) = {
> >>>>> +     .id = UCLASS_IRQ,
> >>>>> +     .name = "irq",
> >>>>> +};
> >>>>
> >>>> I tested this on LX2160 and get this error when booting into Linux:
> >>>>
> >>>>       Loading Device Tree to 000000009fff6000, end 000000009fffff3e
> ... OK
> >>>> gic_v3_its_get_gic_lpi_addr: failed to get gic-lpi-base syscon device
> >>>>
> >>>> Starting kernel ...
> >>>>
> >>>> [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
> >>>>
> >>>> I did not look closely yet. Any idea whats going wrong here?
> >>>
> >>> I added the following patch to use UCLASS_SYSCON to get gic lpi
> details.
> >>>
> >>> commit id - 2ae7adc659f7fca9ea65df4318e5bca2b8274310
> >>>
> >>> because the above commit is failing, hence we need this patch.
> >>> When I tested this I didn't face any issue hence didn't push the above
> change.
> >>> In my case it was failing only in the lower uboot version without this
> patch.
> >>
> >> What's the "lower uboot version"?
> >
> > U-Boot 2020.01 version.
> >
> >>
> >> In any case, it's failing now on the lx2160, since no SYSCON device is
> >> found:
> >>
> >> $ git grep "gic-lpi-base"
> >> arch/arm/lib/gic-v3-its.c:      { .compatible = "gic-lpi-base" },
> >> arch/arm/lib/gic-v3-its.c:      .name           = "gic-lpi-base",
> >>
> >> So no device is providing this compatible in the dts anywhere. Or am I
> >> missing something?
> >
> > If you apply this patch it will work.
>
> This patch is already applied.
>
> > Please let me know if anything more is required or if this patch is
> > the not right way to address the issue.
>
> Again, its not working, as no device is providing "gic-lpi-base" AFICT.
>

Please add dt node which defines "gic-lpi-base" and other details.
@Priyanka Jain <priyanka.jain at nxp.com>  - can you please provide dt node
added for your platform lx2160a.

For ex -

gic_lpi_base: syscon at 0x8ad70000 {
    compatible = "gic-lpi-base";
    reg = <0x0 0x8ad70000 0x0 0x90000>;
    max-gic-redistributors = <8>;
};

scr {
    compatible = "simple-bus";
    #address-cells = <1>;
    #size-cells = <1>;
    ranges = <0x0 0x0 0x61000000 0x05000000>;

    gic: interrupt-controller at 2c00000 {
        compatible = "arm,gic-v3";
        #interrupt-cells = <3>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;
        interrupt-controller;
        reg = <0x02c00000 0x010000>, /* GICD */
                 <0x02e00000 0x600000>; /* GICR */
        regmap = <&gic_lpi_base>;

        gic_its: gic-its at 63c20000 {
            compatible = "arm,gic-v3-its";
            msi-controller;
            #msi-cells = <1>;
            reg = <0x02c20000 0x10000>;
        };
    };
};

Best regards,
Rayagonda


> Thanks,
> Stefan
>


More information about the U-Boot mailing list