Re: [U-Boot] [U-Boot, v3, 3/3] armv8: ls1012a: define esdhc_status_fixup for RDB board

2017-01-13 Thread Y.B. Lu
> -Original Message-
> From: york sun
> Sent: Friday, January 13, 2017 1:09 AM
> To: Y.B. Lu; u-boot@lists.denx.de
> Subject: Re: [U-Boot, v3, 3/3] armv8: ls1012a: define esdhc_status_fixup
> for RDB board
> 
> On 12/07/2016 07:42 PM, Yangbo Lu wrote:
> > On LS1012ARDB board, three dual 1:4 mux/demux devices drive the SDHC2
> > signals to eMMC, SDIO wifi, SPI and Ardiuno shield. Only when we
> > select eMMC and SDIO wifi, the SDHC2 could be used. Otherwise, the
> > command inhibit bits of eSDHC2_PRSSTAT register will never release.
> > This would cause below continious error messages in linux since it
> > uses polling mode to detect card.
> > "mmc1: Controller never released inhibit bit(s)."
> > "mmc1: Controller never released inhibit bit(s)."
> > "mmc1: Controller never released inhibit bit(s)."
> > This patch is to define esdhc_status_fixup function for RDB to disable
> > SDHC2 status if no SDIO wifi or eMMC is selected.
> >
> > Signed-off-by: Yangbo Lu <yangbo...@nxp.com>
> > ---
> > Changes for v2:
> > - Added this patch
> > Changes for v3:
> > - Fixed checkpatch issue
> > ---
> >  board/freescale/ls1012ardb/ls1012ardb.c | 39
> > +
> >  1 file changed, 39 insertions(+)
> >
> > diff --git a/board/freescale/ls1012ardb/ls1012ardb.c
> > b/board/freescale/ls1012ardb/ls1012ardb.c
> > index 778434d..708e0a1 100644
> > --- a/board/freescale/ls1012ardb/ls1012ardb.c
> > +++ b/board/freescale/ls1012ardb/ls1012ardb.c
> > @@ -113,6 +113,45 @@ int board_init(void)
> > return 0;
> >  }
> >
> > +int esdhc_status_fixup(void *blob, const char *compat) {
> > +   char esdhc0_path[] = "/soc/esdhc@156";
> > +   char esdhc1_path[] = "/soc/esdhc@158";
> > +   u8 io = 0;
> > +   u8 mux_sdhc2;
> > +
> > +   do_fixup_by_path(blob, esdhc0_path, "status", "okay",
> > +sizeof("okay"), 1);
> > +
> > +   /* Initialize i2c early for serial flash bank information */
> > +   i2c_set_bus_num(0);
> 
> What do you mean "early" in the comment? This function is called after
> I2C is initialized.
> 

[Lu Yangbo-B47093] Sorry, it's really confusing comment. I will remove it.

> > +
> > +   /*
> > +* The I2C IO-expander for mux select is used to control the muxing
> > +* of various onboard interfaces.
> > +*
> > +* IO1[3:2] indicates SDHC2 interface demultiplexer select lines.
> > +*  00 - SDIO wifi
> > +*  01 - GPIO (to Arduino)
> > +*  10 - eMMC Memory
> > +*  11 - SPI
> > +*/
> > +   if (i2c_read(I2C_MUX_IO1_ADDR, 0, 1, , 1) < 0) {
> > +   printf("Error reading i2c boot information!\n");
> > +   return 0; /* Don't want to hang() on this error */
> 
> In case of this error, do you want to "disable" esdhc1?

[Lu Yangbo-B47093] If error occurs here, I just used return to let kernel dts 
decide to use it or not.

> 
> > +   }
> > +
> > +   mux_sdhc2 = (io & 0x0c) >> 2;
> > +   /* Enable SDHC2 only when use SDIO wifi and eMMC */
> > +   if (mux_sdhc2 == 2 || mux_sdhc2 == 0)
> > +   do_fixup_by_path(blob, esdhc1_path, "status", "okay",
> > +sizeof("okay"), 1);
> > +   else
> > +   do_fixup_by_path(blob, esdhc1_path, "status", "disabled",
> > +sizeof("disabled"), 1);
> > +   return 0;
> > +}
> > +
> >  int ft_board_setup(void *blob, bd_t *bd)  {
> > arch_fixup_fdt(blob);
> >
> 
> York
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [U-Boot, v3, 3/3] armv8: ls1012a: define esdhc_status_fixup for RDB board

2017-01-12 Thread york sun
On 12/07/2016 07:42 PM, Yangbo Lu wrote:
> On LS1012ARDB board, three dual 1:4 mux/demux devices drive the SDHC2
> signals to eMMC, SDIO wifi, SPI and Ardiuno shield. Only when we select
> eMMC and SDIO wifi, the SDHC2 could be used. Otherwise, the command
> inhibit bits of eSDHC2_PRSSTAT register will never release. This would
> cause below continious error messages in linux since it uses polling
> mode to detect card.
> "mmc1: Controller never released inhibit bit(s)."
> "mmc1: Controller never released inhibit bit(s)."
> "mmc1: Controller never released inhibit bit(s)."
> This patch is to define esdhc_status_fixup function for RDB to disable
> SDHC2 status if no SDIO wifi or eMMC is selected.
>
> Signed-off-by: Yangbo Lu 
> ---
> Changes for v2:
>   - Added this patch
> Changes for v3:
>   - Fixed checkpatch issue
> ---
>  board/freescale/ls1012ardb/ls1012ardb.c | 39 
> +
>  1 file changed, 39 insertions(+)
>
> diff --git a/board/freescale/ls1012ardb/ls1012ardb.c 
> b/board/freescale/ls1012ardb/ls1012ardb.c
> index 778434d..708e0a1 100644
> --- a/board/freescale/ls1012ardb/ls1012ardb.c
> +++ b/board/freescale/ls1012ardb/ls1012ardb.c
> @@ -113,6 +113,45 @@ int board_init(void)
>   return 0;
>  }
>
> +int esdhc_status_fixup(void *blob, const char *compat)
> +{
> + char esdhc0_path[] = "/soc/esdhc@156";
> + char esdhc1_path[] = "/soc/esdhc@158";
> + u8 io = 0;
> + u8 mux_sdhc2;
> +
> + do_fixup_by_path(blob, esdhc0_path, "status", "okay",
> +  sizeof("okay"), 1);
> +
> + /* Initialize i2c early for serial flash bank information */
> + i2c_set_bus_num(0);

What do you mean "early" in the comment? This function is called after 
I2C is initialized.

> +
> + /*
> +  * The I2C IO-expander for mux select is used to control the muxing
> +  * of various onboard interfaces.
> +  *
> +  * IO1[3:2] indicates SDHC2 interface demultiplexer select lines.
> +  *  00 - SDIO wifi
> +  *  01 - GPIO (to Arduino)
> +  *  10 - eMMC Memory
> +  *  11 - SPI
> +  */
> + if (i2c_read(I2C_MUX_IO1_ADDR, 0, 1, , 1) < 0) {
> + printf("Error reading i2c boot information!\n");
> + return 0; /* Don't want to hang() on this error */

In case of this error, do you want to "disable" esdhc1?

> + }
> +
> + mux_sdhc2 = (io & 0x0c) >> 2;
> + /* Enable SDHC2 only when use SDIO wifi and eMMC */
> + if (mux_sdhc2 == 2 || mux_sdhc2 == 0)
> + do_fixup_by_path(blob, esdhc1_path, "status", "okay",
> +  sizeof("okay"), 1);
> + else
> + do_fixup_by_path(blob, esdhc1_path, "status", "disabled",
> +  sizeof("disabled"), 1);
> + return 0;
> +}
> +
>  int ft_board_setup(void *blob, bd_t *bd)
>  {
>   arch_fixup_fdt(blob);
>

York
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot