static int asus_led_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct led_platform_data *pdata; struct led_info_priv *priv; struct i2c_adapter *adapter; int i, ret = 0; LED_INFO("%s +++\n", __func__); /* check if the project support TCA6507 */ if (Read_PROJ_ID()==PROJ_ID_ZS550ML_SEC) { LED_INFO("this project doesn't support tca6507, skip probe function.\n"); return 0; } adapter = to_i2c_adapter(client->dev.parent); if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) return -EIO; pdata = client->dev.platform_data; if (pdata && pdata->num_leds) { priv = kzalloc(sizeof_led_info_priv(pdata->num_leds), GFP_KERNEL); if (!priv) return -ENOMEM; priv->num_leds = pdata->num_leds; for (i = 0; i < priv->num_leds; i++) { priv->leds[i].cdev.name = pdata->leds[i].name; priv->leds[i].cdev.brightness_set = asus_led_set_brightness; priv->leds[i].cdev.brightness = LED_OFF; priv->leds[i].cdev.max_brightness = 255; ret = led_classdev_register(&client->dev, &priv->leds[i].cdev); if (ret < 0) LED_ERR("led_classdev_register led[%d] fail\n", i); #ifdef CONTROL_LED disable_led_flag = 0; ret = device_create_file(priv->leds[i].cdev.dev, &dev_attr_disable); if (ret) LED_ERR("device_create_file disable in led[%d] fail\n", i); #endif red_led_flag = 0; green_led_flag = 0; red_blink_flag = 0; green_blink_flag = 0; ret = device_create_file(priv->leds[i].cdev.dev, &dev_attr_blink); if (ret) LED_ERR("device_create_file blink in led[%d] fail\n", i); } } led_client = client; LED_INFO("%s ---\n", __func__); return 0; }
static int asus_led_probe(struct platform_device *pdev) { struct led_platform_data *pdata = pdev->dev.platform_data; struct led_info_priv *priv; int i, ret = 0; LED_info("%s start\n", __func__); if (pdata && pdata->num_leds) { priv = kzalloc(sizeof_led_info_priv(pdata->num_leds), GFP_KERNEL); if (!priv) return -ENOMEM; priv->num_leds = pdata->num_leds; for (i = 0; i < priv->num_leds; i++) { priv->leds[i].cdev.name = pdata->leds[i].name; priv->leds[i].cdev.brightness_set = asus_led_set_brightness; priv->leds[i].cdev.brightness = LED_OFF; priv->leds[i].cdev.max_brightness = 255; ret = led_classdev_register(&pdev->dev, &priv->leds[i].cdev); if (ret < 0) LED_err("led_classdev_register led[%d] fail\n", i); #ifdef CONTROL_LED disable_led_flag = 0; ret = device_create_file(priv->leds[i].cdev.dev, &dev_attr_disable); if (ret) LED_err("device_create_file disable in led[%d] fail\n", i); #endif red_led_flag = 0; green_led_flag = 0; red_blink_flag = 0; green_blink_flag = 0; ret = device_create_file(priv->leds[i].cdev.dev, &dev_attr_blink); if (ret) LED_err("device_create_file blink in led[%d] fail\n", i); } } platform_set_drvdata(pdev, priv); /*request gpio*/ ret = gpio_request(RED_LED_GPIO, "led_red"); if (ret < 0) { LED_err("request RED LED(%d) fail, ret=%d\n", RED_LED_GPIO, ret); } ret = gpio_request(GREEN_LED_GPIO, "led_green"); if (ret < 0) { LED_err("request GREEN LED(%d) fail, ret=%d\n", GREEN_LED_GPIO, ret); } LED_info("%s end\n", __func__); return 0; }