From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 78A4670823; Mon, 11 Aug 2025 02:23:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878995; cv=none; b=Ftufe+9F5ojZyFhd2ARCN9nMbln7oPvVEPhDdNNnxBvt6RCMhNCLaMJV6tyOaZvhnysa8EgoTp0YCJ11T72lSVc0vT/TYUsRVpwMICeAmFBj6ELfJlYGScdtcTAzXkLRKQdnDbeYdi+gkdEWUVhHbeOilnli7RhhwMdN5liunbs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878995; c=relaxed/simple; bh=mtGnTfnyeJ4h4MvSNwOYVf86NrrUxSZC6Op+FLPW0bY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=PjJAxqAN6WygyKeYuUA5kwi+NY5Y5r0mE6W4GM4BHIdzEx33Ume7aXnMxaMMdSK6D909Os9pjeH3HVys6+93ByNyfDfEMU01/53bcNi/S+ZuGqp/xGjECsP/kj3vAmPyeo2Z4ZmBDTqpycDazxVfUoU7G2axLVgBp0xnQcw1s+M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=duiYOcRH; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="duiYOcRH" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-76b77a97a04so3393000b3a.1; Sun, 10 Aug 2025 19:23:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754878993; x=1755483793; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=A5YkaQ7ud/PDBnvksOZ9mU1mS0vRmz7q3Fp2ER6X87Y=; b=duiYOcRHSP70U+ywqqJT2CGcrlEf6NbYOQGnO2N2IsN1YXKDvHX28Wdk+p2ZTVlPq4 trR0qal+F/1TEgg/sc5ulHL8G4C6+MKoVTSv4MMVwTHi70PQeQjN9Cc7REOwiupMxRp0 cFwzTSDfOx5H5rwEUdHQl0KGJbA2JzJ7v2Tem96Ym71AOmyC/VtIN5P39Wo6WuQxjzvu mVLc3uVmPA+E5xAn9Evgf9ErW2hcmN+5paxIusuSHvh+Lcir+ggrjXai2rKQ2cG0PgYC 5OTDWugxSZheUu/4bCm76/gGAntYhp3c50QPH6YBcM4W4ezaNF0DkHJ1hmVN36CQ9A4z zo5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754878993; x=1755483793; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=A5YkaQ7ud/PDBnvksOZ9mU1mS0vRmz7q3Fp2ER6X87Y=; b=gZQcq5FNHaoVP2Pg/7eBcn30Nv6NClbVeIuA8YOZH1E7IVht0nSWJiXKA1Wl1N1k3v ehgfjhqkM15NvTk0GIkqVAWxY0XSsGu9/6iRJrhv0artSemfhiWXcPT/gOVGIqbUuw6R nAx7WVN1FIvcfGqJqpx+2KWvOmIJqXwA/yvZQHsKhLitAm2dngAYfQ4+hZ9BxQ0kYyHX zBNUUmeTM+H0RI+swByzV6KisgkNKnbdpqrP6VbE9PN6o/KfYAAu7OJDO+jBM1TwmVUJ Ah6PZsAc0OuNtImRq8+a38golgrKH1MKKqXS7FV+qJesdiFUyDQbd6xYxGR79tWQBuwB 4KdA== X-Forwarded-Encrypted: i=1; AJvYcCVKdMoryVmH0haMZkJJl33UcqDyxSgjrw7gmzE5rD969A9Y57uOd9wpUYhPUi/wyuFb5hOV53v2VHLa014=@vger.kernel.org, AJvYcCWftRYPT/TpclRX9PZnCZdusQRKTnDg0ZysBwBB4qUEKTyMQAfk4baPi1j9SL5938Nhnv8UtYkQSGKYPgbuP7HeL2iWvA==@vger.kernel.org X-Gm-Message-State: AOJu0Ywmjj2YEEZNu/wNJ1d7FRE3KadN7CU6qJLyyImO6M8e4SK+j68q IO+D21Ur0nMG5lSmvjbSw3QJam1+Sv4qdRlUiUyvy21N/rrYCg4xBlxiFkPhzA== X-Gm-Gg: ASbGncsUvjfNEJ64USCSdnq8W0Y1JhxZQfONa3IubZKb4qDB7OLDBMRnTxDhSzpXn8l RcQaQWoaVtp6uKoTmM4PPkZwR9onRj7QFXEX2nNtyqsMz6F8AGzuJxn8SJjEmEP7bpEoEjOsu/G UiQ/+V0c75O3P77TCwnrtgIxJ9pHNssiL94+7uKuhxbhM+j/I9qx1DliGkiQ89BoQT6rVFgdtoq 5XgYAIlOasYqu2fJgtFXACMrv0i0z525M/LvCqYPATT7bKnLTU1Z4E4F1W+KURx0/sNmft8x+Qv sfaYDL+x6API/qsAW8ihpBN1TrA/y6uvFDE8CVZSuKOd6cXr4+MJume7/IuJ2cFVGCjgCkD+Fi7 ejHVPt1uJFiZ2SuAd/9MWYN/8jsFMGF91YNnmGb4bTe82tQ== X-Google-Smtp-Source: AGHT+IGsSjWIuxGnYM3vLIY01D7lO7FQq1Bvu2vExf1Yv2nV64+AzIQX7Pc2wXEaoooUJWsfw00Akw== X-Received: by 2002:a05:6a20:1611:b0:237:d013:8a78 with SMTP id adf61e73a8af0-240551d83f2mr14627422637.37.1754878992632; Sun, 10 Aug 2025 19:23:12 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:12 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 01/11] platform/x86: x86-android-tablets: convert Goodix devices to GPIO references Date: Sun, 10 Aug 2025 19:22:47 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-1-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that gpiolib supports software nodes to describe GPIOs, switch the driver away from using GPIO lookup tables for Goodix touchscreens to using PROPERTY_ENTRY_GPIO() to keep all touchscreen properties together. Since the tablets are using either Baytrail or Cherryview GPIO controllers x86_dev_info structure has been extended to carry gpiochip type information so that the code can instantiate correct set of software nodes representing the GPIO chip. Because this adds a new point of failure in x86_android_tablet_probe(), x86_android_tablet_remove() is rearranged to handle cases where battery swnode has not been registered yet, and registering of GPIO lookup tables is moved earlier as it can not fail. Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/asus.c | 23 ++++---- drivers/platform/x86/x86-android-tablets/core.c | 69 ++++++++++++++++++= +--- drivers/platform/x86/x86-android-tablets/lenovo.c | 23 ++++---- drivers/platform/x86/x86-android-tablets/other.c | 37 +++--------- .../x86/x86-android-tablets/x86-android-tablets.h | 11 ++++ 5 files changed, 105 insertions(+), 58 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/asus.c b/drivers/plat= form/x86/x86-android-tablets/asus.c index 97cd14c1fd23..6c4468f4004b 100644 --- a/drivers/platform/x86/x86-android-tablets/asus.c +++ b/drivers/platform/x86/x86-android-tablets/asus.c @@ -9,6 +9,7 @@ */ =20 #include +#include #include #include =20 @@ -77,6 +78,16 @@ static const struct software_node asus_me176c_ug3105_nod= e =3D { .properties =3D asus_me176c_ug3105_props, }; =20 +static const struct property_entry asus_me176c_touchscreen_props[] =3D { + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[0], 60, GPIO_= ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("irq-gpios", &baytrail_gpiochip_nodes[2], 28, GPIO_AC= TIVE_HIGH), + { } +}; + +static const struct software_node asus_me176c_touchscreen_node =3D { + .properties =3D asus_me176c_touchscreen_props, +}; + static const struct x86_i2c_client_info asus_me176c_i2c_clients[] __initco= nst =3D { { /* bq24297 battery charger */ @@ -132,6 +143,7 @@ static const struct x86_i2c_client_info asus_me176c_i2c= _clients[] __initconst =3D .type =3D "GDIX1001:00", .addr =3D 0x14, .dev_name =3D "goodix_ts", + .swnode =3D &asus_me176c_touchscreen_node, }, .adapter_path =3D "\\_SB_.I2C6", .irq_data =3D { @@ -152,18 +164,8 @@ static const struct x86_serdev_info asus_me176c_serdev= s[] __initconst =3D { }, }; =20 -static struct gpiod_lookup_table asus_me176c_goodix_gpios =3D { - .dev_id =3D "i2c-goodix_ts", - .table =3D { - GPIO_LOOKUP("INT33FC:00", 60, "reset", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("INT33FC:02", 28, "irq", GPIO_ACTIVE_HIGH), - { } - }, -}; - static struct gpiod_lookup_table * const asus_me176c_gpios[] =3D { &int3496_gpo2_pin22_gpios, - &asus_me176c_goodix_gpios, NULL }; =20 @@ -179,6 +181,7 @@ const struct x86_dev_info asus_me176c_info __initconst = =3D { .gpiod_lookup_tables =3D asus_me176c_gpios, .bat_swnode =3D &generic_lipo_hv_4v35_battery_node, .modules =3D bq24190_modules, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; =20 /* Asus TF103C tablets have an Android factory image with everything hardc= oded */ diff --git a/drivers/platform/x86/x86-android-tablets/core.c b/drivers/plat= form/x86/x86-android-tablets/core.c index 2a9c47178505..b0d63d3c05cd 100644 --- a/drivers/platform/x86/x86-android-tablets/core.c +++ b/drivers/platform/x86/x86-android-tablets/core.c @@ -155,6 +155,7 @@ static struct serdev_device **serdevs; static struct gpio_keys_button *buttons; static struct gpiod_lookup_table * const *gpiod_lookup_tables; static const struct software_node *bat_swnode; +static const struct software_node **gpiochip_node_group; static void (*exit_handler)(void); =20 static __init struct i2c_adapter * @@ -331,6 +332,34 @@ static __init int x86_instantiate_serdev(const struct = x86_dev_info *dev_info, in return ret; } =20 +const struct software_node baytrail_gpiochip_nodes[] =3D { + { .name =3D "INT33FC:00" }, + { .name =3D "INT33FC:01" }, + { .name =3D "INT33FC:02" }, +}; + +static const struct software_node *baytrail_gpiochip_node_group[] =3D { + &baytrail_gpiochip_nodes[0], + &baytrail_gpiochip_nodes[1], + &baytrail_gpiochip_nodes[2], + NULL +}; + +const struct software_node cherryview_gpiochip_nodes[] =3D { + { .name =3D "INT33FF:00" }, + { .name =3D "INT33FF:01" }, + { .name =3D "INT33FF:02" }, + { .name =3D "INT33FF:03" }, +}; + +static const struct software_node *cherryview_gpiochip_node_group[] =3D { + &cherryview_gpiochip_nodes[0], + &cherryview_gpiochip_nodes[1], + &cherryview_gpiochip_nodes[2], + &cherryview_gpiochip_nodes[3], + NULL +}; + static void x86_android_tablet_remove(struct platform_device *pdev) { int i; @@ -361,10 +390,14 @@ static void x86_android_tablet_remove(struct platform= _device *pdev) if (exit_handler) exit_handler(); =20 + if (bat_swnode) + software_node_unregister(bat_swnode); + + if (gpiochip_node_group) + software_node_unregister_node_group(gpiochip_node_group); + for (i =3D 0; gpiod_lookup_tables && gpiod_lookup_tables[i]; i++) gpiod_remove_lookup_table(gpiod_lookup_tables[i]); - - software_node_unregister(bat_swnode); } =20 static __init int x86_android_tablet_probe(struct platform_device *pdev) @@ -388,16 +421,36 @@ static __init int x86_android_tablet_probe(struct pla= tform_device *pdev) for (i =3D 0; dev_info->modules && dev_info->modules[i]; i++) request_module(dev_info->modules[i]); =20 - bat_swnode =3D dev_info->bat_swnode; - if (bat_swnode) { - ret =3D software_node_register(bat_swnode); + gpiod_lookup_tables =3D dev_info->gpiod_lookup_tables; + for (i =3D 0; gpiod_lookup_tables && gpiod_lookup_tables[i]; i++) + gpiod_add_lookup_table(gpiod_lookup_tables[i]); + + switch (dev_info->gpiochip_type) { + case X86_GPIOCHIP_BAYTRAIL: + gpiochip_node_group =3D baytrail_gpiochip_node_group; + break; + case X86_GPIOCHIP_CHERRYVIEW: + gpiochip_node_group =3D cherryview_gpiochip_node_group; + break; + case X86_GPIOCHIP_UNSPECIFIED: + gpiochip_node_group =3D NULL; + break; + } + + if (gpiochip_node_group) { + ret =3D software_node_register_node_group(gpiochip_node_group); if (ret) return ret; } =20 - gpiod_lookup_tables =3D dev_info->gpiod_lookup_tables; - for (i =3D 0; gpiod_lookup_tables && gpiod_lookup_tables[i]; i++) - gpiod_add_lookup_table(gpiod_lookup_tables[i]); + if (dev_info->bat_swnode) { + ret =3D software_node_register(dev_info->bat_swnode); + if (ret) { + x86_android_tablet_remove(pdev); + return ret; + } + bat_swnode =3D dev_info->bat_swnode; + } =20 if (dev_info->init) { ret =3D dev_info->init(&pdev->dev); diff --git a/drivers/platform/x86/x86-android-tablets/lenovo.c b/drivers/pl= atform/x86/x86-android-tablets/lenovo.c index 1241a97cda39..22fe76ef5b5a 100644 --- a/drivers/platform/x86/x86-android-tablets/lenovo.c +++ b/drivers/platform/x86/x86-android-tablets/lenovo.c @@ -12,6 +12,7 @@ =20 #include #include +#include #include #include #include @@ -61,6 +62,16 @@ static struct lp855x_platform_data lenovo_lp8557_reg_onl= y_pdata =3D { =20 /* Lenovo Yoga Book X90F / X90L's Android factory image has everything har= dcoded */ =20 +static const struct property_entry lenovo_yb1_x90_goodix_props[] =3D { + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[1], 53, GPI= O_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("irq-gpios", &cherryview_gpiochip_nodes[1], 56, GPIO_= ACTIVE_HIGH), + { } +}; + +static const struct software_node lenovo_yb1_x90_goodix_node =3D { + .properties =3D lenovo_yb1_x90_goodix_props, +}; + static const struct property_entry lenovo_yb1_x90_wacom_props[] =3D { PROPERTY_ENTRY_U32("hid-descr-addr", 0x0001), PROPERTY_ENTRY_U32("post-reset-deassert-delay-ms", 150), @@ -108,6 +119,7 @@ static const struct x86_i2c_client_info lenovo_yb1_x90_= i2c_clients[] __initconst .type =3D "GDIX1001:00", .addr =3D 0x14, .dev_name =3D "goodix_ts", + .swnode =3D &lenovo_yb1_x90_goodix_node, }, .adapter_path =3D "\\_SB_.PCI0.I2C2", .irq_data =3D { @@ -198,15 +210,6 @@ static const struct x86_gpio_button lenovo_yb1_x90_lid= __initconst =3D { .pin =3D 19, }; =20 -static struct gpiod_lookup_table lenovo_yb1_x90_goodix_gpios =3D { - .dev_id =3D "i2c-goodix_ts", - .table =3D { - GPIO_LOOKUP("INT33FF:01", 53, "reset", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("INT33FF:01", 56, "irq", GPIO_ACTIVE_HIGH), - { } - }, -}; - static struct gpiod_lookup_table lenovo_yb1_x90_hideep_gpios =3D { .dev_id =3D "i2c-hideep_ts", .table =3D { @@ -225,7 +228,6 @@ static struct gpiod_lookup_table lenovo_yb1_x90_wacom_g= pios =3D { =20 static struct gpiod_lookup_table * const lenovo_yb1_x90_gpios[] =3D { &lenovo_yb1_x90_hideep_gpios, - &lenovo_yb1_x90_goodix_gpios, &lenovo_yb1_x90_wacom_gpios, NULL }; @@ -259,6 +261,7 @@ const struct x86_dev_info lenovo_yogabook_x90_info __in= itconst =3D { .gpio_button =3D &lenovo_yb1_x90_lid, .gpio_button_count =3D 1, .gpiod_lookup_tables =3D lenovo_yb1_x90_gpios, + .gpiochip_type =3D X86_GPIOCHIP_CHERRYVIEW, .init =3D lenovo_yb1_x90_init, }; =20 diff --git a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/pla= tform/x86/x86-android-tablets/other.c index f7bd9f863c85..e3907812c8bc 100644 --- a/drivers/platform/x86/x86-android-tablets/other.c +++ b/drivers/platform/x86/x86-android-tablets/other.c @@ -10,6 +10,7 @@ =20 #include #include +#include #include #include #include @@ -297,6 +298,8 @@ static const struct software_node medion_lifetab_s10346= _accel_node =3D { static const struct property_entry medion_lifetab_s10346_touchscreen_props= [] =3D { PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"), PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[1], 26, GPIO_= ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("irq-gpios", &baytrail_gpiochip_nodes[2], 3, GPIO_ACT= IVE_HIGH), { } }; =20 @@ -340,24 +343,10 @@ static const struct x86_i2c_client_info medion_lifeta= b_s10346_i2c_clients[] __in }, }; =20 -static struct gpiod_lookup_table medion_lifetab_s10346_goodix_gpios =3D { - .dev_id =3D "i2c-goodix_ts", - .table =3D { - GPIO_LOOKUP("INT33FC:01", 26, "reset", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("INT33FC:02", 3, "irq", GPIO_ACTIVE_HIGH), - { } - }, -}; - -static struct gpiod_lookup_table * const medion_lifetab_s10346_gpios[] =3D= { - &medion_lifetab_s10346_goodix_gpios, - NULL -}; - const struct x86_dev_info medion_lifetab_s10346_info __initconst =3D { .i2c_client_info =3D medion_lifetab_s10346_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(medion_lifetab_s10346_i2c_clients), - .gpiod_lookup_tables =3D medion_lifetab_s10346_gpios, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; =20 /* Nextbook Ares 8 (BYT) tablets have an Android factory image with everyt= hing hardcoded */ @@ -543,6 +532,8 @@ static const struct property_entry whitelabel_tm800a550= l_goodix_props[] =3D { PROPERTY_ENTRY_STRING("firmware-name", "gt912-tm800a550l.fw"), PROPERTY_ENTRY_STRING("goodix,config-name", "gt912-tm800a550l.cfg"), PROPERTY_ENTRY_U32("goodix,main-clk", 54), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[1], 26, GPIO_= ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("irq-gpios", &baytrail_gpiochip_nodes[2], 3, GPIO_ACT= IVE_HIGH), { } }; =20 @@ -578,24 +569,10 @@ static const struct x86_i2c_client_info whitelabel_tm= 800a550l_i2c_clients[] __in }, }; =20 -static struct gpiod_lookup_table whitelabel_tm800a550l_goodix_gpios =3D { - .dev_id =3D "i2c-goodix_ts", - .table =3D { - GPIO_LOOKUP("INT33FC:01", 26, "reset", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("INT33FC:02", 3, "irq", GPIO_ACTIVE_HIGH), - { } - }, -}; - -static struct gpiod_lookup_table * const whitelabel_tm800a550l_gpios[] =3D= { - &whitelabel_tm800a550l_goodix_gpios, - NULL -}; - const struct x86_dev_info whitelabel_tm800a550l_info __initconst =3D { .i2c_client_info =3D whitelabel_tm800a550l_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(whitelabel_tm800a550l_i2c_clients), - .gpiod_lookup_tables =3D whitelabel_tm800a550l_gpios, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; =20 /* diff --git a/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h= b/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h index dcf8d49e3b5f..a54d09408866 100644 --- a/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h +++ b/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h @@ -32,6 +32,12 @@ enum x86_acpi_irq_type { X86_ACPI_IRQ_TYPE_PMIC, }; =20 +enum x86_gpiochip_type { + X86_GPIOCHIP_UNSPECIFIED =3D 0, + X86_GPIOCHIP_BAYTRAIL, + X86_GPIOCHIP_CHERRYVIEW, +}; + struct x86_acpi_irq_data { char *chip; /* GPIO chip label (GPIOINT) or PMIC ACPI path (PMIC) */ enum x86_acpi_irq_type type; @@ -99,6 +105,7 @@ struct x86_dev_info { int (*init)(struct device *dev); void (*exit)(void); bool use_pci; + enum x86_gpiochip_type gpiochip_type; }; =20 int x86_android_tablet_get_gpiod(const char *chip, int pin, const char *co= n_id, @@ -106,6 +113,10 @@ int x86_android_tablet_get_gpiod(const char *chip, int= pin, const char *con_id, struct gpio_desc **desc); int x86_acpi_irq_helper_get(const struct x86_acpi_irq_data *data); =20 +/* Software nodes representing GPIO chips used by various tablets */ +extern const struct software_node baytrail_gpiochip_nodes[]; +extern const struct software_node cherryview_gpiochip_nodes[]; + /* * Extern declarations of x86_dev_info structs so there can be a single * MODULE_DEVICE_TABLE(dmi, ...), while splitting the board descriptions. --=20 2.51.0.rc0.155.g4a0f42376b-goog From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6BCCF1E32DB; Mon, 11 Aug 2025 02:23:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878995; cv=none; b=pZyPy0BFT6ZLWCf8S5I8tUenROmFhRlfiPFMt9kOFkKF4BoI8fK9Uu/cQXJLTG6Gu3ztX6p7+UdfOiwgD0i4mVx3Nom1XNMTgMQuNq1wIW8X5OU3IOKRsiFvJNR+5idLSBT2BQufDBZikaZhakPWyRt9gq6dLBcDR/yfJ/Nf9QY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878995; c=relaxed/simple; bh=2ubWgRaXL0bhOze22YD0OHmuphyo1tC6HJoV+tDyi/Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OC0J2z281Dw2ZqOi3fvXgbLEAqPO+UaxU1ZYUGfjmT0xO5PYTrS1Y51vqW9RWaSS2eYmYwgJymj6GzVXqa0bzEUHdRWRbE5NYeBM1DIPqxClbBVh+kuTZ7q9MU2S2f5nGYBgANLph8q+6azOtDGjjWGyegnUsuUrcIARcnHUk8Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iatm71fk; arc=none smtp.client-ip=209.85.216.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iatm71fk" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-31f255eb191so3959062a91.0; Sun, 10 Aug 2025 19:23:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754878994; x=1755483794; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nhrINpeq5njRFRa8XYg96CvHaDhaqbivlGAX2pcb5zE=; b=iatm71fkwGuy4FNxHx8Lc2Z+z8eXJI4vKITsYjKOZgCvyLZMiQv77+fojX5gdUdR+f 1yyPMK2k+wUKJIy1WRsuCyP1sWAZEbi2lI1V2sRapOW1aJoyI+Ihlusdc4n+SL4jc9qo S1n11hlFXsbZiB8TQTwhC0uJQsvljotgKxYvsvskwSj1Jdr81GQ4C3ibzUq6or49u0Di pyDYe+eIZC48PJpDNQXSjCe1bsPYV/Gkpo/CkBWURvmGA7vQk3n/r4+QI3eOTMeKg9+5 cPezLyZeZdLiKkZainVWMh19U7jPH/HdEsUhqkEXB3i+Uc+uhHHbEu50tsBh9zJ5Zny0 7I/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754878994; x=1755483794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nhrINpeq5njRFRa8XYg96CvHaDhaqbivlGAX2pcb5zE=; b=WZbRAyiRL3xopSAcbvW4R6S+TlC+UNRyPeF6pJP7BsvLlDYc7YkCL3iYsKE9H6NKnn /rivoERNnRZGgdgz/cZ/yzJKFsEmvefJvE0kYLYplppwIuZVpYi0wU/lt8VDmPcAt7Cf 1T+ZKTsUIS+ZZ7XbxbEdEvWygzC5RIu8L/TdbYDIXTR4qGe0JWozYQFsBte9YvFs3T3b dCbMCth/XwZFvviq759GcG1S2diVumhfe2bReoAfI5cXt8VHPv5BmsAKtaOLcFu9o6mS GkfHsNLCHgrzNRZxNrmNejsKeB7XXTh2GA793uKr6XNvucVRFyqtpAsMH4rXSvfp52v2 Jv9g== X-Forwarded-Encrypted: i=1; AJvYcCVb86IX5MNGMklRTDwulpSmNstDEHG0BWixbSihoFlbQB4yS/zUa9WPnM2jWdEbMZ/gaZYKy5/TC/w8pl7fKXv29aVy6A==@vger.kernel.org, AJvYcCXtjeiXqHzpDGfxxQUMgh7K5q4wd58Za9MGpfNiLf1MQguYwqqTp69nOKsvIlnUO1iJ/b2JHh7TXQoVTLw=@vger.kernel.org X-Gm-Message-State: AOJu0YwQ4IiMo7U/l39XC8lxCrPFYxJJYtGusfrsJlcbv6hgj5gNf7X0 yz90dLK89JzfCWWuRZep5LJy35wl/Cb7xumbyfbAAoq2/hPn1IBAQUf3VJyUJw== X-Gm-Gg: ASbGnctSFuvCnmUON0neiSllFCdT+xNXSuoxcIzf8eHFvNtmHbS0MaWLi8NlqaSthtm T5bNSmynDnVcgnfunnEi5Ql/AGDK1O1WdsJWPjKc533vt1RJKX0QvLcaCcSEBSMyfy8bOVU1fIh khdlOmR2rZpDScMfYjC58D2rlVMCyywwWa7CuWg69iRj8a0NI64ug9t79XPf547sEvf86T9xVvQ +g9o1Gw/6KsgI4I/uB8iFlugqsEwNN0e6Qy1cVT6LzTaA7lKKzxC7it5rSh6tEhJcCfkmU+yG/1 OntWY3RaaFBm0QJnqUwlzQ4f8h3FSl3hYj5cRZzS449RVs/IoZmR1onKihv5zwupS4bzUey7dDX lyqNfLPJlOX4MYijiNwTtARuwU0RTr6XY4kBvqdJ4TVZY4y05IgjQ//8V X-Google-Smtp-Source: AGHT+IEoWEUkLjo9N8YvaIzQFpeJJJ0ww65LHPUXXaeuq3aNVlERKrU/c2KK5qdMd/8Ix62kE3iwHg== X-Received: by 2002:a17:90b:5105:b0:321:380b:9e85 with SMTP id 98e67ed59e1d1-321b3e81b2emr981651a91.8.1754878993533; Sun, 10 Aug 2025 19:23:13 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:13 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 02/11] platform/x86: x86-android-tablets: convert Wacom devices to GPIO references Date: Sun, 10 Aug 2025 19:22:48 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-2-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that gpiolib supports software nodes to describe GPIOs, switch the driver away from using GPIO lookup tables for Wacom touchscreens to using PROPERTY_ENTRY_GPIO() to keep all touchscreen properties together. Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/lenovo.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/lenovo.c b/drivers/pl= atform/x86/x86-android-tablets/lenovo.c index 22fe76ef5b5a..f8d261d37284 100644 --- a/drivers/platform/x86/x86-android-tablets/lenovo.c +++ b/drivers/platform/x86/x86-android-tablets/lenovo.c @@ -75,6 +75,7 @@ static const struct software_node lenovo_yb1_x90_goodix_n= ode =3D { static const struct property_entry lenovo_yb1_x90_wacom_props[] =3D { PROPERTY_ENTRY_U32("hid-descr-addr", 0x0001), PROPERTY_ENTRY_U32("post-reset-deassert-delay-ms", 150), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[0], 82, GPI= O_ACTIVE_LOW), { } }; =20 @@ -218,17 +219,8 @@ static struct gpiod_lookup_table lenovo_yb1_x90_hideep= _gpios =3D { }, }; =20 -static struct gpiod_lookup_table lenovo_yb1_x90_wacom_gpios =3D { - .dev_id =3D "i2c-wacom", - .table =3D { - GPIO_LOOKUP("INT33FF:00", 82, "reset", GPIO_ACTIVE_LOW), - { } - }, -}; - static struct gpiod_lookup_table * const lenovo_yb1_x90_gpios[] =3D { &lenovo_yb1_x90_hideep_gpios, - &lenovo_yb1_x90_wacom_gpios, NULL }; =20 --=20 2.51.0.rc0.155.g4a0f42376b-goog From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 412F2242D62; Mon, 11 Aug 2025 02:23:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878996; cv=none; b=ps/PwGTfZbu/gPmKctyqKGg2fix3Rsuo3PBwQcgWtK3OFAoX2MRi0lmwJE7jkErpWKYKJE4nF6Zc1EvVCLUoOApF4uUFC8IadzyPpBdrRBFgSMptrKsXJxX1ehQSFiVqrzPzhsNstbAwBFOt/wQr/f/SAPkSY9aKpS3CG/SVG0U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878996; c=relaxed/simple; bh=OYiTCD65UyICNRtzOzAxFm/BAp3FuST9gSe2kdWm9Vk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=r5Y10TAACzs/EsyKaqjpWYFkAhm49PCNkloZnqd0eZ8hQEc3XyLgMGYCtpU4f2qWfz1OQHp5j7atEBzcwnXjziMwf8baw1RV4oDAUsFCwUm6bNbLmvI/RT9RB+yAl78cKpaLF3HYaHVqbBuJyS5QIXhZTJ6r+f7WPfyqFNIoImA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NJzeM2/j; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NJzeM2/j" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-7425bd5a83aso3170569b3a.0; Sun, 10 Aug 2025 19:23:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754878994; x=1755483794; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=f849tze61YQDeAIBS3cct031MobvtmnSiBzSO+mMBTw=; b=NJzeM2/j/j9iMbnNA6T8v47Crxx1fk7o9qSn1WAxlYPzsRW4jK8/gxMcWvt6un3fWu 9sIy6mKrF0Vd6sslO8Ty22Uobr+KOygiN6c7XrpRd+wExGSjiie9hUQ+8s1pvgmJYqs8 GdPxn6tLF5ieQN16rpVMTJ1fe7ycy4o8fixjoYpFMgRdkyTTy3b1EKGCuju8I2ZmCF+W VEG6IC3uqQfrxoMij2OzDYOXAFJP6Ya97mlQ/caZ3dwvUOamVmRWn0m4nootVnmQB4YH Ol+KGkYiIyDK76YReQqeAFMLmIKzDEe97gL9OF86SFHKGYwRadzqiwft5V73a4RKKzR+ UqLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754878994; x=1755483794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=f849tze61YQDeAIBS3cct031MobvtmnSiBzSO+mMBTw=; b=deZfI+cy/3g11haAczKhwYdOZ4BeKa4928MQIyDvmDlkv9JYVBUmuaSQ03V6IN9xO3 6QljVonhgmJtIbv5oWGArir4OwzckgwyBjxcj4oMzD62OS+pdPJfWVqGiEB8kQej6d1E lDO94EF/iG3ZmVIwkgLwPNrH8PzLVLek4SXKEosTvaC80vkAmul88YFeMxGMnXYPNifd 6dUtEhq9twDKPRFnzRBiwWs2rTX/Qr9BDp9O8XCjGnj8e1qNGZNSedSXyAtFyml11BUg zR2biLZ/cy862pMCQhHLvDhn/B51XQPfkcPr7s6XZaQmsq69cEznPfpS2xHJqe4+s53e 0T0A== X-Forwarded-Encrypted: i=1; AJvYcCUel+1kUqMpsFgfDNKO47C+xy3OdXRaayqLeE2bU//DuUPh+rV++aYm/h10FD5UjEPahQKCc0Mb5i4P4DYlnzrdxMjo9w==@vger.kernel.org, AJvYcCVxh/+ME5myUKh4ZOJ13nKgFrkpS8aKCazaQRb6pvM0BvtUh6ekf511KCEGE/MAaKTcWRcvgcorkqvqjvo=@vger.kernel.org X-Gm-Message-State: AOJu0YzQ6KgsJ5KLEqf8vmZqFQgPdXELaHfYbXzDWgo8mAuRX4Fq2NXZ GnaAeW4rKa6eikE26uPYNpv3HQe5RO5yrfZ0pOWiBTQp2PMd+9vkxjLb3+NH/A== X-Gm-Gg: ASbGnctRnm370KlsvQavJv+LHh+vwmavSdw2Y5Vv5aNBDDlfxJ4eFOhrmCEJyUmNhlZ maCXSHfaq1XFHEk4DTML4YJkNoG2Jf4k9mfjPWzqDWegUThO8CUNItZ7/yPIGCtOZuaMs0USiZe oAL3aioFdThCVFKdSyJHA+WFpVRd55GEKFFW/izLhXaPdCFL4octTIDO+b89VtCr5rmlJQagzOT +NKDHqgJu4jnRvrTSBOP1S8C/JPYxvim5JvxD+EAFdqIn9pQcdkTWqV1mmFpCuCqlvv6n1tEVdd J0NKZ6VDb1TkD2HVBh01gvpSV2h0cgHIatxt+fhS4BP3q4IplUKoRSnsInCT1ENkinfQ0fu74h7 XIAWoW3b+CHv6pGi6CUoYoHHxjgOknnjNBV0OIU7W6THnhw== X-Google-Smtp-Source: AGHT+IH+ASno63WsTsv5M/NPgEp4Z+u/WSjWdTG1K2MeKorz3pEx4VP982TDi1MJ0LuhZOgqYfHRcg== X-Received: by 2002:a05:6a21:32a5:b0:23f:f493:7667 with SMTP id adf61e73a8af0-2405501523fmr16683253637.3.1754878994487; Sun, 10 Aug 2025 19:23:14 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:13 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 03/11] platform/x86: x86-android-tablets: convert HiDeep devices to GPIO references Date: Sun, 10 Aug 2025 19:22:49 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-3-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that gpiolib supports software nodes to describe GPIOs, switch the driver away from using GPIO lookup tables for HiDeep touchscreens to using PROPERTY_ENTRY_GPIO() to keep all touchscreen properties together. Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/lenovo.c | 26 +++----------------= ---- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/lenovo.c b/drivers/pl= atform/x86/x86-android-tablets/lenovo.c index f8d261d37284..49388266201b 100644 --- a/drivers/platform/x86/x86-android-tablets/lenovo.c +++ b/drivers/platform/x86/x86-android-tablets/lenovo.c @@ -97,6 +97,7 @@ static const struct property_entry lenovo_yb1_x90_hideep_= ts_props[] =3D { PROPERTY_ENTRY_U32("touchscreen-size-y", 1920), PROPERTY_ENTRY_U32("touchscreen-max-pressure", 16384), PROPERTY_ENTRY_BOOL("hideep,force-native-protocol"), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[0], 7, GPIO= _ACTIVE_LOW), { } }; =20 @@ -211,19 +212,6 @@ static const struct x86_gpio_button lenovo_yb1_x90_lid= __initconst =3D { .pin =3D 19, }; =20 -static struct gpiod_lookup_table lenovo_yb1_x90_hideep_gpios =3D { - .dev_id =3D "i2c-hideep_ts", - .table =3D { - GPIO_LOOKUP("INT33FF:00", 7, "reset", GPIO_ACTIVE_LOW), - { } - }, -}; - -static struct gpiod_lookup_table * const lenovo_yb1_x90_gpios[] =3D { - &lenovo_yb1_x90_hideep_gpios, - NULL -}; - static int __init lenovo_yb1_x90_init(struct device *dev) { /* Enable the regulators used by the touchscreens */ @@ -252,7 +240,6 @@ const struct x86_dev_info lenovo_yogabook_x90_info __in= itconst =3D { .serdev_count =3D ARRAY_SIZE(lenovo_yb1_x90_serdevs), .gpio_button =3D &lenovo_yb1_x90_lid, .gpio_button_count =3D 1, - .gpiod_lookup_tables =3D lenovo_yb1_x90_gpios, .gpiochip_type =3D X86_GPIOCHIP_CHERRYVIEW, .init =3D lenovo_yb1_x90_init, }; @@ -819,6 +806,7 @@ static const struct property_entry lenovo_yt3_hideep_ts= _props[] =3D { PROPERTY_ENTRY_U32("touchscreen-size-x", 1600), PROPERTY_ENTRY_U32("touchscreen-size-y", 2560), PROPERTY_ENTRY_U32("touchscreen-max-pressure", 255), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[0], 7, GPIO= _ACTIVE_LOW), { } }; =20 @@ -1008,14 +996,6 @@ static int __init lenovo_yt3_init(struct device *dev) return 0; } =20 -static struct gpiod_lookup_table lenovo_yt3_hideep_gpios =3D { - .dev_id =3D "i2c-hideep_ts", - .table =3D { - GPIO_LOOKUP("INT33FF:00", 7, "reset", GPIO_ACTIVE_LOW), - { } - }, -}; - static struct gpiod_lookup_table lenovo_yt3_wm5102_gpios =3D { .dev_id =3D "spi1.0", .table =3D { @@ -1028,7 +1008,6 @@ static struct gpiod_lookup_table lenovo_yt3_wm5102_gp= ios =3D { }; =20 static struct gpiod_lookup_table * const lenovo_yt3_gpios[] =3D { - &lenovo_yt3_hideep_gpios, &lenovo_yt3_wm5102_gpios, NULL }; @@ -1039,5 +1018,6 @@ const struct x86_dev_info lenovo_yt3_info __initconst= =3D { .spi_dev_info =3D lenovo_yt3_spi_devs, .spi_dev_count =3D ARRAY_SIZE(lenovo_yt3_spi_devs), .gpiod_lookup_tables =3D lenovo_yt3_gpios, + .gpiochip_type =3D X86_GPIOCHIP_CHERRYVIEW, .init =3D lenovo_yt3_init, }; --=20 2.51.0.rc0.155.g4a0f42376b-goog From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3B823258CDA; Mon, 11 Aug 2025 02:23:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878997; cv=none; b=QFs6vV3PUfSVThtOgotcBDDQZyjS8nVVsOQlBp4TyC85rD8ZWw24IgJDsdRAfgL4cRM39rghmKg2Sv+E4Yk2zu1qhM9CVCLCaLgEzzpW/jLi+8rlkjflHOOOyVKoNPX/VKewHYkFAGbxgUQ1lkIKt7esLHYDuWu7HvaeFTtGDwQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878997; c=relaxed/simple; bh=/NLkUjorWXIPo5Y7M2TKac2fwNSpCjt0Dv1J5eV8V/E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=QIXhZJC/F0TxyAyfWlVEL4BCpYMGoaag7wry1tooT/kEwWYHxiv/ONM3a5c5/KDzsuULEJvHWYIQilvWCk4mbYWaDkE3EtaVrsppDliqtd/MGSHUmTuIgd/uuvUPYmjK6ruBGdiqU/WbLQ+XiycxybH6oB2ufH3iRIo5qa8ECUw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DOnm6FGd; arc=none smtp.client-ip=209.85.216.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DOnm6FGd" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-31ef50d8d57so2662574a91.0; Sun, 10 Aug 2025 19:23:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754878995; x=1755483795; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5eTsl7kSlQklvBZ9iIicLjf55io1M9uN3LrqY6jh8G8=; b=DOnm6FGdhkRAj/dYQKhOmck8Tzr9+f+gaEextayg3RGNQ0zg6EpK1XfkoQaVwYkJh0 334E98QtyD+9A1/YH8uJwgqHyBrezx1DUdx6oxnleWNsJvH0k053ufIhSwJzwBOYviR2 Zx6DSSL40T1haydJ34Y5Hjjt8e4uxZOo0u4rTzeGI5sg8wZhcOvazE5QD+MY2GcCf1Fm ZzKFL2G7nPcVOySKM+gHLEqpIt5u9IzeyiHL+UJU1Ur6aeoSBHvAmBcL9WXs+CYkWa1Z aNLsX9mcxvUAQWuyAWo6+4QKIsYTuht+tdcZQ7Iz5lKjkowVeWtuSvJz2P2tVIckVX/D 4p8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754878995; x=1755483795; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5eTsl7kSlQklvBZ9iIicLjf55io1M9uN3LrqY6jh8G8=; b=bpP1tD38sFcxRntsYEi9z5RaGqWPmLkdU20vq7Zd0Un8612xBQt1X/EAHowbgeJ1N0 F0NIJ8VBrkONjEy1p1+dhOEPr+Ap5HvHoJw/qRIBV3PUf0nxDrCSVF8ksyFpvhqpg/en RbzZUceuTZ0eN79HAEiAZq8XaMzztGkv4slPVpHNHKLkJY6d0ZyWgVGFK4OZp3FVrkeB LLMzPyMQnrboYgC8DHR0OxGZ0Gc5lPU3ngSid7Zr4M03On6RTc7EBNfZ1SzxGvA9U0dD njvNWpT/jO7fvW8+sJEhmENuVMhvjjTCb6nZNC33aU4zFvtvF3oYm3+13e+EnsHcv2rE CbGw== X-Forwarded-Encrypted: i=1; AJvYcCV6liRxshjxyKU1fhjdkc+kiY1Yn9c+Fkhjy7g2hd0olQQyJFamVolm0wOn0rAEvdIWFvB1QXTaZUvr008=@vger.kernel.org, AJvYcCVsZW/pjVl3B/8OfHqQjbZzMpcWKVu9+/MC/fNqKAhmLCRNU9b5moSqzA8HG8RjCvy9LXHmH9R505lgsH7yj1bg7dLfWQ==@vger.kernel.org X-Gm-Message-State: AOJu0Yy9/YEyCXDpKNpsZQfwCm7EZjxGXZpvM5YXbIcAUn+6yOsDdXkG LQJrgO1ZBoeKeQ7qaOh4NfOfHH3eYTt4wIo3w+rsXXcn9ZfxA580LQaf X-Gm-Gg: ASbGncsWA+RE7ilE73mW+WdV5qd/z07F+/yjHYSB/DPQQFfqFrBVTqTOD0qonMLW2QM /duNCgUBgI9t7zAGT+kbXEhoUjcXDMXUFAxKX8BHJyJOS2sPV/AbtrpOxecHIv/WbkfzSGnzACn foSaU9FeTqF3nSCRyx99VYFKmWP92OuQRUNSIxdzud6nzL2J+mDZq1nOoYWMsRTw0oVSzrySDyy ueZ8EZXVWxGVyVCxpw3I2Fsxt0Tfg+GoFN0h6IWXAGOkOKY1Tup0tTk/NYIc4L+UnRF09lTVlTo WGWs8w06j1EgK+yUc4rwMOyz969Z8yS1XnObvDDQjjEjwj3huJr1tanzQZaukib+4uIIsZs7aFR RbccVfcUuaUXOSbr0RfK4DHY13WOjA24rezDs6A4tnW62pQ== X-Google-Smtp-Source: AGHT+IGS1gxcW3r4YQ3boNKcJqb5GQDxxUGuecVeAyv7wpjlnsMQM5r9dnuz7tuMEodk98p4eku7uw== X-Received: by 2002:a17:90b:390f:b0:31f:3cfd:d33d with SMTP id 98e67ed59e1d1-32183a19a97mr17874689a91.15.1754878995475; Sun, 10 Aug 2025 19:23:15 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:14 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 04/11] platform/x86: x86-android-tablets: convert Novatek devices to GPIO references Date: Sun, 10 Aug 2025 19:22:50 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-4-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that gpiolib supports software nodes to describe GPIOs, switch the driver away from using GPIO lookup tables for Novatek touchscreens to using PROPERTY_ENTRY_GPIO() to keep all touchscreen properties together. Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/other.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/pla= tform/x86/x86-android-tablets/other.c index e3907812c8bc..95c5001004a1 100644 --- a/drivers/platform/x86/x86-android-tablets/other.c +++ b/drivers/platform/x86/x86-android-tablets/other.c @@ -38,6 +38,15 @@ static const struct software_node acer_b1_750_bma250e_no= de =3D { .properties =3D acer_b1_750_bma250e_props, }; =20 +static const struct property_entry acer_b1_750_novatek_props[] =3D { + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[1], 26, GPIO_= ACTIVE_LOW), + { } +}; + +static const struct software_node acer_b1_750_novatek_node =3D { + .properties =3D acer_b1_750_novatek_props, +}; + static const struct x86_i2c_client_info acer_b1_750_i2c_clients[] __initco= nst =3D { { /* Novatek NVT-ts touchscreen */ @@ -45,6 +54,7 @@ static const struct x86_i2c_client_info acer_b1_750_i2c_c= lients[] __initconst =3D .type =3D "nt11205-ts", .addr =3D 0x34, .dev_name =3D "NVT-ts", + .swnode =3D &acer_b1_750_novatek_node, }, .adapter_path =3D "\\_SB_.I2C4", .irq_data =3D { @@ -74,16 +84,7 @@ static const struct x86_i2c_client_info acer_b1_750_i2c_= clients[] __initconst =3D }, }; =20 -static struct gpiod_lookup_table acer_b1_750_nvt_ts_gpios =3D { - .dev_id =3D "i2c-NVT-ts", - .table =3D { - GPIO_LOOKUP("INT33FC:01", 26, "reset", GPIO_ACTIVE_LOW), - { } - }, -}; - static struct gpiod_lookup_table * const acer_b1_750_gpios[] =3D { - &acer_b1_750_nvt_ts_gpios, &int3496_reference_gpios, NULL }; @@ -94,6 +95,7 @@ const struct x86_dev_info acer_b1_750_info __initconst = =3D { .pdev_info =3D int3496_pdevs, .pdev_count =3D 1, .gpiod_lookup_tables =3D acer_b1_750_gpios, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; =20 /* --=20 2.51.0.rc0.155.g4a0f42376b-goog From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7FB01265CCB; Mon, 11 Aug 2025 02:23:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878999; cv=none; b=Srcr8DLqO3KU75gdfdbkxXhFJIEVYgBXFs2wh+Zymr9dYdrZWT7/ZPrpz4HkBB5ImsMbn61YLJRd+usc1ph9ceFHRsCiGtCpC/EnELVi8bAhjdQK4F8O4811kllG8X9b9AXS4mo6by/OzqOhSAEc/UL8ofuZh4WBOhQIFbH1ZIY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878999; c=relaxed/simple; bh=aCKb1761fkbHxuL/ttlkN7JjmDdUzWg57B4oJyi7jvE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=qrWi/T0gz3ds+myg0F0RehXMGm/CGYxWR5JWrNx/wQ5fliYQBcouVtIlP2ZKMWdTl7tgqvl7BRqgZHWYGO8oc61WnsG9SNoCC57JoZXVfzIoPuO6oi0L2AmeWTFVmcskqPkrDg020R3DnSBGVeR2ocFcuepZaHizZZQGpBeXpHY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MU8JbNgR; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MU8JbNgR" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-76bed310fa1so3143654b3a.2; Sun, 10 Aug 2025 19:23:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754878996; x=1755483796; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Zkp0z3grdOEJ7uLBKwsJh5wjt9qXCKu4X94POi899Y4=; b=MU8JbNgR/sPPy907CBytR3NA/cvAaTbNqVJHbn88L3eFk395HXHZZnSYx+Ko7ePvhS tip87GLITDvMACFDK2m9J56Mb9krzGVjzPNQL4HGTlpFkTq3+2NJiyhJjiR6PetlNqgz ZW99nolD4K2vTrP80lSdY7mFzgPiwdqNURXDSgCuPiaj14DH2hWhg0AaqDOli9977utv pv51Mo08P58F8Ev4uaIufcVNxnPEUudfoy5afbySKeK5WIbTHbAhic+tZYflkH/tPjxM oRhTAxln73rz1eD5hgRjF7bxyoyZ4vp6tikJ6pBut4yS1fZBibUsdFNGk/xysYGsHtlG mW0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754878996; x=1755483796; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zkp0z3grdOEJ7uLBKwsJh5wjt9qXCKu4X94POi899Y4=; b=pA1Ewl8iPwBogjICEqfCpj1SDbV4xeb+xzwuuZNuFryYVI7HRczthc9J/LstRfy3YH 45wAj+h/+pwcN6iSfhYeQfja/SX8uMdBrMYh2kDim4F2L7/l5Epc6IyxxKvOCKCIBXAi uij15JExLcvrbzs+psVPYbMAyIcPcoSwv+91pKvn9omGiCy1BA5f/RT7hJWZ1hLTB17K 9A4pITyyA7YsKoMhmFbyIzA8JQc8LXqfMQNMF8i9WQufreUO+zPFSRkk4G06s7p3BFll WKm6IQY/G02ZRykN2RZ/9ehwIKv2hTEFg72zaSiqUQOY+wrfc5Ik8R6h/2UDOgDM/g0b GM/g== X-Forwarded-Encrypted: i=1; AJvYcCVHaGImti/ZesYkIlQYoF6bi5V2t0Mo9282nupVhbdHeaty3fEJ11UP6wgHBa4nViNlVLiNVYXOvXsPQKGMjHd22zMA4A==@vger.kernel.org, AJvYcCWzpyIuoCCOqoQRL2TLva1fwbaEl7gD3CiKOU8esB12jvl0Fe9FvdfYK2I3AEbTc6QiOS1VSgUZspecobQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxOYhes/sOBVgLZRTZ7dzXi+zVAJmnUrLHBKhUGjdyU+okjPtDn eSwOxT6Pfv3sJX1j8wrWJLjCaja3TSJVhHdL1MgTE1HAHpxx+sTHWrua X-Gm-Gg: ASbGncu9aFuko2hI0cL8SSI+qzBqIV3H0Zuu04AfWfXMfnVyXYfwVavSu1y6AxN53Yl bQl+Ou8MPIHQYVptu79Iz5NQbv5fwqrsfyphF+D6jjyEf9gAdvLaYNDVatweU3yruLz1LXMRDy5 hzH5HWhfU0AXB620suXv9hLOxBjLTWqedVl3hi7ieMeDSZq96FBXw+ZTTCPr8g0Q4FTXbrTg8JK Z9Zc86wUshxjryCkSjA6PzDX3yL741qQPY4dIWzzWnf0T9npxP+AThyjU56nx7pSzgL8s2ax+ZK fGxyjVtDs8xZbFMqvxlzbVGVDk+HltZ86YCPwkjvC5OdjCu+nVdfPmS/e6Q4aC3mjOudRqGBRLM ZSBAcYDqzIRWJVfFaf4H72K5Ey3gyAtZDaw7Pi1tOwk0qww== X-Google-Smtp-Source: AGHT+IECzLfXyJi2obECIdhAtSQjhPm/iQ7n8S5oApaQ4mH3DDGncS8XMj94ujJFAG2MoqHFuzgCIQ== X-Received: by 2002:a05:6a20:1611:b0:237:d013:8a78 with SMTP id adf61e73a8af0-240551d83f2mr14627578637.37.1754878996424; Sun, 10 Aug 2025 19:23:16 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:15 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 05/11] platform/x86: x86-android-tablets: convert EDT devices to GPIO references Date: Sun, 10 Aug 2025 19:22:51 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-5-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that gpiolib supports software nodes to describe GPIOs, switch the driver away from using GPIO lookup tables for EDT touchscreens to using PROPERTY_ENTRY_GPIO() to keep all touchscreen properties together. Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/other.c | 28 +++++++++++---------= ---- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/pla= tform/x86/x86-android-tablets/other.c index 95c5001004a1..0f3cc0ea877e 100644 --- a/drivers/platform/x86/x86-android-tablets/other.c +++ b/drivers/platform/x86/x86-android-tablets/other.c @@ -436,6 +436,17 @@ static const struct software_node nextbook_ares8a_acce= l_node =3D { .properties =3D nextbook_ares8a_accel_props, }; =20 +static const struct property_entry nextbook_ares8a_ft5416_props[] =3D { + PROPERTY_ENTRY_U32("touchscreen-size-x", 800), + PROPERTY_ENTRY_U32("touchscreen-size-y", 1280), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[1], 25, GPI= O_ACTIVE_LOW), + { } +}; + +static const struct software_node nextbook_ares8a_ft5416_node =3D { + .properties =3D nextbook_ares8a_ft5416_props, +}; + static const struct x86_i2c_client_info nextbook_ares8a_i2c_clients[] __in= itconst =3D { { /* Freescale MMA8653FC accelerometer */ @@ -452,7 +463,7 @@ static const struct x86_i2c_client_info nextbook_ares8a= _i2c_clients[] __initcons .type =3D "edt-ft5x06", .addr =3D 0x38, .dev_name =3D "ft5416", - .swnode =3D &nextbook_ares8_touchscreen_node, + .swnode =3D &nextbook_ares8a_ft5416_node, }, .adapter_path =3D "\\_SB_.PCI0.I2C6", .irq_data =3D { @@ -466,23 +477,10 @@ static const struct x86_i2c_client_info nextbook_ares= 8a_i2c_clients[] __initcons }, }; =20 -static struct gpiod_lookup_table nextbook_ares8a_ft5416_gpios =3D { - .dev_id =3D "i2c-ft5416", - .table =3D { - GPIO_LOOKUP("INT33FF:01", 25, "reset", GPIO_ACTIVE_LOW), - { } - }, -}; - -static struct gpiod_lookup_table * const nextbook_ares8a_gpios[] =3D { - &nextbook_ares8a_ft5416_gpios, - NULL -}; - const struct x86_dev_info nextbook_ares8a_info __initconst =3D { .i2c_client_info =3D nextbook_ares8a_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(nextbook_ares8a_i2c_clients), - .gpiod_lookup_tables =3D nextbook_ares8a_gpios, + .gpiochip_type =3D X86_GPIOCHIP_CHERRYVIEW, }; =20 /* --=20 2.51.0.rc0.155.g4a0f42376b-goog From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3468926CE07; Mon, 11 Aug 2025 02:23:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878999; cv=none; b=h/Q6HJFRXJ5bfJ9R1ICfdF9e60TykRNREf9Km3mGJZ1bjnZNzS+C3NojsbQ/koJ8xNszQI39oZk2WOeBVJWzlCXxVz5A3hu/ScllkMI0OGrq+Mqjvu3ZJWo3IWyIhMOnqNmKgB0G0dr7gLr2DGvpDVLhodZ41xsVb2YLBlldSzo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754878999; c=relaxed/simple; bh=eKJcqUHacZN6EZXO9Un/1kkZp7FCDzlf6KDscV6eGNI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=B+k2WNi2bQMcQVitAHMgV/VVkdJ1wmFdW3ZvEfbhbqz9B2fS8trMjBbYZlPoyjh1J3DPLpJPOp1nULvCwL4SGu/XIWh4G5TaGobez2LxvuN/B4WnINQhuWzCff5PRYrO2pjnpMPAbxDoB8zgEGPaVwqgQMnALuuWwkDY8uet3aw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=c22hs3Ff; arc=none smtp.client-ip=209.85.210.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="c22hs3Ff" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-76bee58e01cso4531965b3a.1; Sun, 10 Aug 2025 19:23:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754878997; x=1755483797; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EQ+WEeN3LJOVsH6XHrmcNbepzuoFYhqp2xH+LEFjBug=; b=c22hs3FfiXaswk6GZqT0OmRaE3btjt2bYpfhf0oUZ6JKM5ZqabETGAemEoYtqotGSo bHukhk8eq8Ji3J6o+YIA0V+LbYjB/fK4JW22hNLDeTZrgb6XPBnF9opsmZ46pErmMsS2 HDxt9xdozuTtyVIeo2BbayhgCZWl5nX1FO3GxnrqSxSYsxbwAOgs5mKH1me3FjOJoc+a BBfg6RO7YLEipxq58CNRdRad5P/NT0G5c9WPXS1ACJdJGf+sktlMId/ac4oQEDgo3awQ WpdTpGumwAg1eWa3IRcL4LBprylgKT0CTOrNurG5P/Xmphef4T0EjI4dARNEsg9wOYJ1 rKMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754878997; x=1755483797; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EQ+WEeN3LJOVsH6XHrmcNbepzuoFYhqp2xH+LEFjBug=; b=XvjSFqnCrsuCTU2VAcjOjBMu4VI4s0xwTOp8Zft+kyHTMc4F3Z5BZ/9KTTKUmttjU9 TtabiXEhi1st7jWZzCeVv0uRn05joBHXRTx41b/vHvjVn/wq/WeVABqeMHJ5U4KpgHlc auD7x9BExxjqONBB/oocICNr6h3Yfc2uPSPS/vOK4DaAlZw9621hwrlUuIad4clojrix B0+g8B9Rc2hW75QN6PbpBL+OawDji/x1xFwDiOCZ+gVH6PBP9Qx17EiTOSiU/peAn/1Z ibTYrSJpYGaL2Z/ms3EOyps/fnwrIBmO6yWjV9JqbGwa7Tg/k4Df2Wh80Cj6LsoccNYC Lu8w== X-Forwarded-Encrypted: i=1; AJvYcCWNqbp6AStEBJW6iVxhdwSiRWbe9yDj203wv1+GM1FGSUEPyxWtCfULVKQuD3lqLXI7u+7KqhBUAcGXDPM=@vger.kernel.org, AJvYcCX700YubTF8ZHmLJKGd7lcHusV21Ru4z9EiZINPdIjiKzvLDP+nUr6rkoOLKWkK1a5AVo0OaFhu59IFew79UlgW1NZptQ==@vger.kernel.org X-Gm-Message-State: AOJu0YxKYpdHhW4c7v67NxD1LP9uU8jvjcnDxoT0L10RBJvZxxRrh6o8 Uisi131dyFg+NNZktCV5HJ65i+EV0z3cyhKB2hbIfFJKBAoTTRw0OHEm X-Gm-Gg: ASbGnctIDqYAsk7kf1ep86zap8p9lCMsYklzx1x5pcxnAzPGZaeSWhcxNHvf9NyQXLr 4fo+bH3rWli9Ts9oqtbtIU9DMt1gpnn32X2WO0UGNLrzNromao3pYsR2KM0OtWUYAutya0oHr/i FF2OetKUCmEDm2mWvb3aqDmtRFSZKrzdC47/liz4pYYlL07ilmqboPwSiTi21pRlNZRI5gqVutB 085SYhJjFuQpJROVxJG9XI5qFxZlWbayr1hbm4qaOFodUuPw0SpNtn+izno+oBA7c9Q+QdDPxCi W7vHtMMwY4zbMlRxcULGwCnn5FsKoWIKXKg53SPLJVcdBvrDccvrReA7iN7vs3Z35eloa8rm4t8 mGwNr1Czr+ZNo6j4fFgVOzVAlU8oAmVYojGEIN2vwLXZwdQ== X-Google-Smtp-Source: AGHT+IHxa8p/bPkOp/1LKDZsSqQIQSd7bI2HUmE7Mql321wOszkhsFAG2TC8bFuiB4nvTY3n6mLd4Q== X-Received: by 2002:a05:6a20:1586:b0:240:a53:79fc with SMTP id adf61e73a8af0-2405519cf90mr16276313637.29.1754878997387; Sun, 10 Aug 2025 19:23:17 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:16 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 06/11] platform/x86: x86-android-tablets: convert int3496 devices to GPIO references Date: Sun, 10 Aug 2025 19:22:52 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-6-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that gpiolib supports software nodes to describe GPIOs, switch the driver away from using GPIO lookup tables for int3496 devices to using PROPERTY_ENTRY_GPIO(). Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/asus.c | 37 ++++++++++--------= ---- drivers/platform/x86/x86-android-tablets/lenovo.c | 24 ++++++++------ drivers/platform/x86/x86-android-tablets/other.c | 34 ++++++++++++------= -- .../x86/x86-android-tablets/shared-psy-info.c | 20 ------------ .../x86/x86-android-tablets/shared-psy-info.h | 5 --- 5 files changed, 51 insertions(+), 69 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/asus.c b/drivers/plat= form/x86/x86-android-tablets/asus.c index 6c4468f4004b..ce581d161551 100644 --- a/drivers/platform/x86/x86-android-tablets/asus.c +++ b/drivers/platform/x86/x86-android-tablets/asus.c @@ -17,11 +17,17 @@ #include "x86-android-tablets.h" =20 /* Asus ME176C and TF103C tablets shared data */ -static struct gpiod_lookup_table int3496_gpo2_pin22_gpios =3D { - .dev_id =3D "intel-int3496", - .table =3D { - GPIO_LOOKUP("INT33FC:02", 22, "id", GPIO_ACTIVE_HIGH), - { } +static const struct property_entry asus_me176c_tf103c_int3496_props[] __in= itconst =3D { + PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpiochip_nodes[2], 22, GPIO_ACT= IVE_HIGH), + { } +}; + +static const struct platform_device_info asus_me176c_tf103c_pdevs[] __init= const =3D { + { + /* For micro USB ID pin handling */ + .name =3D "intel-int3496", + .id =3D PLATFORM_DEVID_NONE, + .properties =3D asus_me176c_tf103c_int3496_props, }, }; =20 @@ -164,21 +170,15 @@ static const struct x86_serdev_info asus_me176c_serde= vs[] __initconst =3D { }, }; =20 -static struct gpiod_lookup_table * const asus_me176c_gpios[] =3D { - &int3496_gpo2_pin22_gpios, - NULL -}; - const struct x86_dev_info asus_me176c_info __initconst =3D { .i2c_client_info =3D asus_me176c_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(asus_me176c_i2c_clients), - .pdev_info =3D int3496_pdevs, - .pdev_count =3D 1, + .pdev_info =3D asus_me176c_tf103c_pdevs, + .pdev_count =3D ARRAY_SIZE(asus_me176c_tf103c_pdevs), .serdev_info =3D asus_me176c_serdevs, .serdev_count =3D ARRAY_SIZE(asus_me176c_serdevs), .gpio_button =3D &asus_me176c_tf103c_lid, .gpio_button_count =3D 1, - .gpiod_lookup_tables =3D asus_me176c_gpios, .bat_swnode =3D &generic_lipo_hv_4v35_battery_node, .modules =3D bq24190_modules, .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, @@ -296,19 +296,14 @@ static const struct x86_i2c_client_info asus_tf103c_i= 2c_clients[] __initconst =3D }, }; =20 -static struct gpiod_lookup_table * const asus_tf103c_gpios[] =3D { - &int3496_gpo2_pin22_gpios, - NULL -}; - const struct x86_dev_info asus_tf103c_info __initconst =3D { .i2c_client_info =3D asus_tf103c_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(asus_tf103c_i2c_clients), - .pdev_info =3D int3496_pdevs, - .pdev_count =3D 1, + .pdev_info =3D asus_me176c_tf103c_pdevs, + .pdev_count =3D ARRAY_SIZE(asus_me176c_tf103c_pdevs), .gpio_button =3D &asus_me176c_tf103c_lid, .gpio_button_count =3D 1, - .gpiod_lookup_tables =3D asus_tf103c_gpios, .bat_swnode =3D &generic_lipo_4v2_battery_node, .modules =3D bq24190_modules, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; diff --git a/drivers/platform/x86/x86-android-tablets/lenovo.c b/drivers/pl= atform/x86/x86-android-tablets/lenovo.c index 49388266201b..db6337671357 100644 --- a/drivers/platform/x86/x86-android-tablets/lenovo.c +++ b/drivers/platform/x86/x86-android-tablets/lenovo.c @@ -366,12 +366,18 @@ static struct x86_i2c_client_info lenovo_yoga_tab2_83= 0_1050_i2c_clients[] __init }, }; =20 -static struct gpiod_lookup_table lenovo_yoga_tab2_830_1050_int3496_gpios = =3D { - .dev_id =3D "intel-int3496", - .table =3D { - GPIO_LOOKUP("INT33FC:02", 1, "mux", GPIO_ACTIVE_LOW), - GPIO_LOOKUP("INT33FC:02", 24, "id", GPIO_ACTIVE_HIGH), - { } +static const struct property_entry lenovo_yoga_tab2_830_1050_int3496_props= [] __initconst =3D { + PROPERTY_ENTRY_GPIO("mux-gpios", &baytrail_gpiochip_nodes[2], 1, GPIO_ACT= IVE_LOW), + PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpiochip_nodes[2], 24, GPIO_ACT= IVE_HIGH), + { } +}; + +static const struct platform_device_info lenovo_yoga_tab2_830_1050_pdevs[]= __initconst =3D { + { + /* For micro USB ID pin handling */ + .name =3D "intel-int3496", + .id =3D PLATFORM_DEVID_NONE, + .properties =3D lenovo_yoga_tab2_830_1050_int3496_props, }, }; =20 @@ -389,7 +395,6 @@ static struct gpiod_lookup_table lenovo_yoga_tab2_830_1= 050_codec_gpios =3D { }; =20 static struct gpiod_lookup_table * const lenovo_yoga_tab2_830_1050_gpios[]= =3D { - &lenovo_yoga_tab2_830_1050_int3496_gpios, &lenovo_yoga_tab2_830_1050_codec_gpios, NULL }; @@ -400,13 +405,14 @@ static void lenovo_yoga_tab2_830_1050_exit(void); const struct x86_dev_info lenovo_yoga_tab2_830_1050_info __initconst =3D { .i2c_client_info =3D lenovo_yoga_tab2_830_1050_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(lenovo_yoga_tab2_830_1050_i2c_clients), - .pdev_info =3D int3496_pdevs, - .pdev_count =3D 1, + .pdev_info =3D lenovo_yoga_tab2_830_1050_pdevs, + .pdev_count =3D ARRAY_SIZE(lenovo_yoga_tab2_830_1050_pdevs), .gpio_button =3D &lenovo_yoga_tab2_830_1050_lid, .gpio_button_count =3D 1, .gpiod_lookup_tables =3D lenovo_yoga_tab2_830_1050_gpios, .bat_swnode =3D &generic_lipo_hv_4v35_battery_node, .modules =3D bq24190_modules, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, .init =3D lenovo_yoga_tab2_830_1050_init, .exit =3D lenovo_yoga_tab2_830_1050_exit, }; diff --git a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/pla= tform/x86/x86-android-tablets/other.c index 0f3cc0ea877e..6f2d389a0258 100644 --- a/drivers/platform/x86/x86-android-tablets/other.c +++ b/drivers/platform/x86/x86-android-tablets/other.c @@ -22,6 +22,23 @@ #include "shared-psy-info.h" #include "x86-android-tablets.h" =20 +static const struct property_entry int3496_reference_props[] __initconst = =3D { + PROPERTY_ENTRY_GPIO("vbus-gpios", &baytrail_gpiochip_nodes[1], 15, GPIO_A= CTIVE_HIGH), + PROPERTY_ENTRY_GPIO("mux-gpios", &baytrail_gpiochip_nodes[2], 1, GPIO_ACT= IVE_HIGH), + PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpiochip_nodes[2], 18, GPIO_ACT= IVE_HIGH), + { } +}; + +/* Generic pdevs array and gpio-lookups for micro USB ID pin handling */ +static const struct platform_device_info int3496_pdevs[] __initconst =3D { + { + /* For micro USB ID pin handling */ + .name =3D "intel-int3496", + .id =3D PLATFORM_DEVID_NONE, + .properties =3D int3496_reference_props, + }, +}; + /* Acer Iconia One 7 B1-750 has an Android factory image with everything h= ardcoded */ static const char * const acer_b1_750_mount_matrix[] =3D { "-1", "0", "0", @@ -84,17 +101,11 @@ static const struct x86_i2c_client_info acer_b1_750_i2= c_clients[] __initconst =3D }, }; =20 -static struct gpiod_lookup_table * const acer_b1_750_gpios[] =3D { - &int3496_reference_gpios, - NULL -}; - const struct x86_dev_info acer_b1_750_info __initconst =3D { .i2c_client_info =3D acer_b1_750_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(acer_b1_750_i2c_clients), .pdev_info =3D int3496_pdevs, - .pdev_count =3D 1, - .gpiod_lookup_tables =3D acer_b1_750_gpios, + .pdev_count =3D ARRAY_SIZE(int3496_pdevs), .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; =20 @@ -407,17 +418,12 @@ static const struct x86_i2c_client_info nextbook_ares= 8_i2c_clients[] __initconst }, }; =20 -static struct gpiod_lookup_table * const nextbook_ares8_gpios[] =3D { - &int3496_reference_gpios, - NULL -}; - const struct x86_dev_info nextbook_ares8_info __initconst =3D { .i2c_client_info =3D nextbook_ares8_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(nextbook_ares8_i2c_clients), .pdev_info =3D int3496_pdevs, - .pdev_count =3D 1, - .gpiod_lookup_tables =3D nextbook_ares8_gpios, + .pdev_count =3D ARRAY_SIZE(int3496_pdevs), + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; =20 /* Nextbook Ares 8A (CHT) tablets have an Android factory image with every= thing hardcoded */ diff --git a/drivers/platform/x86/x86-android-tablets/shared-psy-info.c b/d= rivers/platform/x86/x86-android-tablets/shared-psy-info.c index fe34cedb6257..8aa5db7351c3 100644 --- a/drivers/platform/x86/x86-android-tablets/shared-psy-info.c +++ b/drivers/platform/x86/x86-android-tablets/shared-psy-info.c @@ -8,7 +8,6 @@ * Copyright (C) 2021-2023 Hans de Goede */ =20 -#include #include #include #include @@ -155,22 +154,3 @@ const char * const bq24190_modules[] __initconst =3D { "bq24190_charger", /* For the Vbus regulator for intel-int3496= */ NULL }; - -/* Generic platform device array and GPIO lookup table for micro USB ID pi= n handling */ -const struct platform_device_info int3496_pdevs[] __initconst =3D { - { - /* For micro USB ID pin handling */ - .name =3D "intel-int3496", - .id =3D PLATFORM_DEVID_NONE, - }, -}; - -struct gpiod_lookup_table int3496_reference_gpios =3D { - .dev_id =3D "intel-int3496", - .table =3D { - GPIO_LOOKUP("INT33FC:01", 15, "vbus", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("INT33FC:02", 1, "mux", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("INT33FC:02", 18, "id", GPIO_ACTIVE_HIGH), - { } - }, -}; 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 bcf9845ad275..fabfdfe4ffce 100644 --- a/drivers/platform/x86/x86-android-tablets/shared-psy-info.h +++ b/drivers/platform/x86/x86-android-tablets/shared-psy-info.h @@ -11,7 +11,6 @@ #define __PDX86_SHARED_PSY_INFO_H =20 struct bq24190_platform_data; -struct gpiod_lookup_table; struct platform_device_info; struct software_node; =20 @@ -26,8 +25,4 @@ extern const struct software_node generic_lipo_hv_4v35_ba= ttery_node; =20 extern struct bq24190_platform_data bq24190_pdata; extern const char * const bq24190_modules[]; - -extern const struct platform_device_info int3496_pdevs[]; -extern struct gpiod_lookup_table int3496_reference_gpios; - #endif --=20 2.51.0.rc0.155.g4a0f42376b-goog From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DDEA8273D6B; Mon, 11 Aug 2025 02:23:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754879000; cv=none; b=TCF6vbAn7joQoH/ByAyIR0cgnwLAiVhOt9ub8e0ETs+n3xTlVN8DXQs4A60qWL23B/htTXZkzLTzPcSi5qjZA+ztGQo7YS3MakyNsPylVVF+/ZD4eewezWq2cd8Hhe2ApIjvVqWrK2nBksDL1z22y8Ns79FU5JVVrrw0oSJ9ylg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754879000; c=relaxed/simple; bh=Fva0VR0ejZMCSZ/mJIr1eGYlzaM5enESo+LlAb7w5cs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=IZ3E6ImmrTOQV34v8S/QK2ZSZhkEJCP4Cy1p+nmvNlCcT5YY9oWleZpZ8qxcl1kRa5GzaXHLpybYgvGQ8+XtzVNVa2p/PSAER60GDaPp6jSsENU8HmYGg/0nIkqbJkkcL+R/aXHuLG4eXNRcPR4CG4YGAsa1TZfhJ2HtdZ9O5tQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Xw3C2SlY; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Xw3C2SlY" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-76bee58e01cso4531969b3a.1; Sun, 10 Aug 2025 19:23:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754878998; x=1755483798; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IzPKz3dIRSjxFXRkwalDKZa3i6W/EZANYwWE1NxDBnI=; b=Xw3C2SlYoducp8r37fnsQJOSg+0ALr5wu2SrUhz/+MCL+0kJJgF6ppwQuH/YElzNHx TbdsJlMcEQyBqdnyNKOWKf6LUArKxNZklyBPMwotl7mpPTVeQ7uL2/wS6D7aMgVhK9Ro PIFLMynx44wsvp8WYLQvg1sMjXknljsUaZjhxbc8DAkKdaCPpszMw8rSJYFMzwsChEhd i1lYoPEv8GQ6/uKphJqcn1lJ0AuOFvXrJNyWUn/6oBO/OgC8UxXsmwY5b4pVMcPaTlXd MGJd1LcGM5huuXvbVEfXLmnsVAGO+GPIyYw5IlPo62Ly6D6MD663+lFXiWaUtn1V7KSP b59g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754878998; x=1755483798; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IzPKz3dIRSjxFXRkwalDKZa3i6W/EZANYwWE1NxDBnI=; b=xKvmgOeXUwiPTOZW/gLknT5cB/rMKBCwn2WO4FXBWRpFdZ1Hcv6b2UvucWWbapQvYA 6e5xCbLw3+F3mJq+2pyxvIWaBCf/VQ2nnhh1FIlrAbzPeI+OewcebZ23LGh5dd22RDv7 LUThLlADpXoZX81fi0taSpcmUwzOXrfVZvT0RiKO0Z5BzFT+aoojavBqoisZXDofpYJ2 OFGU0WMybCKI7aJL9HHeuBopD56DX99DFH76Mo2cRAEzz3n43oYVH2cIpFMd1VYauD9V b5VOCAkWDn1QfrpDtvtuYoULnfriwUFO48PkPnEMUnYpQEW7MTpu8aB/3fqG4U4UPeSr PQ4Q== X-Forwarded-Encrypted: i=1; AJvYcCUdbXppm8ftOM3GcLtrTz4CYqfLPhd4UnO3y3MpsyH8bHABk6dmAybOHwjZejMX1mw+cB+UN+j2TaSyKABaGTpm+Kfvtg==@vger.kernel.org, AJvYcCVj5GonvUuxGOEEbDfAnlbeNIjt7Uv4mtxZDA2gov7t+YkqqI/28nWjV7h0N69m3Oj7sxy1pKPvZoIQA4I=@vger.kernel.org X-Gm-Message-State: AOJu0YwsnuyJK56AAVytVMzQDE/caUIbWhZD5AQXjtTI3Dix/QSiqoGY y9kl1L4boYxZ+aaWfabeVWrL0YV14P7n+lThQl/ZqcCW+Z6C8BFn4GHb5z17MA== X-Gm-Gg: ASbGnctN+6bG/k9XeHisl39P0zDKHanERLCaBTLXT5qiDt0wecveyGcErwJKPziGYGx zGfBhzLsGN78UbC+Z7H0FfETza4gD6TD2lLc3kXm3Hj93xSmljrO+fBgr/jQ5HgY30+hTuB9GBJ d8UukBg41FL5lBvAwnGKk2jTAe54RZp/C3raGiUp2BVgdDxb7YhYW97UjxaIZJQFLfsMSbtJupD yr/34K+BNgXjSz2mepdaZznR/UkYWzc32t8VXyIyZXy3/JARGQ0516kYFR/dKSmFrkSW/JuaFmz qCTIQVnEn3zYK8lxZkMGlZeo75wh6zzLxRaQNcfoeQS7Md9ysy6HepQIiDq+jo8LTS4lbEO+Cby 8vj2cOCDi+ijeBm1rbeNxQJOgM34850l+Cub/Nv70byAlp9BFIl09SIUy X-Google-Smtp-Source: AGHT+IHcMJRH63vEm2e9aQie3Z5ZkjZR4z+QfZLogcVP8uYyK0mg3+V7Fm18xepO8FB28qHxxl53dg== X-Received: by 2002:a05:6a20:2591:b0:23f:f96c:1197 with SMTP id adf61e73a8af0-240551a3e13mr16767644637.24.1754878998097; Sun, 10 Aug 2025 19:23:18 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:17 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 07/11] platform/x86: x86-android-tablets: convert wm1502 devices to GPIO references Date: Sun, 10 Aug 2025 19:22:53 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-7-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that gpiolib supports software nodes to describe GPIOs, switch the driver away from using GPIO lookup tables for wm1502 devices to using PROPERTY_ENTRY_GPIO(). Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/lenovo.c | 108 +++++++++++++++---= ---- 1 file changed, 76 insertions(+), 32 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/lenovo.c b/drivers/pl= atform/x86/x86-android-tablets/lenovo.c index db6337671357..811400d59697 100644 --- a/drivers/platform/x86/x86-android-tablets/lenovo.c +++ b/drivers/platform/x86/x86-android-tablets/lenovo.c @@ -383,19 +383,34 @@ static const struct platform_device_info lenovo_yoga_= tab2_830_1050_pdevs[] __ini =20 #define LENOVO_YOGA_TAB2_830_1050_CODEC_NAME "spi-10WM5102:00" =20 -static struct gpiod_lookup_table lenovo_yoga_tab2_830_1050_codec_gpios =3D= { - .dev_id =3D LENOVO_YOGA_TAB2_830_1050_CODEC_NAME, - .table =3D { - GPIO_LOOKUP("gpio_crystalcove", 3, "reset", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("INT33FC:01", 23, "wlf,ldoena", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("arizona", 2, "wlf,spkvdd-ena", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("arizona", 4, "wlf,micd-pol", GPIO_ACTIVE_LOW), - { } - }, +static const struct software_node lenovo_yoga_tab2_830_1050_crystalcove = =3D { + .name =3D "gpio_crystalcove", +}; + +static const struct software_node lenovo_yoga_tab2_830_1050_arizona =3D { + .name =3D "arizona", +}; + +static const struct property_entry lenovo_yoga_tab2_830_1050_wm1502_props[= ] =3D { + PROPERTY_ENTRY_GPIO("reset-gpios", + &lenovo_yoga_tab2_830_1050_crystalcove, 3, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("wlf,ldoena-gpios", + &baytrail_gpiochip_nodes[1], 23, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("wlf,spkvdd-ena-gpios", + &lenovo_yoga_tab2_830_1050_arizona, 2, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("wlf,micd-pol-gpios", + &lenovo_yoga_tab2_830_1050_arizona, 4, GPIO_ACTIVE_LOW), + { } +}; + +static const struct software_node lenovo_yoga_tab2_830_1050_wm5102 =3D { + .properties =3D lenovo_yoga_tab2_830_1050_wm1502_props, }; =20 -static struct gpiod_lookup_table * const lenovo_yoga_tab2_830_1050_gpios[]= =3D { - &lenovo_yoga_tab2_830_1050_codec_gpios, +static const struct software_node *lenovo_yoga_tab2_830_1050_swnodes[] =3D= { + &lenovo_yoga_tab2_830_1050_crystalcove, + &lenovo_yoga_tab2_830_1050_arizona, + &lenovo_yoga_tab2_830_1050_wm5102, NULL }; =20 @@ -409,7 +424,6 @@ const struct x86_dev_info lenovo_yoga_tab2_830_1050_inf= o __initconst =3D { .pdev_count =3D ARRAY_SIZE(lenovo_yoga_tab2_830_1050_pdevs), .gpio_button =3D &lenovo_yoga_tab2_830_1050_lid, .gpio_button_count =3D 1, - .gpiod_lookup_tables =3D lenovo_yoga_tab2_830_1050_gpios, .bat_swnode =3D &generic_lipo_hv_4v35_battery_node, .modules =3D bq24190_modules, .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, @@ -469,6 +483,7 @@ static const struct pinctrl_map lenovo_yoga_tab2_830_10= 50_codec_pinctrl_map =3D PIN_MAP_MUX_GROUP(LENOVO_YOGA_TAB2_830_1050_CODEC_NAME, "codec_32khz_clk", "INT33FC:02", "pmu_clk2_grp", "pmu_clk"); =20 +static struct device *lenovo_yoga_tab2_830_1050_codec_dev; static struct pinctrl *lenovo_yoga_tab2_830_1050_codec_pinctrl; static struct sys_off_handler *lenovo_yoga_tab2_830_1050_sys_off_handler; =20 @@ -495,12 +510,24 @@ static int __init lenovo_yoga_tab2_830_1050_init_code= c(void) goto err_unregister_mappings; } =20 - /* We're done with the codec_dev now */ - put_device(codec_dev); + ret =3D software_node_register_node_group(lenovo_yoga_tab2_830_1050_swnod= es); + if (ret) { + ret =3D dev_err_probe(codec_dev, ret, "registering software nodes\n"); + goto err_unregister_mappings; + } + + ret =3D device_add_software_node(codec_dev, &lenovo_yoga_tab2_830_1050_wm= 5102); + if (ret) { + ret =3D dev_err_probe(codec_dev, ret, "adding software node\n"); + goto err_unregister_swnodes; + } =20 + lenovo_yoga_tab2_830_1050_codec_dev =3D codec_dev; lenovo_yoga_tab2_830_1050_codec_pinctrl =3D pinctrl; return 0; =20 +err_unregister_swnodes: + software_node_unregister_node_group(lenovo_yoga_tab2_830_1050_swnodes); err_unregister_mappings: pinctrl_unregister_mappings(&lenovo_yoga_tab2_830_1050_codec_pinctrl_map); err_put_device: @@ -548,6 +575,12 @@ static void lenovo_yoga_tab2_830_1050_exit(void) { unregister_sys_off_handler(lenovo_yoga_tab2_830_1050_sys_off_handler); =20 + if (lenovo_yoga_tab2_830_1050_codec_dev) { + device_remove_software_node(lenovo_yoga_tab2_830_1050_codec_dev); + put_device(lenovo_yoga_tab2_830_1050_codec_dev); + software_node_unregister_node_group(lenovo_yoga_tab2_830_1050_swnodes); + } + if (lenovo_yoga_tab2_830_1050_codec_pinctrl) { pinctrl_put(lenovo_yoga_tab2_830_1050_codec_pinctrl); pinctrl_unregister_mappings(&lenovo_yoga_tab2_830_1050_codec_pinctrl_map= ); @@ -750,7 +783,6 @@ static struct gpiod_lookup_table lenovo_yoga_tab2_1380_= fc_gpios =3D { }; =20 static struct gpiod_lookup_table * const lenovo_yoga_tab2_1380_gpios[] =3D= { - &lenovo_yoga_tab2_830_1050_codec_gpios, &lenovo_yoga_tab2_1380_fc_gpios, NULL }; @@ -947,12 +979,37 @@ static struct arizona_pdata lenovo_yt3_wm5102_pdata = =3D { }, }; =20 +static const struct software_node lenovo_yt3_arizona =3D { + .name =3D "arizona", +}; + +static const struct property_entry lenovo_yt3_wm1502_props[] =3D { + PROPERTY_ENTRY_GPIO("wlf,spkvdd-ena-gpios", + &cherryview_gpiochip_nodes[0], 75, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("wlf,ldoena-gpios", + &cherryview_gpiochip_nodes[0], 81, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[0], 82, GPI= O_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("wlf,micd-pol-gpios", &lenovo_yt3_arizona, 2, GPIO_AC= TIVE_HIGH), + { } +}; + +static const struct software_node lenovo_yt3_wm5102 =3D { + .properties =3D lenovo_yt3_wm1502_props, +}; + +static const struct software_node *lenovo_yt3_swnodes[] =3D { + &lenovo_yt3_arizona, + &lenovo_yt3_wm5102, + NULL +}; + static const struct x86_spi_dev_info lenovo_yt3_spi_devs[] __initconst =3D= { { /* WM5102 codec */ .board_info =3D { .modalias =3D "wm5102", .platform_data =3D &lenovo_yt3_wm5102_pdata, + .swnode =3D &lenovo_yt3_wm5102, .max_speed_hz =3D 5000000, }, .ctrl_path =3D "\\_SB_.PCI0.SPI1", @@ -999,31 +1056,18 @@ static int __init lenovo_yt3_init(struct device *dev) intel_soc_pmic_exec_mipi_pmic_seq_element(0x6e, 0x9b, 0x02, 0xff); intel_soc_pmic_exec_mipi_pmic_seq_element(0x6e, 0xa0, 0x02, 0xff); =20 + ret =3D software_node_register_node_group(lenovo_yt3_swnodes); + if (ret) + return dev_err_probe(dev, ret, "registering software nodes\n"); + return 0; } =20 -static struct gpiod_lookup_table lenovo_yt3_wm5102_gpios =3D { - .dev_id =3D "spi1.0", - .table =3D { - GPIO_LOOKUP("INT33FF:00", 75, "wlf,spkvdd-ena", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("INT33FF:00", 81, "wlf,ldoena", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("INT33FF:00", 82, "reset", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("arizona", 2, "wlf,micd-pol", GPIO_ACTIVE_HIGH), - { } - }, -}; - -static struct gpiod_lookup_table * const lenovo_yt3_gpios[] =3D { - &lenovo_yt3_wm5102_gpios, - NULL -}; - const struct x86_dev_info lenovo_yt3_info __initconst =3D { .i2c_client_info =3D lenovo_yt3_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(lenovo_yt3_i2c_clients), .spi_dev_info =3D lenovo_yt3_spi_devs, .spi_dev_count =3D ARRAY_SIZE(lenovo_yt3_spi_devs), - .gpiod_lookup_tables =3D lenovo_yt3_gpios, .gpiochip_type =3D X86_GPIOCHIP_CHERRYVIEW, .init =3D lenovo_yt3_init, }; --=20 2.51.0.rc0.155.g4a0f42376b-goog From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA52C277C96; Mon, 11 Aug 2025 02:23:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754879001; cv=none; b=Bv3Ll7vtQrI20by5218NiVxKSXFgZx4aJZUsrR+yUh1GaaqC5ct+MT9o2K+R9YjgSu9eCMDJR/VjR3uO/+HQORIIOeeb9+AVi+g6V59ZZWw2LprqsBPdH5FBbG6p5J3y23O+kM3pnPfQUA4yX1v2WY8ycIuxOV4jR9zcBdPcep4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754879001; c=relaxed/simple; bh=ENVa0irmOc/bbLcbUfYi0N0BZgXjuIxrRyD1FecvFx8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VGSwMoy6pOlWQE6WMUKIW7y6eTvA69s1bjSR8J7jr1CUdx9PCce1ZRhp0Mj+qF/VWJSa4RKphTW3DYdjgr3qDhndY57mbTrGy9Jymno4tW82mWCnIn7+HdkR3MVpoXsCPZ0XREX/3tRob9GO5T5fzPl2jQosoZ0qL/chIr43ipA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BVTF40pW; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BVTF40pW" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-76bde897110so2978423b3a.3; Sun, 10 Aug 2025 19:23:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754878999; x=1755483799; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hQpnC1b1ZAHd+3vbKEzRnqbfblJkicMxg/sCkxfbSow=; b=BVTF40pWyS0nvvIAzBLqNgmUKAz/wrKNsNU8D4gY7XWCPRZv+Ttdr8M6gX4Bj42CAm BGKl3ZXXwDWC9nmP0MlkhobA8hfT0C8ZAo/gq+hqL1xFp/MFESbCHraTTzduNRsT0G/6 hx3tWtVYnvKOLCWd2oneaSBobWb4M8kIHXlCXEodHZC2jATGkP+KLHy4mILKINyPF2nP d1tt/rmUM5hpYils6ntMbkTXo2Qka0qDnTZxOKyiE11BcpGV2lNC4g5sAsqB+fMjhw1b 7YZ1BM9b07fxyDaMqujYcx6omPd5cCe+svZm90eRhtEOADBIxDnIv8CNoJ+t08gRhPNI tA5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754878999; x=1755483799; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hQpnC1b1ZAHd+3vbKEzRnqbfblJkicMxg/sCkxfbSow=; b=aeCfkJD7qiDv0uir/RxiHSAckPwCDWSLm5r/6DXBc3SLnbLB+ATmGoalvGpr/k5UFw DXKXKP7BwZEYVPOtkw972a50h7Nm3Mu4C2f3tJ2s5LMg1U2l0QvWT/cJnsjqWIrG6oke 2/X4cSc6dEYCjtWjAyOr0HguCNcxziwxiHowJFvWRREVcY6r5Wo67JWRS/bgsvQ6Ztj4 /C3+DP2G8dqX3H0PwMNJicuj9qOORQskSqyrvSrnmcWwT2jbsV4YT7RLYj7xA8+v1Zwr EftdkwwE74+r1CFm5BUomzcH3REiHQm3lYIe86VPKfnA8ICn6PmSqrCweu/o9pV+Mlka GKnQ== X-Forwarded-Encrypted: i=1; AJvYcCU6hdYXS6X7P4kmSFN3UDhgVUsblRTV3d6Qyj3s2PPfPcwSvXPUcFXBgaNz0DBWmqn3Spm9REfOmjdgErM=@vger.kernel.org, AJvYcCV/LqanySEh32ERMAAkiamU10BTs4uCo7NtxwiDOik2yY7GMp5q4BW5LQ2z4DnVc6gwMBd3y7x4Y1REah8JbyjQLSXwrw==@vger.kernel.org X-Gm-Message-State: AOJu0YzIJmv+65OvjE4+iB+pivzVfUK4xafBblPgAq/VeGSZqZc3nybR Fuv1r8gRe5LTasktYMYiZv6pZ4QvvCL6jOIN+icAsK9F4UcgtqCEn5droy8Yxg== X-Gm-Gg: ASbGncudZ4JkoWvFWs20XzaAcZsI0+NuYHlUS+810ikILeW73NQfTkIbT4xPaUPRRTV CKprWap2MDDuper3qDyJDiTb+H838flrPP732jicWcR5BwtgpmiNQF1KnlTg5piqVP+GsmPWNjR wXqT/cxy6jOqo5cPpgz9Zcalm32tSy7IE8XV7N1M/CSsGzBH6P4fhZx0DzQkM9rpnR/UCUP8L/w 0yCrffzohM7PX24xWO4Ya7vVnnsu+oJDwWztIsYe6IISk5HicUC0VV9a/wUkikY7mTLFIe72Jk9 20smgc1zYgRaPQHnJC7ViJ83i+Any9Fe0tmd4QpmmMIhc5AWRqxgS+kCXaPtcUQ8WFNDnjzCktI KsddtXodamNj4iJDEbZYhcJKlN+5Ra4EX6akMqJxrzErms0WpfiZ+LzT+ X-Google-Smtp-Source: AGHT+IGgQ4TtnzRJzjJduSacEwu2QjtcIYt9xnZWz8OTxwWtJAKBh/etqdbjPUP4PIixgUPC2HFwTw== X-Received: by 2002:a05:6a21:99a4:b0:220:4750:133a with SMTP id adf61e73a8af0-240551604abmr17953391637.25.1754878999033; Sun, 10 Aug 2025 19:23:19 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:18 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 08/11] platform/x86: x86-android-tablets: convert HID-I2C devices to GPIO references Date: Sun, 10 Aug 2025 19:22:54 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-8-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that gpiolib supports software nodes to describe GPIOs, switch the driver away from using GPIO lookup tables for HID-I2C touchscreens to using PROPERTY_ENTRY_GPIO() to keep all touchscreen properties together. Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/other.c | 32 +++-----------------= ---- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/pla= tform/x86/x86-android-tablets/other.c index 6f2d389a0258..38c5e7bd88b0 100644 --- a/drivers/platform/x86/x86-android-tablets/other.c +++ b/drivers/platform/x86/x86-android-tablets/other.c @@ -588,6 +588,7 @@ const struct x86_dev_info whitelabel_tm800a550l_info __= initconst =3D { static const struct property_entry vexia_edu_atla10_5v_touchscreen_props[]= =3D { PROPERTY_ENTRY_U32("hid-descr-addr", 0x0000), PROPERTY_ENTRY_U32("post-reset-deassert-delay-ms", 120), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[1], 26, GPIO_= ACTIVE_LOW), { } }; =20 @@ -622,23 +623,10 @@ static const struct x86_i2c_client_info vexia_edu_atl= a10_5v_i2c_clients[] __init } }; =20 -static struct gpiod_lookup_table vexia_edu_atla10_5v_ft5416_gpios =3D { - .dev_id =3D "i2c-FTSC1000", - .table =3D { - GPIO_LOOKUP("INT33FC:01", 26, "reset", GPIO_ACTIVE_LOW), - { } - }, -}; - -static struct gpiod_lookup_table * const vexia_edu_atla10_5v_gpios[] =3D { - &vexia_edu_atla10_5v_ft5416_gpios, - NULL -}; - const struct x86_dev_info vexia_edu_atla10_5v_info __initconst =3D { .i2c_client_info =3D vexia_edu_atla10_5v_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(vexia_edu_atla10_5v_i2c_clients), - .gpiod_lookup_tables =3D vexia_edu_atla10_5v_gpios, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; =20 /* @@ -674,6 +662,7 @@ static const struct software_node vexia_edu_atla10_9v_a= ccel_node =3D { static const struct property_entry vexia_edu_atla10_9v_touchscreen_props[]= =3D { PROPERTY_ENTRY_U32("hid-descr-addr", 0x0000), PROPERTY_ENTRY_U32("post-reset-deassert-delay-ms", 120), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[0], 60, GPIO_= ACTIVE_LOW), { } }; =20 @@ -766,19 +755,6 @@ static const struct x86_serdev_info vexia_edu_atla10_9= v_serdevs[] __initconst =3D }, }; =20 -static struct gpiod_lookup_table vexia_edu_atla10_9v_ft5416_gpios =3D { - .dev_id =3D "i2c-FTSC1000", - .table =3D { - GPIO_LOOKUP("INT33FC:00", 60, "reset", GPIO_ACTIVE_LOW), - { } - }, -}; - -static struct gpiod_lookup_table * const vexia_edu_atla10_9v_gpios[] =3D { - &vexia_edu_atla10_9v_ft5416_gpios, - NULL -}; - static int __init vexia_edu_atla10_9v_init(struct device *dev) { struct pci_dev *pdev; @@ -808,9 +784,9 @@ const struct x86_dev_info vexia_edu_atla10_9v_info __in= itconst =3D { .i2c_client_count =3D ARRAY_SIZE(vexia_edu_atla10_9v_i2c_clients), .serdev_info =3D vexia_edu_atla10_9v_serdevs, .serdev_count =3D ARRAY_SIZE(vexia_edu_atla10_9v_serdevs), - .gpiod_lookup_tables =3D vexia_edu_atla10_9v_gpios, .init =3D vexia_edu_atla10_9v_init, .use_pci =3D true, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; =20 /* --=20 2.51.0.rc0.155.g4a0f42376b-goog From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A3CDC279DC3; Mon, 11 Aug 2025 02:23:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754879002; cv=none; b=YWaIo/Om9PiKVvRrim2v7XiN5xPezoTdXcPEu3/UvpGG44MDRoVLU/6tR1RPfDpJlYarXg1ET0uA7AiONvBtGy1yJlmKrSP/T0dNvOJP1XO6Avk3q+ar7p3aRFxB+f51aI3L57P4uYFuxl/w9v5e9h4R3k41oet4M8hKN2NDi+U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754879002; c=relaxed/simple; bh=9ObgYvD/nUmVyffG+pMhNsco8jhko9HDl60Ok/mU77k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=quqJyMl2ImLCiuk1ue+G4v5/p9YJ4ZBRostdkMW+kNdsqf9UK2Cl5XjqB9m80be2vKsvHI7vC6Yvq7/jOBna5IXNeAYmOTSCi/1Y5jEgjdd7CdrIaWl8RzKRuMtH3MzzB+gRqQS3ZRx76wnjdC96MP9uHwSwBnhRTX/1pyz/qLQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nrchvwTv; arc=none smtp.client-ip=209.85.216.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nrchvwTv" Received: by mail-pj1-f54.google.com with SMTP id 98e67ed59e1d1-31ece02ad92so2877938a91.2; Sun, 10 Aug 2025 19:23:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754879000; x=1755483800; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/zdGiG7YFnd0Kp+RpykoXidbDR/sORi9+DDlj5r3pTw=; b=nrchvwTvdte6PifOnGtXrMB2xgMGnDb4JxMgXBXiDxIhXlXeHZ6zb3bN8AIij8pQ+b CzXAlozVF8Y4uaK1chjsqkN2rzegCtlOHyTL2IhKs9v+3R/Qr/5tiLQCDGdA9zfJ6An0 aZ0uCyxzGzxluImK7xPft9viaAYNgaRgeMUGah8qkWktHqmygwTBZjORRYe0VSe2mSHH CHNW9ikGXD4BrgQLRRz2Z/zF6CRwVb3RjtGns0qEyUJMfET7PFBza8Uh8dhDbwPqpQ0H aIpT+MJltaES2M3WkHV4gydivOVShzv2nIoj9olqC+gG6Bf2DjmOKSQF8e6f3F6fXFer wkHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754879000; x=1755483800; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/zdGiG7YFnd0Kp+RpykoXidbDR/sORi9+DDlj5r3pTw=; b=FjtQzNR2WD2ZBZhTWB+o7admrJMl0bv56iIgW1Z6R6G8LhWwinzKjzeBVjXFX+zK2U lvEv4GdUb9hxW8RKz3Xe1BUhg/2mt3p6URFRicK0zIFmx1miUL5jnJhL1fC8S0oMSslo UhRAAY5UIeVZaaVeXA5DjygA/zYuwY78+X8wl1MLOEZILtxxd6FApiUxcaQP5n/NirW4 lZD+cH0I8PUOuNd1UQg6jVXErAbmIKyOe9ByCevrv88hCF5k3uy37QlbceOhU53l5Ach bCOpgMHNKrrmu8rBVa94abfqWCzaei2n7hOijbcaYb9TvJkc+hfj1ri40xMkre4m6b0d kOwA== X-Forwarded-Encrypted: i=1; AJvYcCU2WXWLNIPBwLJymXJWhpKs4w9Mk/HSrqz78DQvG1YbkXGF849vymjlUhT4oARz5Oxr4X3fde0zRMVOt0NaszYVCj3EVQ==@vger.kernel.org, AJvYcCV5HGS2KgDeiLgxU9adWuX2zJYFiX1+eVYyyMKv03FoOKmi2fQwYUOhVtA2b5OT9lxFp2/zmKCmjuPiU2M=@vger.kernel.org X-Gm-Message-State: AOJu0Yxyu9kME+vYARUHWooXc3Z4b/SG8JhxHGUXQ2QMEKf6BTMN955u gIzU49zERBgGA5cPbmGzPyYXcHS0b7gwfqLyMXRzIYoQzpOi0YXZmKtLPG60pw== X-Gm-Gg: ASbGncukeyZ7cBwCgzcp8zquOp+y1cSa/AANu1f2LMpYdwzLUCpQXRf3FBenxHrKCKo sDrCuxpwy0L3sqPD9fAwFgFf41hOhj1LjkObtl166SRdmtTbW6QfuHmvwmX2eFzYZixxKG/LZPl g7gy8HWye03NVhWaLvf+CR1xNRBBE4IPYC+yY4JXLWTECMQ8dhJgVX6K1R52OY0Y3EljW4FhvmY v72N8213Jq7nHEBsRksfObxon9A0Zlx/k6CNJcgT+TCwLw37/R6TTijMaG9ATUSFoSnWBSeawAJ tOrkNtm8h5efrIcMmy2byYpl1Km7ds/d3aaDD7of82u/KnRWdle6A4wbtOKqG3SgYEWi/0ZIRHF qXJuql+sTF0A1+++1vy1s5v4PXv2NT5HIvK8XPcU+pHnwxQ== X-Google-Smtp-Source: AGHT+IFzjX1s2TAUfx6eG25HtP/sPk8MMlWTZVsEwS1S66JKoi0FAaj3CM8tt7rAWrT/dAKfrKBzvQ== X-Received: by 2002:a17:90b:280e:b0:31f:30a6:56ff with SMTP id 98e67ed59e1d1-32183b3f52dmr16481362a91.19.1754878999933; Sun, 10 Aug 2025 19:23:19 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:19 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 09/11] platform/x86: x86-android-tablets: convert Yoga Tab2 fast charger to GPIO references Date: Sun, 10 Aug 2025 19:22:55 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-9-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that gpiolib supports software nodes to describe GPIOs, switch the driver away from using GPIO lookup tables for the fast charger device to using PROPERTY_ENTRY_GPIO(). Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/lenovo.c | 23 ++++++++-----------= ---- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/lenovo.c b/drivers/pl= atform/x86/x86-android-tablets/lenovo.c index 811400d59697..7c6a6fc6be42 100644 --- a/drivers/platform/x86/x86-android-tablets/lenovo.c +++ b/drivers/platform/x86/x86-android-tablets/lenovo.c @@ -739,11 +739,18 @@ static const struct x86_i2c_client_info lenovo_yoga_t= ab2_1380_i2c_clients[] __in } }; =20 +static const struct property_entry lenovo_yoga_tab2_1380_fc_props[] =3D { + PROPERTY_ENTRY_GPIO("uart3_txd-gpios", &baytrail_gpiochip_nodes[0], 57, G= PIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("uart3_rxd-gpios", &baytrail_gpiochip_nodes[0], 61, G= PIO_ACTIVE_HIGH), + { } +}; + static const struct platform_device_info lenovo_yoga_tab2_1380_pdevs[] __i= nitconst =3D { { /* For the Tablet 2 Pro 1380's custom fast charging driver */ .name =3D "lenovo-yoga-tab2-pro-1380-fastcharger", .id =3D PLATFORM_DEVID_NONE, + .properties =3D lenovo_yoga_tab2_1380_fc_props, }, }; =20 @@ -773,20 +780,6 @@ static int __init lenovo_yoga_tab2_1380_init(struct de= vice *dev) return 0; } =20 -static struct gpiod_lookup_table lenovo_yoga_tab2_1380_fc_gpios =3D { - .dev_id =3D "serial0-0", - .table =3D { - GPIO_LOOKUP("INT33FC:00", 57, "uart3_txd", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("INT33FC:00", 61, "uart3_rxd", GPIO_ACTIVE_HIGH), - { } - }, -}; - -static struct gpiod_lookup_table * const lenovo_yoga_tab2_1380_gpios[] =3D= { - &lenovo_yoga_tab2_1380_fc_gpios, - NULL -}; - const struct x86_dev_info lenovo_yoga_tab2_1380_info __initconst =3D { .i2c_client_info =3D lenovo_yoga_tab2_1380_i2c_clients, .i2c_client_count =3D ARRAY_SIZE(lenovo_yoga_tab2_1380_i2c_clients), @@ -794,9 +787,9 @@ const struct x86_dev_info lenovo_yoga_tab2_1380_info __= initconst =3D { .pdev_count =3D ARRAY_SIZE(lenovo_yoga_tab2_1380_pdevs), .gpio_button =3D &lenovo_yoga_tab2_830_1050_lid, .gpio_button_count =3D 1, - .gpiod_lookup_tables =3D lenovo_yoga_tab2_1380_gpios, .bat_swnode =3D &generic_lipo_hv_4v35_battery_node, .modules =3D lenovo_yoga_tab2_1380_modules, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, .init =3D lenovo_yoga_tab2_1380_init, .exit =3D lenovo_yoga_tab2_830_1050_exit, }; --=20 2.51.0.rc0.155.g4a0f42376b-goog From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9914E27F4E7; Mon, 11 Aug 2025 02:23:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754879003; cv=none; b=bG4vPKdw39wi7fb6ZYH4lM4KhnX9uB2NsmdTHSsbi8vEgeJHanJZvi7boWHnCEyUndrbLjykKiCq6t4WpqBFU8RpsYQ2p2xYYJAt5dQWRucYSj6R8lCNC6en+hVlq4CFgEZ6BthYoJfg46VeESWW9oq74LMhxqZtFvPzsY3Gpq0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754879003; c=relaxed/simple; bh=+Bd6u30AjehdDMENozae9QTypNU3Fx/QJ235tPftDac=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=TF7gFzkUnjzE2lrNSPLfU72E7F0SPLHyxxe62hlvS1Kvhu3maFG69S3UAiDm+jV2NRmxI3slQsguiDipu7y5tdwGedE6XUd2cgCd96vEoHD2k3K99Y2gg54t96z9GO2y0TeBFzoY21ntIFzui0A67ASCBeouw0Dgi/VOe//xel4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PAdQDnbe; arc=none smtp.client-ip=209.85.210.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PAdQDnbe" Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-76bd041c431so3290442b3a.2; Sun, 10 Aug 2025 19:23:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754879001; x=1755483801; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GQBghnO2hQiu1mEMG7VIvVmKmaRqdfyhY9m5vdrVGEE=; b=PAdQDnbeme62P7Q2fZwzCvRLEcaJMrqrh88C13DxlZYlbayuqDrVAyzEuUcsl36QCW UNPG5Dv8T8albjwfnXjY+NNLvOEDTlPlWA47kl2BA3tLdo7BrW3OybtXdHr3UFL3kS5x 7PG7sZBQXe3YSSOPFXJll7+wqEnIcolrQhrH/BhTw8Ax1CaCFnXXnI4Kwx+umWA/HclH IDfEDQvS0WWd4iNR9+iPhK6o/7oniXzQlDZHnzUarghuC76BlMrEQcabjEsZ28LXvGw1 75ebu7RBs/gcL+B7lDlm2SHum1rfr1ep2EY3cMC8vX/BiKsJrRWVefh0e139wydiePBI qDow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754879001; x=1755483801; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GQBghnO2hQiu1mEMG7VIvVmKmaRqdfyhY9m5vdrVGEE=; b=OqOqTc3DAzOWtBONlBw5BSrXfuwO0k2qfVjIsVN34dEKWi7fyMiLf1ug6ms5c1V1bN HINFwulGTLxRDJ4lYuvFEUvaOpDeXC1O9ghc6TOPBAmQbMzY19C6i9qPa6JZsQDZOO0y HZIGKhXsOFEHhbxoxqsIqoDaFYgbcR3m+fbGdlG9935dFGvqdsGkhizTJzdP8gvObwFL bDKqkttgMTPceuuEi/A/AdYFWFUTJo/17KFj0W8pQca7wKyW57eaIThJprrxv6dC5RDN fZmeu3JjElNQcbIW7ySMygjco+OYlCWu1EMTX/MgVxoSX1l7b32mr+a0Uuf142JLaoAX kOKA== X-Forwarded-Encrypted: i=1; AJvYcCXAL9Y+mpB3hv46OEpK/c5mmx9M66Jp99JkoR7BeJtl9Yplj4M+9ivS1dBbg6DtbVwu8KjUce1CL4wdpbc=@vger.kernel.org, AJvYcCXKaoxfeereb4MEP5vGG4w9HiFDn4UQiYC/pvgTw7vzJJ7eTSxqAlgkvlfsGKIrbqMx4leJYeHMEYfkqFQtCaHjPI6mug==@vger.kernel.org X-Gm-Message-State: AOJu0YwFk3f22iCQhnLLZ1GIC52Bc9u/mk70LqM3WjGSskzk+hc44jNJ Kihr3MyPrmH/gxrJnq44hgJpa1GPjyfIfUY8uZ18A/sTGpy1Qd2YVEhjxw2zNg== X-Gm-Gg: ASbGnctzNnva1v6RNpqRpFH0OUQ+jJI3RfZ4ubGUTqsmsVUMfHNcv4zPKzONB3wV2ph CnmxdY5df8mS0YqtsBbsVHTUJFWboZFT8Kc2rGqkFsY4rI0z8NrkEOzYPeP7GIKbDGxPk9KAv17 u4tLco1p98YZCsuSmBA+9LjGwAvmDolx3Ll4Bk3z3TZYyjtpH+RChs3RiHy1kzSnRiJB9bdDsvw 23T/1oQr/q1w29KoQzaGyyYIvdiD+7jdL+qWV3HzhXS7QWRixSZ0nIANdS4ib4EmHpF2fdT4/m2 p0BhyGGgVwP9kCaY4JHpPiCgS27Ap8JquD2o4njHR/Y6QlM/aEGtzbOMTWA9h181bEI7peAddma ghsw19UFBeO8SCHRUjiNt0866A7jvSBvKAu8Lfhq7U/Eeqw== X-Google-Smtp-Source: AGHT+IEFdmdZw0IExwtmiSqeOwAjGbNbj6vsklo6ADMPOaIhrMcIFoCzLn6zhQl5W0vvjKL+uourtw== X-Received: by 2002:a05:6a20:4306:b0:240:5f9:6359 with SMTP id adf61e73a8af0-240551f7ea5mr17881806637.34.1754879000865; Sun, 10 Aug 2025 19:23:20 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:20 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 10/11] platform/x86: x86-android-tablets: remove support for GPIO lookup tables Date: Sun, 10 Aug 2025 19:22:56 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-10-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that everything that used the lookup tables has been switched to using property entries to describe GPIOs, we can remove support for registering and unregistering the lookup tables. Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/core.c | 8 -------- drivers/platform/x86/x86-android-tablets/x86-android-tablets.h | 2 -- 2 files changed, 10 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/core.c b/drivers/plat= form/x86/x86-android-tablets/core.c index b0d63d3c05cd..94942921b203 100644 --- a/drivers/platform/x86/x86-android-tablets/core.c +++ b/drivers/platform/x86/x86-android-tablets/core.c @@ -153,7 +153,6 @@ static struct spi_device **spi_devs; static struct platform_device **pdevs; static struct serdev_device **serdevs; static struct gpio_keys_button *buttons; -static struct gpiod_lookup_table * const *gpiod_lookup_tables; static const struct software_node *bat_swnode; static const struct software_node **gpiochip_node_group; static void (*exit_handler)(void); @@ -395,9 +394,6 @@ static void x86_android_tablet_remove(struct platform_d= evice *pdev) =20 if (gpiochip_node_group) software_node_unregister_node_group(gpiochip_node_group); - - for (i =3D 0; gpiod_lookup_tables && gpiod_lookup_tables[i]; i++) - gpiod_remove_lookup_table(gpiod_lookup_tables[i]); } =20 static __init int x86_android_tablet_probe(struct platform_device *pdev) @@ -421,10 +417,6 @@ static __init int x86_android_tablet_probe(struct plat= form_device *pdev) for (i =3D 0; dev_info->modules && dev_info->modules[i]; i++) request_module(dev_info->modules[i]); =20 - gpiod_lookup_tables =3D dev_info->gpiod_lookup_tables; - for (i =3D 0; gpiod_lookup_tables && gpiod_lookup_tables[i]; i++) - gpiod_add_lookup_table(gpiod_lookup_tables[i]); - switch (dev_info->gpiochip_type) { case X86_GPIOCHIP_BAYTRAIL: gpiochip_node_group =3D baytrail_gpiochip_node_group; diff --git a/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h= b/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h index a54d09408866..d037e3962a51 100644 --- a/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h +++ b/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h @@ -17,7 +17,6 @@ #include =20 struct gpio_desc; -struct gpiod_lookup_table; struct platform_device_info; struct software_node; =20 @@ -91,7 +90,6 @@ struct x86_gpio_button { struct x86_dev_info { const char * const *modules; const struct software_node *bat_swnode; - struct gpiod_lookup_table * const *gpiod_lookup_tables; const struct x86_i2c_client_info *i2c_client_info; const struct x86_spi_dev_info *spi_dev_info; const struct platform_device_info *pdev_info; --=20 2.51.0.rc0.155.g4a0f42376b-goog From nobody Sun Oct 5 01:52:36 2025 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B7AF7285CB0; Mon, 11 Aug 2025 02:23:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754879004; cv=none; b=dgiDyRjVNNJ+PZoQDztiP2JSUbo1Cd8FvW2F7DOjeDU3SvFIsb3JBfgAuDe6acHbVAdEE5xKKHHiPd20LJteQsLxeP7NEndirw2LTtxDeXu1v4ULQskAYqI9yv+nqz1pmvvzvfHieYV7lnK/wgz6Q9X7oigxXOSw4cHqy1MiS/M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754879004; c=relaxed/simple; bh=tkg9uXrsU0kfP1J4wKHXdPxWLrfWQgNzypBdnkXmcxU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XT96IGrGg2SBab8bZSPK6Ae8Z5pJEpzeFPZTzJZRBFn0KrOkSXNSxz6FRP0taAZDuvzv5Xe0pkQtEOjm+KodPYLxKdXKJsK+Epezx3BvRA1641ncgKftorwcofO1SdGUGzj+ZqMk1Iouc8t4ZGLgK2W7+DYVVggfS2b8A+pC648= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PRX9hBw9; arc=none smtp.client-ip=209.85.210.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PRX9hBw9" Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-76be8e4b59aso3140919b3a.1; Sun, 10 Aug 2025 19:23:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754879002; x=1755483802; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Zc0OmXKKIKzJxLhoELmXzeUr9qo5ipAMm7/O57p0HGY=; b=PRX9hBw9A2mMvMEVROEh/yzjCxMkXwx7js0oyQDYzdKOsz0UGm28NgjUvh3tcAfalp OuSkNoBCLtAgpxrUGR9bGdzYWpYwVh0h8HcR6ajoaL1TAXMyRxByiBVWCbZKnyXD4flJ MpfXSi3ltQLSD9kROrEWC4+kPQpK8CusbUn/bHdWjPclSIumOjeHpn3c9/1fyBxj2jQB IOxLIUJS/zkPr/IGHqzH7yuVsF1hn2v7jW031IDfOoYtwttaRM3ned6V1Fsl0PfOEwC0 DM/k9/Zd9R56PtGd5Isk4w712QHMBJBWq3yoO3bAWrrUPSGY4t3AFiRw3Mt0D9KBd4ZQ sN6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754879002; x=1755483802; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zc0OmXKKIKzJxLhoELmXzeUr9qo5ipAMm7/O57p0HGY=; b=v5d83odNuBQP+6jyWt52vG6crKCmfJBNHDuV/rwADb5UGo/X/lKBuiD31/vdWAf5GJ lTH8znwKOgHYjATrM7eCFfTk0ss77h7uTGL2jjwbXfa7SOrNlFYFb1dvDJcFXtkNIRkU VxQWmliG4Gym1/p8o6i1AY2caVQpSbAMihdM0LzcErKqfwBZFSvC6nYQ1kRwAPJFas6w yKJ6GVvdOV5wx10+bBllwvcMchqf6V0AphTaDWONN9isyPOqT/ox0Fqk9Au4f+8rSqSI wSeqOXh4BGkxqJ3AuK6q9dRhylveib+x8Hnp++PqYJZWoAC1QkZVq4GfrB1B1Xfkd2da Iqlw== X-Forwarded-Encrypted: i=1; AJvYcCURP+4UlJYZLZ01Fu0hUpC9dnRBJoajTl+0ggMuJA1YQ/gD7onnAVMOwD6EJQgrqk7A75srxkG1b2MZcQPAP3pgZ6LVAg==@vger.kernel.org, AJvYcCVcUpHQj6ANQmBW4+8IV2XEprcP76PbC/iHba94SgGeWg05lEvV/x4bLLhVMnK0t127djzEgDtB0MOQ/X4=@vger.kernel.org X-Gm-Message-State: AOJu0Yx/0ynZ21zl4bMf7pPaCtUW0DSDoV2t+4YABignQNdGP1bQcNfr v5PbNhEBI4wSv74t3ZfKxa2gk6cUeK5T59ubLOQjxNE6qsERmM2xFWzR X-Gm-Gg: ASbGncurgg8WF4FChxaYw4xkdjg1IhrhHKQNdmxMN9YGZGEh89xSg4XRRR9nXVobuki MGTGp17QqcpYB8Q7DEGYaaQRKIKMDIKdW3Ar+LncVtyvPl3g7JrWdr3lc9sA4RFpgn1MF1f5XM8 iVJCAY4ncgA0TumY+PQ09BBQOOiXvNScvstdXcmqcqx560t1NX1ppCV4kTRx6hnn+MMhUflqWLT zLJBvBrCwuVXr9TFycV7pkWc+YRBwP9XY7CkCFdSfJlGm0lg+eYDGrVMXLafkvnS4Pp/+VsyXkE 6wXymdmJpmmaIvI6UxV3ApgoUr8ny2odLoGLmbnW25+C8d0FYeW1CgTJZ+4o11WYaI2lnqJeDaH iCyYirZGy16gIdNQ5KJALs3bZDrTmGGbV3YTaqAs1OAK5nw== X-Google-Smtp-Source: AGHT+IHVIafIzp2Ny4atF7F4CpYo8rTGVyou4mhKOPf9znFtYZduCLWZ99MsCK4L1IL2zWUQgCIhXw== X-Received: by 2002:a05:6a20:3ca5:b0:23d:de52:a5c9 with SMTP id adf61e73a8af0-240550142eemr16946211637.1.1754879001839; Sun, 10 Aug 2025 19:23:21 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2620:15c:9d:2:69d7:30de:b05e:915b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b422be2b3a5sm21880366a12.46.2025.08.10.19.23.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Aug 2025 19:23:21 -0700 (PDT) From: Dmitry Torokhov To: Hans de Goede Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Arnd Bergmann , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 11/11] platform/x86: x86-android-tablets: convert gpio_keys devices to GPIO references Date: Sun, 10 Aug 2025 19:22:57 -0700 Message-ID: <20250810-x86-andoroid-tablet-v2-11-9c7a1b3c32b2@gmail.com> X-Mailer: git-send-email 2.51.0.rc0.155.g4a0f42376b-goog In-Reply-To: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> References: <20250810-x86-andoroid-tablet-v2-0-9c7a1b3c32b2@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.15-dev-e44bb Content-Transfer-Encoding: quoted-printable Now that gpiolib supports software nodes to describe GPIOs, switch the driver away from using GPIO lookup tables for wm1502 devices to using PROPERTY_ENTRY_GPIO(). With that we can remove support for gpiod_lookup_tables from the driver. Signed-off-by: Dmitry Torokhov --- drivers/platform/x86/x86-android-tablets/asus.c | 42 ++++--- drivers/platform/x86/x86-android-tablets/core.c | 44 +++---- drivers/platform/x86/x86-android-tablets/lenovo.c | 79 +++++++----- drivers/platform/x86/x86-android-tablets/other.c | 138 +++++++++++++----= ---- .../x86/x86-android-tablets/x86-android-tablets.h | 10 +- 5 files changed, 177 insertions(+), 136 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/asus.c b/drivers/plat= form/x86/x86-android-tablets/asus.c index ce581d161551..91245f1bfd87 100644 --- a/drivers/platform/x86/x86-android-tablets/asus.c +++ b/drivers/platform/x86/x86-android-tablets/asus.c @@ -10,7 +10,7 @@ =20 #include #include -#include +#include #include =20 #include "shared-psy-info.h" @@ -31,17 +31,29 @@ static const struct platform_device_info asus_me176c_tf= 103c_pdevs[] __initconst }, }; =20 -static const struct x86_gpio_button asus_me176c_tf103c_lid __initconst =3D= { - .button =3D { - .code =3D SW_LID, - .active_low =3D true, - .desc =3D "lid_sw", - .type =3D EV_SW, - .wakeup =3D true, - .debounce_interval =3D 50, - }, - .chip =3D "INT33FC:02", - .pin =3D 12, +static const struct software_node asus_me176c_tf103c_gpio_keys_node =3D { + .name =3D "lid_sw", +}; + +static const struct property_entry asus_me176c_tf103c_lid_props[] =3D { + PROPERTY_ENTRY_U32("linux,input-type", EV_SW), + PROPERTY_ENTRY_U32("linux,code", SW_LID), + PROPERTY_ENTRY_STRING("label", "lid_sw"), + PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpiochip_nodes[2], 12, GPIO_ACTIVE= _LOW), + PROPERTY_ENTRY_U32("debounce-interval", 50), + PROPERTY_ENTRY_BOOL("wakeup-source"), + { } +}; + +static const struct software_node asus_me176c_tf103c_lid_node =3D { + .parent =3D &asus_me176c_tf103c_gpio_keys_node, + .properties =3D asus_me176c_tf103c_lid_props, +}; + +static const struct software_node *asus_me176c_tf103c_lid_swnodes[] =3D { + &asus_me176c_tf103c_gpio_keys_node, + &asus_me176c_tf103c_lid_node, + NULL }; =20 /* Asus ME176C tablets have an Android factory image with everything hardc= oded */ @@ -177,8 +189,7 @@ const struct x86_dev_info asus_me176c_info __initconst = =3D { .pdev_count =3D ARRAY_SIZE(asus_me176c_tf103c_pdevs), .serdev_info =3D asus_me176c_serdevs, .serdev_count =3D ARRAY_SIZE(asus_me176c_serdevs), - .gpio_button =3D &asus_me176c_tf103c_lid, - .gpio_button_count =3D 1, + .gpio_button_swnodes =3D asus_me176c_tf103c_lid_swnodes, .bat_swnode =3D &generic_lipo_hv_4v35_battery_node, .modules =3D bq24190_modules, .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, @@ -301,8 +312,7 @@ const struct x86_dev_info asus_tf103c_info __initconst = =3D { .i2c_client_count =3D ARRAY_SIZE(asus_tf103c_i2c_clients), .pdev_info =3D asus_me176c_tf103c_pdevs, .pdev_count =3D ARRAY_SIZE(asus_me176c_tf103c_pdevs), - .gpio_button =3D &asus_me176c_tf103c_lid, - .gpio_button_count =3D 1, + .gpio_button_swnodes =3D asus_me176c_tf103c_lid_swnodes, .bat_swnode =3D &generic_lipo_4v2_battery_node, .modules =3D bq24190_modules, .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, diff --git a/drivers/platform/x86/x86-android-tablets/core.c b/drivers/plat= form/x86/x86-android-tablets/core.c index 94942921b203..232f6076aa99 100644 --- a/drivers/platform/x86/x86-android-tablets/core.c +++ b/drivers/platform/x86/x86-android-tablets/core.c @@ -152,7 +152,7 @@ static struct i2c_client **i2c_clients; static struct spi_device **spi_devs; static struct platform_device **pdevs; static struct serdev_device **serdevs; -static struct gpio_keys_button *buttons; +static const struct software_node **gpio_button_swnodes; static const struct software_node *bat_swnode; static const struct software_node **gpiochip_node_group; static void (*exit_handler)(void); @@ -374,7 +374,6 @@ static void x86_android_tablet_remove(struct platform_d= evice *pdev) platform_device_unregister(pdevs[i]); =20 kfree(pdevs); - kfree(buttons); =20 for (i =3D spi_dev_count - 1; i >=3D 0; i--) spi_unregister_device(spi_devs[i]); @@ -389,6 +388,9 @@ static void x86_android_tablet_remove(struct platform_d= evice *pdev) if (exit_handler) exit_handler(); =20 + if (gpio_button_swnodes) + software_node_unregister_node_group(gpio_button_swnodes); + if (bat_swnode) software_node_unregister(bat_swnode); =20 @@ -515,38 +517,22 @@ static __init int x86_android_tablet_probe(struct pla= tform_device *pdev) } } =20 - if (dev_info->gpio_button_count) { - struct gpio_keys_platform_data pdata =3D { }; - struct gpio_desc *gpiod; + if (dev_info->gpio_button_swnodes) { + struct platform_device_info button_info =3D { + .name =3D "gpio-keys", + .id =3D PLATFORM_DEVID_AUTO, + }; =20 - buttons =3D kcalloc(dev_info->gpio_button_count, sizeof(*buttons), GFP_K= ERNEL); - if (!buttons) { + ret =3D software_node_register_node_group(dev_info->gpio_button_swnodes); + if (ret < 0) { x86_android_tablet_remove(pdev); - return -ENOMEM; - } - - for (i =3D 0; i < dev_info->gpio_button_count; i++) { - ret =3D x86_android_tablet_get_gpiod(dev_info->gpio_button[i].chip, - dev_info->gpio_button[i].pin, - dev_info->gpio_button[i].button.desc, - false, GPIOD_IN, &gpiod); - if (ret < 0) { - x86_android_tablet_remove(pdev); - return ret; - } - - buttons[i] =3D dev_info->gpio_button[i].button; - buttons[i].gpio =3D desc_to_gpio(gpiod); - /* Release GPIO descriptor so that gpio-keys can request it */ - devm_gpiod_put(&x86_android_tablet_device->dev, gpiod); + return ret; } =20 - pdata.buttons =3D buttons; - pdata.nbuttons =3D dev_info->gpio_button_count; + gpio_button_swnodes =3D dev_info->gpio_button_swnodes; =20 - pdevs[pdev_count] =3D platform_device_register_data(&pdev->dev, "gpio-ke= ys", - PLATFORM_DEVID_AUTO, - &pdata, sizeof(pdata)); + button_info.fwnode =3D software_node_fwnode(dev_info->gpio_button_swnode= s[0]); + pdevs[pdev_count] =3D platform_device_register_full(&button_info); if (IS_ERR(pdevs[pdev_count])) { ret =3D PTR_ERR(pdevs[pdev_count]); x86_android_tablet_remove(pdev); diff --git a/drivers/platform/x86/x86-android-tablets/lenovo.c b/drivers/pl= atform/x86/x86-android-tablets/lenovo.c index 7c6a6fc6be42..0cee7f4f1f98 100644 --- a/drivers/platform/x86/x86-android-tablets/lenovo.c +++ b/drivers/platform/x86/x86-android-tablets/lenovo.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -199,17 +200,34 @@ static const struct x86_serdev_info lenovo_yb1_x90_se= rdevs[] __initconst =3D { }, }; =20 -static const struct x86_gpio_button lenovo_yb1_x90_lid __initconst =3D { - .button =3D { - .code =3D SW_LID, - .active_low =3D true, - .desc =3D "lid_sw", - .type =3D EV_SW, - .wakeup =3D true, - .debounce_interval =3D 50, - }, - .chip =3D "INT33FF:02", - .pin =3D 19, +/* + * Software node attached to gpio-keys device representing the LID and + * serving as a parent to software nodes representing individual keys/butt= ons + * as required by the device tree binding. + */ +static const struct software_node lenovo_lid_gpio_keys_node =3D { + .name =3D "lid_sw", +}; + +static const struct property_entry lenovo_yb1_x90_lid_props[] =3D { + PROPERTY_ENTRY_U32("linux,input-type", EV_SW), + PROPERTY_ENTRY_U32("linux,code", SW_LID), + PROPERTY_ENTRY_STRING("label", "lid_sw"), + PROPERTY_ENTRY_GPIO("gpios", &cherryview_gpiochip_nodes[2], 19, GPIO_ACTI= VE_LOW), + PROPERTY_ENTRY_U32("debounce-interval", 50), + PROPERTY_ENTRY_BOOL("wakeup-source"), + { } +}; + +static const struct software_node lenovo_yb1_x90_lid_node =3D { + .parent =3D &lenovo_lid_gpio_keys_node, + .properties =3D lenovo_yb1_x90_lid_props, +}; + +static const struct software_node *lenovo_yb1_x90_lid_swnodes[] =3D { + &lenovo_lid_gpio_keys_node, + &lenovo_yb1_x90_lid_node, + NULL }; =20 static int __init lenovo_yb1_x90_init(struct device *dev) @@ -238,8 +256,7 @@ const struct x86_dev_info lenovo_yogabook_x90_info __in= itconst =3D { .pdev_count =3D ARRAY_SIZE(lenovo_yb1_x90_pdevs), .serdev_info =3D lenovo_yb1_x90_serdevs, .serdev_count =3D ARRAY_SIZE(lenovo_yb1_x90_serdevs), - .gpio_button =3D &lenovo_yb1_x90_lid, - .gpio_button_count =3D 1, + .gpio_button_swnodes =3D lenovo_yb1_x90_lid_swnodes, .gpiochip_type =3D X86_GPIOCHIP_CHERRYVIEW, .init =3D lenovo_yb1_x90_init, }; @@ -276,17 +293,25 @@ static const struct software_node lenovo_yoga_tab2_83= 0_1050_bq24190_node =3D { .properties =3D lenovo_yoga_tab2_830_1050_bq24190_props, }; =20 -static const struct x86_gpio_button lenovo_yoga_tab2_830_1050_lid __initco= nst =3D { - .button =3D { - .code =3D SW_LID, - .active_low =3D true, - .desc =3D "lid_sw", - .type =3D EV_SW, - .wakeup =3D true, - .debounce_interval =3D 50, - }, - .chip =3D "INT33FC:02", - .pin =3D 26, +static const struct property_entry lenovo_yoga_tab2_830_1050_lid_props[] = =3D { + PROPERTY_ENTRY_U32("linux,input-type", EV_SW), + PROPERTY_ENTRY_U32("linux,code", SW_LID), + PROPERTY_ENTRY_STRING("label", "lid_sw"), + PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpiochip_nodes[2], 26, GPIO_ACTIVE= _LOW), + PROPERTY_ENTRY_U32("debounce-interval", 50), + PROPERTY_ENTRY_BOOL("wakeup-source"), + { } +}; + +static const struct software_node lenovo_yoga_tab2_830_1050_lid_node =3D { + .parent =3D &lenovo_lid_gpio_keys_node, + .properties =3D lenovo_yoga_tab2_830_1050_lid_props, +}; + +static const struct software_node *lenovo_yoga_tab2_830_1050_lid_swnodes[]= =3D { + &lenovo_lid_gpio_keys_node, + &lenovo_yoga_tab2_830_1050_lid_node, + NULL }; =20 /* This gets filled by lenovo_yoga_tab2_830_1050_init() */ @@ -422,8 +447,7 @@ const struct x86_dev_info lenovo_yoga_tab2_830_1050_inf= o __initconst =3D { .i2c_client_count =3D ARRAY_SIZE(lenovo_yoga_tab2_830_1050_i2c_clients), .pdev_info =3D lenovo_yoga_tab2_830_1050_pdevs, .pdev_count =3D ARRAY_SIZE(lenovo_yoga_tab2_830_1050_pdevs), - .gpio_button =3D &lenovo_yoga_tab2_830_1050_lid, - .gpio_button_count =3D 1, + .gpio_button_swnodes =3D lenovo_yoga_tab2_830_1050_lid_swnodes, .bat_swnode =3D &generic_lipo_hv_4v35_battery_node, .modules =3D bq24190_modules, .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, @@ -785,8 +809,7 @@ const struct x86_dev_info lenovo_yoga_tab2_1380_info __= initconst =3D { .i2c_client_count =3D ARRAY_SIZE(lenovo_yoga_tab2_1380_i2c_clients), .pdev_info =3D lenovo_yoga_tab2_1380_pdevs, .pdev_count =3D ARRAY_SIZE(lenovo_yoga_tab2_1380_pdevs), - .gpio_button =3D &lenovo_yoga_tab2_830_1050_lid, - .gpio_button_count =3D 1, + .gpio_button_swnodes =3D lenovo_yoga_tab2_830_1050_lid_swnodes, .bat_swnode =3D &generic_lipo_hv_4v35_battery_node, .modules =3D lenovo_yoga_tab2_1380_modules, .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, diff --git a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/pla= tform/x86/x86-android-tablets/other.c index 38c5e7bd88b0..8bb63546097f 100644 --- a/drivers/platform/x86/x86-android-tablets/other.c +++ b/drivers/platform/x86/x86-android-tablets/other.c @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include #include @@ -115,22 +115,32 @@ const struct x86_dev_info acer_b1_750_info __initcons= t =3D { * which is not described in the ACPI tables in anyway. * Use the x86-android-tablets infra to create a gpio-keys device for this. */ -static const struct x86_gpio_button advantech_mica_071_button __initconst = =3D { - .button =3D { - .code =3D KEY_PROG1, - .active_low =3D true, - .desc =3D "prog1_key", - .type =3D EV_KEY, - .wakeup =3D false, - .debounce_interval =3D 50, - }, - .chip =3D "INT33FC:00", - .pin =3D 2, +static const struct software_node advantech_mica_071_gpio_keys_node =3D { + .name =3D "prog1_key", +}; + +static const struct property_entry advantech_mica_071_prog1_key_props[] = =3D { + PROPERTY_ENTRY_U32("linux,code", KEY_PROG1), + PROPERTY_ENTRY_STRING("label", "prog1_key"), + PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpiochip_nodes[0], 2, GPIO_ACTIVE_= LOW), + PROPERTY_ENTRY_U32("debounce-interval", 50), + { } +}; + +static const struct software_node advantech_mica_071_prog1_key_node =3D { + .parent =3D &advantech_mica_071_gpio_keys_node, + .properties =3D advantech_mica_071_prog1_key_props, +}; + +static const struct software_node *advantech_mica_071_button_swnodes[] =3D= { + &advantech_mica_071_gpio_keys_node, + &advantech_mica_071_prog1_key_node, + NULL }; =20 const struct x86_dev_info advantech_mica_071_info __initconst =3D { - .gpio_button =3D &advantech_mica_071_button, - .gpio_button_count =3D 1, + .gpio_button_swnodes =3D advantech_mica_071_button_swnodes, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; =20 /* @@ -226,36 +236,46 @@ const struct x86_dev_info chuwi_hi8_info __initconst = =3D { * in the button row with the power + volume-buttons labeled P and F. * Use the x86-android-tablets infra to create a gpio-keys device for thes= e. */ -static const struct x86_gpio_button cyberbook_t116_buttons[] __initconst = =3D { - { - .button =3D { - .code =3D KEY_PROG1, - .active_low =3D true, - .desc =3D "prog1_key", - .type =3D EV_KEY, - .wakeup =3D false, - .debounce_interval =3D 50, - }, - .chip =3D "INT33FF:00", - .pin =3D 30, - }, - { - .button =3D { - .code =3D KEY_PROG2, - .active_low =3D true, - .desc =3D "prog2_key", - .type =3D EV_KEY, - .wakeup =3D false, - .debounce_interval =3D 50, - }, - .chip =3D "INT33FF:03", - .pin =3D 48, - }, +static const struct software_node cyberbook_t116_gpio_keys_node =3D { + .name =3D "prog_keys", +}; + +static const struct property_entry cyberbook_t116_prog1_key_props[] =3D { + PROPERTY_ENTRY_U32("linux,code", KEY_PROG1), + PROPERTY_ENTRY_STRING("label", "prog1_key"), + PROPERTY_ENTRY_GPIO("gpios", &cherryview_gpiochip_nodes[0], 30, GPIO_ACTI= VE_LOW), + PROPERTY_ENTRY_U32("debounce-interval", 50), + { } +}; + +static const struct software_node cyberbook_t116_prog1_key_node =3D { + .parent =3D &cyberbook_t116_gpio_keys_node, + .properties =3D cyberbook_t116_prog1_key_props, +}; + +static const struct property_entry cyberbook_t116_prog2_key_props[] =3D { + PROPERTY_ENTRY_U32("linux,code", KEY_PROG2), + PROPERTY_ENTRY_STRING("label", "prog2_key"), + PROPERTY_ENTRY_GPIO("gpios", &cherryview_gpiochip_nodes[3], 48, GPIO_ACTI= VE_LOW), + PROPERTY_ENTRY_U32("debounce-interval", 50), + { } +}; + +static const struct software_node cyberbook_t116_prog2_key_node =3D { + .parent =3D &cyberbook_t116_gpio_keys_node, + .properties =3D cyberbook_t116_prog2_key_props, +}; + +static const struct software_node *cyberbook_t116_buttons_swnodes[] =3D { + &cyberbook_t116_gpio_keys_node, + &cyberbook_t116_prog1_key_node, + &cyberbook_t116_prog2_key_node, + NULL }; =20 const struct x86_dev_info cyberbook_t116_info __initconst =3D { - .gpio_button =3D cyberbook_t116_buttons, - .gpio_button_count =3D ARRAY_SIZE(cyberbook_t116_buttons), + .gpio_button_swnodes =3D cyberbook_t116_buttons_swnodes, + .gpiochip_type =3D X86_GPIOCHIP_CHERRYVIEW, }; =20 #define CZC_EC_EXTRA_PORT 0x68 @@ -495,22 +515,32 @@ const struct x86_dev_info nextbook_ares8a_info __init= const =3D { * This button has a WMI interface, but that is broken. Instead of trying = to * use the broken WMI interface, instantiate a gpio-keys device for this. */ -static const struct x86_gpio_button peaq_c1010_button __initconst =3D { - .button =3D { - .code =3D KEY_SOUND, - .active_low =3D true, - .desc =3D "dolby_key", - .type =3D EV_KEY, - .wakeup =3D false, - .debounce_interval =3D 50, - }, - .chip =3D "INT33FC:00", - .pin =3D 3, +static const struct software_node peaq_c1010_gpio_keys_node =3D { + .name =3D "gpio_keys", +}; + +static const struct property_entry peaq_c1010_dolby_key_props[] =3D { + PROPERTY_ENTRY_U32("linux,code", KEY_SOUND), + PROPERTY_ENTRY_STRING("label", "dolby_key"), + PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpiochip_nodes[0], 3, GPIO_ACTIVE_= LOW), + PROPERTY_ENTRY_U32("debounce-interval", 50), + { } +}; + +static const struct software_node peaq_c1010_dolby_key_node =3D { + .parent =3D &peaq_c1010_gpio_keys_node, + .properties =3D peaq_c1010_dolby_key_props, +}; + +static const struct software_node *peaq_c1010_button_swnodes[] =3D { + &peaq_c1010_gpio_keys_node, + &peaq_c1010_dolby_key_node, + NULL }; =20 const struct x86_dev_info peaq_c1010_info __initconst =3D { - .gpio_button =3D &peaq_c1010_button, - .gpio_button_count =3D 1, + .gpio_button_swnodes =3D peaq_c1010_button_swnodes, + .gpiochip_type =3D X86_GPIOCHIP_BAYTRAIL, }; =20 /* diff --git a/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h= b/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h index d037e3962a51..f4a67a9b74ea 100644 --- a/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h +++ b/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h @@ -11,7 +11,6 @@ #define __PDX86_X86_ANDROID_TABLETS_H =20 #include -#include #include #include #include @@ -81,12 +80,6 @@ struct x86_serdev_info { const char *serdev_hid; }; =20 -struct x86_gpio_button { - struct gpio_keys_button button; - const char *chip; - int pin; -}; - struct x86_dev_info { const char * const *modules; const struct software_node *bat_swnode; @@ -94,12 +87,11 @@ struct x86_dev_info { const struct x86_spi_dev_info *spi_dev_info; const struct platform_device_info *pdev_info; const struct x86_serdev_info *serdev_info; - const struct x86_gpio_button *gpio_button; + const struct software_node **gpio_button_swnodes; int i2c_client_count; int spi_dev_count; int pdev_count; int serdev_count; - int gpio_button_count; int (*init)(struct device *dev); void (*exit)(void); bool use_pci; --=20 2.51.0.rc0.155.g4a0f42376b-goog