LKML Archive on lore.kernel.org help / color / mirror / Atom feed
* [PATCH 0/4] arm64: meson-g12: enable support for SPIFC @ 2020-03-13 9:07 Neil Armstrong 2020-03-13 9:07 ` [PATCH 1/4] arm64: dts: meson-g12: split emmc pins to select 4 or 8 bus width Neil Armstrong ` (3 more replies) 0 siblings, 4 replies; 5+ messages in thread From: Neil Armstrong @ 2020-03-13 9:07 UTC (permalink / raw) To: khilman; +Cc: linux-amlogic, linux-arm-kernel, linux-kernel, Neil Armstrong On the Amlogic G12A and compatible SoCs, the SPI NOR pins are shared with the eMMC data 4 to 7 pins, thus the DT needs some tweaking to allow setting on the data 0 to 3 pins for the eMMC controller to enable the eMMC in the same time as the SPIFC controller. Since this lowers the performance of the eMMC, the SPIFC is left disabled and intructions to enable the SPIFC controller as added like done for the Khadas VIM2 SPIFC support. This adds SPI NOR support for Khadas VIM3 boards (S922X, A311A and S905D3) and Odroid-N2 using the same scheme. Neil Armstrong (4): arm64: dts: meson-g12: split emmc pins to select 4 or 8 bus width arm64: dts: meson-g12: add the SPIFC nodes arm64: dts: khadas-vim3: add SPIFC controller node arm64: dts: meson-g12b-odroid-n2: add SPIFC controller node .../boot/dts/amlogic/meson-g12-common.dtsi | 60 +++++++++++++++---- .../boot/dts/amlogic/meson-g12a-sei510.dts | 2 +- .../boot/dts/amlogic/meson-g12a-u200.dts | 2 +- .../boot/dts/amlogic/meson-g12a-x96-max.dts | 2 +- .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 23 ++++++- .../boot/dts/amlogic/meson-g12b-ugoos-am6.dts | 2 +- .../boot/dts/amlogic/meson-khadas-vim3.dtsi | 22 ++++++- .../boot/dts/amlogic/meson-sm1-sei610.dts | 2 +- 8 files changed, 98 insertions(+), 17 deletions(-) -- 2.22.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/4] arm64: dts: meson-g12: split emmc pins to select 4 or 8 bus width 2020-03-13 9:07 [PATCH 0/4] arm64: meson-g12: enable support for SPIFC Neil Armstrong @ 2020-03-13 9:07 ` Neil Armstrong 2020-03-13 9:07 ` [PATCH 2/4] arm64: dts: meson-g12: add the SPIFC nodes Neil Armstrong ` (2 subsequent siblings) 3 siblings, 0 replies; 5+ messages in thread From: Neil Armstrong @ 2020-03-13 9:07 UTC (permalink / raw) To: khilman; +Cc: linux-amlogic, linux-arm-kernel, linux-kernel, Neil Armstrong The Khadas VIM3 shares the eMMC pins 4 to 7 with the SPI NOR, in order to enable the eMMC and the SPI NOR interface, we need to omit the 4 last pins from the eMMC pinctrl. As it was done for the Khadas VIM2, split the eMMC pinctrls in ctrl, data and ds pins with either 4bits data or 8bits data, and update the current board accordingly. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- .../boot/dts/amlogic/meson-g12-common.dtsi | 40 ++++++++++++++----- .../boot/dts/amlogic/meson-g12a-sei510.dts | 2 +- .../boot/dts/amlogic/meson-g12a-u200.dts | 2 +- .../boot/dts/amlogic/meson-g12a-x96-max.dts | 2 +- .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 2 +- .../boot/dts/amlogic/meson-g12b-ugoos-am6.dts | 2 +- .../boot/dts/amlogic/meson-khadas-vim3.dtsi | 2 +- .../boot/dts/amlogic/meson-sm1-sei610.dts | 2 +- 8 files changed, 37 insertions(+), 17 deletions(-) diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi index 87b9a47a51b9..d09efb86ec33 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi @@ -295,17 +295,9 @@ }; }; - emmc_pins: emmc { + emmc_ctrl_pins: emmc-ctrl { mux-0 { - groups = "emmc_nand_d0", - "emmc_nand_d1", - "emmc_nand_d2", - "emmc_nand_d3", - "emmc_nand_d4", - "emmc_nand_d5", - "emmc_nand_d6", - "emmc_nand_d7", - "emmc_cmd"; + groups = "emmc_cmd"; function = "emmc"; bias-pull-up; drive-strength-microamp = <4000>; @@ -319,6 +311,34 @@ }; }; + emmc_data_4b_pins: emmc-data-4b { + mux-0 { + groups = "emmc_nand_d0", + "emmc_nand_d1", + "emmc_nand_d2", + "emmc_nand_d3"; + function = "emmc"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + }; + + emmc_data_8b_pins: emmc-data-8b { + mux-0 { + groups = "emmc_nand_d0", + "emmc_nand_d1", + "emmc_nand_d2", + "emmc_nand_d3", + "emmc_nand_d4", + "emmc_nand_d5", + "emmc_nand_d6", + "emmc_nand_d7"; + function = "emmc"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + }; + emmc_ds_pins: emmc-ds { mux { groups = "emmc_nand_ds"; diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts index 168f460e11fa..b00d0468c753 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts +++ b/arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts @@ -472,7 +472,7 @@ /* eMMC */ &sd_emmc_c { status = "okay"; - pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; + pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; pinctrl-1 = <&emmc_clk_gate_pins>; pinctrl-names = "default", "clk-gate"; diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts index 2a324f0136e3..a26bfe72550f 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts +++ b/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts @@ -271,7 +271,7 @@ /* eMMC */ &sd_emmc_c { status = "okay"; - pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; + pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; pinctrl-1 = <&emmc_clk_gate_pins>; pinctrl-names = "default", "clk-gate"; diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts index 4f2596d82989..1b07c8c06eac 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts +++ b/arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts @@ -443,7 +443,7 @@ /* eMMC */ &sd_emmc_c { status = "okay"; - pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; + pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; pinctrl-1 = <&emmc_clk_gate_pins>; pinctrl-names = "default", "clk-gate"; diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts index 8830d3844885..b59ae1a297f2 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts @@ -435,7 +435,7 @@ /* eMMC */ &sd_emmc_c { status = "okay"; - pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; + pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; pinctrl-1 = <&emmc_clk_gate_pins>; pinctrl-names = "default", "clk-gate"; diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts index ccd0bced01e8..325e448eb09c 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts @@ -485,7 +485,7 @@ /* eMMC */ &sd_emmc_c { status = "okay"; - pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; + pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; pinctrl-1 = <&emmc_clk_gate_pins>; pinctrl-names = "default", "clk-gate"; diff --git a/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi b/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi index 90815fa25ec6..b6f22a0bd318 100644 --- a/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi @@ -312,7 +312,7 @@ /* eMMC */ &sd_emmc_c { status = "okay"; - pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; + pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; pinctrl-1 = <&emmc_clk_gate_pins>; pinctrl-names = "default", "clk-gate"; diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts index a8bb3fa9fec9..71cc730a4913 100644 --- a/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts +++ b/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts @@ -518,7 +518,7 @@ /* eMMC */ &sd_emmc_c { status = "okay"; - pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; + pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; pinctrl-1 = <&emmc_clk_gate_pins>; pinctrl-names = "default", "clk-gate"; -- 2.22.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/4] arm64: dts: meson-g12: add the SPIFC nodes 2020-03-13 9:07 [PATCH 0/4] arm64: meson-g12: enable support for SPIFC Neil Armstrong 2020-03-13 9:07 ` [PATCH 1/4] arm64: dts: meson-g12: split emmc pins to select 4 or 8 bus width Neil Armstrong @ 2020-03-13 9:07 ` Neil Armstrong 2020-03-13 9:07 ` [PATCH 3/4] arm64: dts: khadas-vim3: add SPIFC controller node Neil Armstrong 2020-03-13 9:07 ` [PATCH 4/4] arm64: dts: meson-g12b-odroid-n2: " Neil Armstrong 3 siblings, 0 replies; 5+ messages in thread From: Neil Armstrong @ 2020-03-13 9:07 UTC (permalink / raw) To: khilman; +Cc: linux-amlogic, linux-arm-kernel, linux-kernel, Neil Armstrong Add the controller and pinctrl nodes to enable the SPI Flash Controller on the Amlogic G12A and compatible SoCs. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- .../boot/dts/amlogic/meson-g12-common.dtsi | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi index d09efb86ec33..56a9f8eadf01 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi @@ -593,6 +593,17 @@ }; }; + nor_pins: nor { + mux { + groups = "nor_d", + "nor_q", + "nor_c", + "nor_cs"; + function = "nor"; + bias-disable; + }; + }; + pdm_din0_a_pins: pdm-din0-a { mux { groups = "pdm_din0_a"; @@ -2071,6 +2082,15 @@ amlogic,channel-interrupts = <64 65 66 67 68 69 70 71>; }; + spifc: spi@14000 { + compatible = "amlogic,meson-gxbb-spifc"; + status = "disabled"; + reg = <0x0 0x14000 0x0 0x80>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_CLK81>; + }; + pwm_ef: pwm@19000 { compatible = "amlogic,meson-g12a-ee-pwm"; reg = <0x0 0x19000 0x0 0x20>; -- 2.22.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/4] arm64: dts: khadas-vim3: add SPIFC controller node 2020-03-13 9:07 [PATCH 0/4] arm64: meson-g12: enable support for SPIFC Neil Armstrong 2020-03-13 9:07 ` [PATCH 1/4] arm64: dts: meson-g12: split emmc pins to select 4 or 8 bus width Neil Armstrong 2020-03-13 9:07 ` [PATCH 2/4] arm64: dts: meson-g12: add the SPIFC nodes Neil Armstrong @ 2020-03-13 9:07 ` Neil Armstrong 2020-03-13 9:07 ` [PATCH 4/4] arm64: dts: meson-g12b-odroid-n2: " Neil Armstrong 3 siblings, 0 replies; 5+ messages in thread From: Neil Armstrong @ 2020-03-13 9:07 UTC (permalink / raw) To: khilman; +Cc: linux-amlogic, linux-arm-kernel, linux-kernel, Neil Armstrong Add disabled SPIFC controller node with instruction on how to enable it while lowering capabilities of the eMMC controller from 8bits bus width to 4bits bus width, it's data pins 4 to 7 being shared with the SPI NOR controller pins. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- .../boot/dts/amlogic/meson-khadas-vim3.dtsi | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi b/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi index b6f22a0bd318..f09854560938 100644 --- a/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi @@ -328,6 +328,26 @@ vqmmc-supply = <&emmc_1v8>; }; +/* + * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR CS + * and eMMC Data 4 to 7 pins. + * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0, + * and change bus-width to 4 then spifc can be enabled. + */ +&spifc { + status = "disabled"; + pinctrl-0 = <&nor_pins>; + pinctrl-names = "default"; + + w25q32: spi-flash@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "winbond,w25q128fw", "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <104000000>; + }; +}; + &uart_A { status = "okay"; pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; -- 2.22.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 4/4] arm64: dts: meson-g12b-odroid-n2: add SPIFC controller node 2020-03-13 9:07 [PATCH 0/4] arm64: meson-g12: enable support for SPIFC Neil Armstrong ` (2 preceding siblings ...) 2020-03-13 9:07 ` [PATCH 3/4] arm64: dts: khadas-vim3: add SPIFC controller node Neil Armstrong @ 2020-03-13 9:07 ` Neil Armstrong 3 siblings, 0 replies; 5+ messages in thread From: Neil Armstrong @ 2020-03-13 9:07 UTC (permalink / raw) To: khilman; +Cc: linux-amlogic, linux-arm-kernel, linux-kernel, Neil Armstrong Add disabled SPIFC controller node with instruction on how to enable it while lowering capabilities of the eMMC controller from 8bits bus width to 4bits bus width, it's data pins 4 to 7 being shared with the SPI NOR controller pins. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts index b59ae1a297f2..169ea283d4ee 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts @@ -451,6 +451,27 @@ vqmmc-supply = <&flash_1v8>; }; +/* + * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR pins + * and eMMC Data 4 to 7 pins. + * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0, + * and change bus-width to 4 then spifc can be enabled. + * The SW1 slide should also be set to the correct position. + */ +&spifc { + status = "disabled"; + pinctrl-0 = <&nor_pins>; + pinctrl-names = "default"; + + mx25u64: spi-flash@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "mxicy,mx25u6435f", "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <104000000>; + }; +}; + &tdmif_b { status = "okay"; }; -- 2.22.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-03-13 9:07 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-03-13 9:07 [PATCH 0/4] arm64: meson-g12: enable support for SPIFC Neil Armstrong 2020-03-13 9:07 ` [PATCH 1/4] arm64: dts: meson-g12: split emmc pins to select 4 or 8 bus width Neil Armstrong 2020-03-13 9:07 ` [PATCH 2/4] arm64: dts: meson-g12: add the SPIFC nodes Neil Armstrong 2020-03-13 9:07 ` [PATCH 3/4] arm64: dts: khadas-vim3: add SPIFC controller node Neil Armstrong 2020-03-13 9:07 ` [PATCH 4/4] arm64: dts: meson-g12b-odroid-n2: " Neil Armstrong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).