lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CANk1AXSJQh4VovcBVqvt=s4f7yBVLLyhG3js4o1HDNW80u-=JQ@mail.gmail.com>
Date:	Wed, 23 Mar 2016 11:20:08 -0500
From:	Alan Tull <delicious.quinoa@...il.com>
To:	qiujiang <qiujiang@...wei.com>
Cc:	Andy Shevchenko <andy.shevchenko@...il.com>,
	Mika Westerberg <mika.westerberg@...ux.intel.com>,
	Linus Walleij <linus.walleij@...aro.org>,
	Alexandre Courbot <gnurou@...il.com>,
	linux-kernel <linux-kernel@...r.kernel.org>,
	"linux-gpio@...r.kernel.org" <linux-gpio@...r.kernel.org>,
	"linux-acpi@...r.kernel.org" <linux-acpi@...r.kernel.org>,
	linuxarm@...wei.com, haifeng.wei@...wei.com,
	charles.chenxin@...wei.com, atull <atull@...nsource.altera.com>
Subject: Re: [PATCH v5 1/3] gpio: designware: convert device node to fwnode

On Wed, Mar 23, 2016 at 6:41 AM, Jiang Qiu <qiujiang@...wei.com> wrote:
> 在 2016/3/11 4:27, Andy Shevchenko 写道:
>> On Thu, Mar 10, 2016 at 9:09 PM, Alan Tull <delicious.quinoa@...il.com> wrote:
>>> On Fri, Mar 4, 2016 at 1:44 AM, qiujiang <qiujiang@...wei.com> wrote:
>>>> This patch converts device node to fwnode in
>>>> dwapb_port_property for designware gpio driver,
>>>> so as to provide a unified data structure for DT
>>>> and ACPI bindings.
>>>>
>>>> Acked-by: Andy Shevchenko <andy.shevchenko@...il.com>
>>>> Signed-off-by: qiujiang <qiujiang@...wei.com>
>>>> @@ -496,18 +492,19 @@ dwapb_gpio_get_pdata_of(struct device *dev)
>>>>                  * Only port A can provide interrupts in all configurations of
>>>>                  * the IP.
>>>>                  */
>>>> -               if (pp->idx == 0 &&
>>>> -                   of_property_read_bool(port_np, "interrupt-controller")) {
>>>> -                       pp->irq = irq_of_parse_and_map(port_np, 0);
>>>> +               if (dev->of_node && pp->idx == 0 &&
>>>> +                       of_property_read_bool(to_of_node(fwnode),
>>>> +                               "interrupt-controller")) {
>>> Hi Qiujiang,
>>>
>>> Is there a reason to use "of_property_read_bool" here instead of
>>> "device_property_read_bool" or similar?
>> Yeah, this patch looks unfinished.
>>
>> This should be
>>      if (pp->idx == 0 &&  fwnode_property_read_bool(fwnode,
>> "interrupt-controller")) {
> Hi, Alan, Andy, Mika,
>
> Many thanks for help me review this patchset.
>
> I tried to use a unified interface to parse the interrupts resource in DT and ACPI,
> but it looks difficult because of the hierarchy device node structure as follow:
>
> pc_gpio1: gpio@...f0000 {
>             #address-cells = <1>;
>             #size-cells = <0>;
>             compatible = "snps,dw-apb-gpio";
>             reg = <0x0 0x802f0000 0x0 0x10000>;
>
>             porta: gpio-controller@0 {
>                 compatible = "snps,dw-apb-gpio-port";
>                 gpio-controller;
>                 #gpio-cells = <2>;
>                 snps,nr-gpios = <32>;
>                 reg = <0>;
>                 interrupt-controller;
>                 #interrupt-cells = <2>;
>                 interrupts = <0 313 4>;
>             };
> };
>
> According to the designware gpio databook, each GPIO controller includes 4 ports
> (porta,b,c,d), only porta can be a interrupt controller. So, I moved the interrupts
> resource to the parent node from porta in ACPI.
>
> Device(GPI0) {
>         Name(_HID, "HISI0181")
>         Name(_ADR, 0) // _ADR: Address
>         Name(_UID, 0)
>
>         Name (_CRS, ResourceTemplate ()  {
>             Memory32Fixed (ReadWrite, 0x802e0000, 0x10000)
>             Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive,,,)  {344} //moved here
>         })
>
>         Device(PRTa) {
>             Name (_DSD, Package () {
>                 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>                 Package () {
>                     Package () {"reg",0},
>                     Package () {"snps,nr-gpios",32},
>                 }
>             })
>         }
> }
>
> That is to say, if GPI0 should be a interrupt controller, the child node PRTa must be
> present first, then add the interrupt resource to the parent node GPI0 scope.
>
> Dose this proposal sounds ok? if yes, we can do that for DT. If not, there can only
> keep two branches to parse the IRQ resource, and the code looks strange.

Hi Jiang,

Are you suggesting a change for the DT to make it similar to the ACPI
case?  DT changes create unexpected breakages when people upgrade
their kernel even if the change is minor.  How bad will the code look
if you implement it as the two separate code paths as you suggest?

Alan

>
> That would be great if I can get some help from you.
>
> Best Regards
> Jiang
>>> Alan
>>>
>>>> +                       pp->irq = irq_of_parse_and_map(to_of_node(fwnode), 0);
>> But here should be common method called which takes fwnode on input.
>>
>>>>                         if (!pp->irq) {
>>>>                                 dev_warn(dev, "no irq for bank %s\n",
>>>> -                                        port_np->full_name);
>>>> +                                        to_of_node(fwnode)->full_name);
>>>>                         }
>>>>                 }
>>>>
>>>>                 pp->irq_shared  = false;
>>>>                 pp->gpio_base   = -1;
>>>> -               pp->name        = port_np->full_name;
>>>> +               pp->name        = to_of_node(fwnode)->full_name;
>> Also those two should be device property source agnostic. That's what
>> I tried to tell earlier.
>>
>
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ