From patchwork Fri Oct 30 00:20:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 319949 Delivered-To: patch@linaro.org Received: by 2002:a92:7b12:0:0:0:0:0 with SMTP id w18csp948430ilc; Thu, 29 Oct 2020 17:26:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJytCeTs71k8Fr+RGd8XReQ/1ucg8YcqrQlPdJ1glaQRaq1K7krX3bFRYb8wuaHEKS+xt3U5 X-Received: by 2002:aa7:80d9:0:b029:164:be9b:2b13 with SMTP id a25-20020aa780d90000b0290164be9b2b13mr4801290pfn.12.1604017344114; Thu, 29 Oct 2020 17:22:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1604017344; cv=none; d=google.com; s=arc-20160816; b=BqYxaEoi+P0jgZ+w8HzdVbuT0QqRJwUTvUc/ubzIqYWxLUGwCZLi1IchaAH6YeM567 hAwmebYawpDi+9D8HncGu0rrHXkrl03jkZcg7P4r8+Kk6ZmcsoZEoXoZxJ7N/CS0p2VR oXQKDCJc+o0mA/mFT+HDZ3kesl9q/IfvI3+AB6RrE6HY/QLA+kXQNYeqL9d3r9Fh4qd7 zCufM1Z1cOFh5dOh5OXWX2buQVJ3M/HnMm3QapB3Rvskwia6SSr5sxFuo9sFz9ZczQWo rtAzCnDzGtUIh5HCQnPPKSm/CdYILiibVKgPjGDXBCdd1qAoDwcNRkBLxwAqaOrq/PWO HP5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:mime-version:message-id:date:subject:to:from :dkim-signature:delivered-to; bh=Gup6Qb6Yrowh+tMlQLSK299KhUxjsxrGAWWYMfuYiQ4=; b=mYP9/2lxAQo+Pb5XiLy7fSAk6U2S8M31X1E8AVdoYq4IN6b26m36T6Sjwd2sSA1yuT JDl55JXOm6eSRI5tOy5QaFHYt0WKmLOjKGmo2sfsrtw66zgbvzzcA7VkrpXZwTxzW0AB cei88gj+ZsP0kRP7GjI1hz+zd6hBr3Jn1jL2eUiFYxvAYFCwWt6kd//hPqjRGB6+XEGb 7fEYw+aH4BTLEkMqvMaXSQUzKVCtwLrhX7uYVR4YMRBsMforOmifIYfrSOKyl+gPaeVU 9uYkZNq95WqheT58eP4zvrYA3GCf4v2n/yh8hcNrj1TEp3lNIkSN63kA/84V05OtrBSs CIUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=cAF5FwPj; spf=pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 2610:10:20:722:a800:ff:fe36:1795 as permitted sender) smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from gabe.freedesktop.org (gabe.freedesktop.org. [2610:10:20:722:a800:ff:fe36:1795]) by mx.google.com with ESMTPS id m16si4535078pfo.178.2020.10.29.17.22.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Oct 2020 17:22:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 2610:10:20:722:a800:ff:fe36:1795 as permitted sender) client-ip=2610:10:20:722:a800:ff:fe36:1795; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=cAF5FwPj; spf=pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 2610:10:20:722:a800:ff:fe36:1795 as permitted sender) smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 936906E92E; Fri, 30 Oct 2020 00:22:20 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-lf1-x143.google.com (mail-lf1-x143.google.com [IPv6:2a00:1450:4864:20::143]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9A0236E92E for ; Fri, 30 Oct 2020 00:22:18 +0000 (UTC) Received: by mail-lf1-x143.google.com with SMTP id y184so3696198lfa.12 for ; Thu, 29 Oct 2020 17:22:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=xipQ6aUzBVzB1CHWTY7FgK2vk1NuZMyQfAOvhMivv3I=; b=cAF5FwPj+qbwet5rfWc6MRHNpmDegGYW6S2PAg+qleokZ+fcqlBD132UIgOOvH/rx0 uQgU5wUXEiVax8tg3IdPgFEz3q7/c9l41naD8Tloabvnq+peravcHbUwSSaKk43WFqRG HMhiC7Z/My0I2ueK4XEJVVHfcwwg8eljb8l9zyB9s+ZGf2rm2kI0eP2qlFU9fNDz0a2B iyRvr/iDniUW2YMt4dBlQFjvWdgX/57bBdISZWeJS0p+GPXRe3vGWLm2hEHiLqhkjQbA jsRRYHeW+w2IKCI4LfNg1KCJKkvxHMLVOkcDJriFfKvgJGKp5s3w5ZMPMdW0C1tqcx9X s3Qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=xipQ6aUzBVzB1CHWTY7FgK2vk1NuZMyQfAOvhMivv3I=; b=DO10p9p//LyTwaRn0zUYfePEXBroLc5VbXUnLUNaLrVwJ/GXT4xN0MYSn85QlzI2rl M0h99R442cYcYLtPy0u4iPA+yMcU3okl3Qj/oqeqbxOvSA+NCSD9LdOBuigPCYYDIGmW 8otcgRQ/6aIbROsIebR8YLt2Dv4NatXEHEjqX7dy3wz5rfbPhEog0sKTCoR7mkx1uIr0 sUV/jqQCLSeSNFBk9UuHYt1dlTMAT50KOaVg+ntAky2nMKIzQztbeX5se02KB7oK3rRu bJWINMlDBXAyOD8lkxxokR6ItJSU2SCc7K4fKUZdfaF55pmjVjJwx6n30IN0ceMj6uV7 rkXQ== X-Gm-Message-State: AOAM530/QhIUnOoBgHn5zBtqaLuuXWm9HRUfdcC1UhajU55iFE2HpAOU s8JCts+PLeFaD6bSGvctTfIm/Q== X-Received: by 2002:ac2:5294:: with SMTP id q20mr2720557lfm.538.1604017337049; Thu, 29 Oct 2020 17:22:17 -0700 (PDT) Received: from localhost.localdomain (c-92d7225c.014-348-6c756e10.bbcust.telenor.se. [92.34.215.146]) by smtp.gmail.com with ESMTPSA id 18sm506889ljq.0.2020.10.29.17.22.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Oct 2020 17:22:16 -0700 (PDT) From: Linus Walleij To: Lee Jones , Daniel Thompson , Jingoo Han , dri-devel@lists.freedesktop.org Subject: [PATCH v7] backlight: lms283gf05: Convert to GPIO descriptors Date: Fri, 30 Oct 2020 01:20:14 +0100 Message-Id: <20201030002014.5398-1-linus.walleij@linaro.org> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Marek Vasut , Robert Jarzmik , Haojian Zhuang , Daniel Mack Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" This converts the lms283gf05 backlight driver to use GPIO descriptors and switches the single PXA Palm Z2 device over to defining these. Since the platform data was only used to convey GPIO information we can delete the platform data header. Notice that we define the proper active low semantics in the board file GPIO descriptor table (active low) and assert the reset line by bringing it to "1" (asserted). Cc: Marek Vasut Cc: Daniel Mack Cc: Haojian Zhuang Cc: Robert Jarzmik Reviewed-by: Daniel Thompson Signed-off-by: Linus Walleij --- ChangeLog v6->v7: - Rebase onto v5.10-rc1 ChangeLog v5->v6: - Rebase onto v5.9-rc1 ChangeLog v4->v5: - Rebase on v5.8-rc1 - Collected Daniel's Reviewed-by tag. ChangeLog v3->v4: - Check IS_ERR() on the returned GPIO descriptor. - Unconditionally set consumer name since the API tolerates NULL. ChangeLog v2->v3: - Fix a use-before-allocated bug discovered by compile tests. - Remove unused ret variable as autobuilders complained. ChangeLog v1->v2: - Bring up the GPIO de-asserted in probe() Marek: I saw this was written by you, are you regularly testing the Z2 device? --- arch/arm/mach-pxa/z2.c | 12 +++++--- drivers/video/backlight/lms283gf05.c | 43 +++++++++++----------------- include/linux/spi/lms283gf05.h | 16 ----------- 3 files changed, 25 insertions(+), 46 deletions(-) delete mode 100644 include/linux/spi/lms283gf05.h -- 2.26.2 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel diff --git a/arch/arm/mach-pxa/z2.c b/arch/arm/mach-pxa/z2.c index 21fd76bb09cd..89eb5243c85f 100644 --- a/arch/arm/mach-pxa/z2.c +++ b/arch/arm/mach-pxa/z2.c @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include @@ -578,8 +577,13 @@ static struct pxa2xx_spi_chip lms283_chip_info = { .gpio_cs = GPIO88_ZIPITZ2_LCD_CS, }; -static const struct lms283gf05_pdata lms283_pdata = { - .reset_gpio = GPIO19_ZIPITZ2_LCD_RESET, +static struct gpiod_lookup_table lms283_gpio_table = { + .dev_id = "spi2.0", /* SPI bus 2 chip select 0 */ + .table = { + GPIO_LOOKUP("gpio-pxa", GPIO19_ZIPITZ2_LCD_RESET, + "reset", GPIO_ACTIVE_LOW), + { }, + }, }; static struct spi_board_info spi_board_info[] __initdata = { @@ -595,7 +599,6 @@ static struct spi_board_info spi_board_info[] __initdata = { { .modalias = "lms283gf05", .controller_data = &lms283_chip_info, - .platform_data = &lms283_pdata, .max_speed_hz = 400000, .bus_num = 2, .chip_select = 0, @@ -615,6 +618,7 @@ static void __init z2_spi_init(void) { pxa2xx_set_spi_info(1, &pxa_ssp1_master_info); pxa2xx_set_spi_info(2, &pxa_ssp2_master_info); + gpiod_add_lookup_table(&lms283_gpio_table); spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); } #else diff --git a/drivers/video/backlight/lms283gf05.c b/drivers/video/backlight/lms283gf05.c index 0e45685bcc1c..36856962ed83 100644 --- a/drivers/video/backlight/lms283gf05.c +++ b/drivers/video/backlight/lms283gf05.c @@ -9,16 +9,16 @@ #include #include #include -#include +#include #include #include -#include #include struct lms283gf05_state { struct spi_device *spi; struct lcd_device *ld; + struct gpio_desc *reset; }; struct lms283gf05_seq { @@ -90,13 +90,13 @@ static const struct lms283gf05_seq disp_pdwnseq[] = { }; -static void lms283gf05_reset(unsigned long gpio, bool inverted) +static void lms283gf05_reset(struct gpio_desc *gpiod) { - gpio_set_value(gpio, !inverted); + gpiod_set_value(gpiod, 0); /* De-asserted */ mdelay(100); - gpio_set_value(gpio, inverted); + gpiod_set_value(gpiod, 1); /* Asserted */ mdelay(20); - gpio_set_value(gpio, !inverted); + gpiod_set_value(gpiod, 0); /* De-asserted */ mdelay(20); } @@ -125,18 +125,15 @@ static int lms283gf05_power_set(struct lcd_device *ld, int power) { struct lms283gf05_state *st = lcd_get_data(ld); struct spi_device *spi = st->spi; - struct lms283gf05_pdata *pdata = dev_get_platdata(&spi->dev); if (power <= FB_BLANK_NORMAL) { - if (pdata) - lms283gf05_reset(pdata->reset_gpio, - pdata->reset_inverted); + if (st->reset) + lms283gf05_reset(st->reset); lms283gf05_toggle(spi, disp_initseq, ARRAY_SIZE(disp_initseq)); } else { lms283gf05_toggle(spi, disp_pdwnseq, ARRAY_SIZE(disp_pdwnseq)); - if (pdata) - gpio_set_value(pdata->reset_gpio, - pdata->reset_inverted); + if (st->reset) + gpiod_set_value(st->reset, 1); /* Asserted */ } return 0; @@ -150,24 +147,18 @@ static struct lcd_ops lms_ops = { static int lms283gf05_probe(struct spi_device *spi) { struct lms283gf05_state *st; - struct lms283gf05_pdata *pdata = dev_get_platdata(&spi->dev); struct lcd_device *ld; - int ret = 0; - - if (pdata != NULL) { - ret = devm_gpio_request_one(&spi->dev, pdata->reset_gpio, - GPIOF_DIR_OUT | (!pdata->reset_inverted ? - GPIOF_INIT_HIGH : GPIOF_INIT_LOW), - "LMS283GF05 RESET"); - if (ret) - return ret; - } st = devm_kzalloc(&spi->dev, sizeof(struct lms283gf05_state), GFP_KERNEL); if (st == NULL) return -ENOMEM; + st->reset = gpiod_get_optional(&spi->dev, "reset", GPIOD_OUT_LOW); + if (IS_ERR(st->reset)) + return PTR_ERR(st->reset); + gpiod_set_consumer_name(st->reset, "LMS283GF05 RESET"); + ld = devm_lcd_device_register(&spi->dev, "lms283gf05", &spi->dev, st, &lms_ops); if (IS_ERR(ld)) @@ -179,8 +170,8 @@ static int lms283gf05_probe(struct spi_device *spi) spi_set_drvdata(spi, st); /* kick in the LCD */ - if (pdata) - lms283gf05_reset(pdata->reset_gpio, pdata->reset_inverted); + if (st->reset) + lms283gf05_reset(st->reset); lms283gf05_toggle(spi, disp_initseq, ARRAY_SIZE(disp_initseq)); return 0; diff --git a/include/linux/spi/lms283gf05.h b/include/linux/spi/lms283gf05.h deleted file mode 100644 index f237b2d062e9..000000000000 --- a/include/linux/spi/lms283gf05.h +++ /dev/null @@ -1,16 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * lms283gf05.h - Platform glue for Samsung LMS283GF05 LCD - * - * Copyright (C) 2009 Marek Vasut -*/ - -#ifndef _INCLUDE_LINUX_SPI_LMS283GF05_H_ -#define _INCLUDE_LINUX_SPI_LMS283GF05_H_ - -struct lms283gf05_pdata { - unsigned long reset_gpio; - bool reset_inverted; -}; - -#endif /* _INCLUDE_LINUX_SPI_LMS283GF05_H_ */