Message ID | 20180201183126.32384-3-l.stach@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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>
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
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
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 ...
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
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
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
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
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
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
>-----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
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
> -----Original Message----- > From: Lucas Stach [mailto:l.stach@pengutronix.de] > Sent: Friday, February 23, 2018 11:45 PM > To: Shawn Guo <shawnguo@kernel.org> > Cc: Rob Herring <robh+dt@kernel.org>; Mark Rutland > <mark.rutland@arm.com>; Catalin Marinas <catalin.marinas@arm.com>; Will > Deacon <will.deacon@arm.com>; Fabio Estevam <fabio.estevam@nxp.com>; > dl-linux-imx <linux-imx@nxp.com>; devicetree@vger.kernel.org; linux-arm- > kernel@lists.infradead.org; kernel@pengutronix.de; patchwork- > lst@pengutronix.de; A.s. Dong <aisheng.dong@nxp.com>; Baruch Siach > <baruch@tkos.co.il> > Subject: Re: [PATCH v2 3/4] arm64: add support for i.MX8M EVK board > > 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. The switching to 3.3v seems to happen in mmc_power_up. As mx8mq evk board eMMC is fixed to 1.8V, I guess this probably will not cause any real issue rather than a WARNING. > Despite > the error messages eMMC works fine in my testing. It's strange that It did not work at Shawn's and my side. Regards Dong Aisheng > > Regards, > Lucas
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 = <®_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; + }; +};