RE: [PATCH 2/2] leds: ltc3220: add driver
From: Escala, Edelweise <hidden>
Date: 2026-01-07 09:52:42
Also in:
linux-leds, lkml
On Tue, Jan 06, 2026 at 01:27:08PM +0800, Edelweise Escala wrote:quoted
+ +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.
quoted
+ return dev_err_probe(&client->dev, -EIO, + "SMBUS Byte Data not Supported\n"); + + ltc3220_state = devm_kzalloc(&client->dev, sizeof(*ltc3220_state),GFP_KERNEL);quoted
+ 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.
quoted
+ + ret = device_property_match_property_string(&client->dev,"adi,force-cpo-level",quoted
+ ltc3220_cpo_levels,ARRAY_SIZE(ltc3220_cpo_levels));quoted
+ 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 = <c3220_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;quoted
+ 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 classdevice\n");quoted
+ } + + 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