From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A41ABC44506 for ; Sun, 12 Jul 2026 02:13:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=5AFVwN6iVzF4B4uVu1QcDeH3p0cXhfS2t6vqHL4txKQ=; b=PNVAJ2I79w4BkUo4xDKXu5yfVr 4mKW5E1WRewawyeWZnYT3LVKyCWEjs+zhTcCNMH+JbDW8sckS5xhEFROQSXyp7V16VlUF/Wt96xWo U5oplT5zpin1z3LEOBWn23gYj5KgkuCMUOsTnWdCahpQkuM2gSTG63UiATdiuTfd8XbPiYEhfJAcq IfCMx2GYDtrhPh/Y1M5+K7C8JJeaK18mWtWw2d60L7Ui60pbXII2Jm7VC6nSOH+DaSg211uOa82pK I2RhTwlnL5Sl/8BFmrQg+magc0gjG0nQ7F8MjmBXBvTVrP38z5bjt+j1TiSfpqy+FkLb3mAeleX2U wG4NAYbA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wijhD-000000070Nn-2aBt; Sun, 12 Jul 2026 02:13:31 +0000 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wijh2-000000070Ck-0Adz for linux-arm-kernel@lists.infradead.org; Sun, 12 Jul 2026 02:13:21 +0000 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-37df72c9984so3671597a91.3 for ; Sat, 11 Jul 2026 19:13:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783822399; x=1784427199; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5AFVwN6iVzF4B4uVu1QcDeH3p0cXhfS2t6vqHL4txKQ=; b=mxNYgJRgbEUB2ziY1YY4eRIj40RkdfxIEQ/IchXKqcRqcxe/AZV6BpZk4nwPNY8Cwm phJco0S49AogM+0pD8pVQ+lD7nPcgKT8mUDWaqVenKcrumno1tOYn9R8IFMHbucK+e5U tzPFiONHzWUe9Mbc0UJdDAI/NYzX5o0P6+GjChPAsVzcq1BvEFYnU8dNMAkkCSzk7igL AIWan3dA+6Fx0NR/i9dJWQ6zeDZbEUevXHzV0COGp6YnneEPu3A6h3LOxnpmcUWx1FjN vrU3rf4kgsagwiSCU200FZgKPBE7rIXZoMM2AW1QPtc4VyuIE386P8CkZahgw/8hJovo eSBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783822399; x=1784427199; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=5AFVwN6iVzF4B4uVu1QcDeH3p0cXhfS2t6vqHL4txKQ=; b=P4NRXglwa3Kugyin/h0D+Ob+6dpFQl1tsiaW2P/bdKwI3UEtzvI+St9AVrSIgya65U E8AjCAU8O3VTseusi5RND8EO2bOD52iUAuyDF8wwCJP2Ll7SF8oMTRiljtu8emVDA0D1 MWN/YHbQye5HnhEeEcIw8D859w7tLrNGh1NEz6eLR5Rpq9rMIvtV05cA8256SQWbEmws KduRlOoPNS4pDrphPjYovcZSLH0O8kRwzvB+jjsgoAHzZJI4S9dzMoDyhaVrvUHxrRtC FBwTWptWBtaxJnpHakrkYuAieXxUh6dUrM/LPrfogIavyAVh5nU2heqwxIUqpptDWT4P KJiw== X-Forwarded-Encrypted: i=1; AHgh+RoDXVSn8f1Di/DMcTxP/PBRYP6vAzKizHGwb2bQcCY1i8lMLqGlOwWXdiVo1mTywmVxhEELijoG2VZhmozAbIA4@lists.infradead.org X-Gm-Message-State: AOJu0Yw/18j+UmooGYbcNS+DvR2/aCt7eyQCoYZPN73xr2Y5WTi0QFHH eaIEyLcQP6ZXIywtmBm4GsD8CkKVbkv8WDsp2B3FxHhJZbJtDYitSp2u X-Gm-Gg: AfdE7ck4wuQWT0xEOGN8t0no7FQ4UTPQV0z3jiSIzz4PcoRGmcO7BGidtoWYzWrQArs eFPcxZ8n4toMDQyurR+rBr0p1UkFidYkblJqUPqwme8dleDkod9rX6nwS2oOnSIpK18VbxiIA5j u0qLEfrORtBqbNqie1240EEOo9EFswcwCy6a1lVCQ1a89bNj3UunyOjDoejw6E6p9urw0bDWpQl f8WglVJDtsntyefO2wSpY0qweo7+y4oQulBs68Bv/WI/vR1q328OpOBGVZTL+HvXYibNyt/eLhE mCrgR+w6R+X16ORhkg0qr5U7LpBixCracbtegTZ4WVXz/cAijXfLwjYoYR29Zha2ArHMCHbOZQl aJFUIF0ObaP48kschHz9k7MB486eaqDXFFXlz6miNTZziJbIzWXYoEgbNoBpEV7Pxsbff8cBPp7 gv+qPZ1wMrjrb7bF1RNAk5Zn1geU9iC0PTpPhTggGZm6PSMIrOD9pO1+igXTBBucbY/arz1GvUM dm0yg/CvaFsxg== X-Received: by 2002:a17:90b:2641:b0:387:e0cb:7f4 with SMTP id 98e67ed59e1d1-38dc783efacmr4605750a91.40.1783822399368; Sat, 11 Jul 2026 19:13:19 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2a00:79e0:2ebe:8:c63e:9756:a95c:c75]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3117d847e17sm54796692eec.18.2026.07.11.19.13.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 19:13:18 -0700 (PDT) From: Dmitry Torokhov Date: Sat, 11 Jul 2026 19:12:51 -0700 Subject: [PATCH v3 10/10] ARM: s3c: crag6410: convert remaining GPIO lookup tables to property entries MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260711-samsung-kp-v3-10-b2fcaba77aff@gmail.com> References: <20260711-samsung-kp-v3-0-b2fcaba77aff@gmail.com> In-Reply-To: <20260711-samsung-kp-v3-0-b2fcaba77aff@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Peter Griffin , Alim Akhtar , Russell King , Mark Brown , Linus Walleij , Charles Keepax , Sam Protsenko , Arnd Bergmann , Bartosz Golaszewski Cc: Krzysztof Kozlowski , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, patches@opensource.cirrus.com, Bartosz Golaszewski X-Mailer: b4 0.16-dev-b242f X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260711_191320_099551_BB36553E X-CRM114-Status: GOOD ( 20.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Static property entries support defining GPIOs and are more similar to device tree properties and are not prone to losing link between device and a lookup table because of changes in device name. Convert the board to use them for WM1250 and SPI0 devices. This also fixes issue with recent conversion to GPIO descriptors where GPIO lookup tables were specifying incorrect GPIO chip name ("GPIO" vs "GP"). Fixes: 10a366f36e2a ("ASoC: wm1250-ev1: Convert to GPIO descriptors") Fixes: a45cf3cc72dd ("spi: s3c64xx: Convert to use GPIO descriptors") Assisted-by: Antigravity:gemini-3.5-flash Acked-by: Bartosz Golaszewski Signed-off-by: Dmitry Torokhov --- arch/arm/mach-s3c/devs.c | 35 ----------------- arch/arm/mach-s3c/devs.h | 1 - arch/arm/mach-s3c/mach-crag6410.c | 83 ++++++++++++++++++++++++++++----------- 3 files changed, 59 insertions(+), 60 deletions(-) diff --git a/arch/arm/mach-s3c/devs.c b/arch/arm/mach-s3c/devs.c index 0237307b9238..d1125316043b 100644 --- a/arch/arm/mach-s3c/devs.c +++ b/arch/arm/mach-s3c/devs.c @@ -335,38 +335,3 @@ void __init dwc2_hsotg_set_platdata(struct dwc2_hsotg_plat *pd) npd->phy_exit = s3c_usb_phy_exit; } #endif /* CONFIG_S3C_DEV_USB_HSOTG */ - -#ifdef CONFIG_S3C64XX_DEV_SPI0 -static struct resource s3c64xx_spi0_resource[] = { - [0] = DEFINE_RES_MEM(S3C_PA_SPI0, SZ_256), - [1] = DEFINE_RES_IRQ(IRQ_SPI0), -}; - -struct platform_device s3c64xx_device_spi0 = { - .name = "s3c6410-spi", - .id = 0, - .num_resources = ARRAY_SIZE(s3c64xx_spi0_resource), - .resource = s3c64xx_spi0_resource, - .dev = { - .dma_mask = &samsung_device_dma_mask, - .coherent_dma_mask = DMA_BIT_MASK(32), - }, -}; - -void __init s3c64xx_spi0_set_platdata(int src_clk_nr, int num_cs) -{ - struct s3c64xx_spi_info pd; - - /* Reject invalid configuration */ - if (!num_cs || src_clk_nr < 0) { - pr_err("%s: Invalid SPI configuration\n", __func__); - return; - } - - pd.num_cs = num_cs; - pd.src_clk_nr = src_clk_nr; - pd.cfg_gpio = s3c64xx_spi0_cfg_gpio; - - s3c_set_platdata(&pd, sizeof(pd), &s3c64xx_device_spi0); -} -#endif /* CONFIG_S3C64XX_DEV_SPI0 */ diff --git a/arch/arm/mach-s3c/devs.h b/arch/arm/mach-s3c/devs.h index 2737990063b1..90a86ade3570 100644 --- a/arch/arm/mach-s3c/devs.h +++ b/arch/arm/mach-s3c/devs.h @@ -27,7 +27,6 @@ extern struct platform_device *s3c24xx_uart_src[]; extern struct platform_device s3c64xx_device_iis0; extern struct platform_device s3c64xx_device_iis1; -extern struct platform_device s3c64xx_device_spi0; extern struct platform_device s3c_device_fb; extern struct platform_device s3c_device_hsmmc0; diff --git a/arch/arm/mach-s3c/mach-crag6410.c b/arch/arm/mach-s3c/mach-crag6410.c index 1ba3d47d85b7..9f4756898a78 100644 --- a/arch/arm/mach-s3c/mach-crag6410.c +++ b/arch/arm/mach-s3c/mach-crag6410.c @@ -443,7 +443,6 @@ static struct platform_device *crag6410_devs0[] __initdata = { static struct platform_device *crag6410_devs1[] __initdata = { &crag6410_dm9k_device, - &s3c64xx_device_spi0, &crag6410_lcd_powerdev, &crag6410_backlight_device, &speyside_device, @@ -777,17 +776,22 @@ static struct wm831x_pdata glenfarclas_pmic_pdata = { .disable_touch = true, }; -static struct gpiod_lookup_table crag_wm1250_ev1_gpiod_table = { - /* The WM1250-EV1 is device 0027 on I2C bus 1 */ - .dev_id = "1-0027", - .table = { - GPIO_LOOKUP("GPION", 12, "clk-ena", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("GPIOL", 12, "clk-sel0", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("GPIOL", 13, "clk-sel1", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("GPIOL", 14, "osr", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("GPIOL", 8, "master", GPIO_ACTIVE_HIGH), - { }, - }, +static const struct property_entry crag_wm1250_ev1_properties[] = { + PROPERTY_ENTRY_GPIO("clk-ena-gpios", + SAMSUNG_GPIO_NODE('N'), 12, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("clk-sel0-gpios", + SAMSUNG_GPIO_NODE('L'), 12, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("clk-sel1-gpios", + SAMSUNG_GPIO_NODE('L'), 13, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("osr-gpios", + SAMSUNG_GPIO_NODE('L'), 14, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("master-gpios", + SAMSUNG_GPIO_NODE('L'), 8, GPIO_ACTIVE_HIGH), + { } +}; + +static const struct software_node crag_wm1250_ev1_swnode = { + .properties = crag_wm1250_ev1_properties, }; static struct i2c_board_info i2c_devs1[] = { @@ -800,7 +804,8 @@ static struct i2c_board_info i2c_devs1[] = { { I2C_BOARD_INFO("wlf-gf-module", 0x24) }, { I2C_BOARD_INFO("wlf-gf-module", 0x25) }, { I2C_BOARD_INFO("wlf-gf-module", 0x26) }, - { I2C_BOARD_INFO("wm1250-ev1", 0x27), }, + { I2C_BOARD_INFO("wm1250-ev1", 0x27), + .swnode = &crag_wm1250_ev1_swnode, }, }; static struct s3c2410_platform_i2c i2c1_pdata = { @@ -904,15 +909,48 @@ static void __init crag6410_setup_leds(void) static struct dwc2_hsotg_plat crag6410_hsotg_pdata; -static struct gpiod_lookup_table crag_spi0_gpiod_table = { - .dev_id = "s3c6410-spi.0", - .table = { - GPIO_LOOKUP_IDX("GPIOC", 3, "cs", 0, GPIO_ACTIVE_LOW), - GPIO_LOOKUP_IDX("GPION", 5, "cs", 1, GPIO_ACTIVE_LOW), - { }, - }, +static const struct software_node_ref_args crag6410_spi0_gpio_refs[] = { + SOFTWARE_NODE_REFERENCE(SAMSUNG_GPIO_NODE('C'), 3, GPIO_ACTIVE_LOW), + SOFTWARE_NODE_REFERENCE(SAMSUNG_GPIO_NODE('N'), 5, GPIO_ACTIVE_LOW), +}; + +static const struct property_entry crag6410_spi0_properties[] __initconst = { + PROPERTY_ENTRY_REF_ARRAY("cs-gpios", crag6410_spi0_gpio_refs), + { } +}; + +static const struct resource crag6410_spi0_resource[] __initconst = { + [0] = DEFINE_RES_MEM(S3C_PA_SPI0, SZ_256), + [1] = DEFINE_RES_IRQ(IRQ_SPI0), +}; + +static const struct s3c64xx_spi_info crag6410_spi0_platform_data __initconst = { + .num_cs = 2, + .cfg_gpio = s3c64xx_spi0_cfg_gpio, }; +static const struct platform_device_info crag6410_spi0_info __initconst = { + .name = "s3c6410-spi", + .id = 0, + .res = crag6410_spi0_resource, + .num_res = ARRAY_SIZE(crag6410_spi0_resource), + .data = &crag6410_spi0_platform_data, + .size_data = sizeof(crag6410_spi0_platform_data), + .dma_mask = DMA_BIT_MASK(32), + .properties = crag6410_spi0_properties, +}; + +static void __init crag6410_setup_spi0(void) +{ + struct platform_device *pd; + int err; + + pd = platform_device_register_full(&crag6410_spi0_info); + err = PTR_ERR_OR_ZERO(pd); + if (err) + pr_err("failed to create spi0 device: %d\n", err); +} + static void __init crag6410_machine_init(void) { /* Open drain IRQs need pullups */ @@ -941,18 +979,15 @@ static void __init crag6410_machine_init(void) software_node_register(&crag_dcdc1_swnode); i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0)); - gpiod_add_lookup_table(&crag_wm1250_ev1_gpiod_table); i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1)); - gpiod_add_lookup_table(&crag_spi0_gpiod_table); - s3c64xx_spi0_set_platdata(0, 2); - pwm_add_table(crag6410_pwm_lookup, ARRAY_SIZE(crag6410_pwm_lookup)); platform_add_devices(crag6410_devs0, ARRAY_SIZE(crag6410_devs0)); platform_device_register_full(&crag6410_mmgpio_devinfo); crag6410_setup_keypad(); crag6410_setup_gpio_keys(); + crag6410_setup_spi0(); platform_add_devices(crag6410_devs1, ARRAY_SIZE(crag6410_devs1)); crag6410_setup_leds(); -- 2.55.0.795.g602f6c329a-goog