From patchwork Tue Apr 30 07:03:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 793655 Received: from mail-yw1-f169.google.com (mail-yw1-f169.google.com [209.85.128.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 65FEEDDAA for ; Tue, 30 Apr 2024 07:03:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714460638; cv=none; b=TjNq7eZD9qS/OdCrqcAX2x4kBP7GTsKx3s7JCDANBZ9PrT+RCoU81q++tFdusaKGf1mD0p9cObTCpMgEk8gThrd2orTROh3trojX2L57MsegI+Fd2bQnr3Suj7jo6n18wz/islNZ4ui4osRmBNuyaOpcrm4kbAVbnhJZCi7jC9M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714460638; c=relaxed/simple; bh=OdoW269dMYChy3+DU+KNyzjUhldkA+9Km5hn1NUmvnI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ALwI1Q2gcSTI3CVyvMT05pNzl48C4sgZf/b3MU+3pTER+4tyjr36HvJyF11m6cm0KbagiG4+0YtodCrxJ5J6aaetp2PU8Q3yseV+s8k9y2tw+zReJrBfI+Wf4O1UIMU3dTswKhMwMl0hDKaxyk0HwnxMrvMTh9OgIC3GrfRoPtk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=JwvfhrWV; arc=none smtp.client-ip=209.85.128.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="JwvfhrWV" Received: by mail-yw1-f169.google.com with SMTP id 00721157ae682-61be4b986aaso12447877b3.3 for ; Tue, 30 Apr 2024 00:03:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714460634; x=1715065434; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=h0ixy7fv19ExAcreEswXg94DycLU86SeU2ojNLlxijk=; b=JwvfhrWVnLdHAtBPIoJ4h+1feKPUE6bgM1Bu+LTzh/Pd3QHdYMS3Y2Y1u5srHRxE0s XqJNaFDS25aHZEjP6OB8Iyg+6UhpIxB7LnfKQu7r1vrJCGrdObRZFebKm60uMYY6Nx0w Ly3WCu4ra6dVdlMsXnMRjNWAIDtI24oAoA0rQVea1fqnFI1p+iUzTupzFjvSEU7TTig2 x6WXgKqZ6VqYq9FrYG++53Y8GRhV998H99lLAKqGfRrVJN7SVU27PaKqTz9UXhQKW7nH f2OP1opO0xUiTWeWmhbJ7otVPgAJSlCVrACK3aBYHPKs7MJNAFmPXU8psn5tkTBj4kAe z5pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714460634; x=1715065434; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=h0ixy7fv19ExAcreEswXg94DycLU86SeU2ojNLlxijk=; b=k43IGDNGiA+YNF5dqn2avabJ82x5VBKVwhAkAmkh1JVStyYb1YMj5oxGONN/fNNb9e M0IR2swDyNspY2F+sQ4xuRbIMqU7crA7L9eIYVtnlxS6358aUCGWVH16C/rMg1fI+EyI Fzn6evSsjMODlulvdS3kpp+fq4bP4nfBF1/oOIXl8PX9iysA5TBd3/IGuCYiR9nA2buv LWNqzVL5RWei9WZd5DN9BiOEUoogc9K879VfrZGKGV5xnohrlwkRxBtkQe68NhLV2+vb HGeddz6BcFBaxOAVhsMEJIiHtgVdCK89LkCU9LrjwqCb7tJoIbec3f2kTwnZ7G0vJVG6 rp/w== X-Forwarded-Encrypted: i=1; AJvYcCWgy3zdpDvlYyR7ffbEfEkikA48lmna52waINCMNXCqRw8TkfdCA2PPDpHsfaQuC6zc2tC/+C0sRchgaRwsMpLeciYz5RdaHHqE X-Gm-Message-State: AOJu0YzScMdibXv9TGLyDyj9BGnboyFAcgoJOYuyk5Z0MOZObX16lork NbE1wG1Qjo8MGFy9V/92BW7MWDX6SMzzHCpvosEWNtvWxONJWowIuBoqQJTyi1g= X-Google-Smtp-Source: AGHT+IFhrTYVyGAxSgGpphlVFdD7358nVt142kj/csynXWwvRVabPFRJKNRP1Kglb24GmrH2zD4MsQ== X-Received: by 2002:a05:690c:e:b0:61a:d2a0:5497 with SMTP id bc14-20020a05690c000e00b0061ad2a05497mr14316415ywb.8.1714460634450; Tue, 30 Apr 2024 00:03:54 -0700 (PDT) Received: from [192.168.1.140] ([85.235.12.238]) by smtp.gmail.com with ESMTPSA id z11-20020a05622a124b00b00437b4048972sm10610674qtx.18.2024.04.30.00.03.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Apr 2024 00:03:53 -0700 (PDT) From: Linus Walleij Date: Tue, 30 Apr 2024 09:03:47 +0200 Subject: [PATCH 1/3] ARM: spitz: Convert Spitz board to GPIO descriptors for LEDs Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240430-gpio-leds-miscarm-v1-1-9c94d7711f6c@linaro.org> References: <20240430-gpio-leds-miscarm-v1-0-9c94d7711f6c@linaro.org> In-Reply-To: <20240430-gpio-leds-miscarm-v1-0-9c94d7711f6c@linaro.org> To: Daniel Mack , Haojian Zhuang , Robert Jarzmik , Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-arm-kernel@lists.infradead.org, linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, Linus Walleij X-Mailer: b4 0.13.0 This makes the LEDs on the PXA Spitz board use GPIO descriptors instead of hardcoded GPIOs from the global numberspace. Signed-off-by: Linus Walleij --- arch/arm/mach-pxa/spitz.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index cc691b199429..36aec5ea7218 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c @@ -456,12 +456,21 @@ static struct gpio_led spitz_gpio_leds[] = { { .name = "spitz:amber:charge", .default_trigger = "sharpsl-charge", - .gpio = SPITZ_GPIO_LED_ORANGE, }, { .name = "spitz:green:hddactivity", .default_trigger = "disk-activity", - .gpio = SPITZ_GPIO_LED_GREEN, + }, +}; + +static struct gpiod_lookup_table spitz_gpio_leds_table = { + .dev_id = "leds-gpio", + .table = { + GPIO_LOOKUP_IDX("gpio-pxa", SPITZ_GPIO_LED_ORANGE, NULL, + 0, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP_IDX("gpio-pxa", SPITZ_GPIO_LED_GREEN, NULL, + 1, GPIO_ACTIVE_HIGH), + { }, }, }; @@ -480,6 +489,7 @@ static struct platform_device spitz_led_device = { static void __init spitz_leds_init(void) { + gpiod_add_lookup_table(&spitz_gpio_leds_table); platform_device_register(&spitz_led_device); } #else From patchwork Tue Apr 30 07:03:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 794069 Received: from mail-qt1-f172.google.com (mail-qt1-f172.google.com [209.85.160.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 1CBFE20DC5 for ; Tue, 30 Apr 2024 07:03:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714460640; cv=none; b=EW7IFGEcAzPucyJS4b5mPk1XwUuhSFCqxAVkXkrAprZTExW3cwbvlWt/+e89w2WXZqmw8PkrnvBoGADj42CQ9vwQ/DmjMUErHbQSrejPCtQJFL+hfckKJzWfF1KFjvBPe5TZnaJkSRd15qOG4xl0M9sFaRlC05O+l94YO8iRKVc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714460640; c=relaxed/simple; bh=tddqyXaqrdWcIL9CqiT+CC+10z+MZrv14j8mNdRJWcY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nert7He4CsmdTY/SAA0wwL+h8xqEvvj90gbct+0gCQY1XPu7QDEja6TtTOuN5Dbn7j9qXmDQQR5oK7ate7tDbXigKuHPfdHaZCBR59Y37cRNS1B7+DFLeWK8Znz8KcR1xPcb6wLp4sLnU1O1YpxunnR4VnKJGEPmiJsWoInvE0o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=wMGB/XBe; arc=none smtp.client-ip=209.85.160.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="wMGB/XBe" Received: by mail-qt1-f172.google.com with SMTP id d75a77b69052e-434d0f63c31so33890141cf.1 for ; Tue, 30 Apr 2024 00:03:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714460638; x=1715065438; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=hWNjW60aZKX5jQpzSVa+3L0ZlYdpkfiGuBdJTkw92uw=; b=wMGB/XBexdohr+aq6U0avqXgfgwSGpDhRnXPkHE7RkhdA9yRxvLvu1tBhP5+B4Uz3I sWgAH/TMh7NDY3eDUElgCwrAVHgVoqRNYigeNmBLnqIezWea2lS+SpA99sieRaXkAKVl 63ukowCEBy76I+4OgbS8m0lRRmJhZlcZbr500ri0H1SbCWIxYcVGBu93dUhgwgZhnAV4 J10E8FhIh4sdQwVKJKTxm7Do6P4ULKka3dmtTg7NGkOf0Ehu85zPiBvMLA8P2a9r0Q2S nFEpa9KBcE6gIlP+kX16bwqiwer+e8te3Vwc2nWAf09zdHISfxvZUlAbg1LrHGjUZo2b Gohw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714460638; x=1715065438; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hWNjW60aZKX5jQpzSVa+3L0ZlYdpkfiGuBdJTkw92uw=; b=RV6rUsmf+HkRtts1de7ZRHByTqgtGwls9Xbxds3gp06TFH6SGzLZq8Jngy3pYczdCI eEa0jStvl4o2D9RcIwwURHiRutPhgyAQIrXVJ/N3aQ8fvE7FR9mBsMrIyW7pZT7eSqia z22BXG0X75DRysQIZipEmQB5MNWZm81Im23baAXMhWuGat6EyddepaEtYCpKvY4lqBSu WWKcNdO7cFvb6KS0vDgAWUwqwcfw6he/98e7fm+zP+AsNED66FO2qgE+YC6q30iKgFRo Tq2hzPpNxws3pK0tu9v4nAgTzKcotIdm+VynvrSfFvVq9ONq5inp1FTzBTKIINXzlXVw 116Q== X-Forwarded-Encrypted: i=1; AJvYcCVFE2rJjxllQSTf8FdgxDWZ7Hc+VJD/MZPaUBfLWAmFLDndN6KddAiTUsU+Sga4DLvE4Dy0qBG0RG1D9h27k+pIFNPvczeezuaQ X-Gm-Message-State: AOJu0YwBHJm6Z/ZUBSEpzCfAc1TX4JdrBFs8azCsrSaO6dLkIFpTklbs cGdrSAKZ585x7Tc7jaUUYI62ZAM6PzUC5j9y+b+4ojALAmyFKNlqX+09IoHS+Bs= X-Google-Smtp-Source: AGHT+IEU/3GWwmwnmPs3D59TLtthT2pwdifoVroVuPln6HkSH63EZK0OfBAJKGQNGC3Wl+aDomxINg== X-Received: by 2002:a05:622a:2c5:b0:43a:e716:ac3a with SMTP id a5-20020a05622a02c500b0043ae716ac3amr1631514qtx.63.1714460637882; Tue, 30 Apr 2024 00:03:57 -0700 (PDT) Received: from [192.168.1.140] ([85.235.12.238]) by smtp.gmail.com with ESMTPSA id z11-20020a05622a124b00b00437b4048972sm10610674qtx.18.2024.04.30.00.03.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Apr 2024 00:03:57 -0700 (PDT) From: Linus Walleij Date: Tue, 30 Apr 2024 09:03:48 +0200 Subject: [PATCH 2/3] dt-bindings: ads7846: Add hsync-gpios Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240430-gpio-leds-miscarm-v1-2-9c94d7711f6c@linaro.org> References: <20240430-gpio-leds-miscarm-v1-0-9c94d7711f6c@linaro.org> In-Reply-To: <20240430-gpio-leds-miscarm-v1-0-9c94d7711f6c@linaro.org> To: Daniel Mack , Haojian Zhuang , Robert Jarzmik , Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-arm-kernel@lists.infradead.org, linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, Linus Walleij X-Mailer: b4 0.13.0 The TI ADS7846 emits a horizontal sync signal that is usually connected to a GPIO for polling. Add a binding for this. Signed-off-by: Linus Walleij --- Documentation/devicetree/bindings/input/touchscreen/ads7846.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/input/touchscreen/ads7846.txt b/Documentation/devicetree/bindings/input/touchscreen/ads7846.txt index 81f6bda97d3c..399c87782935 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/ads7846.txt +++ b/Documentation/devicetree/bindings/input/touchscreen/ads7846.txt @@ -57,6 +57,7 @@ Optional properties: pendown-gpio (u32). pendown-gpio GPIO handle describing the pin the !PENIRQ line is connected to. + ti,hsync-gpios GPIO line to poll for hsync wakeup-source use any event on touchscreen as wakeup event. (Legacy property support: "linux,wakeup") touchscreen-size-x General touchscreen binding, see [1]. From patchwork Tue Apr 30 07:03:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 793654 Received: from mail-yw1-f180.google.com (mail-yw1-f180.google.com [209.85.128.180]) (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 84C2E2C184 for ; Tue, 30 Apr 2024 07:04:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714460643; cv=none; b=pzTdkp6qpgE1YmX4mZQe65xus59lfWt+/ohnCGZC4MSClRUOOJ+GaCA1Q8qsKld6PDMq8OxOGSNZgUep6cIkPH0jgZFUic1nJjVPePF/mp/yc+OOS7oUGoz02a9Q8KumFfzDF7EHgTbemWZBnP6XO7VyVk6EnQjO9TZt2worsJQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714460643; c=relaxed/simple; bh=vdUPsMOwCHqb5JL3PZ6m7cOn71ZF9nAaN/WgxbULW3o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=U7SCN75bcNCA7X0bojVUtqCdKXGPVuklmiC9JVJl3V+5AEnETarv5rth1fxRynN3Eoev3rxXwmQYe7AgdsALzhSA1g0ajhczMvQsx5WgsG03gSJFITwSGf/r5o65DP1ymuW4CUfm25vJsXLwAOMcT+bGWU6NgxXK19JsswbEMKE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=lWEjZLfR; arc=none smtp.client-ip=209.85.128.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="lWEjZLfR" Received: by mail-yw1-f180.google.com with SMTP id 00721157ae682-61b4cbb8834so53535227b3.0 for ; Tue, 30 Apr 2024 00:04:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714460640; x=1715065440; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=KoVXdJHVeZxp0h1BU5LvQei6P82WebLM3hF8pbM4pmY=; b=lWEjZLfRkW8q7cMcejBct3ufTfBXCRjn1mrsF536/BC6eeByfLzvRb6tPDRgnQYG6w 6slNF8/QNnWIg3bqhbjQ7T1zyLqLljO2vb5Ar4/Piq9l/ehDPfEVfxr7bfhUHi7h8Yro XJKTD6w0EYqlJ8oa9RX3AjG6UwJrRuDeyP2tmxQRyyZhcc0fc4TBGMGTNm2mB3I8ShKS SMvroiUiIhk5xHxZHrQKQHF/jEbBMxr+mm1dx0KSGRXeK3ranyl0syOHbc4HyW0F7/KB uR7/zOYw+KvFmyirof2jY0AZNeAKfqPiaG5nBwYpj6rwSZBTDbw1p1SlI8D4Jm2NmTN7 N0TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714460640; x=1715065440; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KoVXdJHVeZxp0h1BU5LvQei6P82WebLM3hF8pbM4pmY=; b=ggN1dMw7guq+MA2G8HddIm6jC7yD3NM8SWH3UdYaChszHhHmkvZl4MeNYTmNzTrfwS e9Ybh1gi2ecleVnYWqVcQIpggpB1TZJIRRXVdbgSU4diGwAB1duK0DV8uLSoGhERT913 81Y9x+8SzQs/Ns/p0c3PSr05RxViCUABAf/rrHVhlw96fKJUCtcPG5bOmXTiT9DTaXYd HKZGqlFU3TlMo7XvcIZ8bDypIUGaX5DYR9i61IrBebuLJaaKj5Uuiln51mwRdhY4NKMg N1hzIggbIMnu1jujvwOWnWe4b/nRdaWx2WsMr/MZ08aNC2XmSL5ltTZ5EUOEXid0yyf3 5Ayw== X-Forwarded-Encrypted: i=1; AJvYcCXEzUwCeyd/C3qBietYxGJ/rLLAz0FkwStIyEw0ewEycuoAtWOBl8klp75HyCeMyiRv2SMf+L6B8MGye4jSjSkNEjLOeiTWXZUb X-Gm-Message-State: AOJu0Yz+19roe3LRWO4OG040SXt0pW3JmIlwwHxf11Y3oUOSVwc6Hcaa /6inphfoWsfGyEOqKM/ltx8hTjpfWhKoD/aL+6vblo9XeYv8xNGDadR8dMCKpXM= X-Google-Smtp-Source: AGHT+IHXJG0jZ+ap33XuddrE18N0BzMWLMOPQO8fdp8ZhqWudDeBaHWjUjCu0mS4rRaJ83Ykfd81Tw== X-Received: by 2002:a05:690c:690f:b0:615:1413:95c1 with SMTP id if15-20020a05690c690f00b00615141395c1mr12191954ywb.19.1714460640536; Tue, 30 Apr 2024 00:04:00 -0700 (PDT) Received: from [192.168.1.140] ([85.235.12.238]) by smtp.gmail.com with ESMTPSA id z11-20020a05622a124b00b00437b4048972sm10610674qtx.18.2024.04.30.00.03.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Apr 2024 00:04:00 -0700 (PDT) From: Linus Walleij Date: Tue, 30 Apr 2024 09:03:49 +0200 Subject: [PATCH 3/3] ARM: spitz: Use software nodes for the ADS7846 touchscreen Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240430-gpio-leds-miscarm-v1-3-9c94d7711f6c@linaro.org> References: <20240430-gpio-leds-miscarm-v1-0-9c94d7711f6c@linaro.org> In-Reply-To: <20240430-gpio-leds-miscarm-v1-0-9c94d7711f6c@linaro.org> To: Daniel Mack , Haojian Zhuang , Robert Jarzmik , Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-arm-kernel@lists.infradead.org, linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, Linus Walleij X-Mailer: b4 0.13.0 Convert the Spitz to use software nodes for SPI CS and the ADS7846 touchscreen following the pattern used in the TI platforms. The Spitz is the only user of the wait_for_sync() callback in the platform data, so define that this is a separate GPIO in the device tree bindings (previous patch) and handle this directly inside the ADS7846 driver instead. Add some infrastructure to the PXA boardfile common code to handle software nodes attached to the SPI bus instead of platform data. The SPI core will investigate the numner of GPIO handles to figure out the number of chipselects used on the platform, so no explicit encoding of the number of the number of chipselects is needed. Signed-off-by: Linus Walleij --- arch/arm/mach-pxa/devices.c | 16 ++++++++ arch/arm/mach-pxa/spitz.c | 75 +++++++++++++++++++------------------ drivers/input/touchscreen/ads7846.c | 31 ++++++++++----- include/linux/spi/ads7846.h | 1 - include/linux/spi/pxa2xx_spi.h | 2 + 5 files changed, 78 insertions(+), 47 deletions(-) diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c index 661b3fc43275..e0e21cb97f71 100644 --- a/arch/arm/mach-pxa/devices.c +++ b/arch/arm/mach-pxa/devices.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include "udc.h" @@ -682,6 +683,21 @@ void __init pxa2xx_set_spi_info(unsigned id, struct pxa2xx_spi_controller *info) platform_device_add(pd); } +void __init pxa2xx_set_spi_node(unsigned id, const struct property_entry *props) +{ + struct platform_device *pd; + + pd = platform_device_alloc("pxa2xx-spi", id); + if (pd == NULL) { + printk(KERN_ERR "pxa2xx-spi: failed to allocate device id %d\n", + id); + return; + } + + device_create_managed_software_node(&pd->dev, props, NULL); + platform_device_add(pd); +} + static struct resource pxa_dma_resource[] = { [0] = { .start = 0x40000000, diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 36aec5ea7218..bc93ceed0022 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -28,6 +29,7 @@ #include #include #include +#include #include #include @@ -128,6 +130,15 @@ static unsigned long spitz_pin_config[] __initdata = { GPIO1_GPIO | WAKEUP_ON_EDGE_FALL, /* SPITZ_GPIO_RESET */ }; +static const struct software_node pxa_gpiochip_node = { + .name = "gpio-pxa", +}; + +static const struct software_node *spitz_gpiochip_nodes[] = { + &pxa_gpiochip_node, + /* TODO: add the GPIO expander nodes here */ + NULL +}; /****************************************************************************** * Scoop GPIO expander @@ -500,31 +511,23 @@ static inline void spitz_leds_init(void) {} * SSP Devices ******************************************************************************/ #if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) -static void spitz_ads7846_wait_for_hsync(void) -{ - while (gpio_get_value(SPITZ_GPIO_HSYNC)) - cpu_relax(); - - while (!gpio_get_value(SPITZ_GPIO_HSYNC)) - cpu_relax(); -} -static struct ads7846_platform_data spitz_ads7846_info = { - .model = 7846, - .vref_delay_usecs = 100, - .x_plate_ohms = 419, - .y_plate_ohms = 486, - .pressure_max = 1024, - .wait_for_sync = spitz_ads7846_wait_for_hsync, +static const struct property_entry spitz_ads7846_props[] = { + PROPERTY_ENTRY_STRING("compatible", "ti,ads7846"), + PROPERTY_ENTRY_U32("touchscreen-max-pressure", 1024), + PROPERTY_ENTRY_U16("ti,x-plate-ohms", 419), + PROPERTY_ENTRY_U16("ti,y-plate-ohms", 486), + PROPERTY_ENTRY_U16("ti,vref-delay-usecs", 100), + PROPERTY_ENTRY_GPIO("pendown-gpios", &pxa_gpiochip_node, + SPITZ_GPIO_TP_INT, GPIO_ACTIVE_LOW), + PROPERTY_ENTRY_GPIO("ti,hsync-gpios", &pxa_gpiochip_node, + SPITZ_GPIO_HSYNC, GPIO_ACTIVE_LOW), + { } }; -static struct gpiod_lookup_table spitz_ads7846_gpio_table = { - .dev_id = "spi2.0", - .table = { - GPIO_LOOKUP("gpio-pxa", SPITZ_GPIO_TP_INT, - "pendown", GPIO_ACTIVE_LOW), - { } - }, +static const struct software_node spitz_ads7846_swnode = { + .name = "ads7846", + .properties = spitz_ads7846_props, }; static struct gpiod_lookup_table spitz_lcdcon_gpio_table = { @@ -563,8 +566,7 @@ static struct spi_board_info spitz_spi_devices[] = { .max_speed_hz = 1200000, .bus_num = 2, .chip_select = 0, - .platform_data = &spitz_ads7846_info, - .irq = PXA_GPIO_TO_IRQ(SPITZ_GPIO_TP_INT), + .swnode = &spitz_ads7846_swnode, }, { .modalias = "corgi-lcd", .max_speed_hz = 50000, @@ -579,18 +581,18 @@ static struct spi_board_info spitz_spi_devices[] = { }, }; -static struct pxa2xx_spi_controller spitz_spi_info = { - .num_chipselect = 3, +static const struct software_node_ref_args spitz_spi_gpio_refs[] = { + SOFTWARE_NODE_REFERENCE(&pxa_gpiochip_node, SPITZ_GPIO_ADS7846_CS, + GPIO_ACTIVE_LOW), + SOFTWARE_NODE_REFERENCE(&pxa_gpiochip_node, SPITZ_GPIO_LCDCON_CS, + GPIO_ACTIVE_LOW), + SOFTWARE_NODE_REFERENCE(&pxa_gpiochip_node, SPITZ_GPIO_MAX1111_CS, + GPIO_ACTIVE_LOW), }; -static struct gpiod_lookup_table spitz_spi_gpio_table = { - .dev_id = "spi2", - .table = { - GPIO_LOOKUP_IDX("gpio-pxa", SPITZ_GPIO_ADS7846_CS, "cs", 0, GPIO_ACTIVE_LOW), - GPIO_LOOKUP_IDX("gpio-pxa", SPITZ_GPIO_LCDCON_CS, "cs", 1, GPIO_ACTIVE_LOW), - GPIO_LOOKUP_IDX("gpio-pxa", SPITZ_GPIO_MAX1111_CS, "cs", 2, GPIO_ACTIVE_LOW), - { }, - }, +static const struct property_entry spitz_spi_props[] = { + PROPERTY_ENTRY_REF_ARRAY("gpios", spitz_spi_gpio_refs), + { } }; static void __init spitz_spi_init(void) @@ -600,9 +602,7 @@ static void __init spitz_spi_init(void) else gpiod_add_lookup_table(&spitz_lcdcon_gpio_table); - gpiod_add_lookup_table(&spitz_ads7846_gpio_table); - gpiod_add_lookup_table(&spitz_spi_gpio_table); - pxa2xx_set_spi_info(2, &spitz_spi_info); + pxa2xx_set_spi_node(2, spitz_spi_props); spi_register_board_info(ARRAY_AND_SIZE(spitz_spi_devices)); } #else @@ -1007,6 +1007,7 @@ static void spitz_restart(enum reboot_mode mode, const char *cmd) static void __init spitz_init(void) { + software_node_register_node_group(spitz_gpiochip_nodes); init_gpio_reset(SPITZ_GPIO_ON_RESET, 1, 0); pm_power_off = spitz_poweroff; diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c index d2bbb436a77d..af02f70e66fc 100644 --- a/drivers/input/touchscreen/ads7846.c +++ b/drivers/input/touchscreen/ads7846.c @@ -138,8 +138,7 @@ struct ads7846 { void *filter_data; int (*get_pendown_state)(void); struct gpio_desc *gpio_pendown; - - void (*wait_for_sync)(void); + struct gpio_desc *gpio_hsync; }; enum ads7846_filter { @@ -634,10 +633,6 @@ ATTRIBUTE_GROUPS(ads784x); /*--------------------------------------------------------------------------*/ -static void null_wait_for_sync(void) -{ -} - static int ads7846_debounce_filter(void *ads, int data_idx, int *val) { struct ads7846 *ts = ads; @@ -790,6 +785,23 @@ static int ads7846_filter(struct ads7846 *ts) return 0; } +static void ads7846_wait_for_hsync(struct ads7846 *ts) +{ + if (!ts->gpio_hsync) + return; + + /* + * Wait for HSYNC to assert the line should be flagged + * as active low so here we are waiting for it to assert + */ + while (!gpiod_get_value(ts->gpio_hsync)) + cpu_relax(); + + /* Then we wait for it do de-assert */ + while (gpiod_get_value(ts->gpio_hsync)) + cpu_relax(); +} + static void ads7846_read_state(struct ads7846 *ts) { struct ads7846_packet *packet = ts->packet; @@ -800,8 +812,7 @@ static void ads7846_read_state(struct ads7846 *ts) packet->last_cmd_idx = 0; while (true) { - ts->wait_for_sync(); - + ads7846_wait_for_hsync(ts); m = &ts->msg[msg_idx]; error = spi_sync(ts->spi, m); if (error) { @@ -1258,7 +1269,9 @@ static int ads7846_probe(struct spi_device *spi) ts->penirq_recheck_delay_usecs = pdata->penirq_recheck_delay_usecs; - ts->wait_for_sync = pdata->wait_for_sync ? : null_wait_for_sync; + ts->gpio_hsync = devm_gpiod_get_optional(dev, "ti,hsync", GPIOD_IN); + if (IS_ERR(ts->gpio_hsync)) + return PTR_ERR(ts->gpio_hsync); snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(dev)); snprintf(ts->name, sizeof(ts->name), "ADS%d Touchscreen", ts->model); diff --git a/include/linux/spi/ads7846.h b/include/linux/spi/ads7846.h index a04c1c34c344..fa7c4f119023 100644 --- a/include/linux/spi/ads7846.h +++ b/include/linux/spi/ads7846.h @@ -38,7 +38,6 @@ struct ads7846_platform_data { int gpio_pendown_debounce; /* platform specific debounce time for * the gpio_pendown */ int (*get_pendown_state)(void); - void (*wait_for_sync)(void); bool wakeup; unsigned long irq_flags; }; diff --git a/include/linux/spi/pxa2xx_spi.h b/include/linux/spi/pxa2xx_spi.h index ca2cd4e30ead..d166d4469fec 100644 --- a/include/linux/spi/pxa2xx_spi.h +++ b/include/linux/spi/pxa2xx_spi.h @@ -6,6 +6,7 @@ #define __LINUX_SPI_PXA2XX_SPI_H #include +#include #include #include @@ -50,6 +51,7 @@ struct pxa2xx_spi_chip { #include extern void pxa2xx_set_spi_info(unsigned id, struct pxa2xx_spi_controller *info); +void pxa2xx_set_spi_node(unsigned id, const struct property_entry *props); #endif