[PATCH 1/2] thermal: imx_tmu: Clean up all prints

Use dev_(dev, ...) for all printing and debug logging, since this already includes the device name. Drop device name where duplicate.
Signed-off-by: Marek Vasut marex@denx.de --- Cc: "NXP i.MX U-Boot Team" uboot-imx@nxp.com Cc: Andrejs Cainikovs andrejs.cainikovs@toradex.com Cc: Fabio Estevam festevam@gmail.com Cc: Fedor Ross fedor.ross@ifm.com Cc: Marek Vasut marex@denx.de Cc: Peng Fan peng.fan@nxp.com Cc: Stefano Babic sbabic@denx.de Cc: Ye Li ye.li@nxp.com --- drivers/thermal/imx_tmu.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/drivers/thermal/imx_tmu.c b/drivers/thermal/imx_tmu.c index ca45abbb8e1..8d638797eb7 100644 --- a/drivers/thermal/imx_tmu.c +++ b/drivers/thermal/imx_tmu.c @@ -11,6 +11,7 @@ #include <asm/arch/clock.h> #include <asm/arch/sys_proto.h> #include <dm.h> +#include <dm/device_compat.h> #include <dm/device-internal.h> #include <dm/device.h> #include <errno.h> @@ -185,8 +186,8 @@ int imx_tmu_get_temp(struct udevice *dev, int *temp) return ret;
while (cpu_tmp >= pdata->alert) { - printf("CPU Temperature (%dC) has beyond alert (%dC), close to critical (%dC)", cpu_tmp, pdata->alert, pdata->critical); - puts(" waiting...\n"); + dev_info(dev, "CPU Temperature (%dC) has beyond alert (%dC), close to critical (%dC) waiting...\n", + cpu_tmp, pdata->alert, pdata->critical); mdelay(pdata->polling_delay); ret = read_temperature(dev, &cpu_tmp); if (ret) @@ -210,14 +211,14 @@ static int imx_tmu_calibration(struct udevice *dev) struct imx_tmu_plat *pdata = dev_get_plat(dev); ulong drv_data = dev_get_driver_data(dev);
- debug("%s\n", __func__); + dev_dbg(dev, "%s\n", __func__);
if (drv_data & (FLAGS_VER2 | FLAGS_VER3)) return 0;
ret = dev_read_u32_array(dev, "fsl,tmu-range", range, 4); if (ret) { - printf("TMU: missing calibration range, ret = %d.\n", ret); + dev_err(dev, "TMU: missing calibration range, ret = %d.\n", ret); return ret; }
@@ -229,7 +230,7 @@ static int imx_tmu_calibration(struct udevice *dev)
calibration = dev_read_prop(dev, "fsl,tmu-calibration", &len); if (!calibration || len % 8) { - printf("TMU: invalid calibration data.\n"); + dev_err(dev, "TMU: invalid calibration data.\n"); return -ENODEV; }
@@ -252,7 +253,7 @@ static void imx_tmu_init(struct udevice *dev) struct imx_tmu_plat *pdata = dev_get_plat(dev); ulong drv_data = dev_get_driver_data(dev);
- debug("%s\n", __func__); + dev_dbg(dev, "%s\n", __func__);
if (drv_data & FLAGS_VER3) { /* Disable monitoring */ @@ -287,7 +288,7 @@ static int imx_tmu_enable_msite(struct udevice *dev) ulong drv_data = dev_get_driver_data(dev); u32 reg;
- debug("%s\n", __func__); + dev_dbg(dev, "%s\n", __func__);
if (!pdata->regs) return -EIO; @@ -346,7 +347,7 @@ static int imx_tmu_bind(struct udevice *dev) const void *prop; int minc, maxc;
- debug("%s dev name %s\n", __func__, dev->name); + dev_dbg(dev, "%s\n", __func__);
prop = dev_read_prop(dev, "compatible", NULL); if (!prop) @@ -367,8 +368,7 @@ static int imx_tmu_bind(struct udevice *dev) dev->driver_data, offset, NULL); if (ret) - printf("Error binding driver '%s': %d\n", - dev->driver->name, ret); + dev_err(dev, "Error binding driver: %d\n", ret); }
return 0; @@ -381,7 +381,7 @@ static int imx_tmu_parse_fdt(struct udevice *dev) ofnode trips_np; int ret;
- debug("%s dev name %s\n", __func__, dev->name); + dev_dbg(dev, "%s\n", __func__);
if (pdata->zone_node) { pdata->regs = (union tmu_regs *)dev_read_addr_ptr(dev); @@ -409,7 +409,7 @@ static int imx_tmu_parse_fdt(struct udevice *dev) else pdata->id = 0;
- debug("args.args_count %d, id %d\n", args.args_count, pdata->id); + dev_dbg(dev, "args.args_count %d, id %d\n", args.args_count, pdata->id);
pdata->polling_delay = dev_read_u32_default(dev, "polling-delay", 1000);
@@ -428,8 +428,8 @@ static int imx_tmu_parse_fdt(struct udevice *dev) continue; }
- debug("id %d polling_delay %d, critical %d, alert %d\n", - pdata->id, pdata->polling_delay, pdata->critical, pdata->alert); + dev_dbg(dev, "id %d polling_delay %d, critical %d, alert %d\n", + pdata->id, pdata->polling_delay, pdata->critical, pdata->alert);
return 0; } @@ -441,7 +441,7 @@ static int imx_tmu_probe(struct udevice *dev)
ret = imx_tmu_parse_fdt(dev); if (ret) { - printf("Error in parsing TMU FDT %d\n", ret); + dev_err(dev, "Error in parsing TMU FDT %d\n", ret); return ret; }

Stop polluting the architecture directory with driver specific code, move it into driver where it should be. Split the code slightly so the MX8MM/MX8MN fuse readout and programming and MX8MP fuse readout and programming are in their separate functions, and called in case of matching SoC.
Signed-off-by: Marek Vasut marex@denx.de --- Cc: "NXP i.MX U-Boot Team" uboot-imx@nxp.com Cc: Andrejs Cainikovs andrejs.cainikovs@toradex.com Cc: Fabio Estevam festevam@gmail.com Cc: Fedor Ross fedor.ross@ifm.com Cc: Marek Vasut marex@denx.de Cc: Peng Fan peng.fan@nxp.com Cc: Stefano Babic sbabic@denx.de Cc: Ye Li ye.li@nxp.com --- arch/arm/mach-imx/imx8m/soc.c | 73 --------------------------- drivers/thermal/imx_tmu.c | 95 ++++++++++++++++++++++++++++++++++- 2 files changed, 93 insertions(+), 75 deletions(-)
diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c index 7ea3848af7b..82328e6e5cf 100644 --- a/arch/arm/mach-imx/imx8m/soc.c +++ b/arch/arm/mach-imx/imx8m/soc.c @@ -1524,79 +1524,6 @@ int arch_misc_init(void) } #endif
-void imx_tmu_arch_init(void *reg_base) -{ - if (is_imx8mm() || is_imx8mn()) { - /* Load TCALIV and TASR from fuses */ - struct ocotp_regs *ocotp = - (struct ocotp_regs *)OCOTP_BASE_ADDR; - struct fuse_bank *bank = &ocotp->bank[3]; - struct fuse_bank3_regs *fuse = - (struct fuse_bank3_regs *)bank->fuse_regs; - - u32 tca_rt, tca_hr, tca_en; - u32 buf_vref, buf_slope; - - tca_rt = fuse->ana0 & 0xFF; - tca_hr = (fuse->ana0 & 0xFF00) >> 8; - tca_en = (fuse->ana0 & 0x2000000) >> 25; - - buf_vref = (fuse->ana0 & 0x1F00000) >> 20; - buf_slope = (fuse->ana0 & 0xF0000) >> 16; - - writel(buf_vref | (buf_slope << 16), (ulong)reg_base + 0x28); - writel((tca_en << 31) | (tca_hr << 16) | tca_rt, - (ulong)reg_base + 0x30); - } -#ifdef CONFIG_IMX8MP - /* Load TCALIV0/1/m40 and TRIM from fuses */ - struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; - struct fuse_bank *bank = &ocotp->bank[38]; - struct fuse_bank38_regs *fuse = - (struct fuse_bank38_regs *)bank->fuse_regs; - struct fuse_bank *bank2 = &ocotp->bank[39]; - struct fuse_bank39_regs *fuse2 = - (struct fuse_bank39_regs *)bank2->fuse_regs; - u32 buf_vref, buf_slope, bjt_cur, vlsb, bgr; - u32 reg; - u32 tca40[2], tca25[2], tca105[2]; - - /* For blank sample */ - if (!fuse->ana_trim2 && !fuse->ana_trim3 && - !fuse->ana_trim4 && !fuse2->ana_trim5) { - /* Use a default 25C binary codes */ - tca25[0] = 1596; - tca25[1] = 1596; - writel(tca25[0], (ulong)reg_base + 0x30); - writel(tca25[1], (ulong)reg_base + 0x34); - return; - } - - buf_vref = (fuse->ana_trim2 & 0xc0) >> 6; - buf_slope = (fuse->ana_trim2 & 0xF00) >> 8; - bjt_cur = (fuse->ana_trim2 & 0xF000) >> 12; - bgr = (fuse->ana_trim2 & 0xF0000) >> 16; - vlsb = (fuse->ana_trim2 & 0xF00000) >> 20; - writel(buf_vref | (buf_slope << 16), (ulong)reg_base + 0x28); - - reg = (bgr << 28) | (bjt_cur << 20) | (vlsb << 12) | (1 << 7); - writel(reg, (ulong)reg_base + 0x3c); - - tca40[0] = (fuse->ana_trim3 & 0xFFF0000) >> 16; - tca25[0] = (fuse->ana_trim3 & 0xF0000000) >> 28; - tca25[0] |= ((fuse->ana_trim4 & 0xFF) << 4); - tca105[0] = (fuse->ana_trim4 & 0xFFF00) >> 8; - tca40[1] = (fuse->ana_trim4 & 0xFFF00000) >> 20; - tca25[1] = fuse2->ana_trim5 & 0xFFF; - tca105[1] = (fuse2->ana_trim5 & 0xFFF000) >> 12; - - /* use 25c for 1p calibration */ - writel(tca25[0] | (tca105[0] << 16), (ulong)reg_base + 0x30); - writel(tca25[1] | (tca105[1] << 16), (ulong)reg_base + 0x34); - writel(tca40[0] | (tca40[1] << 16), (ulong)reg_base + 0x38); -#endif -} - #if defined(CONFIG_SPL_BUILD) #if defined(CONFIG_IMX8MQ) || defined(CONFIG_IMX8MM) || defined(CONFIG_IMX8MN) bool serror_need_skip = true; diff --git a/drivers/thermal/imx_tmu.c b/drivers/thermal/imx_tmu.c index 8d638797eb7..eb5605590fd 100644 --- a/drivers/thermal/imx_tmu.c +++ b/drivers/thermal/imx_tmu.c @@ -244,8 +244,99 @@ static int imx_tmu_calibration(struct udevice *dev) return 0; }
-void __weak imx_tmu_arch_init(void *reg_base) +#if defined(CONFIG_IMX8MM) || defined(CONFIG_IMX8MN) +static void imx_tmu_mx8mm_mx8mn_init(struct udevice *dev) { + /* Load TCALIV and TASR from fuses */ + struct ocotp_regs *ocotp = + (struct ocotp_regs *)OCOTP_BASE_ADDR; + struct fuse_bank *bank = &ocotp->bank[3]; + struct fuse_bank3_regs *fuse = + (struct fuse_bank3_regs *)bank->fuse_regs; + struct imx_tmu_plat *pdata = dev_get_plat(dev); + void *reg_base = (void *)pdata->regs; + + u32 tca_rt, tca_hr, tca_en; + u32 buf_vref, buf_slope; + + tca_rt = fuse->ana0 & 0xFF; + tca_hr = (fuse->ana0 & 0xFF00) >> 8; + tca_en = (fuse->ana0 & 0x2000000) >> 25; + + buf_vref = (fuse->ana0 & 0x1F00000) >> 20; + buf_slope = (fuse->ana0 & 0xF0000) >> 16; + + writel(buf_vref | (buf_slope << 16), (ulong)reg_base + 0x28); + writel((tca_en << 31) | (tca_hr << 16) | tca_rt, + (ulong)reg_base + 0x30); +} +#else +static inline void imx_tmu_mx8mm_mx8mn_init(struct udevice *dev) { } +#endif + +#if defined(CONFIG_IMX8MP) +static void imx_tmu_mx8mp_init(struct udevice *dev) +{ + /* Load TCALIV0/1/m40 and TRIM from fuses */ + struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; + struct fuse_bank *bank = &ocotp->bank[38]; + struct fuse_bank38_regs *fuse = + (struct fuse_bank38_regs *)bank->fuse_regs; + struct fuse_bank *bank2 = &ocotp->bank[39]; + struct fuse_bank39_regs *fuse2 = + (struct fuse_bank39_regs *)bank2->fuse_regs; + struct imx_tmu_plat *pdata = dev_get_plat(dev); + void *reg_base = (void *)pdata->regs; + u32 buf_vref, buf_slope, bjt_cur, vlsb, bgr; + u32 reg; + u32 tca40[2], tca25[2], tca105[2]; + + /* For blank sample */ + if (!fuse->ana_trim2 && !fuse->ana_trim3 && + !fuse->ana_trim4 && !fuse2->ana_trim5) { + /* Use a default 25C binary codes */ + tca25[0] = 1596; + tca25[1] = 1596; + writel(tca25[0], (ulong)reg_base + 0x30); + writel(tca25[1], (ulong)reg_base + 0x34); + return; + } + + buf_vref = (fuse->ana_trim2 & 0xc0) >> 6; + buf_slope = (fuse->ana_trim2 & 0xF00) >> 8; + bjt_cur = (fuse->ana_trim2 & 0xF000) >> 12; + bgr = (fuse->ana_trim2 & 0xF0000) >> 16; + vlsb = (fuse->ana_trim2 & 0xF00000) >> 20; + writel(buf_vref | (buf_slope << 16), (ulong)reg_base + 0x28); + + reg = (bgr << 28) | (bjt_cur << 20) | (vlsb << 12) | (1 << 7); + writel(reg, (ulong)reg_base + 0x3c); + + tca40[0] = (fuse->ana_trim3 & 0xFFF0000) >> 16; + tca25[0] = (fuse->ana_trim3 & 0xF0000000) >> 28; + tca25[0] |= ((fuse->ana_trim4 & 0xFF) << 4); + tca105[0] = (fuse->ana_trim4 & 0xFFF00) >> 8; + tca40[1] = (fuse->ana_trim4 & 0xFFF00000) >> 20; + tca25[1] = fuse2->ana_trim5 & 0xFFF; + tca105[1] = (fuse2->ana_trim5 & 0xFFF000) >> 12; + + /* use 25c for 1p calibration */ + writel(tca25[0] | (tca105[0] << 16), (ulong)reg_base + 0x30); + writel(tca25[1] | (tca105[1] << 16), (ulong)reg_base + 0x34); + writel(tca40[0] | (tca40[1] << 16), (ulong)reg_base + 0x38); +} +#else +static inline void imx_tmu_mx8mp_init(struct udevice *dev) { } +#endif + +static void imx_tmu_arch_init(struct udevice *dev) +{ + if (is_imx8mm() || is_imx8mn()) + imx_tmu_mx8mm_mx8mn_init(dev); + else if (is_imx8mp()) + imx_tmu_mx8mp_init(dev); + else + dev_err(dev, "Unsupported SoC, TMU calibration not loaded!\n"); }
static void imx_tmu_init(struct udevice *dev) @@ -279,7 +370,7 @@ static void imx_tmu_init(struct udevice *dev) writel(TMTMIR_DEFAULT, &pdata->regs->regs_v1.tmtmir); }
- imx_tmu_arch_init((void *)pdata->regs); + imx_tmu_arch_init(dev); }
static int imx_tmu_enable_msite(struct udevice *dev)

On Tue, Apr 4, 2023 at 4:25 PM Marek Vasut marex@denx.de wrote:
Stop polluting the architecture directory with driver specific code, move it into driver where it should be. Split the code slightly so the MX8MM/MX8MN fuse readout and programming and MX8MP fuse readout and programming are in their separate functions, and called in case of matching SoC.
Signed-off-by: Marek Vasut marex@denx.de
Reviewed-by: Fabio Estevam festevam@denx.de

Stop polluting the architecture directory with driver specific code, move it into driver where it should be. Split the code slightly so the MX8MM/MX8MN fuse readout and programming and MX8MP fuse readout and programming are in their separate functions, and called in case of matching SoC.
Signed-off-by: Marek Vasut marex@denx.de
Reviewed-by: Fabio Estevam festevam@denx.de
Reviewed-by: Andrejs Cainikovs andrejs.cainikovs@toradex.com

Stop polluting the architecture directory with driver specific code, move it into driver where it should be. Split the code slightly so the MX8MM/MX8MN fuse readout and programming and MX8MP fuse readout and programming are in their separate functions, and called in case of matching SoC. Signed-off-by: Marek Vasut marex@denx.de Reviewed-by: Fabio Estevam festevam@denx.de Reviewed-by: Andrejs Cainikovs andrejs.cainikovs@toradex.com
Applied to u-boot-imx, master, thanks !
Best regards, Stefano Babic

On Tue, Apr 4, 2023 at 4:25 PM Marek Vasut marex@denx.de wrote:
Use dev_(dev, ...) for all printing and debug logging, since this already includes the device name. Drop device name where duplicate.
Signed-off-by: Marek Vasut marex@denx.de
Reviewed-by: Fabio Estevam festevam@denx.de

Use dev_(dev, ...) for all printing and debug logging, since this already includes the device name. Drop device name where duplicate.
Signed-off-by: Marek Vasut marex@denx.de
Reviewed-by: Fabio Estevam festevam@denx.de
Reviewed-by: Andrejs Cainikovs andrejs.cainikovs@toradex.com

Use dev_(dev, ...) for all printing and debug logging, since this already includes the device name. Drop device name where duplicate. Signed-off-by: Marek Vasut marex@denx.de Reviewed-by: Fabio Estevam festevam@denx.de Reviewed-by: Andrejs Cainikovs andrejs.cainikovs@toradex.com
Applied to u-boot-imx, master, thanks !
Best regards, Stefano Babic
participants (4)
-
Andrejs Cainikovs
-
Fabio Estevam
-
Marek Vasut
-
sbabic@denx.de