Hi Team ,
We are interfacing bmi27 into Renesas-rzg2n-yocto-sdk3.0.3-kernel-5.10.158, ported the bmi270 driver into.
driver/hwmon/bmi270 which is hocked onto i2c0 and my dts dts entries is as follows:
&i2c0 { clock-frequency = <400000>; status = "okay"; bmi2xy@69 { label = "GPIO2_04 Interrupt"; compatible = "bosch,bmi2xy"; reg = <0x69>; gpio = <&gpio2 4 GPIO_ACTIVE_LOW>; // gpio = <&gpio2 4 GPIO_ACTIVE_HIGH>; interrupt-parent = <&gpio2>; interrupts = <4 IRQ_TYPE_EDGE_FALLING>; // interrupts = <4 IRQ_TYPE_LEVEL_HIGH>; };};.
The pins used for Interrupts are: GPIO2_04 and GPIO2_03.
When I do the insmod I am getting the following error
root@hihope-rzg2n:~# insmod bmi270_i2c_driver.ko [ 32.801305] [ 32.801305] [I]6<BS_LOG><bmi2xy_probe><3298>bmi2xy sensor probe[ 32.808990] input: bmi2xy as /devices/virtual/input/input0[ 32.827154] [ 32.827154] [D]7<BS_LOG><bmi2xy_request_irq><3232>Interrupt mapped to GPIO Pin: 333[ 32.836434] gpio gpiochip2: (e6052000.gpio): gpiochip_lock_as_irq: tried to flag a GPIO set as output for IRQ[ 32.846403] gpio gpiochip2: (e6052000.gpio): unable to lock HW IRQ 4 for IRQ[ 32.853492] genirq: Failed to request resources for bmi2xy (irq 333) on irqchip gpio-rcar[ 32.861753] [ 32.861753] [E]3<BS_LOG><check_error><60>bmi2xy_request_irq: request IRQ failed with return code: -5[ 32.872477] [ 32.872477] [E]3<BS_LOG><check_error><60>bmi2xy_probe: sensor probe failed with return code: -5[ 32.882781] bmi2xy: probe of 0-0069 failed with error -5root@hihope-rzg2n:~# poweroff.
Please guide me what am I missing here and why interrupt is not getting register here.
Thanks and Regards,
Nagaraja
Hi Nagaraja,The pins you are using for IRQ are GPIO2_04 only. Also, you are using the same pin for GPIO.Please use a different one.Kind Regards.
Hi,
Thanks for the reply,
Acutally My dts entries line below,
&i2c0 { clock-frequency = <400000>; status = "okay"; bmi2xy@69 { label = "GPIO2_04 Interrupt"; compatible = "bosch,bmi2xy"; reg = <0x69>; interrupt-parent = <&intc_ex>; // I can use iinterrupt-parent = <&gpio2>; interrupts = <4 IRQ_TYPE_EDGE_FALLING>; bmi270,gpio_irq = <&gpio2 4 0>; };};
And schematic is :
When I do insert the modules it is saying probe is sucess but not getting any intestrrupt:
GPIO2_04 INT_ACC
GPIO2_03 INT_GYRO.
root@hihope-rzg2n:~/old# insmod bmi270_i2c_driver.ko [ 145.241222] [ 145.241222] [I]6<BS_LOG><bmi2xy_probe><3298>bmi2xy sensor probe[ 145.248896] input: bmi2xy as /devices/virtual/input/input1[ 145.267183] [ 145.267183] [D]7<BS_LOG><bmi2xy_request_irq><3232>Interrupt mapped to GPIO Pin: 333[ 145.276514] [ 145.276514] [I]6<BS_LOG><bmi2xy_probe><3328>sensor bmi2xy probed successfullyroot@hihope-rzg2n:~/old# [ 316.384200] EXT4-fs (mmcblk1p2): error count since last fsck:
only problem I have is not able to get interrupts for the device.
311: 0 0 gpio-rcar 3 Edge ee140000.mmc cd313: 0 0 GIC-0 403 Level ec500000.sound323: 0 0 GIC-0 385 Level ec500000.sound332: 0 0 gpio-rcar 12 Edge ee100000.mmc cd333: 0 0 irqc 4 Edge bmi2xyIPI0: 8440 22158 Rescheduling interruptsIPI1: 315 260 Function call interruptsIPI2: 0 0 CPU stop interruptsIPI3: 0 0 CPU stop (for crash dump) interruptsIPI4: 0 25343 Timer broadcast interruptsIPI5: 1 9 IRQ work interruptsIPI6: 0 0 CPU wake-up interruptsErr: 0root@hihope-rzg2n:~/old#
Please guide is it correct to configure the GPIO2_04 as interrupt like above or something need to be changed
Hi,Please take a look here.Have you tried to probe with a scope to make sure the interrupt is generated?Kind Regards.
Hi Tried as given in the document,
gpio_keys { compatible = "gpio-keys"; pinctrl-names = "default"; // pinctrl-0 = <&pinctrl_gpio_keys>; key1 { label = "GPIO2_04 Interrupt"; gpios = <&gpio2 4 GPIO_ACTIVE_LOW>; // GPIO2_04 // linux,code = <KEY_ENTER>; // Example keycode interrupt-parent = <&gpio2>; interrupts = <4 IRQ_TYPE_EDGE_FALLING>; // Edge type can be rising, falling, or both }; };};/*&pinctrl_gpio_keys: gpio_keys_pins { pins = "GPIO2_04"; function = "gpio2"; bias-pull-up;};*/
&i2c0 { clock-frequency = <400000>; status = "okay"; bmi2xy@69 { label = "GPIO2_04 Interrupt"; compatible = "bosch,bmi2xy"; reg = <0x69>; gpio = <&gpio2 4 GPIO_ACTIVE_LOW>; interrupt-parent = <&intc_ex>; interrupts = <4 IRQ_TYPE_LEVEL_LOW>; // bmi270,gpio_irq = <&gpio2 68 IRQ_TYPE_LEVEL_LOW>; };};
We are not getting any interrupts. And getting below error:
=============================================
root@hihope-rzg2n:~# insmod bmi270_i2c_driver.ko [ 27.604790] [ 27.604790] [I]6<BS_LOG><bmi2xy_probe><3317>bmi2xy sensor probe[ 27.612464] input: bmi2xy as /devices/virtual/input/input0[ 27.630623] [ 27.630623] [I]6<BS_LOG><bmi2xy_request_irq><3234>client_data->gpio_pin 254[ 27.639186] [ 27.639186] [I]6<BS_LOG><bmi2xy_request_irq><3242>gpio_request_one -517[ 27.647390] [ 27.647390] [I]6<BS_LOG><bmi2xy_request_irq><3244>gpio_direction_input -517[ 27.655936] [ 27.655936] [I]6<BS_LOG><bmi2xy_request_irq><3246>client_data->gpio_irq_2 -22[ 27.664649] [ 27.664649] [E]3<BS_LOG><check_error><60>bmi2xy_request_irq: request IRQ failed with return code: -539[ 27.675529] [ 27.675529] [E]3<BS_LOG><check_error><60>bmi2xy_probe: sensor probe failed with return code: -539[ 27.685997] bmi2xy: probe of 0-0069 failed with error -5root@hihope-rzg2n:~# [ 316.383941] EXT4-fs (mmcblk1p2): error count since last fsck: 3
=========================================================
Is the any ways to set GPIO2_04 as input to make it interrupt pin.
Thanks and regards,