Commit 7bd29bf1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'hwmon-for-v6.18-rc3' of...

Merge tag 'hwmon-for-v6.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging

Pull hwmon fixes from Guenter Roeck:

 - cgbc-hwmon: Add missing NULL check after devm_kzalloc

 - gpd-fan: Fix error handling

 - pmbus/isl68137: Fix child node reference leak

 - pmbus/max34440: Update adpm12160 coefficients to match latest FW

 - sht3x: Fix error handling

* tag 'hwmon-for-v6.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
  hwmon: (sht3x) Fix error handling
  hwmon: (cgbc-hwmon) Add missing NULL check after devm_kzalloc()
  hwmon: (pmbus/isl68137) Fix child node reference leak on early return
  hwmon: (gpd-fan) Fix error handling in gpd_fan_probe()
  hwmon: (gpd-fan) Fix return value when platform_get_resource() fails
  hwmon: (pmbus/max34440) Update adpm12160 coeff due to latest FW
parents 58834e2d 8dcc66ad
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -107,6 +107,9 @@ static int cgbc_hwmon_probe_sensors(struct device *dev, struct cgbc_hwmon_data *
	nb_sensors = data[0];

	hwmon->sensors = devm_kzalloc(dev, sizeof(*hwmon->sensors) * nb_sensors, GFP_KERNEL);
	if (!hwmon->sensors)
		return -ENOMEM;

	sensor = hwmon->sensors;

	for (i = 0; i < nb_sensors; i++) {
+5 −5
Original line number Diff line number Diff line
@@ -615,14 +615,14 @@ static int gpd_fan_probe(struct platform_device *pdev)
	const struct device *hwdev;

	res = platform_get_resource(pdev, IORESOURCE_IO, 0);
	if (IS_ERR(res))
		return dev_err_probe(dev, PTR_ERR(res),
	if (!res)
		return dev_err_probe(dev, -EINVAL,
				     "Failed to get platform resource\n");

	region = devm_request_region(dev, res->start,
				     resource_size(res), DRIVER_NAME);
	if (IS_ERR(region))
		return dev_err_probe(dev, PTR_ERR(region),
	if (!region)
		return dev_err_probe(dev, -EBUSY,
				     "Failed to request region\n");

	hwdev = devm_hwmon_device_register_with_info(dev,
@@ -631,7 +631,7 @@ static int gpd_fan_probe(struct platform_device *pdev)
						     &gpd_fan_chip_info,
						     NULL);
	if (IS_ERR(hwdev))
		return dev_err_probe(dev, PTR_ERR(region),
		return dev_err_probe(dev, PTR_ERR(hwdev),
				     "Failed to register hwmon device\n");

	return 0;
+1 −2
Original line number Diff line number Diff line
@@ -336,10 +336,9 @@ static int isl68137_probe_from_dt(struct device *dev,
				  struct isl68137_data *data)
{
	const struct device_node *np = dev->of_node;
	struct device_node *child;
	int err;

	for_each_child_of_node(np, child) {
	for_each_child_of_node_scoped(np, child) {
		if (strcmp(child->name, "channel"))
			continue;

+6 −6
Original line number Diff line number Diff line
@@ -336,18 +336,18 @@ static struct pmbus_driver_info max34440_info[] = {
		.format[PSC_CURRENT_IN] = direct,
		.format[PSC_CURRENT_OUT] = direct,
		.format[PSC_TEMPERATURE] = direct,
		.m[PSC_VOLTAGE_IN] = 1,
		.m[PSC_VOLTAGE_IN] = 125,
		.b[PSC_VOLTAGE_IN] = 0,
		.R[PSC_VOLTAGE_IN] = 0,
		.m[PSC_VOLTAGE_OUT] = 1,
		.m[PSC_VOLTAGE_OUT] = 125,
		.b[PSC_VOLTAGE_OUT] = 0,
		.R[PSC_VOLTAGE_OUT] = 0,
		.m[PSC_CURRENT_IN] = 1,
		.m[PSC_CURRENT_IN] = 250,
		.b[PSC_CURRENT_IN] = 0,
		.R[PSC_CURRENT_IN] = 2,
		.m[PSC_CURRENT_OUT] = 1,
		.R[PSC_CURRENT_IN] = -1,
		.m[PSC_CURRENT_OUT] = 250,
		.b[PSC_CURRENT_OUT] = 0,
		.R[PSC_CURRENT_OUT] = 2,
		.R[PSC_CURRENT_OUT] = -1,
		.m[PSC_TEMPERATURE] = 1,
		.b[PSC_TEMPERATURE] = 0,
		.R[PSC_TEMPERATURE] = 2,
+17 −10
Original line number Diff line number Diff line
@@ -291,24 +291,26 @@ static struct sht3x_data *sht3x_update_client(struct device *dev)
	return data;
}

static int temp1_input_read(struct device *dev)
static int temp1_input_read(struct device *dev, long *temp)
{
	struct sht3x_data *data = sht3x_update_client(dev);

	if (IS_ERR(data))
		return PTR_ERR(data);

	return data->temperature;
	*temp = data->temperature;
	return 0;
}

static int humidity1_input_read(struct device *dev)
static int humidity1_input_read(struct device *dev, long *humidity)
{
	struct sht3x_data *data = sht3x_update_client(dev);

	if (IS_ERR(data))
		return PTR_ERR(data);

	return data->humidity;
	*humidity = data->humidity;
	return 0;
}

/*
@@ -706,6 +708,7 @@ static int sht3x_read(struct device *dev, enum hwmon_sensor_types type,
		      u32 attr, int channel, long *val)
{
	enum sht3x_limits index;
	int ret;

	switch (type) {
	case hwmon_chip:
@@ -720,10 +723,12 @@ static int sht3x_read(struct device *dev, enum hwmon_sensor_types type,
	case hwmon_temp:
		switch (attr) {
		case hwmon_temp_input:
			*val = temp1_input_read(dev);
			break;
			return temp1_input_read(dev, val);
		case hwmon_temp_alarm:
			*val = temp1_alarm_read(dev);
			ret = temp1_alarm_read(dev);
			if (ret < 0)
				return ret;
			*val = ret;
			break;
		case hwmon_temp_max:
			index = limit_max;
@@ -748,10 +753,12 @@ static int sht3x_read(struct device *dev, enum hwmon_sensor_types type,
	case hwmon_humidity:
		switch (attr) {
		case hwmon_humidity_input:
			*val = humidity1_input_read(dev);
			break;
			return humidity1_input_read(dev, val);
		case hwmon_humidity_alarm:
			*val = humidity1_alarm_read(dev);
			ret = humidity1_alarm_read(dev);
			if (ret < 0)
				return ret;
			*val = ret;
			break;
		case hwmon_humidity_max:
			index = limit_max;