On 23-09-11, Ahmad Fatoum wrote: > On 11.09.23 14:35, Marco Felsch wrote: > > On 23-09-11, Ahmad Fatoum wrote: > >> fsl,tempmon-data is a deprecated property that has been replaced > >> upstream by a NVMEM cell pointing at the calibration value and so > >> made it into barebox breaking the driver. > >> > >> Switch to using the new property to fix the regression. > > > > The Linux driver code can handle the deprecated binding still, in case > > of old DTBs. Since the DTBS are builtin to barebox updating the DTB > > without the barebox binary make no sense. Anyway, do we need to take the > > deprecated binding into account as well like Linux does? > > For this reason, only the new binding is implemented. I would add this note into the commit message else someone (like me) could say that this breaks driver backward compatibility. Regards, Marco > > Regards, > > Marco > > > >> Fixes: abef60363d8e ("dts: update to v5.8-rc1") > >> Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> > >> --- > >> drivers/aiodev/imx_thermal.c | 25 ++++--------------------- > >> 1 file changed, 4 insertions(+), 21 deletions(-) > >> > >> diff --git a/drivers/aiodev/imx_thermal.c b/drivers/aiodev/imx_thermal.c > >> index 3263519cb241..2693ad05e0e5 100644 > >> --- a/drivers/aiodev/imx_thermal.c > >> +++ b/drivers/aiodev/imx_thermal.c > >> @@ -22,6 +22,7 @@ > >> #include <linux/math64.h> > >> #include <linux/log2.h> > >> #include <linux/clk.h> > >> +#include <linux/nvmem-consumer.h> > >> #include <mach/imx/imx6-anadig.h> > >> #include <io.h> > >> #include <aiodev.h> > >> @@ -29,7 +30,6 @@ > >> > >> #define FACTOR0 10000000 > >> #define MEASURE_FREQ 327 > >> -#define OCOTP_ANA1_OFFSET (0xE * sizeof(uint32_t)) > >> > >> struct imx_thermal_data { > >> int c1, c2; > >> @@ -109,30 +109,13 @@ static int imx_thermal_read(struct aiochannel *chan, int *val) > >> static int imx_thermal_probe(struct device *dev) > >> { > >> uint32_t ocotp_ana1; > >> - struct device_node *node; > >> struct imx_thermal_data *imx_thermal; > >> - struct cdev *ocotp; > >> int t1, n1, t2, n2; > >> int ret; > >> > >> - node = of_parse_phandle(dev->of_node, "fsl,tempmon-data", 0); > >> - if (!node) { > >> - dev_err(dev, "No calibration data source\n"); > >> - return -ENODEV; > >> - } > >> - > >> - ocotp = cdev_by_device_node(node); > >> - if (!ocotp) { > >> - dev_err(dev, "No OCOTP character device\n"); > >> - return -ENODEV; > >> - } > >> - > >> - ret = cdev_read(ocotp, &ocotp_ana1, sizeof(ocotp_ana1), > >> - OCOTP_ANA1_OFFSET, 0); > >> - if (ret != sizeof(ocotp_ana1)) { > >> - dev_err(dev, "Failed to read calibration data\n"); > >> - return ret < 0 ? ret : -EIO; > >> - } > >> + ret = nvmem_cell_read_variable_le_u32(dev, "calib", &ocotp_ana1); > >> + if (ret) > >> + return ret; > >> > >> imx_thermal = xzalloc(sizeof(*imx_thermal)); > >> imx_thermal->base = syscon_base_lookup_by_phandle(dev->of_node, > >> -- > >> 2.39.2 > >> > >> > >> > > > > -- > Pengutronix e.K. | | > Steuerwalder Str. 21 | http://www.pengutronix.de/ | > 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | > Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | > >