Hi, I am trying to make Linux-6.3.5 working on Olimex/Sunxi A20 SOM with NAND. Found that the Sunxi A20 NAND is supported in mainline kernel (drivers/mtd/nand/raw/sunxi_nand.c) and following the guidelines here (https://linux-sunxi.org/Mainline_NAND_Howto); I added the NFC chip pin information in sunxi-a20.dtsi and defined/enabled the nfc controller in the sunxi-a20-olinuxino-micro.dts files. The changes I made are below. Problem is when I define the nfc node entry in dts file "without" pinctrl entry (pinctrl-0 = <&nand_pins_a>, <&nand_cs0_pins_a>, <&nand_rb0_pins_a>;), the sunxi_nfc_probe function is called (though the No NAND chip is detected). And if I define the pinctrl-0 in the nfc node, all I see related to NAND/sunxi in the kernel boot log is this line: platform 1c03000.nand-controller: deferred probe pending. Can someone please guide me why the deferred probe is pending but never call the sunxi_nfc_probe function? And without pinctrl-0 entry why probe function is being called? Seems like I am missing something basic here and any pointers to debug this will be appreciated. --- linux-6.3.5.orig/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts 2023-05-30 14:17:29.000000000 +0100 +++ linux-6.3.5/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts 2023-08-13 23:27:22.405058025 +0100 @@ -56,7 +56,7 @@ aliases { serial0 = &uart0; - serial1 = &uart6; + serial1 = &uart2; serial2 = &uart7; spi0 = &spi1; spi1 = &spi2; @@ -66,17 +66,6 @@ stdout-path = "serial0:115200n8"; }; - hdmi-connector { - compatible = "hdmi-connector"; - type = "a"; - - port { - hdmi_con_in: endpoint { - remote-endpoint = <&hdmi_out_con>; - }; - }; - }; - leds { compatible = "gpio-leds"; pinctrl-names = "default"; @@ -90,16 +79,55 @@ }; }; -&ahci { - target-supply = <®_ahci_5v>; +&nfc { + pinctrl-names = "default"; + pinctrl-0 = <&nand_pins_a>, <&nand_cs0_pins_a>, <&nand_rb0_pins_a>; status = "okay"; + + nand@0 { + #address-cells = <2>; + #size-cells = <2>; + reg = <0>; + allwinner,rb = <0>; + + nand-ecc-mode = "hw"; + nand-on-flash-bbt; + }; + + boot0@0 { + label = "boot0"; + reg = /bits/ 64 <0x0 0x200000>; + }; + + boot0-rescue@200000 { + label = "boot0-rescue"; + reg = /bits/ 64 <0x200000 0x200000>; + }; + + uboot@400000 { + label = "uboot"; + reg = /bits/ 64 <0x400000 0x200000>; + }; + + uboot-rescue@600000 { + label = "uboot-rescue"; + reg = /bits/ 64 <0x600000 0x200000>; + }; + + main@800000 { + label = "main"; + reg = /bits/ 64 <0x800000 0xff800000>; + }; + }; -&codec { +&ahci { + target-supply = <®_ahci_5v>; status = "okay"; }; &cpu0 { + clock-frequency = <900000000>; cpu-supply = <®_dcdc2>; }; @@ -123,34 +151,24 @@ status = "okay"; }; -&hdmi { - status = "okay"; -}; - -&hdmi_out { - hdmi_out_con: endpoint { - remote-endpoint = <&hdmi_con_in>; - }; -}; - &i2c0 { - status = "okay"; + status = "okay"; - axp209: pmic@34 { - reg = <0x34>; - interrupt-parent = <&nmi_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - }; + axp209: pmic@34 { + reg = <0x34>; + interrupt-parent = <&nmi_intc>; + interrupts = <0 IRQ_TYPE_LEVEL_LOW>; + }; }; &i2c1 { - status = "okay"; + status = "okay"; - eeprom: eeprom@50 { - compatible = "atmel,24c16"; - reg = <0x50>; - pagesize = <16>; - }; + eeprom: eeprom@50 { + compatible = "atmel,24c16"; + reg = <0x50>; + pagesize = <16>; + }; }; &i2c2 { @@ -160,55 +178,6 @@ &lradc { vref-supply = <®_vcc3v0>; status = "okay"; - - button-191 { - label = "Volume Up"; - linux,code = <KEY_VOLUMEUP>; - channel = <0>; - voltage = <191274>; - }; - - button-392 { - label = "Volume Down"; - linux,code = <KEY_VOLUMEDOWN>; - channel = <0>; - voltage = <392644>; - }; - - button-601 { - label = "Menu"; - linux,code = <KEY_MENU>; - channel = <0>; - voltage = <601151>; - }; - - button-795 { - label = "Search"; - linux,code = <KEY_SEARCH>; - channel = <0>; - voltage = <795090>; - }; - - button-987 { - label = "Home"; - linux,code = <KEY_HOMEPAGE>; - channel = <0>; - voltage = <987387>; - }; - - button-1184 { - label = "Esc"; - linux,code = <KEY_ESC>; - channel = <0>; - voltage = <1184678>; - }; - - button-1398 { - label = "Enter"; - linux,code = <KEY_ENTER>; - channel = <0>; - voltage = <1398804>; - }; }; &gmac_mdio { @@ -239,10 +208,6 @@ status = "okay"; }; -&otg_sram { - status = "okay"; -}; - &pio { gmac_txerr: gmac-txerr-pin { pins = "PA17"; @@ -323,9 +288,9 @@ status = "okay"; }; -&uart6 { +&uart2 { pinctrl-names = "default"; - pinctrl-0 = <&uart6_pi_pins>; + pinctrl-0 = <&uart2_pi_pins>; status = "okay"; }; @@ -352,3 +317,28 @@ usb2_vbus-supply = <®_usb2_vbus>; status = "okay"; }; + +&fe0 { + status = "disabled"; +}; + +&fe1 { + status = "disabled"; +}; + +&be0 { + status = "disabled"; +}; + +&be1 { + status = "disabled"; +}; + +&tcon0 { + status = "disabled"; +}; + +&tcon1 { + status = "disabled"; +}; + --- linux-6.3.5.orig/arch/arm/boot/dts/sun7i-a20.dtsi 2023-05-30 14:17:29.000000000 +0100 +++ linux-6.3.5/arch/arm/boot/dts/sun7i-a20.dtsi 2023-08-08 00:30:04.689288733 +0100 @@ -345,6 +345,58 @@ #size-cells = <0>; }; + nand_pins_a: nand_base0@0 { + allwinner,pins = "PC0", "PC1", "PC2", + "PC5", "PC8", "PC9", "PC10", + "PC11", "PC12", "PC13", "PC14", + "PC15", "PC16"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_cs0_pins_a: nand_cs@0 { + allwinner,pins = "PC4"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_cs1_pins_a: nand_cs@1 { + allwinner,pins = "PC3"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_cs2_pins_a: nand_cs@2 { + allwinner,pins = "PC17"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_cs3_pins_a: nand_cs@3 { + allwinner,pins = "PC18"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_rb0_pins_a: nand_rb@0 { + allwinner,pins = "PC6"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_rb1_pins_a: nand_rb@1 { + allwinner,pins = "PC7"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + spi0: spi@1c05000 { compatible = "allwinner,sun4i-a10-spi"; reg = <0x01c05000 0x1000>; Thanks and regards, -- Fawad Lateef
--- linux-6.3.5.orig/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts 2023-05-30 14:17:29.000000000 +0100 +++ linux-6.3.5/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts 2023-08-13 23:27:22.405058025 +0100 @@ -56,7 +56,7 @@ aliases { serial0 = &uart0; - serial1 = &uart6; + serial1 = &uart2; serial2 = &uart7; spi0 = &spi1; spi1 = &spi2; @@ -66,17 +66,6 @@ stdout-path = "serial0:115200n8"; }; - hdmi-connector { - compatible = "hdmi-connector"; - type = "a"; - - port { - hdmi_con_in: endpoint { - remote-endpoint = <&hdmi_out_con>; - }; - }; - }; - leds { compatible = "gpio-leds"; pinctrl-names = "default"; @@ -90,16 +79,55 @@ }; }; -&ahci { - target-supply = <®_ahci_5v>; +&nfc { + pinctrl-names = "default"; + pinctrl-0 = <&nand_pins_a>, <&nand_cs0_pins_a>, <&nand_rb0_pins_a>; status = "okay"; + + nand@0 { + #address-cells = <2>; + #size-cells = <2>; + reg = <0>; + allwinner,rb = <0>; + + nand-ecc-mode = "hw"; + nand-on-flash-bbt; + }; + + boot0@0 { + label = "boot0"; + reg = /bits/ 64 <0x0 0x200000>; + }; + + boot0-rescue@200000 { + label = "boot0-rescue"; + reg = /bits/ 64 <0x200000 0x200000>; + }; + + uboot@400000 { + label = "uboot"; + reg = /bits/ 64 <0x400000 0x200000>; + }; + + uboot-rescue@600000 { + label = "uboot-rescue"; + reg = /bits/ 64 <0x600000 0x200000>; + }; + + main@800000 { + label = "main"; + reg = /bits/ 64 <0x800000 0xff800000>; + }; + }; -&codec { +&ahci { + target-supply = <®_ahci_5v>; status = "okay"; }; &cpu0 { + clock-frequency = <900000000>; cpu-supply = <®_dcdc2>; }; @@ -123,34 +151,24 @@ status = "okay"; }; -&hdmi { - status = "okay"; -}; - -&hdmi_out { - hdmi_out_con: endpoint { - remote-endpoint = <&hdmi_con_in>; - }; -}; - &i2c0 { - status = "okay"; + status = "okay"; - axp209: pmic@34 { - reg = <0x34>; - interrupt-parent = <&nmi_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - }; + axp209: pmic@34 { + reg = <0x34>; + interrupt-parent = <&nmi_intc>; + interrupts = <0 IRQ_TYPE_LEVEL_LOW>; + }; }; &i2c1 { - status = "okay"; + status = "okay"; - eeprom: eeprom@50 { - compatible = "atmel,24c16"; - reg = <0x50>; - pagesize = <16>; - }; + eeprom: eeprom@50 { + compatible = "atmel,24c16"; + reg = <0x50>; + pagesize = <16>; + }; }; &i2c2 { @@ -160,55 +178,6 @@ &lradc { vref-supply = <®_vcc3v0>; status = "okay"; - - button-191 { - label = "Volume Up"; - linux,code = <KEY_VOLUMEUP>; - channel = <0>; - voltage = <191274>; - }; - - button-392 { - label = "Volume Down"; - linux,code = <KEY_VOLUMEDOWN>; - channel = <0>; - voltage = <392644>; - }; - - button-601 { - label = "Menu"; - linux,code = <KEY_MENU>; - channel = <0>; - voltage = <601151>; - }; - - button-795 { - label = "Search"; - linux,code = <KEY_SEARCH>; - channel = <0>; - voltage = <795090>; - }; - - button-987 { - label = "Home"; - linux,code = <KEY_HOMEPAGE>; - channel = <0>; - voltage = <987387>; - }; - - button-1184 { - label = "Esc"; - linux,code = <KEY_ESC>; - channel = <0>; - voltage = <1184678>; - }; - - button-1398 { - label = "Enter"; - linux,code = <KEY_ENTER>; - channel = <0>; - voltage = <1398804>; - }; }; &gmac_mdio { @@ -239,10 +208,6 @@ status = "okay"; }; -&otg_sram { - status = "okay"; -}; - &pio { gmac_txerr: gmac-txerr-pin { pins = "PA17"; @@ -323,9 +288,9 @@ status = "okay"; }; -&uart6 { +&uart2 { pinctrl-names = "default"; - pinctrl-0 = <&uart6_pi_pins>; + pinctrl-0 = <&uart2_pi_pins>; status = "okay"; }; @@ -352,3 +317,28 @@ usb2_vbus-supply = <®_usb2_vbus>; status = "okay"; }; + +&fe0 { + status = "disabled"; +}; + +&fe1 { + status = "disabled"; +}; + +&be0 { + status = "disabled"; +}; + +&be1 { + status = "disabled"; +}; + +&tcon0 { + status = "disabled"; +}; + +&tcon1 { + status = "disabled"; +}; +
--- linux-6.3.5.orig/arch/arm/boot/dts/sun7i-a20.dtsi 2023-05-30 14:17:29.000000000 +0100 +++ linux-6.3.5/arch/arm/boot/dts/sun7i-a20.dtsi 2023-08-08 00:30:04.689288733 +0100 @@ -345,6 +345,58 @@ #size-cells = <0>; }; + nand_pins_a: nand_base0@0 { + allwinner,pins = "PC0", "PC1", "PC2", + "PC5", "PC8", "PC9", "PC10", + "PC11", "PC12", "PC13", "PC14", + "PC15", "PC16"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_cs0_pins_a: nand_cs@0 { + allwinner,pins = "PC4"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_cs1_pins_a: nand_cs@1 { + allwinner,pins = "PC3"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_cs2_pins_a: nand_cs@2 { + allwinner,pins = "PC17"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_cs3_pins_a: nand_cs@3 { + allwinner,pins = "PC18"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_rb0_pins_a: nand_rb@0 { + allwinner,pins = "PC6"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + nand_rb1_pins_a: nand_rb@1 { + allwinner,pins = "PC7"; + allwinner,function = "nand0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + spi0: spi@1c05000 { compatible = "allwinner,sun4i-a10-spi"; reg = <0x01c05000 0x1000>;
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies