* [U-Boot] [PATCH 2/2] mx6sxsabresd: Add thermal support
@ 2014-11-25 15:11 Fabio Estevam
2014-11-25 15:11 ` [U-Boot] [PATCH 1/2] mxc_ocotp: Do not disable the OCOTP clock after every access Fabio Estevam
2014-12-01 9:36 ` [U-Boot] [PATCH 2/2] mx6sxsabresd: Add thermal support Stefano Babic
0 siblings, 2 replies; 7+ messages in thread
From: Fabio Estevam @ 2014-11-25 15:11 UTC (permalink / raw)
To: u-boot
Add thermal support so that the temperature of the chip can be displayed on
boot:
U-Boot 2015.01-rc1-18268-g1366c05-dirty (Nov 25 2014 - 13:02:42)
CPU: Freescale i.MX6SX rev1.0 at 792 MHz
CPU: Temperature 50 C
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
include/configs/mx6sxsabresd.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/include/configs/mx6sxsabresd.h b/include/configs/mx6sxsabresd.h
index d8ab291..5e0edab 100644
--- a/include/configs/mx6sxsabresd.h
+++ b/include/configs/mx6sxsabresd.h
@@ -208,6 +208,16 @@
#define CONFIG_PCIE_IMX_POWER_GPIO IMX_GPIO_NR(2, 1)
#endif
+#define CONFIG_DM
+#define CONFIG_DM_THERMAL
+#define CONFIG_SYS_MALLOC_F_LEN (1 << 10)
+#define CONFIG_IMX6_THERMAL
+
+#define CONFIG_CMD_FUSE
+#if defined(CONFIG_CMD_FUSE) || defined(CONFIG_IMX6_THERMAL)
+#define CONFIG_MXC_OCOTP
+#endif
+
/* FLASH and environment organization */
#define CONFIG_SYS_NO_FLASH
--
1.9.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 1/2] mxc_ocotp: Do not disable the OCOTP clock after every access
2014-11-25 15:11 [U-Boot] [PATCH 2/2] mx6sxsabresd: Add thermal support Fabio Estevam
@ 2014-11-25 15:11 ` Fabio Estevam
2014-11-25 19:48 ` Benoît Thébaudeau
2014-12-01 9:36 ` Stefano Babic
2014-12-01 9:36 ` [U-Boot] [PATCH 2/2] mx6sxsabresd: Add thermal support Stefano Babic
1 sibling, 2 replies; 7+ messages in thread
From: Fabio Estevam @ 2014-11-25 15:11 UTC (permalink / raw)
To: u-boot
Leave the OCOTP turned on, so that we subsequent access do not fail.
After enabling the thermal driver on a mx6sxsabresd board:
U-Boot 2015.01-rc1-18267-g99d4189-dirty (Nov 24 2014 - 12:59:01)
CPU: Freescale i.MX6SX rev1.0 at 792 MHz
CPU: Temperature 48 C
Reset cause: POR
Board: MX6SX SABRE SDB
I2C: ready
DRAM: 1 GiB
PMIC: PFUZE100 ID=0x10
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
00:01.0 - 16c3:abcd - Bridge device
01:00.0 - 8086:08b1 - Network controller
In: serial
Out: serial
Err: serial
Net:
(hang)
As the thermal driver accesses the ocotp registers, its clock will be disabled
afterwards.
Then when the MAC address is read (also from ocotp registers) it will cause a
hang.
Do not disable the ocotp clock to prevent this problem.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
drivers/misc/mxc_ocotp.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/misc/mxc_ocotp.c b/drivers/misc/mxc_ocotp.c
index 3de1245..67f9429 100644
--- a/drivers/misc/mxc_ocotp.c
+++ b/drivers/misc/mxc_ocotp.c
@@ -81,8 +81,6 @@ static int finish_access(struct ocotp_regs *regs, const char *caller)
err = !!(readl(®s->ctrl) & BM_CTRL_ERROR);
clear_error(regs);
- enable_ocotp_clk(0);
-
if (err) {
printf("mxc_ocotp %s(): Access protect error\n", caller);
return -EIO;
--
1.9.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 1/2] mxc_ocotp: Do not disable the OCOTP clock after every access
2014-11-25 15:11 ` [U-Boot] [PATCH 1/2] mxc_ocotp: Do not disable the OCOTP clock after every access Fabio Estevam
@ 2014-11-25 19:48 ` Benoît Thébaudeau
2014-11-25 19:56 ` Fabio Estevam
2014-12-01 9:36 ` Stefano Babic
1 sibling, 1 reply; 7+ messages in thread
From: Benoît Thébaudeau @ 2014-11-25 19:48 UTC (permalink / raw)
To: u-boot
Hi Fabio,
On Tue, Nov 25, 2014 at 4:11 PM, Fabio Estevam
<fabio.estevam@freescale.com> wrote:
> Leave the OCOTP turned on, so that we subsequent access do not fail.
>
> After enabling the thermal driver on a mx6sxsabresd board:
>
> U-Boot 2015.01-rc1-18267-g99d4189-dirty (Nov 24 2014 - 12:59:01)
>
> CPU: Freescale i.MX6SX rev1.0 at 792 MHz
> CPU: Temperature 48 C
> Reset cause: POR
> Board: MX6SX SABRE SDB
> I2C: ready
> DRAM: 1 GiB
> PMIC: PFUZE100 ID=0x10
> MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
> 00:01.0 - 16c3:abcd - Bridge device
> 01:00.0 - 8086:08b1 - Network controller
> In: serial
> Out: serial
> Err: serial
> Net:
> (hang)
>
> As the thermal driver accesses the ocotp registers, its clock will be disabled
> afterwards.
>
> Then when the MAC address is read (also from ocotp registers) it will cause a
> hang.
>
> Do not disable the ocotp clock to prevent this problem.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
> drivers/misc/mxc_ocotp.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/drivers/misc/mxc_ocotp.c b/drivers/misc/mxc_ocotp.c
> index 3de1245..67f9429 100644
> --- a/drivers/misc/mxc_ocotp.c
> +++ b/drivers/misc/mxc_ocotp.c
> @@ -81,8 +81,6 @@ static int finish_access(struct ocotp_regs *regs, const char *caller)
> err = !!(readl(®s->ctrl) & BM_CTRL_ERROR);
> clear_error(regs);
>
> - enable_ocotp_clk(0);
> -
> if (err) {
> printf("mxc_ocotp %s(): Access protect error\n", caller);
> return -EIO;
That, or:
- Make imx_get_mac_from_fuse() call enable_ocotp_clk(1) before
reading the fuses, then call enable_ocotp_clk(0).
- Make enable_ocotp_clk() return the clock initial state and store it
in prepare_access(), then restore it in finish_access(). Same in
imx_get_mac_from_fuse().
Which of these 3 choices do you think would be the best?
Regards,
Beno?t
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 1/2] mxc_ocotp: Do not disable the OCOTP clock after every access
2014-11-25 19:48 ` Benoît Thébaudeau
@ 2014-11-25 19:56 ` Fabio Estevam
2014-11-25 20:13 ` Benoît Thébaudeau
0 siblings, 1 reply; 7+ messages in thread
From: Fabio Estevam @ 2014-11-25 19:56 UTC (permalink / raw)
To: u-boot
Hi Beno?t,
On Tue, Nov 25, 2014 at 5:48 PM, Beno?t Th?baudeau
<benoit.thebaudeau.dev@gmail.com> wrote:
> That, or:
> - Make imx_get_mac_from_fuse() call enable_ocotp_clk(1) before
> reading the fuses, then call enable_ocotp_clk(0).
Yes, I started with this exact same approach as well. It works, but
Nitin told me he also had similiar issues with hab.
Other issue I see with such approach is that if people would try to
read the ocotp registers manually in the U-boot prompt (via md.l
command), then they will also get a hang.
> - Make enable_ocotp_clk() return the clock initial state and store it
> in prepare_access(), then restore it in finish_access(). Same in
> imx_get_mac_from_fuse().
This would work as well, but with some more complexity. Still would
cause the hang via manual readings.
> Which of these 3 choices do you think would be the best?
I think the simplest one and the one that would be more general would
be the one proposed by this patch.
Regards,
Fabio Estevam
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 1/2] mxc_ocotp: Do not disable the OCOTP clock after every access
2014-11-25 19:56 ` Fabio Estevam
@ 2014-11-25 20:13 ` Benoît Thébaudeau
0 siblings, 0 replies; 7+ messages in thread
From: Benoît Thébaudeau @ 2014-11-25 20:13 UTC (permalink / raw)
To: u-boot
Hi Fabio,
On Tue, Nov 25, 2014 at 8:56 PM, Fabio Estevam <festevam@gmail.com> wrote:
> On Tue, Nov 25, 2014 at 5:48 PM, Beno?t Th?baudeau
> <benoit.thebaudeau.dev@gmail.com> wrote:
>
>> That, or:
>> - Make imx_get_mac_from_fuse() call enable_ocotp_clk(1) before
>> reading the fuses, then call enable_ocotp_clk(0).
>
> Yes, I started with this exact same approach as well. It works, but
> Nitin told me he also had similiar issues with hab.
>
> Other issue I see with such approach is that if people would try to
> read the ocotp registers manually in the U-boot prompt (via md.l
> command), then they will also get a hang.
If users access the OCOTP registers manually, they can also enable the
OCOTP clock in the corresponding register beforehand, even if this
complicates things.
>> - Make enable_ocotp_clk() return the clock initial state and store it
>> in prepare_access(), then restore it in finish_access(). Same in
>> imx_get_mac_from_fuse().
>
> This would work as well, but with some more complexity. Still would
> cause the hang via manual readings.
>
>> Which of these 3 choices do you think would be the best?
>
> I think the simplest one and the one that would be more general would
> be the one proposed by this patch.
The only possible issue that I see with leaving the OCOTP clock
enabled is the risk of inadvertently writing the fuses, either in
U-Boot or in the booted OS. That being said, Freescale advise against
leaving the fuses powered for production boards, in which cases there
is no such risk.
Reviewed-by: Beno?t Th?baudeau <benoit.thebaudeau.dev@gmail.com>
Regards,
Beno?t
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 2/2] mx6sxsabresd: Add thermal support
2014-11-25 15:11 [U-Boot] [PATCH 2/2] mx6sxsabresd: Add thermal support Fabio Estevam
2014-11-25 15:11 ` [U-Boot] [PATCH 1/2] mxc_ocotp: Do not disable the OCOTP clock after every access Fabio Estevam
@ 2014-12-01 9:36 ` Stefano Babic
1 sibling, 0 replies; 7+ messages in thread
From: Stefano Babic @ 2014-12-01 9:36 UTC (permalink / raw)
To: u-boot
On 25/11/2014 16:11, Fabio Estevam wrote:
> Add thermal support so that the temperature of the chip can be displayed on
> boot:
>
> U-Boot 2015.01-rc1-18268-g1366c05-dirty (Nov 25 2014 - 13:02:42)
>
> CPU: Freescale i.MX6SX rev1.0 at 792 MHz
> CPU: Temperature 50 C
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
> include/configs/mx6sxsabresd.h | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/include/configs/mx6sxsabresd.h b/include/configs/mx6sxsabresd.h
> index d8ab291..5e0edab 100644
> --- a/include/configs/mx6sxsabresd.h
> +++ b/include/configs/mx6sxsabresd.h
> @@ -208,6 +208,16 @@
> #define CONFIG_PCIE_IMX_POWER_GPIO IMX_GPIO_NR(2, 1)
> #endif
>
> +#define CONFIG_DM
> +#define CONFIG_DM_THERMAL
> +#define CONFIG_SYS_MALLOC_F_LEN (1 << 10)
> +#define CONFIG_IMX6_THERMAL
> +
> +#define CONFIG_CMD_FUSE
> +#if defined(CONFIG_CMD_FUSE) || defined(CONFIG_IMX6_THERMAL)
> +#define CONFIG_MXC_OCOTP
> +#endif
> +
> /* FLASH and environment organization */
> #define CONFIG_SYS_NO_FLASH
>
>
Applied to u-boot-imx, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 1/2] mxc_ocotp: Do not disable the OCOTP clock after every access
2014-11-25 15:11 ` [U-Boot] [PATCH 1/2] mxc_ocotp: Do not disable the OCOTP clock after every access Fabio Estevam
2014-11-25 19:48 ` Benoît Thébaudeau
@ 2014-12-01 9:36 ` Stefano Babic
1 sibling, 0 replies; 7+ messages in thread
From: Stefano Babic @ 2014-12-01 9:36 UTC (permalink / raw)
To: u-boot
On 25/11/2014 16:11, Fabio Estevam wrote:
> Leave the OCOTP turned on, so that we subsequent access do not fail.
>
> After enabling the thermal driver on a mx6sxsabresd board:
>
> U-Boot 2015.01-rc1-18267-g99d4189-dirty (Nov 24 2014 - 12:59:01)
>
> CPU: Freescale i.MX6SX rev1.0 at 792 MHz
> CPU: Temperature 48 C
> Reset cause: POR
> Board: MX6SX SABRE SDB
> I2C: ready
> DRAM: 1 GiB
> PMIC: PFUZE100 ID=0x10
> MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
> 00:01.0 - 16c3:abcd - Bridge device
> 01:00.0 - 8086:08b1 - Network controller
> In: serial
> Out: serial
> Err: serial
> Net:
> (hang)
>
> As the thermal driver accesses the ocotp registers, its clock will be disabled
> afterwards.
>
> Then when the MAC address is read (also from ocotp registers) it will cause a
> hang.
>
> Do not disable the ocotp clock to prevent this problem.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
> drivers/misc/mxc_ocotp.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/drivers/misc/mxc_ocotp.c b/drivers/misc/mxc_ocotp.c
> index 3de1245..67f9429 100644
> --- a/drivers/misc/mxc_ocotp.c
> +++ b/drivers/misc/mxc_ocotp.c
> @@ -81,8 +81,6 @@ static int finish_access(struct ocotp_regs *regs, const char *caller)
> err = !!(readl(®s->ctrl) & BM_CTRL_ERROR);
> clear_error(regs);
>
> - enable_ocotp_clk(0);
> -
> if (err) {
> printf("mxc_ocotp %s(): Access protect error\n", caller);
> return -EIO;
>
Applied to u-boot-imx, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-12-01 9:36 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-25 15:11 [U-Boot] [PATCH 2/2] mx6sxsabresd: Add thermal support Fabio Estevam
2014-11-25 15:11 ` [U-Boot] [PATCH 1/2] mxc_ocotp: Do not disable the OCOTP clock after every access Fabio Estevam
2014-11-25 19:48 ` Benoît Thébaudeau
2014-11-25 19:56 ` Fabio Estevam
2014-11-25 20:13 ` Benoît Thébaudeau
2014-12-01 9:36 ` Stefano Babic
2014-12-01 9:36 ` [U-Boot] [PATCH 2/2] mx6sxsabresd: Add thermal support Stefano Babic
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox