static int gca230718_probe(struct i2c_client *client)
{
- int status = 0;
struct gca230718_private *gca230718_privateData;
pr_info("Enter gca230718_probe for device address %u\n", client->addr);
gca230718_privateData = devm_kzalloc(
- &(client->dev), sizeof(struct gca230718_private), GFP_KERNEL);
+ &client->dev, sizeof(struct gca230718_private), GFP_KERNEL);
- if (gca230718_privateData == NULL) {
+ if (!gca230718_privateData) {
pr_info("Error during allocating memory for private data\n");
- status = -ENOMEM;
- } else {
- struct device_node *ledNode;
- mutex_init(&gca230718_privateData->lock);
- gca230718_init_private_led_data(gca230718_privateData);
- i2c_set_clientdata(client, gca230718_privateData);
-
- for_each_child_of_node(client->dev.of_node, ledNode) {
- u32 regValue = 0;
- if (of_property_read_u32(ledNode, "reg", ®Value) !=
- 0) {
- pr_info("Missing entry \"reg\" in node %s\n",
- ledNode->name);
- } else if (regValue >= GCA230718_MAX_LEDS) {
- pr_info("Invalid entry \"reg\" in node %s (%u)\n",
- ledNode->name, regValue);
- } else {
- struct led_classdev *ledClassDev =
- &(gca230718_privateData->leds[regValue]
- .ledClassDev);
- struct led_init_data init_data = {};
-
- gca230718_privateData->leds[regValue].client =
- client;
- init_data.fwnode = of_fwnode_handle(ledNode);
-
- pr_info("Creating LED for node %s: reg=%u\n",
- ledNode->name, regValue);
-
- ledClassDev->name =
- of_get_property(ledNode, "label", NULL);
- if (ledClassDev->name == NULL) {
- ledClassDev->name = ledNode->name;
- }
-
- ledClassDev->brightness = LED_OFF;
- ledClassDev->max_brightness = LED_FULL;
- ledClassDev->brightness_set_blocking =
- gca230718_set_brightness;
-
- if (devm_led_classdev_register_ext(
- &(client->dev), ledClassDev,
- &init_data) != 0) {
- pr_info("Error during call of devm_led_classdev_register_ext");
- }
- }
+ return -ENOMEM;
+ }
+ struct device_node *ledNode;
+ mutex_init(&gca230718_privateData->lock);
+ gca230718_init_private_led_data(gca230718_privateData);
+ i2c_set_clientdata(client, gca230718_privateData);
+
+ for_each_child_of_node(client->dev.of_node, ledNode) {
+ u32 regValue = 0;
+ if (of_property_read_u32(ledNode, "reg", ®Value))
+ pr_info("Missing entry \"reg\" in node %s\n",
+ ledNode->name);
+ else if (regValue >= GCA230718_MAX_LEDS)
+ pr_info("Invalid entry \"reg\" in node %s (%u)\n",
+ ledNode->name, regValue);
+ else {
+ struct led_classdev *ledClassDev =
+ &(gca230718_privateData->leds[regValue]
+ .ledClassDev);
+ struct led_init_data init_data = {};
+
+ gca230718_privateData->leds[regValue].client = client;
+ init_data.fwnode = of_fwnode_handle(ledNode);
+
+ pr_info("Creating LED for node %s: reg=%u\n",
+ ledNode->name, regValue);
+
+ ledClassDev->name =
+ of_get_property(ledNode, "label", NULL);
+ if (!ledClassDev->name)
+ ledClassDev->name = ledNode->name;
+
+ ledClassDev->brightness = LED_OFF;
+ ledClassDev->max_brightness = LED_FULL;
+ ledClassDev->brightness_set_blocking =
+ gca230718_set_brightness;
+
+ if (devm_led_classdev_register_ext(
+ &client->dev, ledClassDev, &init_data))
+ pr_info("Error during call of devm_led_classdev_register_ext");
}
}
- if (status == 0) {
- /*
- Send full initialization sequence.
- Afterwards only GCA230718_2ND_SEQUENCE_BYTE_1 must be send to upddate the brightness values.
- */
- gca230718_send_sequence(client, GCA230718_1ST_SEQUENCE_BYTE_1,
- gca230718_privateData);
- gca230718_send_sequence(client, GCA230718_2ND_SEQUENCE_BYTE_1,
- gca230718_privateData);
- gca230718_send_sequence(client, GCA230718_3RD_SEQUENCE_BYTE_1,
- gca230718_privateData);
- }
+ /*
+ Send full initialization sequence.
+ Afterwards only GCA230718_2ND_SEQUENCE_BYTE_1 must be send to upddate the brightness values.
+ */
+ gca230718_send_sequence(client, GCA230718_1ST_SEQUENCE_BYTE_1,
+ gca230718_privateData);
+ gca230718_send_sequence(client, GCA230718_2ND_SEQUENCE_BYTE_1,
+ gca230718_privateData);
+ gca230718_send_sequence(client, GCA230718_3RD_SEQUENCE_BYTE_1,
+ gca230718_privateData);
- return status;
+ return 0;
}
static void gca230718_remove(struct i2c_client *client)