Hello dear support,
I would like to add a rotary encoder to my 6.4 upstream image. I have compiled my kernel and added Rotary Encoders. This is my customized device tree overlays:
/ {
rotary@1 {
compatible = "rotary-encoder";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_rotary_encoder1>;
gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>, <&gpio1 14 GPIO_ACTIVE_HIGH>;
linux,axis = <0>; /* REL_X */
rotary-encoder,encoding = "gray";
rotary-encoder,relative-axis;
status = "okay";
};
rotary@2 {
compatible = "rotary-encoder";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_rotary_encoder2>;
gpios = <&gpio6 10 GPIO_ACTIVE_HIGH>, <&gpio6 8 GPIO_ACTIVE_HIGH>;
linux,axis = <0>; /* REL_X */
rotary-encoder,encoding = "gray";
rotary-encoder,relative-axis;
status = "okay";
};
&iomuxc{
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio
&pinctrl_i2c_1
&pinctrl_rotary_encoder1
&pinctrl_rotary_encoder2
>;
pinctrl_rotary_encoder1: rotaryencoder1grp {
fsl,pins = <
MX6QDL_PAD_SD2_DAT1__GPIO1_IO14 0x1b0b0 /*SODIMM 106*/
MX6QDL_PAD_SD2_DAT2__GPIO1_IO13 0x1b0b0 /*SODIMM 130 LCD IRQ*/
>;
};
pinctrl_rotary_encoder2: rotaryencoder2grp {
fsl,pins = <
MX6QDL_PAD_NANDF_RB0__GPIO6_IO10 0x1b0b0 /*SODIMM 158*/
MX6QDL_PAD_NANDF_ALE__GPIO6_IO08 0x1b0b0 /*SODIMM 160*/
>;
};
The dmesg output is empty when running dmesg | grep rotary
, and there is nothing in /dev/input/
related to the rotary encoder.
i have followed these steps : Verdin Development Board -- driver for rotary encoder - #9 by allanbic
Can you please help me identify what might be incorrect?
I am using Colibri IMX6 + BSP6.4 upstream Yocto reference + Iris carrier board.
hi again
is there any update on this post?
Hello @me_ahani98 ,
could you try this modified overlay and check if it works?
&{/} {
rotary@1 {
compatible = "rotary-encoder";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_rotary_encoder1>;
gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>, <&gpio1 14 GPIO_ACTIVE_HIGH>;
linux,axis = <0>; /* REL_X */
rotary-encoder,encoding = "gray";
rotary-encoder,relative-axis;
status = "okay";
};
rotary@2 {
compatible = "rotary-encoder";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_rotary_encoder2>;
gpios = <&gpio6 10 GPIO_ACTIVE_HIGH>, <&gpio6 8 GPIO_ACTIVE_HIGH>;
linux,axis = <0>; /* REL_X */
rotary-encoder,encoding = "gray";
rotary-encoder,relative-axis;
status = "okay";
};
&iomuxc{
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio
&pinctrl_i2c_1
&pinctrl_rotary_encoder1
&pinctrl_rotary_encoder2
>;
pinctrl_rotary_encoder1: rotaryencoder1grp {
fsl,pins = <
MX6QDL_PAD_SD2_DAT1__GPIO1_IO14 0x1b0b0 /*SODIMM 106*/
MX6QDL_PAD_SD2_DAT2__GPIO1_IO13 0x1b0b0 /*SODIMM 130 LCD IRQ*/
>;
};
pinctrl_rotary_encoder2: rotaryencoder2grp {
fsl,pins = <
MX6QDL_PAD_NANDF_RB0__GPIO6_IO10 0x1b0b0 /*SODIMM 158*/
MX6QDL_PAD_NANDF_ALE__GPIO6_IO08 0x1b0b0 /*SODIMM 160*/
>;
};
Best regards,
Josep
dear @josep.tx
I would appreciate your kind response
I have changeی to this and everything is working fine now:
&{/}{
rotary@1 {
compatible = "rotary-encoder";
// pinctrl-names = "default"; //ISSUE! already requested by 20e0000.pinctrl!!!
// pinctrl-0 = <&pinctrl_rotary_encoder1>;
gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>,<&gpio1 13 GPIO_ACTIVE_HIGH>;
linux,axis = <0>; /* REL_X */
rotary-encoder,encoding = "gray";
rotary-encoder,relative-axis;
status = "okay";
};
rotary@2 {
compatible = "rotary-encoder";
// pinctrl-names = "default";
// pinctrl-0 = <&pinctrl_rotary_encoder2>;
gpios = <&gpio6 10 GPIO_ACTIVE_HIGH>, <&gpio6 8 GPIO_ACTIVE_HIGH>;
linux,axis = <0>; /* REL_X */
rotary-encoder,encoding = "gray";
rotary-encoder,relative-axis;
status = "okay";
};
};