diff mbox series

[v2,3/4] arm64: add support for i.MX8M EVK board

Message ID 20180201183126.32384-3-l.stach@pengutronix.de
State Not Applicable, archived
Headers show
Series None | expand

Commit Message

Lucas Stach Feb. 1, 2018, 6:31 p.m. UTC
This is the evaluation kit board for the i.MX8M. The current level of
support yields a working console and is able to boot userspace from
SD card or Network.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com> (v1)
Tested-by: Tested-by: Baruch Siach <baruch@tkos.co.il> (v1)
---
v2:
- move to freescale folder
- fix indentation
- fix typo in Makefile
- document compatible
- switch to generic pinconf
---
 Documentation/devicetree/bindings/arm/fsl.txt |   4 +
 arch/arm64/boot/dts/freescale/Makefile        |   2 +
 arch/arm64/boot/dts/freescale/imx8mq-evk.dts  | 405 ++++++++++++++++++++++++++
 3 files changed, 411 insertions(+)
 create mode 100644 arch/arm64/boot/dts/freescale/imx8mq-evk.dts

Comments

Rob Herring (Arm) Feb. 5, 2018, 6:09 a.m. UTC | #1
On Thu, Feb 01, 2018 at 07:31:25PM +0100, Lucas Stach wrote:
> This is the evaluation kit board for the i.MX8M. The current level of
> support yields a working console and is able to boot userspace from
> SD card or Network.
> 
> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com> (v1)
> Tested-by: Tested-by: Baruch Siach <baruch@tkos.co.il> (v1)
> ---
> v2:
> - move to freescale folder
> - fix indentation
> - fix typo in Makefile
> - document compatible
> - switch to generic pinconf
> ---
>  Documentation/devicetree/bindings/arm/fsl.txt |   4 +
>  arch/arm64/boot/dts/freescale/Makefile        |   2 +
>  arch/arm64/boot/dts/freescale/imx8mq-evk.dts  | 405 ++++++++++++++++++++++++++
>  3 files changed, 411 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/freescale/imx8mq-evk.dts

Reviewed-by: Rob Herring <robh@kernel.org>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Baruch Siach Feb. 5, 2018, 7:24 a.m. UTC | #2
Hi Lucas,

On Thu, Feb 01, 2018 at 07:31:25PM +0100, Lucas Stach wrote:
> This is the evaluation kit board for the i.MX8M. The current level of
> support yields a working console and is able to boot userspace from
> SD card or Network.
> 
> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com> (v1)
> Tested-by: Tested-by: Baruch Siach <baruch@tkos.co.il> (v1)

I only tested once.

Tested v2 as well, on top of clk v2 and the pinctrl v2 patches.

Tested-by: Baruch Siach <baruch@tkos.co.il>

Would have been nice to have all these series in a single branch somewhere.

baruch
Lucas Stach Feb. 5, 2018, 11:10 a.m. UTC | #3
Hi Baruch,

Am Montag, den 05.02.2018, 09:24 +0200 schrieb Baruch Siach:
> Hi Lucas,
> 
> On Thu, Feb 01, 2018 at 07:31:25PM +0100, Lucas Stach wrote:
> > This is the evaluation kit board for the i.MX8M. The current level
> > of
> > support yields a working console and is able to boot userspace from
> > SD card or Network.
> > 
> > Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> > Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com> (v1)
> > Tested-by: Tested-by: Baruch Siach <baruch@tkos.co.il> (v1)
> 
> I only tested once.

Hehe, seems I was a little tired after reworking all those patches. ;)

> 
> Tested v2 as well, on top of clk v2 and the pinctrl v2 patches.
> 
> Tested-by: Baruch Siach <baruch@tkos.co.il>

Thanks.

> Would have been nice to have all these series in a single branch
> somewhere.

I've pushed a branch with all the MX8M work to:
https://git.pengutronix.de/git/lst/linux mx8-work

I'll update this branch if I need to do another revision of this
patchset.

Regards,
Lucas
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Shawn Guo Feb. 23, 2018, 3:46 a.m. UTC | #4
Hi Lucas,

On Mon, Feb 05, 2018 at 12:10:46PM +0100, Lucas Stach wrote:
> I've pushed a branch with all the MX8M work to:
> https://git.pengutronix.de/git/lst/linux mx8-work

I have some problem to boot the kernel (and dtb) built from this branch.
I'm running an U-Boot from NXP which works fine with NXP kernel for
sure.  But using this U-Boot to load your kernel gives me nothing on
serial, even if I put 'earlycon=ec_imx6q,0x30860000' on kernel
cmdline.  Anything I'm missing here?  Thanks.

Shawn

---8<--------------------------

U-Boot 2017.03-00779-g777f3b0e3c60 (Jan 31 2018 - 13:54:54 +0800)

CPU:   Freescale i.MX8MQ rev2.0 1500 MHz (running at 1000 MHz)
CPU:   Commercial temperature grade (0C to 95C) at 30C
Reset cause: POR
Model: Freescale i.MX8MQ EVK
DRAM:  3 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
In:    serial
Out:   serial
Err:   serial

 BuildInfo:
  - ATF 0
  - U-Boot 2017.03-00779-g777f3b0e3c60

switch to partitions #0, OK
mmc1 is current device
Net:   eth0: ethernet@30be0000
Normal Boot
Hit any key to stop autoboot:  0 
u-boot=> tftpboot 0x42000000 Image; tftpboot 0x48000000 imx8mq-evk.dtb;
booti 0x42000000 - 0x48000000
Using ethernet@30be0000 device
TFTP from server 192.168.0.102; our IP address is 192.168.0.110
Filename 'Image'.
Load address: 0x42000000
Loading:
#################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ###########################################
         10.1 MiB/s
done
Bytes transferred = 17803776 (10faa00 hex)
Using ethernet@30be0000 device
TFTP from server 192.168.0.102; our IP address is 192.168.0.110
Filename 'imx8mq-evk.dtb'.
Load address: 0x48000000
Loading: #
         6.2 MiB/s
done
Bytes transferred = 12999 (32c7 hex)
## Flattened Device Tree blob at 48000000
   Booting using the fdt blob at 0x48000000
   reserving fdt memory region: addr=40000000 size=20000
   Using Device Tree in place at 0000000048000000, end 00000000480062c6

Starting kernel ...

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Baruch Siach Feb. 23, 2018, 4:32 a.m. UTC | #5
Hi Sawn,

On Fri, Feb 23, 2018 at 11:46:53AM +0800, Shawn Guo wrote:
> On Mon, Feb 05, 2018 at 12:10:46PM +0100, Lucas Stach wrote:
> > I've pushed a branch with all the MX8M work to:
> > https://git.pengutronix.de/git/lst/linux mx8-work
> 
> I have some problem to boot the kernel (and dtb) built from this branch.
> I'm running an U-Boot from NXP which works fine with NXP kernel for
> sure.  But using this U-Boot to load your kernel gives me nothing on
> serial, even if I put 'earlycon=ec_imx6q,0x30860000' on kernel
> cmdline.  Anything I'm missing here?  Thanks.

FWIW, I tested these patches on the i.MX8 EVK with the attached defconfig.

Hope this helps,
baruch
Shawn Guo Feb. 23, 2018, 7:05 a.m. UTC | #6
Hi Baruch,

On Fri, Feb 23, 2018 at 06:32:42AM +0200, Baruch Siach wrote:
> Hi Sawn,
> 
> On Fri, Feb 23, 2018 at 11:46:53AM +0800, Shawn Guo wrote:
> > On Mon, Feb 05, 2018 at 12:10:46PM +0100, Lucas Stach wrote:
> > > I've pushed a branch with all the MX8M work to:
> > > https://git.pengutronix.de/git/lst/linux mx8-work
> > 
> > I have some problem to boot the kernel (and dtb) built from this branch.
> > I'm running an U-Boot from NXP which works fine with NXP kernel for
> > sure.  But using this U-Boot to load your kernel gives me nothing on
> > serial, even if I put 'earlycon=ec_imx6q,0x30860000' on kernel
> > cmdline.  Anything I'm missing here?  Thanks.
> 
> FWIW, I tested these patches on the i.MX8 EVK with the attached defconfig.
> 
> Hope this helps,

Yeah, it helps a lot.  I forgot the fact that arm64 defconfig file does
not include any i.MX platform options.  The serial driver is not even
enabled.

I enabled a few more options on top of your defconfig, and now am able
to boot into the Debian prompt over NFS.

Thanks for help.

Shawn
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Shawn Guo Feb. 23, 2018, 3:03 p.m. UTC | #7
On Thu, Feb 01, 2018 at 07:31:25PM +0100, Lucas Stach wrote:
> +&usdhc1 {
> +	pinctrl-names = "default", "state_100mhz", "state_200mhz";
> +	pinctrl-0 = <&pinctrl_usdhc1_cd_reset>, <&pinctrl_usdhc1_clk_strobe>,
> +	            <&pinctrl_usdhc1_data>;
> +	pinctrl-1 = <&pinctrl_usdhc1_cd_reset>,
> +	            <&pinctrl_usdhc1_clk_strobe_100mhz>,
> +	            <&pinctrl_usdhc1_data_100mhz>;
> +	pinctrl-2 = <&pinctrl_usdhc1_cd_reset>,
> +	            <&pinctrl_usdhc1_clk_strobe_200mhz>,
> +	            <&pinctrl_usdhc1_data_200mhz>;
> +	vqmmc-supply = <&sw4_reg>;
> +	bus-width = <8>;
> +	non-removable;
> +	no-sd;
> +	no-sdio;
> +	status = "okay";
> +};

I'm not sure it can be enabled right now.  Per my testing, eMMC is not
working yet.

[    0.879756] mmc0: Switching to 3.3V signalling voltage failed
[    0.913587] mmc0: SDHCI controller on 30b40000.usdhc [30b40000.usdhc] using ADMA
...
[    1.007628] mmc0: switch to high-speed from hs200 failed, err:-110
[    1.013873] mmc0: error -110 whilst initialising MMC card
[    1.020639] mmc0: Switching to 3.3V signalling voltage failed
...
[    1.132462] mmc0: switch to high-speed from hs200 failed, err:-110
[    1.138674] mmc0: error -110 whilst initialising MMC card
[    1.145394] mmc0: Switching to 3.3V signalling voltage failed
[    1.268367] mmc0: switch to high-speed from hs200 failed, err:-110
[    1.274576] mmc0: error -110 whilst initialising MMC card
[    1.281291] mmc0: Switching to 3.3V signalling voltage failed
[    1.440708] mmc0: switch to high-speed from hs200 failed, err:-110
[    1.446919] mmc0: error -110 whilst initialising MMC card

Or am I missing anything?

Shawn
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Juergen Borleis Feb. 23, 2018, 3:30 p.m. UTC | #8
On Friday 23 February 2018 16:03:53 Shawn Guo wrote:
> On Thu, Feb 01, 2018 at 07:31:25PM +0100, Lucas Stach wrote:
> > +&usdhc1 {
> > +	pinctrl-names = "default", "state_100mhz", "state_200mhz";
> > +	pinctrl-0 = <&pinctrl_usdhc1_cd_reset>, <&pinctrl_usdhc1_clk_strobe>,
> > +	            <&pinctrl_usdhc1_data>;
> > +	pinctrl-1 = <&pinctrl_usdhc1_cd_reset>,
> > +	            <&pinctrl_usdhc1_clk_strobe_100mhz>,
> > +	            <&pinctrl_usdhc1_data_100mhz>;
> > +	pinctrl-2 = <&pinctrl_usdhc1_cd_reset>,
> > +	            <&pinctrl_usdhc1_clk_strobe_200mhz>,
> > +	            <&pinctrl_usdhc1_data_200mhz>;
> > +	vqmmc-supply = <&sw4_reg>;
> > +	bus-width = <8>;
> > +	non-removable;
> > +	no-sd;
> > +	no-sdio;
> > +	status = "okay";
> > +};
>
> I'm not sure it can be enabled right now.  Per my testing, eMMC is not
> working yet.
>
> [    0.879756] mmc0: Switching to 3.3V signalling voltage failed
> [    0.913587] mmc0: SDHCI controller on 30b40000.usdhc [30b40000.usdhc]
> using ADMA ...
> [    1.007628] mmc0: switch to high-speed from hs200 failed, err:-110
> [    1.013873] mmc0: error -110 whilst initialising MMC card
> [    1.020639] mmc0: Switching to 3.3V signalling voltage failed
> ...
> [    1.132462] mmc0: switch to high-speed from hs200 failed, err:-110
> [    1.138674] mmc0: error -110 whilst initialising MMC card
> [    1.145394] mmc0: Switching to 3.3V signalling voltage failed
> [    1.268367] mmc0: switch to high-speed from hs200 failed, err:-110
> [    1.274576] mmc0: error -110 whilst initialising MMC card
> [    1.281291] mmc0: Switching to 3.3V signalling voltage failed
> [    1.440708] mmc0: switch to high-speed from hs200 failed, err:-110
> [    1.446919] mmc0: error -110 whilst initialising MMC card
>
> Or am I missing anything?

Property "no-1-8-v;" if no 1.8 V is available?

jb
Lucas Stach Feb. 23, 2018, 3:45 p.m. UTC | #9
Am Freitag, den 23.02.2018, 23:03 +0800 schrieb Shawn Guo:
> On Thu, Feb 01, 2018 at 07:31:25PM +0100, Lucas Stach wrote:
> > +&usdhc1 {
> > +	pinctrl-names = "default", "state_100mhz", "state_200mhz";
> > +	pinctrl-0 = <&pinctrl_usdhc1_cd_reset>,
> > <&pinctrl_usdhc1_clk_strobe>,
> > +	            <&pinctrl_usdhc1_data>;
> > +	pinctrl-1 = <&pinctrl_usdhc1_cd_reset>,
> > +	            <&pinctrl_usdhc1_clk_strobe_100mhz>,
> > +	            <&pinctrl_usdhc1_data_100mhz>;
> > +	pinctrl-2 = <&pinctrl_usdhc1_cd_reset>,
> > +	            <&pinctrl_usdhc1_clk_strobe_200mhz>,
> > +	            <&pinctrl_usdhc1_data_200mhz>;
> > +	vqmmc-supply = <&sw4_reg>;
> > +	bus-width = <8>;
> > +	non-removable;
> > +	no-sd;
> > +	no-sdio;
> > +	status = "okay";
> > +};
> 
> I'm not sure it can be enabled right now.  Per my testing, eMMC is
> not
> working yet.
> 
> [    0.879756] mmc0: Switching to 3.3V signalling voltage failed
> [    0.913587] mmc0: SDHCI controller on 30b40000.usdhc
> [30b40000.usdhc] using ADMA
> ...
> [    1.007628] mmc0: switch to high-speed from hs200 failed, err:-110
> [    1.013873] mmc0: error -110 whilst initialising MMC card
> [    1.020639] mmc0: Switching to 3.3V signalling voltage failed
> ...
> [    1.132462] mmc0: switch to high-speed from hs200 failed, err:-110
> [    1.138674] mmc0: error -110 whilst initialising MMC card
> [    1.145394] mmc0: Switching to 3.3V signalling voltage failed
> [    1.268367] mmc0: switch to high-speed from hs200 failed, err:-110
> [    1.274576] mmc0: error -110 whilst initialising MMC card
> [    1.281291] mmc0: Switching to 3.3V signalling voltage failed
> [    1.440708] mmc0: switch to high-speed from hs200 failed, err:-110
> [    1.446919] mmc0: error -110 whilst initialising MMC card
> 
> Or am I missing anything?

This is something I need to look into. The HS200 switching sequence
seems to try to switch to 3.3V HS mode intermediately, which doesn't
work. Despite the error messages eMMC works fine in my testing.

Regards,
Lucas
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Lucas Stach Feb. 23, 2018, 3:46 p.m. UTC | #10
Am Freitag, den 23.02.2018, 16:30 +0100 schrieb Juergen Borleis:
> On Friday 23 February 2018 16:03:53 Shawn Guo wrote:
> > On Thu, Feb 01, 2018 at 07:31:25PM +0100, Lucas Stach wrote:
> > > +&usdhc1 {
> > > +   pinctrl-names = "default", "state_100mhz", "state_200mhz";
> > > +   pinctrl-0 = <&pinctrl_usdhc1_cd_reset>,
> <&pinctrl_usdhc1_clk_strobe>,
> > > +               <&pinctrl_usdhc1_data>;
> > > +   pinctrl-1 = <&pinctrl_usdhc1_cd_reset>,
> > > +               <&pinctrl_usdhc1_clk_strobe_100mhz>,
> > > +               <&pinctrl_usdhc1_data_100mhz>;
> > > +   pinctrl-2 = <&pinctrl_usdhc1_cd_reset>,
> > > +               <&pinctrl_usdhc1_clk_strobe_200mhz>,
> > > +               <&pinctrl_usdhc1_data_200mhz>;
> > > +   vqmmc-supply = <&sw4_reg>;
> > > +   bus-width = <8>;
> > > +   non-removable;
> > > +   no-sd;
> > > +   no-sdio;
> > > +   status = "okay";
> > > +};
> >
> > I'm not sure it can be enabled right now.  Per my testing, eMMC is
> not
> > working yet.
> >
> > [    0.879756] mmc0: Switching to 3.3V signalling voltage failed
> > [    0.913587] mmc0: SDHCI controller on 30b40000.usdhc
> [30b40000.usdhc]
> > using ADMA ...
> > [    1.007628] mmc0: switch to high-speed from hs200 failed, err:-
> 110
> > [    1.013873] mmc0: error -110 whilst initialising MMC card
> > [    1.020639] mmc0: Switching to 3.3V signalling voltage failed
> > ...
> > [    1.132462] mmc0: switch to high-speed from hs200 failed, err:-
> 110
> > [    1.138674] mmc0: error -110 whilst initialising MMC card
> > [    1.145394] mmc0: Switching to 3.3V signalling voltage failed
> > [    1.268367] mmc0: switch to high-speed from hs200 failed, err:-
> 110
> > [    1.274576] mmc0: error -110 whilst initialising MMC card
> > [    1.281291] mmc0: Switching to 3.3V signalling voltage failed
> > [    1.440708] mmc0: switch to high-speed from hs200 failed, err:-
> 110
> > [    1.446919] mmc0: error -110 whilst initialising MMC card
> >
> > Or am I missing anything?
> 
> Property "no-1-8-v;" if no 1.8 V is available?

The issue is the other way around: the eMMC is hardwired to 1.8V IO
voltage (which is fine per eMMC spec), so it can't switch to 3.3V mode.

Regards,
Lucas
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bough Chen Feb. 24, 2018, 2:58 a.m. UTC | #11
>-----Original Message-----

>From: Lucas Stach [mailto:l.stach@pengutronix.de]

>Sent: 2018年2月23日 23:46

>To: Juergen Borleis <jbe@pengutronix.de>; kernel@pengutronix.de

>Cc: Shawn Guo <shawnguo@kernel.org>; Mark Rutland

><mark.rutland@arm.com>; devicetree@vger.kernel.org; Baruch Siach

><baruch@tkos.co.il>; Catalin Marinas <catalin.marinas@arm.com>; Will

>Deacon <will.deacon@arm.com>; patchwork-lst@pengutronix.de; Rob Herring

><robh+dt@kernel.org>; dl-linux-imx <linux-imx@nxp.com>; Fabio Estevam

><fabio.estevam@nxp.com>; A.s. Dong <aisheng.dong@nxp.com>;

>linux-arm-kernel@lists.infradead.org

>Subject: Re: [PATCH v2 3/4] arm64: add support for i.MX8M EVK board

>

>Am Freitag, den 23.02.2018, 16:30 +0100 schrieb Juergen Borleis:

>> On Friday 23 February 2018 16:03:53 Shawn Guo wrote:

>> > On Thu, Feb 01, 2018 at 07:31:25PM +0100, Lucas Stach wrote:

>> > > +&usdhc1 {

>> > > +   pinctrl-names = "default", "state_100mhz", "state_200mhz";

>> > > +   pinctrl-0 = <&pinctrl_usdhc1_cd_reset>,

>> <&pinctrl_usdhc1_clk_strobe>,

>> > > +               <&pinctrl_usdhc1_data>;

>> > > +   pinctrl-1 = <&pinctrl_usdhc1_cd_reset>,

>> > > +               <&pinctrl_usdhc1_clk_strobe_100mhz>,

>> > > +               <&pinctrl_usdhc1_data_100mhz>;

>> > > +   pinctrl-2 = <&pinctrl_usdhc1_cd_reset>,

>> > > +               <&pinctrl_usdhc1_clk_strobe_200mhz>,

>> > > +               <&pinctrl_usdhc1_data_200mhz>;

>> > > +   vqmmc-supply = <&sw4_reg>;

>> > > +   bus-width = <8>;

>> > > +   non-removable;

>> > > +   no-sd;

>> > > +   no-sdio;

>> > > +   status = "okay";

>> > > +};

>> >


EMMC do not need cd pin, and I notice that pinctrl_usdhc1_cd_reset also contains a usdhc2 pad, this is wrong. So please remove pinctrl_usdhc1_cd_reset. 
EMMC I/O voltage is fixed to 1.8v so I think no need to add vqmmc-supply, can remove this property here.
For pinctrl_usdhc1_clk_strobe, clock pad need to be pull down, otherwise you will meet data crc error in hs400 mode.

Best Regards,
Bough Chen

>> > I'm not sure it can be enabled right now.  Per my testing, eMMC is

>> not

>> > working yet.

>> >

>> > [    0.879756] mmc0: Switching to 3.3V signalling voltage failed [

>> > 0.913587] mmc0: SDHCI controller on 30b40000.usdhc

>> [30b40000.usdhc]

>> > using ADMA ...

>> > [    1.007628] mmc0: switch to high-speed from hs200 failed, err:-

>> 110

>> > [    1.013873] mmc0: error -110 whilst initialising MMC card [

>> > 1.020639] mmc0: Switching to 3.3V signalling voltage failed ...

>> > [    1.132462] mmc0: switch to high-speed from hs200 failed, err:-

>> 110

>> > [    1.138674] mmc0: error -110 whilst initialising MMC card [

>> > 1.145394] mmc0: Switching to 3.3V signalling voltage failed [

>> > 1.268367] mmc0: switch to high-speed from hs200 failed, err:-

>> 110

>> > [    1.274576] mmc0: error -110 whilst initialising MMC card [

>> > 1.281291] mmc0: Switching to 3.3V signalling voltage failed [

>> > 1.440708] mmc0: switch to high-speed from hs200 failed, err:-

>> 110

>> > [    1.446919] mmc0: error -110 whilst initialising MMC card

>> >

>> > Or am I missing anything?

>>

>> Property "no-1-8-v;" if no 1.8 V is available?

>

>The issue is the other way around: the eMMC is hardwired to 1.8V IO voltage

>(which is fine per eMMC spec), so it can't switch to 3.3V mode.

>

>Regards,

>Lucas
Shawn Guo Feb. 24, 2018, 6 a.m. UTC | #12
Hi Bough,

On Sat, Feb 24, 2018 at 02:58:31AM +0000, Bough Chen wrote:
> >Am Freitag, den 23.02.2018, 16:30 +0100 schrieb Juergen Borleis:
> >> On Friday 23 February 2018 16:03:53 Shawn Guo wrote:
> >> > On Thu, Feb 01, 2018 at 07:31:25PM +0100, Lucas Stach wrote:
> >> > > +&usdhc1 {
> >> > > +   pinctrl-names = "default", "state_100mhz", "state_200mhz";
> >> > > +   pinctrl-0 = <&pinctrl_usdhc1_cd_reset>,
> >> <&pinctrl_usdhc1_clk_strobe>,
> >> > > +               <&pinctrl_usdhc1_data>;
> >> > > +   pinctrl-1 = <&pinctrl_usdhc1_cd_reset>,
> >> > > +               <&pinctrl_usdhc1_clk_strobe_100mhz>,
> >> > > +               <&pinctrl_usdhc1_data_100mhz>;
> >> > > +   pinctrl-2 = <&pinctrl_usdhc1_cd_reset>,
> >> > > +               <&pinctrl_usdhc1_clk_strobe_200mhz>,
> >> > > +               <&pinctrl_usdhc1_data_200mhz>;
> >> > > +   vqmmc-supply = <&sw4_reg>;
> >> > > +   bus-width = <8>;
> >> > > +   non-removable;
> >> > > +   no-sd;
> >> > > +   no-sdio;
> >> > > +   status = "okay";
> >> > > +};
> >> >
> 
> EMMC do not need cd pin, and I notice that pinctrl_usdhc1_cd_reset also contains a usdhc2 pad, this is wrong. So please remove pinctrl_usdhc1_cd_reset. 
> EMMC I/O voltage is fixed to 1.8v so I think no need to add vqmmc-supply, can remove this property here.
> For pinctrl_usdhc1_clk_strobe, clock pad need to be pull down, otherwise you will meet data crc error in hs400 mode.

Thanks for the input.  I suspect that there are more than what you
suggest here.  I remove vqmmc-supply and use the exactly same
pinctrl_usdhc1 as NXP kernel, but still see errors below.

[    0.952795] mmc0: SDHCI controller on 30b40000.usdhc [30b40000.usdhc] using ADMA
[    1.054622] mmc0: Tuning failed, falling back to fixed sampling clock
[    1.076458] mmc0: new HS400 MMC card at address 0001
[    1.081980] mmcblk0: mmc0:0001 R1J56L 13.8 GiB 
[    1.086880] mmcblk0boot0: mmc0:0001 R1J56L partition 1 4.00 MiB
[    1.093156] mmcblk0boot1: mmc0:0001 R1J56L partition 2 4.00 MiB
[    1.099220] mmcblk0rpmb: mmc0:0001 R1J56L partition 3 128 KiB, chardev (248:0)
[    1.148214] mmc0: Tuning failed, falling back to fixed sampling clock
[    1.266704] print_req_error: I/O error, dev mmcblk0, sector 0
[    1.273487] Buffer I/O error on dev mmcblk0, logical block 0, async page read
[    1.358863] print_req_error: I/O error, dev mmcblk0, sector 0
[    1.365640] Buffer I/O error on dev mmcblk0, logical block 0, async page read
[    1.372816]  mmcblk0: unable to read partition table
[    7.231120] mmc0: switch to high-speed from hs200 failed, err:-110
[    7.372241] mmc0: switch to high-speed from hs200 failed, err:-110
[    7.378843] print_req_error: I/O error, dev mmcblk0, sector 0

Shawn
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/arm/fsl.txt b/Documentation/devicetree/bindings/arm/fsl.txt
index 85d1c9ec6fa3..fd167203ad5f 100644
--- a/Documentation/devicetree/bindings/arm/fsl.txt
+++ b/Documentation/devicetree/bindings/arm/fsl.txt
@@ -53,6 +53,10 @@  i.MX6 Quad SABRE Automotive Board
 Required root node properties:
     - compatible = "fsl,imx6q-sabreauto", "fsl,imx6q";
 
+i.MX8MQ Evaluation Kit
+Required root node properties:
+    - compatible = "fsl,imx8mq-evk", "fsl,imx8mq";
+
 Generic i.MX boards
 -------------------
 
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 86e18adb695a..85f96ae127c2 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -13,3 +13,5 @@  dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2080a-rdb.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2080a-simu.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2088a-qds.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2088a-rdb.dtb
+
+dtb-$(CONFIG_SOC_IMX8MQ) += imx8mq-evk.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
new file mode 100644
index 000000000000..c0e5ee5d6243
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
@@ -0,0 +1,405 @@ 
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2017 NXP
+ * Copyright (C) 2017 Pengutronix, Lucas Stach <kernel@pengutronix.de>
+ */
+
+/dts-v1/;
+
+#include "imx8mq.dtsi"
+
+/ {
+	model = "NXP i.MX8MQ EVK";
+	compatible = "fsl,imx8mq-evk", "fsl,imx8mq";
+
+	chosen {
+		stdout-path = &uart1;
+	};
+
+	memory@40000000 {
+		device_type = "memory";
+		reg = <0x00000000 0x40000000 0 0xc0000000>;
+	};
+
+	reg_usdhc2_vmmc: regulator-vsd-3v3 {
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_reg_usdhc2>;
+		compatible = "regulator-fixed";
+		regulator-name = "VSD_3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+};
+
+&fec1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_fec1_mdc>, <&pinctrl_fec1_mdio>,
+	            <&pinctrl_fec1_data_tx>, <&pinctrl_fec1_data_rx>,
+	            <&pinctrl_fec1_phy_reset>;
+	phy-mode = "rgmii-id";
+	status = "okay";
+};
+
+&i2c1 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c1>;
+	status = "okay";
+
+	pmic@8 {
+		compatible = "fsl,pfuze100";
+		reg = <0x8>;
+
+		regulators {
+			sw1a_reg: sw1ab {
+				regulator-min-microvolt = <825000>;
+				regulator-max-microvolt = <1100000>;
+			};
+
+			sw1c_reg: sw1c {
+				regulator-min-microvolt = <825000>;
+				regulator-max-microvolt = <1100000>;
+			};
+
+			sw2_reg: sw2 {
+				regulator-min-microvolt = <1100000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-always-on;
+			};
+
+			sw3a_reg: sw3ab {
+				regulator-min-microvolt = <825000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-always-on;
+			};
+
+			sw4_reg: sw4 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-always-on;
+			};
+
+			swbst_reg: swbst {
+				regulator-min-microvolt = <5000000>;
+				regulator-max-microvolt = <5150000>;
+			};
+
+			snvs_reg: vsnvs {
+				regulator-min-microvolt = <1000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-always-on;
+			};
+
+			vref_reg: vrefddr {
+				regulator-always-on;
+			};
+
+			vgen1_reg: vgen1 {
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1550000>;
+			};
+
+			vgen2_reg: vgen2 {
+				regulator-min-microvolt = <850000>;
+				regulator-max-microvolt = <975000>;
+				regulator-always-on;
+			};
+
+			vgen3_reg: vgen3 {
+				regulator-min-microvolt = <1675000>;
+				regulator-max-microvolt = <1975000>;
+				regulator-always-on;
+			};
+
+			vgen4_reg: vgen4 {
+				regulator-min-microvolt = <1625000>;
+				regulator-max-microvolt = <1875000>;
+				regulator-always-on;
+			};
+
+			vgen5_reg: vgen5 {
+				regulator-min-microvolt = <3075000>;
+				regulator-max-microvolt = <3625000>;
+				regulator-always-on;
+			};
+
+			vgen6_reg: vgen6 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <3300000>;
+			};
+		};
+	};
+};
+
+&uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart1>;
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc1_cd_reset>, <&pinctrl_usdhc1_clk_strobe>,
+	            <&pinctrl_usdhc1_data>;
+	pinctrl-1 = <&pinctrl_usdhc1_cd_reset>,
+	            <&pinctrl_usdhc1_clk_strobe_100mhz>,
+	            <&pinctrl_usdhc1_data_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc1_cd_reset>,
+	            <&pinctrl_usdhc1_clk_strobe_200mhz>,
+	            <&pinctrl_usdhc1_data_200mhz>;
+	vqmmc-supply = <&sw4_reg>;
+	bus-width = <8>;
+	non-removable;
+	no-sd;
+	no-sdio;
+	status = "okay";
+};
+
+&usdhc2 {
+	pinctrl-names = "default", "state_100mhz", "state_200mhz";
+	pinctrl-0 = <&pinctrl_usdhc2_vselect>, <&pinctrl_usdhc2_clk>,
+	            <&pinctrl_usdhc2_data>;
+	pinctrl-1 = <&pinctrl_usdhc2_vselect>, <&pinctrl_usdhc2_clk_100mhz>,
+	            <&pinctrl_usdhc2_data_100mhz>;
+	pinctrl-2 = <&pinctrl_usdhc2_vselect>, <&pinctrl_usdhc2_clk_200mhz>,
+	            <&pinctrl_usdhc2_data_200mhz>;
+	cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
+	vmmc-supply = <&reg_usdhc2_vmmc>;
+	status = "okay";
+};
+
+&iomuxc {
+	pinctrl_fec1_mdc: fec1mdcgrp {
+		pinmux = <MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC>;
+		drive-strength = <3>;
+		slew-rate = <0>;
+	};
+
+	pinctrl_fec1_mdio: fec1mdiogrp {
+		pinmux = <MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO>;
+		drive-strength = <3>;
+		slew-rate = <0>;
+		drive-open-drain;
+	};
+
+	pinctrl_fec1_phy_reset: fec1phyresetgrp {
+		pinmux = <MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9>;
+		drive-strength = <1>;
+		slew-rate = <0>;
+	};
+
+	pinctrl_fec1_data_tx: fec1datatxgrp {
+		pinmux = <
+			MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3
+			MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2
+			MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1
+			MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0
+			MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC
+			MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL
+		>;
+		drive-strength = <7>;
+		slew-rate = <3>;
+	};
+
+	pinctrl_fec1_data_rx: fec1datarxgrp {
+		pinmux = <
+			MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3
+			MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2
+			MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1
+			MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0
+			MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC
+			MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL
+		>;
+		drive-strength = <1>;
+		slew-rate = <2>;
+		input-schmitt-enable;
+	};
+
+	pinctrl_i2c1: i2c1grp {
+		pinmux = <
+			MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL
+			MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA
+		>;
+		drive-strength = <7>;
+		slew-rate = <0>;
+		drive-open-drain;
+		input-enable;
+	};
+
+	pinctrl_reg_usdhc2: regusdhc2grpgpio {
+		pinmux = <MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19>;
+		drive-strength = <1>;
+		slew-rate = <0>;
+		bias-pull-up;
+	};
+
+	pinctrl_uart1: uart1grp {
+		pinmux = <
+			MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX
+			MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX
+		>;
+		drive-strength = <1>;
+		slew-rate = <0>;
+		bias-pull-up;
+	};
+
+	pinctrl_usdhc1_cd_reset: usdhc1cdgrp {
+		pinmux = <
+			MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12
+			MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B
+			>;
+		drive-strength = <1>;
+		slew-rate = <0>;
+		bias-pull-up;
+	};
+
+	pinctrl_usdhc1_clk_strobe: usdhc1clkgrp {
+		pinmux = <
+			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK
+			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE
+			>;
+		drive-strength = <3>;
+		slew-rate = <0>;
+	};
+
+	pinctrl_usdhc1_data: usdhc1datagrp {
+		pinmux = <
+			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD
+			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0
+			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1
+			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2
+			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3
+			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4
+			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5
+			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6
+			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7
+			>;
+		drive-strength = <3>;
+		slew-rate = <0>;
+		bias-pull-up;
+		input-schmitt-enable;
+	};
+
+	pinctrl_usdhc1_clk_strobe_100mhz: usdhc1clk100grp {
+		pinmux = <
+			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK
+			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE
+			>;
+		drive-strength = <3>;
+		slew-rate = <0>;
+	};
+
+	pinctrl_usdhc1_data_100mhz: usdhc1data100grp {
+		pinmux = <
+			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD
+			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0
+			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1
+			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2
+			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3
+			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4
+			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5
+			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6
+			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7
+			>;
+		drive-strength = <5>;
+		slew-rate = <1>;
+		bias-pull-up;
+		input-schmitt-enable;
+	};
+
+	pinctrl_usdhc1_clk_strobe_200mhz: usdhc1clk200grp {
+		pinmux = <
+			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK
+			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE
+			>;
+		drive-strength = <7>;
+		slew-rate = <3>;
+	};
+
+	pinctrl_usdhc1_data_200mhz: usdhc1data200grp {
+		pinmux = <
+			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD
+			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0
+			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1
+			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2
+			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3
+			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4
+			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5
+			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6
+			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7
+			>;
+		drive-strength = <7>;
+		slew-rate = <3>;
+		bias-pull-up;
+		input-schmitt-enable;
+	};
+
+	pinctrl_usdhc2_vselect: usdhc2vselectgrp {
+		pinmux = <MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT>;
+		drive-strength = <1>;
+		slew-rate = <0>;
+		bias-pull-up;
+	};
+
+	pinctrl_usdhc2_clk: usdhc2clkgrp {
+		pinmux = <MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK>;
+		drive-strength = <3>;
+		slew-rate = <0>;
+	};
+
+	pinctrl_usdhc2_data: usdhc2datagrp {
+		pinmux = <
+			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD
+			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0
+			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1
+			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2
+			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3
+			>;
+		drive-strength = <3>;
+		slew-rate = <0>;
+		bias-pull-up;
+		input-schmitt-enable;
+	};
+
+	pinctrl_usdhc2_clk_100mhz: usdhc2clk100grp {
+		pinmux = <MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK>;
+		drive-strength = <5>;
+		slew-rate = <1>;
+	};
+
+	pinctrl_usdhc2_data_100mhz: usdhc2data100grp {
+		pinmux = <
+			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD
+			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0
+			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1
+			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2
+			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3
+			>;
+		drive-strength = <5>;
+		slew-rate = <1>;
+		bias-pull-up;
+		input-schmitt-enable;
+	};
+
+	pinctrl_usdhc2_clk_200mhz: usdhc2clk200grp {
+		pinmux = <MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK>;
+		drive-strength = <7>;
+		slew-rate = <3>;
+	};
+
+	pinctrl_usdhc2_data_200mhz: usdhc2data200grp {
+		pinmux = <
+			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD
+			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0
+			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1
+			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2
+			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3
+			>;
+		drive-strength = <7>;
+		slew-rate = <3>;
+		bias-pull-up;
+		input-schmitt-enable;
+	};
+};