lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
 <PH0PR03MB6525FDC2D62DBBB57CB99905ED84A@PH0PR03MB6525.namprd03.prod.outlook.com>
Date: Wed, 7 Jan 2026 09:52:25 +0000
From: "Escala, Edelweise" <Edelweise.Escala@...log.com>
To: Krzysztof Kozlowski <krzk@...nel.org>
CC: Lee Jones <lee@...nel.org>, Pavel Machek <pavel@...nel.org>,
        Rob Herring
	<robh@...nel.org>,
        Krzysztof Kozlowski <krzk+dt@...nel.org>,
        Conor Dooley
	<conor+dt@...nel.org>,
        "linux-leds@...r.kernel.org"
	<linux-leds@...r.kernel.org>,
        "devicetree@...r.kernel.org"
	<devicetree@...r.kernel.org>,
        "linux-kernel@...r.kernel.org"
	<linux-kernel@...r.kernel.org>
Subject: RE: [PATCH 2/2] leds: ltc3220: add driver

> On Tue, Jan 06, 2026 at 01:27:08PM +0800, Edelweise Escala wrote:
> > +
> > +static int ltc3220_probe(struct i2c_client *client) {
> > +	struct ltc3220_state *ltc3220_state;
> > +	u8 i = 0;
> > +	int ret;
> > +
> > +	if (!i2c_check_functionality(client->adapter,
> > +			I2C_FUNC_SMBUS_BYTE_DATA))
> 
> Odd wrapping.

I will fix the wrapping.

> > +		return dev_err_probe(&client->dev, -EIO,
> > +				     "SMBUS Byte Data not Supported\n");
> > +
> > +	ltc3220_state = devm_kzalloc(&client->dev, sizeof(*ltc3220_state),
> GFP_KERNEL);
> > +	if (!ltc3220_state)
> > +		return -ENOMEM;
> > +
> > +	ltc3220_state->client = client;
> > +	i2c_set_clientdata(client, ltc3220_state);
> > +
> > +	if (device_property_read_bool(&client->dev, "adi,quick-write"))
> > +		ltc3220_state->command_cfg.quick_write = true;
> > +
> > +	ret = ltc3220_reset(ltc3220_state, client);
> > +	if (ret)
> > +		return dev_err_probe(&client->dev, ret,
> > +				     "Failed to reset device\n");
> 
> Your code is not really readable.

Do you mean the text wrapping? I will fix it.

> > +
> > +	ret = device_property_match_property_string(&client->dev,
> "adi,force-cpo-level",
> > +					   ltc3220_cpo_levels,
> ARRAY_SIZE(ltc3220_cpo_levels));
> > +	if (ret >= 0)
> > +		ltc3220_state->command_cfg.force_cpo_level = ret;
> > +
> > +	ret = ltc3220_set_command(ltc3220_state);
> > +	if (ret < 0)
> > +		return dev_err_probe(&client->dev, ret,
> > +				     "Failed to set command\n");
> > +
> > +	device_for_each_child_node_scoped(&client->dev, child) {
> > +		struct led_init_data init_data = {};
> > +		struct ltc3220_uled_cfg *led;
> > +		u32 source;
> > +
> > +		ret = fwnode_property_read_u32(child, "reg", &source);
> > +		if (ret)
> > +			return dev_err_probe(&client->dev, ret,
> > +					     "Couldn't read LED address\n");
> > +
> > +		if (!source || source > LTC3220_NUM_LEDS)
> > +			return dev_err_probe(&client->dev, -EINVAL,
> > +					     "LED address out of range\n");
> > +
> > +		init_data.fwnode = child;
> > +		init_data.devicename = "ltc3220";
> > +		init_data.devname_mandatory = true;
> > +
> > +		/* LED node reg/index/address goes from 1 to 18 */
> > +		i = source - 1;
> > +		led = &ltc3220_state->uled_cfg[i];
> > +		led->led_index = i;
> > +		led->reg_value = 0;
> > +		led->ltc3220_state = ltc3220_state;
> > +		led->led_cdev.brightness_set_blocking =
> ltc3220_set_led_data;
> > +		led->led_cdev.brightness_get = ltc3220_get_led_data;
> > +		led->led_cdev.max_brightness = 255;
> > +		led->led_cdev.blink_set = ltc3220_blink_set;
> > +		led->led_cdev.pattern_set = ltc3220_pattern_set;
> > +		led->led_cdev.pattern_clear = ltc3220_pattern_clear;
> > +
> > +		ret = devm_led_classdev_register_ext(&client->dev,
> > +						      &led->led_cdev,
> > +						      &init_data);
> > +		if (ret)
> > +			return dev_err_probe(&client->dev, ret,
> > +					     "Failed to register LED class
> device\n");
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> > +static const struct of_device_id ltc3220_of_match[] = {
> > +	{ .compatible = "adi,ltc3220", },
> > +	{ .compatible = "adi,ltc3220-1", },
> 
> Why do you have this "-1"? Even if this was a real hardware, devices are
> clearly compatible based on above.
> 

I wil drop the -1

Best Regards,
Edelweise Escala

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ