From patchwork Fri Feb 16 16:05:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kate Hsuan X-Patchwork-Id: 13560274 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44D7E12F596 for ; Fri, 16 Feb 2024 16:05:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708099559; cv=none; b=EOVQoEVK4qDQukhorJ/k2S6bvTDsak1EtnuftFj7+Q2Z9YFQsO45PI+yaLTHCQNm2F8GJJtICZRXrh5XRWk9tFhznzkvWSu65RoGs0j3xz0ZRqroN1FhIeiC9gsEzyevWGYx14PKOJeHlb6YexjfOXmj4VNjGK+M0MXG7nbITQM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708099559; c=relaxed/simple; bh=bz8KzoXEKvIObYhHZjDvndIiPrh/x9xyP+zvzVJo6J8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oG13z7C4Qk15loBqYf5s5YRUMQOuVUWu5FSEV13nrAwOpkeN8rs77Yljr4cOMyGq+3b3Es8CWScQEGh9GVGku9x3ix6xkmBCKLR+lm9suP/lUkcT8GiJWjOFy7yxjjSgSJQvBKn4EwEsWhtFOpgMeWZm0mFeLgSD/2n6jMNrzRk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Coh0gERT; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Coh0gERT" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1708099556; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PtoPnmrz5mml8UksLYkNOkMstbiXrbqZr1mNi9TKFac=; b=Coh0gERTlrQ0YhHW+DjhmrFf0G/MA2ae5a227i6uYb70B3CmDa11M8fSbU1zpZ+GVZxxpp +655DSj7NnXXdtIIx+fs3F0u7SDshlNlaPZqPby7IsS+kyB2k9KMJpVqGbvABK3wohjsJH l+aaOBpl0Ihi2U8yXJ6tICX7At/8AE8= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-383-CwdfL3WKOBmSvOIqNg2kkQ-1; Fri, 16 Feb 2024 11:05:52 -0500 X-MC-Unique: CwdfL3WKOBmSvOIqNg2kkQ-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4AD731C29EAB; Fri, 16 Feb 2024 16:05:52 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.39.192.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id 57825492BE2; Fri, 16 Feb 2024 16:05:47 +0000 (UTC) From: Kate Hsuan To: Pavel Machek , Lee Jones , linux-leds@vger.kernel.org, platform-driver-x86@vger.kernel.org, Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , =?utf-8?q?A?= =?utf-8?q?ndr=C3=A9_Apitzsch?= Cc: Kate Hsuan Subject: [PATCH v2 1/3] platform: x86-android-tablets: other: Add swnode for Xiaomi pad2 indicator LED Date: Sat, 17 Feb 2024 00:05:24 +0800 Message-ID: <20240216160526.235594-2-hpa@redhat.com> In-Reply-To: <20240216160526.235594-1-hpa@redhat.com> References: <20240216160526.235594-1-hpa@redhat.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.10 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 --- .../platform/x86/x86-android-tablets/other.c | 85 +++++++++++++++++++ .../x86/x86-android-tablets/shared-psy-info.h | 2 + 2 files changed, 87 insertions(+) diff --git a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/platform/x86/x86-android-tablets/other.c index bc6bbf7ec6ea..542ef6667b7b 100644 --- a/drivers/platform/x86/x86-android-tablets/other.c +++ b/drivers/platform/x86/x86-android-tablets/other.c @@ -12,6 +12,7 @@ #include #include #include +#include #include "shared-psy-info.h" #include "x86-android-tablets.h" @@ -593,6 +594,87 @@ 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 = { +}; + +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, +}; + +/* B */ +static const struct property_entry ktd2026_red_led_props[] = { + PROPERTY_ENTRY_U32("reg", 0), + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_BLUE), + { } +}; + +static const struct software_node ktd2026_red_led_node = { + .properties = ktd2026_red_led_props, + .parent = &ktd2026_rgb_led_node, +}; + +/* G */ +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, +}; + +/* R */ +static const struct property_entry ktd2026_blue_led_props[] = { + PROPERTY_ENTRY_U32("reg", 2), + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_RED), + { } +}; + +static const struct software_node ktd2026_blue_led_node = { + .properties = ktd2026_blue_led_props, + .parent = &ktd2026_rgb_led_node, +}; + +static const struct software_node *ktd2026_node_group[] = { + &ktd2026_node, + &ktd2026_rgb_led_node, + &ktd2026_red_led_node, + &ktd2026_green_led_node, + &ktd2026_blue_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 +698,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 +707,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 From patchwork Fri Feb 16 16:05:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kate Hsuan X-Patchwork-Id: 13560275 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6014F12BEBB for ; Fri, 16 Feb 2024 16:06:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708099564; cv=none; b=F6Rh2gQep/wqCpcTc4Jztpo+gheeAJ+osfmCKdFHMDHJ7YVZyYo0dtRUSklIkNdGQcJujc9t4VKal8ygPD5+Dz1shZJBXfalDFoYkSnr2lW3Z3huqLJIOFYrnvMSX/9KoUnQSddPpE5fUKJVxhrBea4Az/RWLgdKY+rFBLy/HTQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708099564; c=relaxed/simple; bh=P5NbLMX/mNfzer1Lbaau51DIaXUeh3fB52Cf+T75O6I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dW0bGDDqINyKAgoSlFzr9W1/akgoP6mlft+zj6G4qInvjUjwhAVAvS4SCQJSmZQe/atFzJEoTGemnuk5EXIxeixdQhrk8IfA27kX1i9ULHvRoncLKPCDzKksxV3Vr19UaP8GxR3hHXXZV4mnhYu6A75V4+6YEHA65LJWCGdtpP4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=FjEuBfdd; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="FjEuBfdd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1708099561; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ksd4YB8HbqVi4LvCRzC6ZrLMDlAj+eBOtE3O9iOMlUE=; b=FjEuBfddKlGBeWfylAPLM+82in3btOK0yibVhD/K/xHPdv1Tc15w3SIVcqvA4P73K0rn90 5ZefB8zW09HEXHMcOVGX7QjeDLa5JTaiOAOmKdxj979i5KNAkycXMCN1pbS6xtpaYoO2as Y7XletfmvGv9m1swOzge8qTLa6LXNNc= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-583-A2HRUwiWPmyyfneAQQ8w3g-1; Fri, 16 Feb 2024 11:05:59 -0500 X-MC-Unique: A2HRUwiWPmyyfneAQQ8w3g-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 20BD31C29EA9; Fri, 16 Feb 2024 16:05:59 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.39.192.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id B200D492BE3; Fri, 16 Feb 2024 16:05:54 +0000 (UTC) From: Kate Hsuan To: Pavel Machek , Lee Jones , linux-leds@vger.kernel.org, platform-driver-x86@vger.kernel.org, Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , =?utf-8?q?A?= =?utf-8?q?ndr=C3=A9_Apitzsch?= Cc: Kate Hsuan Subject: [PATCH v2 2/3] leds: rgb: leds-ktd202x: Get device properties through fwnode to support ACPI Date: Sat, 17 Feb 2024 00:05:25 +0800 Message-ID: <20240216160526.235594-3-hpa@redhat.com> In-Reply-To: <20240216160526.235594-1-hpa@redhat.com> References: <20240216160526.235594-1-hpa@redhat.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.10 This LED controller also installed on a Xiaomi pad2 and it is a x86 platform. The original driver is based on device tree and can't be used for this ACPI based system. This patch migrated the driver to use fwnode to access the properties. Moreover, the fwnode API supports device tree so this work won't effect the original implementations. Signed-off-by: Kate Hsuan --- drivers/leds/rgb/Kconfig | 1 - drivers/leds/rgb/leds-ktd202x.c | 58 ++++++++++++++++++++++----------- 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/drivers/leds/rgb/Kconfig b/drivers/leds/rgb/Kconfig index a6a21f564673..f245dbd9a163 100644 --- a/drivers/leds/rgb/Kconfig +++ b/drivers/leds/rgb/Kconfig @@ -17,7 +17,6 @@ config LEDS_GROUP_MULTICOLOR config LEDS_KTD202X tristate "LED support for KTD202x Chips" depends on I2C - depends on OF select REGMAP_I2C help This option enables support for the Kinetic KTD2026/KTD2027 diff --git a/drivers/leds/rgb/leds-ktd202x.c b/drivers/leds/rgb/leds-ktd202x.c index 514965795a10..8eb79c342fb6 100644 --- a/drivers/leds/rgb/leds-ktd202x.c +++ b/drivers/leds/rgb/leds-ktd202x.c @@ -381,16 +381,18 @@ static int ktd202x_blink_mc_set(struct led_classdev *cdev, mc->num_colors); } -static int ktd202x_setup_led_rgb(struct ktd202x *chip, struct device_node *np, +static int ktd202x_setup_led_rgb(struct ktd202x *chip, struct fwnode_handle *np, struct ktd202x_led *led, struct led_init_data *init_data) { + struct fwnode_handle *child; struct led_classdev *cdev; - struct device_node *child; struct mc_subled *info; - int num_channels; + int num_channels = 0; int i = 0; - num_channels = of_get_available_child_count(np); + fwnode_for_each_available_child_node(np, child) { + num_channels++; + } if (!num_channels || num_channels > chip->num_leds) return -EINVAL; @@ -398,22 +400,22 @@ static int ktd202x_setup_led_rgb(struct ktd202x *chip, struct device_node *np, if (!info) return -ENOMEM; - for_each_available_child_of_node(np, child) { + fwnode_for_each_available_child_node(np, child) { u32 mono_color; u32 reg; int ret; - ret = of_property_read_u32(child, "reg", ®); + ret = fwnode_property_read_u32(child, "reg", ®); if (ret != 0 || reg >= chip->num_leds) { dev_err(chip->dev, "invalid 'reg' of %pOFn\n", child); - of_node_put(child); + fwnode_handle_put(child); return -EINVAL; } - ret = of_property_read_u32(child, "color", &mono_color); + ret = fwnode_property_read_u32(child, "color", &mono_color); if (ret < 0 && ret != -EINVAL) { dev_err(chip->dev, "failed to parse 'color' of %pOF\n", child); - of_node_put(child); + fwnode_handle_put(child); return ret; } @@ -433,14 +435,14 @@ static int ktd202x_setup_led_rgb(struct ktd202x *chip, struct device_node *np, return devm_led_classdev_multicolor_register_ext(chip->dev, &led->mcdev, init_data); } -static int ktd202x_setup_led_single(struct ktd202x *chip, struct device_node *np, +static int ktd202x_setup_led_single(struct ktd202x *chip, struct fwnode_handle *np, struct ktd202x_led *led, struct led_init_data *init_data) { struct led_classdev *cdev; u32 reg; int ret; - ret = of_property_read_u32(np, "reg", ®); + ret = fwnode_property_read_u32(np, "reg", ®); if (ret != 0 || reg >= chip->num_leds) { dev_err(chip->dev, "invalid 'reg' of %pOFn\n", np); return -EINVAL; @@ -454,7 +456,7 @@ static int ktd202x_setup_led_single(struct ktd202x *chip, struct device_node *np return devm_led_classdev_register_ext(chip->dev, &led->cdev, init_data); } -static int ktd202x_add_led(struct ktd202x *chip, struct device_node *np, unsigned int index) +static int ktd202x_add_led(struct ktd202x *chip, struct fwnode_handle *np, unsigned int index) { struct ktd202x_led *led = &chip->leds[index]; struct led_init_data init_data = {}; @@ -463,14 +465,14 @@ static int ktd202x_add_led(struct ktd202x *chip, struct device_node *np, unsigne int ret; /* Color property is optional in single color case */ - ret = of_property_read_u32(np, "color", &color); + ret = fwnode_property_read_u32(np, "color", &color); if (ret < 0 && ret != -EINVAL) { dev_err(chip->dev, "failed to parse 'color' of %pOF\n", np); return ret; } led->chip = chip; - init_data.fwnode = of_fwnode_handle(np); + init_data.fwnode = np; if (color == LED_COLOR_ID_RGB) { cdev = &led->mcdev.led_cdev; @@ -492,26 +494,30 @@ static int ktd202x_add_led(struct ktd202x *chip, struct device_node *np, unsigne static int ktd202x_probe_dt(struct ktd202x *chip) { - struct device_node *np = dev_of_node(chip->dev), *child; + struct fwnode_handle *child, *np; + struct device *dev = chip->dev; int count; int i = 0; - chip->num_leds = (int)(unsigned long)of_device_get_match_data(chip->dev); + count = device_get_child_node_count(dev); - count = of_get_available_child_count(np); if (!count || count > chip->num_leds) return -EINVAL; + np = dev_fwnode(chip->dev); + if (!np) + return -ENODEV; + regmap_write(chip->regmap, KTD202X_REG_RESET_CONTROL, KTD202X_RSTR_RESET); /* Allow the device to execute the complete reset */ usleep_range(200, 300); - for_each_available_child_of_node(np, child) { + fwnode_for_each_available_child_node(np, child) { int ret = ktd202x_add_led(chip, child, i); if (ret) { - of_node_put(child); + fwnode_handle_put(child); return ret; } i++; @@ -568,6 +574,8 @@ static int ktd202x_probe(struct i2c_client *client) return ret; } + chip->num_leds = (int) (unsigned long)i2c_get_match_data(client); + ret = ktd202x_probe_dt(chip); if (ret < 0) { regulator_bulk_disable(ARRAY_SIZE(chip->regulators), chip->regulators); @@ -602,21 +610,33 @@ static void ktd202x_shutdown(struct i2c_client *client) regmap_write(chip->regmap, KTD202X_REG_RESET_CONTROL, KTD202X_RSTR_RESET); } +static const struct i2c_device_id ktd202x_id[] = { + {"ktd2026", KTD2026_NUM_LEDS}, + {"ktd2027", KTD2027_NUM_LEDS}, + {}, +}; +MODULE_DEVICE_TABLE(i2c, ktd202x_id); + +#ifndef CONFIG_ACPI static const struct of_device_id ktd202x_match_table[] = { { .compatible = "kinetic,ktd2026", .data = (void *)KTD2026_NUM_LEDS }, { .compatible = "kinetic,ktd2027", .data = (void *)KTD2027_NUM_LEDS }, {}, }; MODULE_DEVICE_TABLE(of, ktd202x_match_table); +#endif static struct i2c_driver ktd202x_driver = { .driver = { .name = "leds-ktd202x", +#ifndef CONFIG_ACPI .of_match_table = ktd202x_match_table, +#endif }, .probe = ktd202x_probe, .remove = ktd202x_remove, .shutdown = ktd202x_shutdown, + .id_table = ktd202x_id, }; module_i2c_driver(ktd202x_driver); From patchwork Fri Feb 16 16:05:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kate Hsuan X-Patchwork-Id: 13560276 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9DD9A12F393 for ; Fri, 16 Feb 2024 16:06:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708099572; cv=none; b=u131IghBSoza8HLIYQ+9zBmwoVRR+TBEh9gud87SEYjgQQOFhuy9HbvsL6hKOpzz2lJEEAxI78AxQWjYtHa/Mk9pdPsqNaCbLhRyzrZd+LbPbjk4ROMPEbdWMix6Gobt1MmPm6ARzOZCIwEHGUO9KDCtktJtBtEpRKPwE5DFwN0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708099572; c=relaxed/simple; bh=yqKclV0NPqSLvxU0ArKUQB4rOtlkbw1Rme/pB/VKCho=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Wlpl/kx4aqpjB49XdHmD+0h0lSuTJHceQOvLGIofu04U1DWp7QbGVS70Lm6mXT+tnxez5EnINvs3PEtrmhhyNMIDRQJwwBSekIHOALdkPQ2Ye/D1cbeTWY0Wymnut9mzjzdWsp6YhdbavySu8rOS7XTirDoruYjurFCB+m1V0o8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=cd2Krt2F; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="cd2Krt2F" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1708099569; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gaj7roeARNSrWhk/9zy9SUlSFnO3r0EEzHAmXFwT4F4=; b=cd2Krt2FW7pKVvgOsN0aQbQeK93T858ER3gelAqpAv2TP6bZZcVDOX1+/Tc8rCrBSKIJj3 1msCLXGPsuePBsoiUofZDd4CgH18BojN/hlJa1VeOHn4j4+/p4VTMlBbRavfoG/76G+4+y 5njzBeGHjG8tlk1JVOEYRuGDH8AOWik= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-198-VJkNpuCeMSOF8Vwa0EzvOQ-1; Fri, 16 Feb 2024 11:06:06 -0500 X-MC-Unique: VJkNpuCeMSOF8Vwa0EzvOQ-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F0AA285A58B; Fri, 16 Feb 2024 16:06:05 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.39.192.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id E4F90492BE5; Fri, 16 Feb 2024 16:06:01 +0000 (UTC) From: Kate Hsuan To: Pavel Machek , Lee Jones , linux-leds@vger.kernel.org, platform-driver-x86@vger.kernel.org, Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , =?utf-8?q?A?= =?utf-8?q?ndr=C3=A9_Apitzsch?= Cc: Kate Hsuan Subject: [PATCH v2 3/3] leds: rgb: leds-ktd202x: Skip regulator settings for Xiaomi pad2 Date: Sat, 17 Feb 2024 00:05:26 +0800 Message-ID: <20240216160526.235594-4-hpa@redhat.com> In-Reply-To: <20240216160526.235594-1-hpa@redhat.com> References: <20240216160526.235594-1-hpa@redhat.com> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.10 The controller is already powered by BP25890RTWR on Xiaomi Pad2 so the regulator settings can be ignored. Signed-off-by: Kate Hsuan --- drivers/leds/rgb/leds-ktd202x.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/leds/rgb/leds-ktd202x.c b/drivers/leds/rgb/leds-ktd202x.c index 8eb79c342fb6..6fd0794988e9 100644 --- a/drivers/leds/rgb/leds-ktd202x.c +++ b/drivers/leds/rgb/leds-ktd202x.c @@ -14,7 +14,9 @@ #include #include #include +#ifndef CONFIG_ACPI #include +#endif #define KTD2026_NUM_LEDS 3 #define KTD2027_NUM_LEDS 4 @@ -105,18 +107,22 @@ struct ktd202x { static int ktd202x_chip_disable(struct ktd202x *chip) { +#ifndef CONFIG_ACPI int ret; +#endif if (!chip->enabled) return 0; regmap_write(chip->regmap, KTD202X_REG_RESET_CONTROL, KTD202X_ENABLE_CTRL_SLEEP); +#ifndef CONFIG_ACPI ret = regulator_bulk_disable(ARRAY_SIZE(chip->regulators), chip->regulators); if (ret) { dev_err(chip->dev, "Failed to disable regulators: %d\n", ret); return ret; } +#endif chip->enabled = false; return 0; @@ -129,11 +135,13 @@ static int ktd202x_chip_enable(struct ktd202x *chip) if (chip->enabled) return 0; +#ifndef CONFIG_ACPI ret = regulator_bulk_enable(ARRAY_SIZE(chip->regulators), chip->regulators); if (ret) { dev_err(chip->dev, "Failed to enable regulators: %d\n", ret); return ret; } +#endif chip->enabled = true; ret = regmap_write(chip->regmap, KTD202X_REG_RESET_CONTROL, KTD202X_ENABLE_CTRL_WAKE); @@ -560,6 +568,7 @@ static int ktd202x_probe(struct i2c_client *client) return ret; } +#ifndef CONFIG_ACPI chip->regulators[0].supply = "vin"; chip->regulators[1].supply = "vio"; ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(chip->regulators), chip->regulators); @@ -573,10 +582,12 @@ static int ktd202x_probe(struct i2c_client *client) dev_err_probe(dev, ret, "Failed to enable regulators.\n"); return ret; } +#endif chip->num_leds = (int) (unsigned long)i2c_get_match_data(client); ret = ktd202x_probe_dt(chip); +#ifndef CONFIG_ACPI if (ret < 0) { regulator_bulk_disable(ARRAY_SIZE(chip->regulators), chip->regulators); return ret; @@ -587,6 +598,10 @@ static int ktd202x_probe(struct i2c_client *client) dev_err_probe(dev, ret, "Failed to disable regulators.\n"); return ret; } +#else + if (ret < 0) + return ret; +#endif mutex_init(&chip->mutex);