Message ID | 20240322033736.9344-2-hpa@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series | KTD2026 indicator LED for X86 Xiaomi Pad2 | expand |
Hi Kate, On 3/22/24 4:37 AM, Kate Hsuan wrote: > There is a KTD2026 LED controller to manage the indicator LED for Xiaomi > pad2. The ACPI for it is not properly made so the kernel can't get > a correct description of it. > > This work add a description for this RGB LED controller and also set a > trigger to indicate the chaging event (bq27520-0-charging). When it is > charging, the indicator LED will be turn on. > > Signed-off-by: Kate Hsuan <hpa@redhat.com> Thank you for your patch, I've applied this patch to my review-hans branch: https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans I will also merge [PATCH v5 6/6] platform: x86-android-tablets: others: Set the LED trigger to charging_red_full_green for Xiaomi pad2" Once the new power_supply trigger patch this relies on has been accepted. Once I've run some tests on this branch the patches there will be added to the platform-drivers-x86/for-next branch and eventually will be included in the pdx86 pull-request to Linus for the next merge-window. Regards, Hans > --- > .../platform/x86/x86-android-tablets/other.c | 82 +++++++++++++++++++ > .../x86/x86-android-tablets/shared-psy-info.h | 2 + > 2 files changed, 84 insertions(+) > > diff --git a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/platform/x86/x86-android-tablets/other.c > index bc6bbf7ec6ea..1012a158f7b7 100644 > --- a/drivers/platform/x86/x86-android-tablets/other.c > +++ b/drivers/platform/x86/x86-android-tablets/other.c > @@ -13,6 +13,8 @@ > #include <linux/input.h> > #include <linux/platform_device.h> > > +#include <dt-bindings/leds/common.h> > + > #include "shared-psy-info.h" > #include "x86-android-tablets.h" > > @@ -593,6 +595,83 @@ const struct x86_dev_info whitelabel_tm800a550l_info __initconst = { > .gpiod_lookup_tables = whitelabel_tm800a550l_gpios, > }; > > +/* > + * The fwnode for ktd2026 on Xaomi pad2. It composed of a RGB LED node > + * with three subnodes for each color (B/G/R). The RGB LED node is named > + * "multi-led" to align with the name in the device tree. > + */ > + > +/* main fwnode for ktd2026 */ > +static const struct software_node ktd2026_node = { > + .name = "ktd2026" > +}; > + > +static const struct property_entry ktd2026_rgb_led_props[] = { > + PROPERTY_ENTRY_U32("reg", 0), > + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_RGB), > + PROPERTY_ENTRY_STRING("function", "indicator"), > + PROPERTY_ENTRY_STRING("linux,default-trigger", "bq27520-0-charging"), > + { } > +}; > + > +static const struct software_node ktd2026_rgb_led_node = { > + .name = "multi-led", > + .properties = ktd2026_rgb_led_props, > + .parent = &ktd2026_node, > +}; > + > +static const struct property_entry ktd2026_blue_led_props[] = { > + PROPERTY_ENTRY_U32("reg", 0), > + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_BLUE), > + { } > +}; > + > +static const struct software_node ktd2026_blue_led_node = { > + .properties = ktd2026_blue_led_props, > + .parent = &ktd2026_rgb_led_node, > +}; > + > +static const struct property_entry ktd2026_green_led_props[] = { > + PROPERTY_ENTRY_U32("reg", 1), > + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_GREEN), > + { } > +}; > + > +static const struct software_node ktd2026_green_led_node = { > + .properties = ktd2026_green_led_props, > + .parent = &ktd2026_rgb_led_node, > +}; > + > +static const struct property_entry ktd2026_red_led_props[] = { > + PROPERTY_ENTRY_U32("reg", 2), > + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_RED), > + { } > +}; > + > +static const struct software_node ktd2026_red_led_node = { > + .properties = ktd2026_red_led_props, > + .parent = &ktd2026_rgb_led_node, > +}; > + > +static const struct software_node *ktd2026_node_group[] = { > + &ktd2026_node, > + &ktd2026_rgb_led_node, > + &ktd2026_green_led_node, > + &ktd2026_blue_led_node, > + &ktd2026_red_led_node, > + NULL > +}; > + > +static int __init xiaomi_mipad2_init(void) > +{ > + return software_node_register_node_group(ktd2026_node_group); > +} > + > +static void xiaomi_mipad2_exit(void) > +{ > + software_node_unregister_node_group(ktd2026_node_group); > +} > + > /* > * If the EFI bootloader is not Xiaomi's own signed Android loader, then the > * Xiaomi Mi Pad 2 X86 tablet sets OSID in the DSDT to 1 (Windows), causing > @@ -616,6 +695,7 @@ static const struct x86_i2c_client_info xiaomi_mipad2_i2c_clients[] __initconst > .type = "ktd2026", > .addr = 0x30, > .dev_name = "ktd2026", > + .swnode = &ktd2026_node, > }, > .adapter_path = "\\_SB_.PCI0.I2C3", > }, > @@ -624,4 +704,6 @@ static const struct x86_i2c_client_info xiaomi_mipad2_i2c_clients[] __initconst > const struct x86_dev_info xiaomi_mipad2_info __initconst = { > .i2c_client_info = xiaomi_mipad2_i2c_clients, > .i2c_client_count = ARRAY_SIZE(xiaomi_mipad2_i2c_clients), > + .init = xiaomi_mipad2_init, > + .exit = xiaomi_mipad2_exit, > }; > diff --git a/drivers/platform/x86/x86-android-tablets/shared-psy-info.h b/drivers/platform/x86/x86-android-tablets/shared-psy-info.h > index c2d2968cddc2..8c33ec47ee12 100644 > --- a/drivers/platform/x86/x86-android-tablets/shared-psy-info.h > +++ b/drivers/platform/x86/x86-android-tablets/shared-psy-info.h > @@ -29,4 +29,6 @@ extern const char * const bq24190_modules[]; > extern const struct platform_device_info int3496_pdevs[]; > extern struct gpiod_lookup_table int3496_reference_gpios; > > +extern const struct software_node ktd2026_leds_node; > + > #endif
On Mon, Mar 25, 2024 at 04:02:54PM +0100, Hans de Goede wrote: > On 3/22/24 4:37 AM, Kate Hsuan wrote: > > There is a KTD2026 LED controller to manage the indicator LED for Xiaomi > > pad2. The ACPI for it is not properly made so the kernel can't get > > a correct description of it. > > > > This work add a description for this RGB LED controller and also set a > > trigger to indicate the chaging event (bq27520-0-charging). When it is > > charging, the indicator LED will be turn on. > > > > Signed-off-by: Kate Hsuan <hpa@redhat.com> > > Thank you for your patch, I've applied this patch to my review-hans > branch: > https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans > > I will also merge [PATCH v5 6/6] platform: x86-android-tablets: > others: Set the LED trigger to charging_red_full_green for Xiaomi pad2" > > Once the new power_supply trigger patch this relies on has been > accepted. > > Once I've run some tests on this branch the patches there will be > added to the platform-drivers-x86/for-next branch and eventually > will be included in the pdx86 pull-request to Linus for the next > merge-window. I believe I have commented on the "RESEND" version.
Hi Hans, On Tue, Mar 26, 2024 at 12:32 AM Andy Shevchenko <andriy.shevchenko@intel.com> wrote: > > On Mon, Mar 25, 2024 at 04:02:54PM +0100, Hans de Goede wrote: > > On 3/22/24 4:37 AM, Kate Hsuan wrote: > > > There is a KTD2026 LED controller to manage the indicator LED for Xiaomi > > > pad2. The ACPI for it is not properly made so the kernel can't get > > > a correct description of it. > > > > > > This work add a description for this RGB LED controller and also set a > > > trigger to indicate the chaging event (bq27520-0-charging). When it is > > > charging, the indicator LED will be turn on. > > > > > > Signed-off-by: Kate Hsuan <hpa@redhat.com> > > > > Thank you for your patch, I've applied this patch to my review-hans > > branch: > > https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans > > > > I will also merge [PATCH v5 6/6] platform: x86-android-tablets: > > others: Set the LED trigger to charging_red_full_green for Xiaomi pad2" > > > > Once the new power_supply trigger patch this relies on has been > > accepted. > > > > Once I've run some tests on this branch the patches there will be > > added to the platform-drivers-x86/for-next branch and eventually > > will be included in the pdx86 pull-request to Linus for the next > > merge-window. > > I believe I have commented on the "RESEND" version. > Thank you for your reviewing. Please review the RESEND patch and I'll fix them according to Andy's comments. > -- > With Best Regards, > Andy Shevchenko > >
Hi, On 3/27/24 7:09 AM, Kate Hsuan wrote: > Hi Hans, > > On Tue, Mar 26, 2024 at 12:32 AM Andy Shevchenko > <andriy.shevchenko@intel.com> wrote: >> >> On Mon, Mar 25, 2024 at 04:02:54PM +0100, Hans de Goede wrote: >>> On 3/22/24 4:37 AM, Kate Hsuan wrote: >>>> There is a KTD2026 LED controller to manage the indicator LED for Xiaomi >>>> pad2. The ACPI for it is not properly made so the kernel can't get >>>> a correct description of it. >>>> >>>> This work add a description for this RGB LED controller and also set a >>>> trigger to indicate the chaging event (bq27520-0-charging). When it is >>>> charging, the indicator LED will be turn on. >>>> >>>> Signed-off-by: Kate Hsuan <hpa@redhat.com> >>> >>> Thank you for your patch, I've applied this patch to my review-hans >>> branch: >>> https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans >>> >>> I will also merge [PATCH v5 6/6] platform: x86-android-tablets: >>> others: Set the LED trigger to charging_red_full_green for Xiaomi pad2" >>> >>> Once the new power_supply trigger patch this relies on has been >>> accepted. >>> >>> Once I've run some tests on this branch the patches there will be >>> added to the platform-drivers-x86/for-next branch and eventually >>> will be included in the pdx86 pull-request to Linus for the next >>> merge-window. >> >> I believe I have commented on the "RESEND" version. Right, sorry. Since there were just a few trivial comments I've fixed them up in my review-hans branch now, thank you for the review. > Thank you for your reviewing. > Please review the RESEND patch and I'll fix them according to Andy's comments. No need to do a new version I've squashed fixed for Andy's remarks + Andy's commit msg remarks into the version in my review-hans branch. Note I'm going offline for a long weekend and I won't be replying to emails until next week Tuesday. Regards, Hans
diff --git a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/platform/x86/x86-android-tablets/other.c index bc6bbf7ec6ea..1012a158f7b7 100644 --- a/drivers/platform/x86/x86-android-tablets/other.c +++ b/drivers/platform/x86/x86-android-tablets/other.c @@ -13,6 +13,8 @@ #include <linux/input.h> #include <linux/platform_device.h> +#include <dt-bindings/leds/common.h> + #include "shared-psy-info.h" #include "x86-android-tablets.h" @@ -593,6 +595,83 @@ const struct x86_dev_info whitelabel_tm800a550l_info __initconst = { .gpiod_lookup_tables = whitelabel_tm800a550l_gpios, }; +/* + * The fwnode for ktd2026 on Xaomi pad2. It composed of a RGB LED node + * with three subnodes for each color (B/G/R). The RGB LED node is named + * "multi-led" to align with the name in the device tree. + */ + +/* main fwnode for ktd2026 */ +static const struct software_node ktd2026_node = { + .name = "ktd2026" +}; + +static const struct property_entry ktd2026_rgb_led_props[] = { + PROPERTY_ENTRY_U32("reg", 0), + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_RGB), + PROPERTY_ENTRY_STRING("function", "indicator"), + PROPERTY_ENTRY_STRING("linux,default-trigger", "bq27520-0-charging"), + { } +}; + +static const struct software_node ktd2026_rgb_led_node = { + .name = "multi-led", + .properties = ktd2026_rgb_led_props, + .parent = &ktd2026_node, +}; + +static const struct property_entry ktd2026_blue_led_props[] = { + PROPERTY_ENTRY_U32("reg", 0), + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_BLUE), + { } +}; + +static const struct software_node ktd2026_blue_led_node = { + .properties = ktd2026_blue_led_props, + .parent = &ktd2026_rgb_led_node, +}; + +static const struct property_entry ktd2026_green_led_props[] = { + PROPERTY_ENTRY_U32("reg", 1), + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_GREEN), + { } +}; + +static const struct software_node ktd2026_green_led_node = { + .properties = ktd2026_green_led_props, + .parent = &ktd2026_rgb_led_node, +}; + +static const struct property_entry ktd2026_red_led_props[] = { + PROPERTY_ENTRY_U32("reg", 2), + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_RED), + { } +}; + +static const struct software_node ktd2026_red_led_node = { + .properties = ktd2026_red_led_props, + .parent = &ktd2026_rgb_led_node, +}; + +static const struct software_node *ktd2026_node_group[] = { + &ktd2026_node, + &ktd2026_rgb_led_node, + &ktd2026_green_led_node, + &ktd2026_blue_led_node, + &ktd2026_red_led_node, + NULL +}; + +static int __init xiaomi_mipad2_init(void) +{ + return software_node_register_node_group(ktd2026_node_group); +} + +static void xiaomi_mipad2_exit(void) +{ + software_node_unregister_node_group(ktd2026_node_group); +} + /* * If the EFI bootloader is not Xiaomi's own signed Android loader, then the * Xiaomi Mi Pad 2 X86 tablet sets OSID in the DSDT to 1 (Windows), causing @@ -616,6 +695,7 @@ static const struct x86_i2c_client_info xiaomi_mipad2_i2c_clients[] __initconst .type = "ktd2026", .addr = 0x30, .dev_name = "ktd2026", + .swnode = &ktd2026_node, }, .adapter_path = "\\_SB_.PCI0.I2C3", }, @@ -624,4 +704,6 @@ static const struct x86_i2c_client_info xiaomi_mipad2_i2c_clients[] __initconst const struct x86_dev_info xiaomi_mipad2_info __initconst = { .i2c_client_info = xiaomi_mipad2_i2c_clients, .i2c_client_count = ARRAY_SIZE(xiaomi_mipad2_i2c_clients), + .init = xiaomi_mipad2_init, + .exit = xiaomi_mipad2_exit, }; diff --git a/drivers/platform/x86/x86-android-tablets/shared-psy-info.h b/drivers/platform/x86/x86-android-tablets/shared-psy-info.h index c2d2968cddc2..8c33ec47ee12 100644 --- a/drivers/platform/x86/x86-android-tablets/shared-psy-info.h +++ b/drivers/platform/x86/x86-android-tablets/shared-psy-info.h @@ -29,4 +29,6 @@ extern const char * const bq24190_modules[]; extern const struct platform_device_info int3496_pdevs[]; extern struct gpiod_lookup_table int3496_reference_gpios; +extern const struct software_node ktd2026_leds_node; + #endif
There is a KTD2026 LED controller to manage the indicator LED for Xiaomi pad2. The ACPI for it is not properly made so the kernel can't get a correct description of it. This work add a description for this RGB LED controller and also set a trigger to indicate the chaging event (bq27520-0-charging). When it is charging, the indicator LED will be turn on. Signed-off-by: Kate Hsuan <hpa@redhat.com> --- .../platform/x86/x86-android-tablets/other.c | 82 +++++++++++++++++++ .../x86/x86-android-tablets/shared-psy-info.h | 2 + 2 files changed, 84 insertions(+)