Help on modelling gpio interrupt source when interrupt is shared

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I have a query on device tree pertaining to modelling a gpio pin as an interrupt source. 
I have searched mailing list archives and kernel documentation before posting this and couldn't get any direct solution.
(My understanding is limited and hence posting the query below:)

My SOC has a gpio controller and uart both sharing same interrupt line as specified below. 

interrupt-parent = <&gic>;

        mygpio: gpio@0x19008000 {
                compatible = "mysoc,mygpio-controller,gc";
                #address-cells = <1>;
                #size-cells = <1>;
                #gpio-cells = <2>;
                reg = gpio: <0x19008000 0x50>;
                ngpios = <12>;
                pin-offset = <4>;
                pin-base = <4>;
                irq-base = <256>; /* sw irq base for irq handlers */
                gpio-controller;
                interrupt-controller;
                interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
        };

        uart0: serial@0x19000300 {
                compatible = "snps,dw-apb-uart";
                reg = <0x19000300 0x100>;
                interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
                clock-frequency = <62500000>;
        };

gpio pin 0 of mygpio is used as an interrupt source for detecting the presence of external pluggable device (that is not driven by kernel). 
And I intend to detect the presence of the pluggable device from user space by means of generic uio platform driver using below device
tree configuration. (following https://yurovsky.github.io/2014/10/10/linux-uio-gpio-interrupt/)

        user_io@0 {
            compatible = "mydevice,generic-uio,ui_pdrv";
            status = "okay";
            interrupt-parent = <&mygpio>;
            interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
        };

Running modprobe uio_pdrv_genirq of_id="mydevice,generic-uio,ui_pdrv" and creating /dev/uio0 using mknod (major number from cat /proc/devices | grep uio),
I couldn't see an irq entry bind to uio driver under /proc/interrupts.
Am I doing anything wrong here?

Other method I have tried to get notified of the gpio pin0 interrupt in user space is to poll on /sys/class/gpio/gpio0/value. But merely exporting gpio0 
wasn't sufficient as kernel should make a call to request_irq on the gpio0 interrupt line. Is there a generic driver framework (like pinctrl) that can export
a device node to register the gpio pin0 as an interrupt source that allows me to poll on its sysfs entry?

Thanks,
Rajasekhar
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux