mbox series

[v8,0/3] J7200: Add support for GPIO and higher speed modes in MMCSD subsystems

Message ID 20210324063759.5837-1-a-govindraju@ti.com
Headers show
Series J7200: Add support for GPIO and higher speed modes in MMCSD subsystems | expand

Message

Aswath Govindraju March 24, 2021, 6:37 a.m. UTC
The following series of patches
- Add support for GPIO subsystem in main and wakeup domains.
- Add voltage regulator device tree nodes and their corresponding pinmux
  to support power cycle and voltage switch required for UHS-I modes
- sets respective tags in sdhci0 node to support higher speeds
- remove no-1-8-v tag from sdhci1 node to support UHS-I modes
- Update delay values for various speed modes supported.


test logs
- eMMC HS400 speed mode
  https://pastebin.ubuntu.com/p/pRzV2ZvSJZ/

- SD SDR104 speed mode
  https://pastebin.ubuntu.com/p/n64PNdDy2v/  
  
- GPIO logs
  https://pastebin.ubuntu.com/p/HDBBMwMcdj/

Changes since v7:
- Added the voltage regulator nodes to indicate the complete
  power flow for MMCSD1 subsystem
- Corrected minor errors in DT nodes
- Reran the tests.
- Rebased the series

Changes since v6:
- Corrected the node name from vdd_sd_dv_pins_default to
  vdd-sd-dv-pins-default

Changes since v5:
- Corrected the link in patch 3 as it broken.
- Added the version number for the references used in patch 3.
- picked up reviewed-by from grygorii for patches 1 and 2.

Changes since v4:
- Added main_i2c0 pinmux required for doing power cycles to MMCSD1
  subsystem
- Updated delay values for various speed modes supported
- Corrected the ti,ngpio property to indicate highest gpio lines that
  can be accessed.
- Reran the performace tests

Changes since v3:
- Removed patch (1 in v3).
- Rebased and included patches that add support for GPIO from series [1].
- Re-ran the performace tests for SD and eMMC.

Changes since v2:
- Added main_gpio0 DT node
- Added voltage regulator device tree nodes required to support UHS-I modes

Changes since v1:
- squashed the two patches into one
- added performance logs for the above mentioned speed modes


Aswath Govindraju (1):
  arm64: dts: ti: k3-j7200: Add support for higher speed modes and
    update delay select values for MMCSD subsystems

Faiz Abbas (2):
  arm64: dts: ti: k3-j7200: Add gpio nodes
  arm64: dts: ti: k3-j7200-common-proc-board: Disable unused gpio
    modules

 .../dts/ti/k3-j7200-common-proc-board.dts     | 94 +++++++++++++++++++
 arch/arm64/boot/dts/ti/k3-j7200-main.dtsi     | 86 ++++++++++++++++-
 .../boot/dts/ti/k3-j7200-mcu-wakeup.dtsi      | 34 +++++++
 3 files changed, 212 insertions(+), 2 deletions(-)

Comments

Kishon Vijay Abraham I March 25, 2021, 4:14 p.m. UTC | #1
Hi Aswath,

On 24/03/21 12:07 pm, Aswath Govindraju wrote:
> The following speed modes are now supported in J7200 SoC,

> - HS200 and HS400 modes at 1.8 V card voltage, in MMCSD0 subsystem [1].

> - UHS-I speed modes in MMCSD1 subsystem [1].

> 

> Add support for UHS-I modes by adding voltage regulator device tree nodes

> and corresponding pinmux details, to power cycle and voltage switch cards.

> Set respective tags in sdhci0 and remove no-1-8-v tag from sdhci1

> device tree nodes.

> 

> Also update the delay values for various speed modes supported, based on

> the revised january 2021 J7200 datasheet[2].

> 

> [1] - section 12.3.6.1.1 MMCSD Features, in

>       https://www.ti.com/lit/ug/spruiu1a/spruiu1a.pdf,

>       (SPRUIU1A – JULY 2020 – REVISED JANUARY 2021)

> 

> [2] - https://www.ti.com/lit/ds/symlink/dra821u.pdf,

>       (SPRSP57B – APRIL 2020 – REVISED JANUARY 2021)

minor comments below.. once you fix them, please add

Reviewed-by: Kishon Vijay Abraham I <kishon@ti.com>

> 

> Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>

> ---

>  .../dts/ti/k3-j7200-common-proc-board.dts     | 78 +++++++++++++++++++

>  arch/arm64/boot/dts/ti/k3-j7200-main.dtsi     | 14 +++-

>  2 files changed, 90 insertions(+), 2 deletions(-)

> 

> diff --git a/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts

> index b493f939b09a..a069787e1783 100644

> --- a/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts

> +++ b/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts

> @@ -16,6 +16,65 @@

>  		stdout-path = "serial2:115200n8";

>  		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";

>  	};

> +

> +	evm_12v0: fixedregulator-evm12v0 {

> +		/* main supply */

> +		compatible = "regulator-fixed";

> +		regulator-name = "evm_12v0";

> +		regulator-min-microvolt = <12000000>;

> +		regulator-max-microvolt = <12000000>;

> +		regulator-always-on;

> +		regulator-boot-on;

> +	};

> +

> +	vsys_3v3: fixedregulator-vsys3v3 {

> +		/* Output of LMS140 */


%s/LMS140/LM5140
> +		compatible = "regulator-fixed";

> +		regulator-name = "vsys_3v3";

> +		regulator-min-microvolt = <3300000>;

> +		regulator-max-microvolt = <3300000>;

> +		vin-supply = <&evm_12v0>;

> +		regulator-always-on;

> +		regulator-boot-on;

> +	};

> +

> +	vsys_5v0: fixedregulator-vsys5v0 {

> +		/* Output of LM5140 */

> +		compatible = "regulator-fixed";

> +		regulator-name = "vsys_5v0";

> +		regulator-min-microvolt = <5000000>;

> +		regulator-max-microvolt = <5000000>;

> +		vin-supply = <&evm_12v0>;

> +		regulator-always-on;

> +		regulator-boot-on;

> +	};

> +

> +	vdd_mmc1: fixedregulator-sd {

> +		/* Output of TPS22918  */

> +		compatible = "regulator-fixed";

> +		regulator-name = "vdd_mmc1";

> +		regulator-min-microvolt = <3300000>;

> +		regulator-max-microvolt = <3300000>;

> +		regulator-boot-on;

> +		enable-active-high;

> +		vin-supply = <&vsys_3v3>;

> +		gpio = <&exp2 2 GPIO_ACTIVE_HIGH>;

> +	};

> +

> +	vdd_sd_dv: gpio-regulator-vdd-sd-dv {

> +		/* Output of TLV71033 */


Would have preferred to keep this similar to j721e.
gpio-regulator-TLV71033 is used in j721e
> +		compatible = "regulator-gpio";

> +		regulator-name = "vdd_sd_dv";


same comment here..
> +		pinctrl-names = "default";

> +		pinctrl-0 = <&vdd_sd_dv_pins_default>;

> +		regulator-min-microvolt = <1800000>;

> +		regulator-max-microvolt = <3300000>;

> +		regulator-boot-on;

> +		vin-supply = <&vsys_5v0>;

> +		gpios = <&main_gpio0 55 GPIO_ACTIVE_HIGH>;

> +		states = <1800000 0x0>,

> +			 <3300000 0x1>;

> +	};

>  };

>  

>  &wkup_pmx0 {

> @@ -45,6 +104,13 @@

>  };

>  

>  &main_pmx0 {

> +	main_i2c0_pins_default: main-i2c0-pins-default {

> +		pinctrl-single,pins = <

> +			J721E_IOPAD(0xd4, PIN_INPUT_PULLUP, 0) /* (V3) I2C0_SCL */

> +			J721E_IOPAD(0xd8, PIN_INPUT_PULLUP, 0) /* (W2) I2C0_SDA */

> +		>;

> +	};

> +

>  	main_i2c1_pins_default: main-i2c1-pins-default {

>  		pinctrl-single,pins = <

>  			J721E_IOPAD(0xdc, PIN_INPUT_PULLUP, 3) /* (U3) ECAP0_IN_APWM_OUT.I2C1_SCL */

> @@ -70,6 +136,12 @@

>  			J721E_IOPAD(0x120, PIN_OUTPUT, 0) /* (T4) USB0_DRVVBUS */

>  		>;

>  	};

> +

> +	vdd_sd_dv_pins_default: vdd-sd-dv-pins-default {

> +		pinctrl-single,pins = <

> +			J721E_IOPAD(0xd0, PIN_INPUT, 7) /* (T5) SPI0_D1.GPIO0_55 */


This should ideally be PIN_OUTPUT. Can you check the latest sysconfig?

Thanks
Kishon
Aswath Govindraju March 26, 2021, 6 a.m. UTC | #2
Hi Kishon,

On 25/03/21 9:44 pm, Kishon Vijay Abraham I wrote:
> Hi Aswath,

> 

> On 24/03/21 12:07 pm, Aswath Govindraju wrote:

>> The following speed modes are now supported in J7200 SoC,

>> - HS200 and HS400 modes at 1.8 V card voltage, in MMCSD0 subsystem [1].

>> - UHS-I speed modes in MMCSD1 subsystem [1].

>>

>> Add support for UHS-I modes by adding voltage regulator device tree nodes

>> and corresponding pinmux details, to power cycle and voltage switch cards.

>> Set respective tags in sdhci0 and remove no-1-8-v tag from sdhci1

>> device tree nodes.

>>

>> Also update the delay values for various speed modes supported, based on

>> the revised january 2021 J7200 datasheet[2].

>>

>> [1] - section 12.3.6.1.1 MMCSD Features, in

>>       https://www.ti.com/lit/ug/spruiu1a/spruiu1a.pdf,

>>       (SPRUIU1A – JULY 2020 – REVISED JANUARY 2021)

>>

>> [2] - https://www.ti.com/lit/ds/symlink/dra821u.pdf,

>>       (SPRSP57B – APRIL 2020 – REVISED JANUARY 2021)

> minor comments below.. once you fix them, please add

> 

> Reviewed-by: Kishon Vijay Abraham I <kishon@ti.com>

>>


Thank you for your review :).

>> Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>

>> ---

>>  .../dts/ti/k3-j7200-common-proc-board.dts     | 78 +++++++++++++++++++

>>  arch/arm64/boot/dts/ti/k3-j7200-main.dtsi     | 14 +++-

>>  2 files changed, 90 insertions(+), 2 deletions(-)

>>

>> diff --git a/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts

>> index b493f939b09a..a069787e1783 100644

>> --- a/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts

>> +++ b/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts

>> @@ -16,6 +16,65 @@

>>  		stdout-path = "serial2:115200n8";

>>  		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";

>>  	};

>> +

>> +	evm_12v0: fixedregulator-evm12v0 {

>> +		/* main supply */

>> +		compatible = "regulator-fixed";

>> +		regulator-name = "evm_12v0";

>> +		regulator-min-microvolt = <12000000>;

>> +		regulator-max-microvolt = <12000000>;

>> +		regulator-always-on;

>> +		regulator-boot-on;

>> +	};

>> +

>> +	vsys_3v3: fixedregulator-vsys3v3 {

>> +		/* Output of LMS140 */

> 

> %s/LMS140/LM5140


Will make this change in respin.

>> +		compatible = "regulator-fixed";

>> +		regulator-name = "vsys_3v3";

>> +		regulator-min-microvolt = <3300000>;

>> +		regulator-max-microvolt = <3300000>;

>> +		vin-supply = <&evm_12v0>;

>> +		regulator-always-on;

>> +		regulator-boot-on;

>> +	};

>> +

>> +	vsys_5v0: fixedregulator-vsys5v0 {

>> +		/* Output of LM5140 */

>> +		compatible = "regulator-fixed";

>> +		regulator-name = "vsys_5v0";

>> +		regulator-min-microvolt = <5000000>;

>> +		regulator-max-microvolt = <5000000>;

>> +		vin-supply = <&evm_12v0>;

>> +		regulator-always-on;

>> +		regulator-boot-on;

>> +	};

>> +

>> +	vdd_mmc1: fixedregulator-sd {

>> +		/* Output of TPS22918  */

>> +		compatible = "regulator-fixed";

>> +		regulator-name = "vdd_mmc1";

>> +		regulator-min-microvolt = <3300000>;

>> +		regulator-max-microvolt = <3300000>;

>> +		regulator-boot-on;

>> +		enable-active-high;

>> +		vin-supply = <&vsys_3v3>;

>> +		gpio = <&exp2 2 GPIO_ACTIVE_HIGH>;

>> +	};

>> +

>> +	vdd_sd_dv: gpio-regulator-vdd-sd-dv {

>> +		/* Output of TLV71033 */

> 

> Would have preferred to keep this similar to j721e.

> gpio-regulator-TLV71033 is used in j721e


Will make this change in respin

>> +		compatible = "regulator-gpio";

>> +		regulator-name = "vdd_sd_dv";

> 

> same comment here..


Will make this change in respin

>> +		pinctrl-names = "default";

>> +		pinctrl-0 = <&vdd_sd_dv_pins_default>;

>> +		regulator-min-microvolt = <1800000>;

>> +		regulator-max-microvolt = <3300000>;

>> +		regulator-boot-on;

>> +		vin-supply = <&vsys_5v0>;

>> +		gpios = <&main_gpio0 55 GPIO_ACTIVE_HIGH>;

>> +		states = <1800000 0x0>,

>> +			 <3300000 0x1>;

>> +	};

>>  };

>>  

>>  &wkup_pmx0 {

>> @@ -45,6 +104,13 @@

>>  };

>>  

>>  &main_pmx0 {

>> +	main_i2c0_pins_default: main-i2c0-pins-default {

>> +		pinctrl-single,pins = <

>> +			J721E_IOPAD(0xd4, PIN_INPUT_PULLUP, 0) /* (V3) I2C0_SCL */

>> +			J721E_IOPAD(0xd8, PIN_INPUT_PULLUP, 0) /* (W2) I2C0_SDA */

>> +		>;

>> +	};

>> +

>>  	main_i2c1_pins_default: main-i2c1-pins-default {

>>  		pinctrl-single,pins = <

>>  			J721E_IOPAD(0xdc, PIN_INPUT_PULLUP, 3) /* (U3) ECAP0_IN_APWM_OUT.I2C1_SCL */

>> @@ -70,6 +136,12 @@

>>  			J721E_IOPAD(0x120, PIN_OUTPUT, 0) /* (T4) USB0_DRVVBUS */

>>  		>;

>>  	};

>> +

>> +	vdd_sd_dv_pins_default: vdd-sd-dv-pins-default {

>> +		pinctrl-single,pins = <

>> +			J721E_IOPAD(0xd0, PIN_INPUT, 7) /* (T5) SPI0_D1.GPIO0_55 */

> 

> This should ideally be PIN_OUTPUT. Can you check the latest sysconfig?

> 


The sysconfig tool by default is giving the mode as
PIN_INPUT(bidirectional) but yes ideally this should be PIN_OUTPUT. Will
make this change in respin.

Thanks,
Aswath

> Thanks

> Kishon

>