Messages in this thread Patch in this message | | | Subject | Re: [PATCH -next] gpio: mockup: remove gpio debugfs when remove device | From | "weiyongjun (A)" <> | Date | Mon, 22 Aug 2022 21:27:02 +0800 |
| |
Hi Bart,
On 2022/8/19 20:49, Bartosz Golaszewski wrote: > On Tue, Aug 16, 2022 at 4:34 PM Wei Yongjun <weiyongjun1@huawei.com> wrote: >> >> GPIO mockup debugfs is created in gpio_mockup_probe() but >> forgot to remove when remove device. This patch add a devm >> managed callback for removing them. >> > > The tag -next is for patches that address issues that are in next but > not yet in master. >>
> > This isn't very relevant as the module needs to be unloaded anyway in > order to reconfigure the simulated device but I'll apply it as it's > technically correct. Did you see we have a new one - gpio-sim - that > uses configfs? > > Bart >
I am using gpio-mockup as a interrupt-controller with the change[1], it works will with overfs dts[2], and can success mockup device and trigger the irq. But when switch to gpio-sim, device can not be created by dts[3]. Not sure what's wrong with it. Any suggestion?
---------------[1]-------------------------- diff --git a/drivers/gpio/gpio-mockup.c b/drivers/gpio/gpio-mockup.c index a2e505a7545c..2b103861fa06 100644 --- a/drivers/gpio/gpio-mockup.c +++ b/drivers/gpio/gpio-mockup.c @@ -447,7 +451,7 @@ static int gpio_mockup_probe(struct platform_device *pdev) for (i = 0; i < gc->ngpio; i++) chip->lines[i].dir = GPIO_LINE_DIRECTION_IN;
- chip->irq_sim_domain = devm_irq_domain_create_sim(dev, NULL, + chip->irq_sim_domain = devm_irq_domain_create_sim(dev, dev->fwnode, gc->ngpio); if (IS_ERR(chip->irq_sim_domain)) return PTR_ERR(chip->irq_sim_domain); diff --git a/kernel/irq/irq_sim.c b/kernel/irq/irq_sim.c index dd76323ea3fd..e8f71f806a85 100644 --- a/kernel/irq/irq_sim.c +++ b/kernel/irq/irq_sim.c @@ -149,6 +153,7 @@ static void irq_sim_domain_unmap(struct irq_domain *domain, unsigned int virq) static const struct irq_domain_ops irq_sim_domain_ops = { .map = irq_sim_domain_map, .unmap = irq_sim_domain_unmap, + .xlate = irq_domain_xlate_twocell, };
-------------------------------------------- ---------------[2]-------------------------- /dts-v1/; /plugin/; #include <dt-bindings/interrupt-controller/irq.h>
&{/} { clk24m: clk24m { compatible = "fixed-clock"; clock-output-names = "clk24m"; clock-frequency = <24000000>; #clock-cells = <0>; }; gpio: gpio { compatible = "gpio-mockup"; gpio-base = <0>; nr-gpios = <0x200000>; gpio-controller; #gpio-cells = <2>;
interrupt-controller; #interrupt-cells = <2>;
line_b-hog { gpio-hog; gpios = <0 1>; input; line-name = "irq-sim"; }; }; }; &{/spi} { can0: can@1 { compatible = "microchip,mcp2515"; reg = <1>; clocks = <&clk24m>; interrupts-extended = <&gpio 0 IRQ_TYPE_EDGE_BOTH>; }; }; -------------------------------------------
---------------[3]-------------------------- /dts-v1/; /plugin/;
#include <dt-bindings/interrupt-controller/irq.h>
&{/} { clk24m: clk24m { compatible = "fixed-clock"; clock-output-names = "clk24m"; clock-frequency = <24000000>; #clock-cells = <0>; }; gpio-sim { compatible = "gpio-simulator"; bank0: bank0 { gpio-controller; #gpio-cells = <2>; ngpios = <16>; interrupt-controller; #interrupt-cells = <1>; }; }; }; &{/spi} { can0: can@1 { compatible = "microchip,mcp2515"; reg = <1>; clocks = <&clk24m>; interrupts-extended = <&bank0 0 IRQ_TYPE_EDGE_BOTH>; }; }; -------------------------------------------
| |