Message ID | 20221204104313.17478-1-philipp@uvos.xyz (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/4] leds: cpcap: add support for the keyboard light channel | expand |
Hi, On Sun, Dec 04, 2022 at 11:43:10AM +0100, Carl Philipp Klemm wrote: > The keyboard light channel is used on xt875 for the touchscreen > button lights. > This commit also adds a checks for the sucessfull return of > device_get_match_data. "this commit also adds ..." means, that the commit should be split :) > Signed-off-by: Carl Philipp Klemm <philipp@uvos.xyz> > --- > drivers/leds/leds-cpcap.c | 15 +++++++++++++++ > drivers/mfd/motorola-cpcap.c | 4 ++++ > 2 files changed, 19 insertions(+) > > diff --git a/drivers/leds/leds-cpcap.c b/drivers/leds/leds-cpcap.c > index 7d41ce8c9bb1..11a9b857d8ea 100644 > --- a/drivers/leds/leds-cpcap.c > +++ b/drivers/leds/leds-cpcap.c > @@ -58,6 +58,15 @@ static const struct cpcap_led_info cpcap_led_cp = { > .init_val = 0x0008, > }; > > +/* keyboard led */ > +static const struct cpcap_led_info cpcap_led_kl = { > + .reg = CPCAP_REG_KLC, > + .mask = 0x0001, > + .limit = 1, > + .init_mask = 0x07FF, > + .init_val = 0x07F0, > +}; > + > struct cpcap_led { > struct led_classdev led; > const struct cpcap_led_info *info; > @@ -152,6 +161,7 @@ static const struct of_device_id cpcap_led_of_match[] = { > { .compatible = "motorola,cpcap-led-blue", .data = &cpcap_led_blue }, > { .compatible = "motorola,cpcap-led-adl", .data = &cpcap_led_adl }, > { .compatible = "motorola,cpcap-led-cp", .data = &cpcap_led_cp }, > + { .compatible = "motorola,cpcap-led-kl", .data = &cpcap_led_kl }, > {}, > }; > MODULE_DEVICE_TABLE(of, cpcap_led_of_match); > @@ -168,6 +178,11 @@ static int cpcap_led_probe(struct platform_device *pdev) > led->info = device_get_match_data(&pdev->dev); > led->dev = &pdev->dev; > > + if (!led->info) { > + dev_warn(led->dev, "Can't get match data"); > + return -ENODEV; > + } If it's fatal, it should be dev_err and not dev_warn: if (!led->info) return dev_err_probe(led->dev, -ENODEV, "Can't get match data"); -- Sebastian > + > if (led->info->reg == 0x0000) { > dev_err(led->dev, "Unsupported LED"); > return -ENODEV; > diff --git a/drivers/mfd/motorola-cpcap.c b/drivers/mfd/motorola-cpcap.c > index 265464b5d7cc..57b3378a8829 100644 > --- a/drivers/mfd/motorola-cpcap.c > +++ b/drivers/mfd/motorola-cpcap.c > @@ -285,6 +285,10 @@ static const struct mfd_cell cpcap_mfd_devices[] = { > .name = "cpcap-led", > .id = 4, > .of_compatible = "motorola,cpcap-led-cp", > + }, { > + .name = "cpcap-led", > + .id = 5, > + .of_compatible = "motorola,cpcap-led-kl", > }, { > .name = "cpcap-codec", > } > -- > 2.38.1 > >
diff --git a/drivers/leds/leds-cpcap.c b/drivers/leds/leds-cpcap.c index 7d41ce8c9bb1..11a9b857d8ea 100644 --- a/drivers/leds/leds-cpcap.c +++ b/drivers/leds/leds-cpcap.c @@ -58,6 +58,15 @@ static const struct cpcap_led_info cpcap_led_cp = { .init_val = 0x0008, }; +/* keyboard led */ +static const struct cpcap_led_info cpcap_led_kl = { + .reg = CPCAP_REG_KLC, + .mask = 0x0001, + .limit = 1, + .init_mask = 0x07FF, + .init_val = 0x07F0, +}; + struct cpcap_led { struct led_classdev led; const struct cpcap_led_info *info; @@ -152,6 +161,7 @@ static const struct of_device_id cpcap_led_of_match[] = { { .compatible = "motorola,cpcap-led-blue", .data = &cpcap_led_blue }, { .compatible = "motorola,cpcap-led-adl", .data = &cpcap_led_adl }, { .compatible = "motorola,cpcap-led-cp", .data = &cpcap_led_cp }, + { .compatible = "motorola,cpcap-led-kl", .data = &cpcap_led_kl }, {}, }; MODULE_DEVICE_TABLE(of, cpcap_led_of_match); @@ -168,6 +178,11 @@ static int cpcap_led_probe(struct platform_device *pdev) led->info = device_get_match_data(&pdev->dev); led->dev = &pdev->dev; + if (!led->info) { + dev_warn(led->dev, "Can't get match data"); + return -ENODEV; + } + if (led->info->reg == 0x0000) { dev_err(led->dev, "Unsupported LED"); return -ENODEV; diff --git a/drivers/mfd/motorola-cpcap.c b/drivers/mfd/motorola-cpcap.c index 265464b5d7cc..57b3378a8829 100644 --- a/drivers/mfd/motorola-cpcap.c +++ b/drivers/mfd/motorola-cpcap.c @@ -285,6 +285,10 @@ static const struct mfd_cell cpcap_mfd_devices[] = { .name = "cpcap-led", .id = 4, .of_compatible = "motorola,cpcap-led-cp", + }, { + .name = "cpcap-led", + .id = 5, + .of_compatible = "motorola,cpcap-led-kl", }, { .name = "cpcap-codec", }
The keyboard light channel is used on xt875 for the touchscreen button lights. This commit also adds a checks for the sucessfull return of device_get_match_data. Signed-off-by: Carl Philipp Klemm <philipp@uvos.xyz> --- drivers/leds/leds-cpcap.c | 15 +++++++++++++++ drivers/mfd/motorola-cpcap.c | 4 ++++ 2 files changed, 19 insertions(+)