From nobody Mon Feb 9 01:18:13 2026 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 EE854D266 for ; Wed, 6 Mar 2024 02:58:39 +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=1709693921; cv=none; b=hRCBuhCwLxJSdkmHzp2ZBlQA4LCVUH8NbFgmDYpHi2lIAeYZ4ILSK4OuALyOXGSPLyF6p6i0wk1I6XquRdwicRi2i2kAFhZCSErqm0AEXSFPCZa6T4wE8q1znpvr1Qj+g34kg29kWK/O31S+A8MeabQ6fc4j3BfnjMRBQK+BbJM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709693921; c=relaxed/simple; bh=823dxRCJS9CmK5EOGvPzhDZMSs+Sqs0VrmSiBQlfjMs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=m5boV0OPQp2CkY4UsR8HQWu8FDRglA/YKYxcvxVb3tt+89S+nfnN2myWgeUv8s2Zhu0Y5uA+rKvlsR+yn1iGkIj5qCouosoBxSDd6ujLrz7aH6OYZMravoYdsc2mfkIcphnnoOozD8fPtk2XqJABhJTVNpem+JyjhW5FhE8kHGw= 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=Z+wAgCS7; 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="Z+wAgCS7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1709693918; 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=bb5KF9un2sik2EZ0XFA2eWLCsmLPgVdLDv6phx+5dsc=; b=Z+wAgCS7D+MzbWEsTCDgM+TOMnb9MTTFDJb7AJOY3+KUC/VpUtVeRvwuhjxOqhZ8JqLctX Ap8Vyf3s89K95haeeZya63J0dLvpaSjpccpCLY4TM3mpAioOqRdSSm8EXHcs2PvGmWnCZj wCjjHFEpT5Hzta6xEgso1yEeb1fPXJk= 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-641-JatqkVo-Nr2-JMreZBEQqw-1; Tue, 05 Mar 2024 21:58:27 -0500 X-MC-Unique: JatqkVo-Nr2-JMreZBEQqw-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (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 E53008007AF; Wed, 6 Mar 2024 02:58:26 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.39.192.36]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4C9421121306; Wed, 6 Mar 2024 02:58:21 +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=20J=C3=A4rvinen?= , =?UTF-8?q?Andr=C3=A9=20Apitzsch?= , linux-kernel@vger.kernel.org Cc: Kate Hsuan Subject: [PATCH v4 1/2] platform: x86-android-tablets: other: Add swnode for Xiaomi pad2 indicator LED Date: Wed, 6 Mar 2024 10:58:00 +0800 Message-ID: <20240306025801.8814-2-hpa@redhat.com> In-Reply-To: <20240306025801.8814-1-hpa@redhat.com> References: <20240306025801.8814-1-hpa@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3 Content-Type: text/plain; charset="utf-8" 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/pla= tform/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 =20 #include "shared-psy-info.h" #include "x86-android-tablets.h" @@ -593,6 +594,87 @@ const struct x86_dev_info whitelabel_tm800a550l_info _= _initconst =3D { .gpiod_lookup_tables =3D whitelabel_tm800a550l_gpios, }; =20 +/* + * 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 =3D { +}; + +static const struct property_entry ktd2026_rgb_led_props[] =3D { + 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 =3D { + .name =3D "multi-led", + .properties =3D ktd2026_rgb_led_props, + .parent =3D &ktd2026_node, +}; + +/* B */ +static const struct property_entry ktd2026_red_led_props[] =3D { + PROPERTY_ENTRY_U32("reg", 0), + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_BLUE), + { } +}; + +static const struct software_node ktd2026_red_led_node =3D { + .properties =3D ktd2026_red_led_props, + .parent =3D &ktd2026_rgb_led_node, +}; + +/* G */ +static const struct property_entry ktd2026_green_led_props[] =3D { + PROPERTY_ENTRY_U32("reg", 1), + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_GREEN), + { } +}; + +static const struct software_node ktd2026_green_led_node =3D { + .properties =3D ktd2026_green_led_props, + .parent =3D &ktd2026_rgb_led_node, +}; + +/* R */ +static const struct property_entry ktd2026_blue_led_props[] =3D { + PROPERTY_ENTRY_U32("reg", 2), + PROPERTY_ENTRY_U32("color", LED_COLOR_ID_RED), + { } +}; + +static const struct software_node ktd2026_blue_led_node =3D { + .properties =3D ktd2026_blue_led_props, + .parent =3D &ktd2026_rgb_led_node, +}; + +static const struct software_node *ktd2026_node_group[] =3D { + &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 t= he * 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_i= 2c_clients[] __initconst .type =3D "ktd2026", .addr =3D 0x30, .dev_name =3D "ktd2026", + .swnode =3D &ktd2026_node, }, .adapter_path =3D "\\_SB_.PCI0.I2C3", }, @@ -624,4 +707,6 @@ static const struct x86_i2c_client_info xiaomi_mipad2_i= 2c_clients[] __initconst const struct x86_dev_info xiaomi_mipad2_info __initconst =3D { .i2c_client_info =3D xiaomi_mipad2_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(xiaomi_mipad2_i2c_clients), + .init =3D xiaomi_mipad2_init, + .exit =3D xiaomi_mipad2_exit, }; diff --git a/drivers/platform/x86/x86-android-tablets/shared-psy-info.h b/d= rivers/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; =20 +extern const struct software_node ktd2026_leds_node; + #endif --=20 2.43.2