Thread (56 messages) flat view 56 messages, 8 authors, 2018-07-25

[PATCH v2 07/16] iio: adc: sun4i-gpadc-iio: rework: support nvmem calibration data

From: Philipp Rossak <hidden>
Date: 2018-02-02 15:25:00
Also in: linux-devicetree, linux-iio, lkml

quoted
quoted
quoted
   	/* prevents concurrent reads of temperature and ADC */
   	struct mutex			mutex;
   	struct thermal_zone_device	*tzd;
@@ -561,6 +569,9 @@ static int sun4i_gpadc_probe_dt(struct platform_device *pdev,
   	struct resource *mem;
   	void __iomem *base;
   	int ret;
+	struct nvmem_cell *cell;
+	ssize_t cell_size;
+	u64 *cell_data;
   	info->data = of_device_get_match_data(&pdev->dev);
   	if (!info->data)
@@ -575,6 +586,39 @@ static int sun4i_gpadc_probe_dt(struct platform_device *pdev,
   	if (IS_ERR(base))
   		return PTR_ERR(base);
+	info->has_calibration_data[0] = false;
+	info->has_calibration_data[1] = false;
+
+	if (!info->data->supports_nvmem)
+		goto no_nvmem;
+
+	cell = nvmem_cell_get(&pdev->dev, "calibration");
+	if (IS_ERR(cell)) {
+		if (PTR_ERR(cell) == -EPROBE_DEFER)
+			return PTR_ERR(cell);
+		goto no_nvmem;
goto considered evil ? :)
this was a suggestion from Jonatan in version one, to make the code better
readable.
Isn't

if (info->data->supports_nvmem && IS_ERR(cell = nvmem_cell_get()))

pretty much the same thing?

Maxime
I would say :

if (info->data->supports_nvmem && !IS_ERR(cell = nvmem_cell_get())) is

the same.
This would require an else if statement like this:

else if (info->data->supports_nvmem && PTR_ERR(cell) == -EPROBE_DEFER)
		return PTR_ERR(cell);

to avoid errors if the thermal sensor is probed before the sid driver.

Philipp
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help