diff --git a/arch/arm/boot/dts/amlogic/t6w_pxp.dts b/arch/arm/boot/dts/amlogic/t6w_pxp.dts index 6918a7e7e..9dd740bf4 100644 --- a/arch/arm/boot/dts/amlogic/t6w_pxp.dts +++ b/arch/arm/boot/dts/amlogic/t6w_pxp.dts @@ -1047,7 +1047,7 @@ &spicc1 { //for UWB/LocalDimm status = "disabled";/* disabled as default */ - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_z>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_3g.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_3g.dts index 7abf1969c..3c978a2a0 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_3g.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_3g.dts @@ -1063,7 +1063,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_3g_R.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_3g_R.dts index 57dacbed9..b41dfd640 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_3g_R.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_3g_R.dts @@ -1060,7 +1060,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_4g.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_4g.dts index c0fa0c48e..6739c0b80 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_4g.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_4g.dts @@ -1070,7 +1070,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_4g_R.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_4g_R.dts index cec88cf70..a31071196 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_4g_R.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs301_4g_R.dts @@ -1072,7 +1072,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_3g.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_3g.dts index e61450ca2..9797ef16a 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_3g.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_3g.dts @@ -1098,7 +1098,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_3g_R.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_3g_R.dts index 149d4e0c8..c74dc7fb6 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_3g_R.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_3g_R.dts @@ -1095,7 +1095,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_4g.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_4g.dts index 94f027d5f..46e01dd7a 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_4g.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_4g.dts @@ -1104,7 +1104,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_4g_R.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_4g_R.dts index 69727859a..7c0fd3c9d 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_4g_R.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs309_4g_R.dts @@ -1106,7 +1106,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_1.5g.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_1.5g.dts index 85adce2b2..bd36a0cc2 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_1.5g.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_1.5g.dts @@ -1072,7 +1072,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_2g.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_2g.dts index 6b48208b8..32c7b36f4 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_2g.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_2g.dts @@ -1074,7 +1074,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_2g_R.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_2g_R.dts index 09782ebbb..c91e5c03c 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_2g_R.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs311_2g_R.dts @@ -1073,7 +1073,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_1.5g.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_1.5g.dts index b7d9d1f8c..945b55592 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_1.5g.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_1.5g.dts @@ -1105,7 +1105,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_1g.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_1g.dts index 19f65fa75..b745e1b88 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_1g.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_1g.dts @@ -1106,7 +1106,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_2g.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_2g.dts index a07915fdc..5703bcb01 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_2g.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_2g.dts @@ -1107,7 +1107,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_2g_R.dts b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_2g_R.dts index 0e6837f91..1ca7aa6a6 100644 --- a/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_2g_R.dts +++ b/arch/arm64/boot/dts/amlogic/t6w_t963d5_bs319_2g_R.dts @@ -1105,7 +1105,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301.dts b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301.dts index d74713888..c402c4efa 100644 --- a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301.dts +++ b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301.dts @@ -919,7 +919,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_2g.dts b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_2g.dts index 90e097083..45a7fedcb 100644 --- a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_2g.dts +++ b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_2g.dts @@ -918,7 +918,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_3g.dts b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_3g.dts index 8ae586df7..862fb2ec8 100644 --- a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_3g.dts +++ b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_3g.dts @@ -918,7 +918,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_linux.dts b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_linux.dts index 67ff5c32c..167b7fe2c 100644 --- a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_linux.dts +++ b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu301_linux.dts @@ -920,7 +920,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309.dts b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309.dts index dbbdb7ec3..f198e10d0 100644 --- a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309.dts +++ b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309.dts @@ -921,7 +921,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_3g.dts b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_3g.dts index 0b6f03247..fea94c0eb 100644 --- a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_3g.dts +++ b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_3g.dts @@ -920,7 +920,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_4g.dts b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_4g.dts index 9f5a92def..2eab3e5af 100644 --- a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_4g.dts +++ b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_4g.dts @@ -921,7 +921,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_5g.dts b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_5g.dts index 8d2d9afcb..8f7ffe347 100644 --- a/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_5g.dts +++ b/arch/arm64/boot/dts/amlogic/t6x_t966d5_bu309_5g.dts @@ -921,7 +921,7 @@ &spicc1 { //for UWB/LocalDimm status = "okay"; - pinctrl-names = "default"; + pinctrl-names = "spi_pinmux"; //Compatible with BCON pinctrl-0 = <&spicc1_pins_h>; }; diff --git a/drivers/spi/spi-meson-spicc-v2.c b/drivers/spi/spi-meson-spicc-v2.c index 0ce792cdd..e2508b930 100644 --- a/drivers/spi/spi-meson-spicc-v2.c +++ b/drivers/spi/spi-meson-spicc-v2.c @@ -212,6 +212,8 @@ struct spicc_device { struct spi_controller *controller; struct platform_device *pdev; void __iomem *base; + struct pinctrl *pinctrl; + struct pinctrl_state *spi_pinmux; struct clk *sys_clk; struct clk *spi_clk; struct clk *sclk; @@ -1053,10 +1055,21 @@ static int meson_spicc_setup(struct spi_device *spi) #ifdef MESON_SPICC_HW_IF struct spicc_device *spicc; struct spicc_controller_data *cdata; + int ret = 0; spicc = spi_controller_get_devdata(spi->controller); cdata = (struct spicc_controller_data *)spi->controller_data; if (cdata) { + spicc->spi_pinmux = pinctrl_lookup_state(spicc->pinctrl, "spi_pinmux"); + if (IS_ERR_OR_NULL(spicc->spi_pinmux)) { + dev_warn(&spicc->pdev->dev, "no spi_pinmux pinctrl(Maybe not error)\n"); + } else { + ret = pinctrl_select_state(spicc->pinctrl, spicc->spi_pinmux); + if (ret) { + dev_err(&spicc->pdev->dev, "failed to activate spi_pinmux pinctrl state\n"); + return ret; + } + } cdata->controller_version = CONTROLLER_SPISG; cdata->controller_capabilities = CAP_DMA_TRIG_VSYNC | CAP_DMA_TRIG_PWM_VS | CAP_TRIG_DELAY; @@ -1552,6 +1565,12 @@ static int meson_spicc_probe(struct platform_device *pdev) dev_info(&pdev->dev, "trig resource %ps\n", spicc->trig_reg); } + spicc->pinctrl = devm_pinctrl_get(&pdev->dev); + if (IS_ERR_OR_NULL(spicc->pinctrl)) { + dev_err(&pdev->dev, "get pinctrl fail\n"); + return PTR_ERR(spicc->pinctrl); + } + irq = platform_get_irq(pdev, 0); if (irq < 0) { ret = irq;