[04/27] ARM: pxa: drop pxa310/pxa320/pxa93x support
Commit Message
From: Arnd Bergmann <arnd@arndb.de>
There is currently no devicetree support for any of these three
SoCs, and no board files remain. As it seems unlikely that anyone
is going to add DT support soon, let's drop the SoC specific code
now.
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Dominik Brodowski <linux@dominikbrodowski.net>
Cc: linux-clk@vger.kernel.org
Cc: linux-pm@vger.kernel.org
Cc: linux-mmc@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/arm/mach-pxa/devices.h | 1 -
arch/arm/mach-pxa/mfp-pxa300.h | 52 ----
arch/arm/mach-pxa/mfp-pxa930.h | 495 -------------------------------
arch/arm/mach-pxa/pxa300.c | 17 +-
arch/arm/mach-pxa/pxa3xx.c | 4 +-
drivers/clk/pxa/clk-pxa3xx.c | 22 +-
drivers/cpufreq/pxa3xx-cpufreq.c | 21 +-
drivers/mmc/host/pxamci.c | 3 +-
drivers/pcmcia/pxa2xx_base.c | 6 -
include/linux/soc/pxa/cpu.h | 93 +-----
10 files changed, 9 insertions(+), 705 deletions(-)
delete mode 100644 arch/arm/mach-pxa/mfp-pxa930.h
Comments
On Thu, 5 Jan 2023 at 14:46, Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> There is currently no devicetree support for any of these three
> SoCs, and no board files remain. As it seems unlikely that anyone
> is going to add DT support soon, let's drop the SoC specific code
> now.
>
> Cc: Michael Turquette <mturquette@baylibre.com>
> Cc: Stephen Boyd <sboyd@kernel.org>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Viresh Kumar <viresh.kumar@linaro.org>
> Cc: Ulf Hansson <ulf.hansson@linaro.org>
> Cc: Dominik Brodowski <linux@dominikbrodowski.net>
> Cc: linux-clk@vger.kernel.org
> Cc: linux-pm@vger.kernel.org
> Cc: linux-mmc@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org> # For MMC
Kind regards
Uffe
> ---
> arch/arm/mach-pxa/devices.h | 1 -
> arch/arm/mach-pxa/mfp-pxa300.h | 52 ----
> arch/arm/mach-pxa/mfp-pxa930.h | 495 -------------------------------
> arch/arm/mach-pxa/pxa300.c | 17 +-
> arch/arm/mach-pxa/pxa3xx.c | 4 +-
> drivers/clk/pxa/clk-pxa3xx.c | 22 +-
> drivers/cpufreq/pxa3xx-cpufreq.c | 21 +-
> drivers/mmc/host/pxamci.c | 3 +-
> drivers/pcmcia/pxa2xx_base.c | 6 -
> include/linux/soc/pxa/cpu.h | 93 +-----
> 10 files changed, 9 insertions(+), 705 deletions(-)
> delete mode 100644 arch/arm/mach-pxa/mfp-pxa930.h
>
> diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h
> index 82c83939017a..1c252eca39c1 100644
> --- a/arch/arm/mach-pxa/devices.h
> +++ b/arch/arm/mach-pxa/devices.h
> @@ -54,7 +54,6 @@ extern struct platform_device pxa_device_asoc_ssp4;
> extern struct platform_device pxa25x_device_gpio;
> extern struct platform_device pxa27x_device_gpio;
> extern struct platform_device pxa3xx_device_gpio;
> -extern struct platform_device pxa93x_device_gpio;
>
> void __init pxa_register_device(struct platform_device *dev, void *data);
> void __init pxa2xx_set_dmac_info(struct mmp_dma_platdata *dma_pdata);
> diff --git a/arch/arm/mach-pxa/mfp-pxa300.h b/arch/arm/mach-pxa/mfp-pxa300.h
> index 1223e350cea0..058698e7e513 100644
> --- a/arch/arm/mach-pxa/mfp-pxa300.h
> +++ b/arch/arm/mach-pxa/mfp-pxa300.h
> @@ -27,15 +27,6 @@
> #define GPIO61_GPIO MFP_CFG(GPIO61, AF0)
> #define GPIO62_GPIO MFP_CFG(GPIO62, AF0)
>
> -#ifdef CONFIG_CPU_PXA310
> -#define GPIO7_2_GPIO MFP_CFG(GPIO7_2, AF0)
> -#define GPIO8_2_GPIO MFP_CFG(GPIO8_2, AF0)
> -#define GPIO9_2_GPIO MFP_CFG(GPIO9_2, AF0)
> -#define GPIO10_2_GPIO MFP_CFG(GPIO10_2, AF0)
> -#define GPIO11_2_GPIO MFP_CFG(GPIO11_2, AF0)
> -#define GPIO12_2_GPIO MFP_CFG(GPIO12_2, AF0)
> -#endif
> -
> /* Chip Select */
> #define GPIO1_nCS2 MFP_CFG(GPIO1, AF1)
> #define GPIO2_nCS3 MFP_CFG(GPIO2, AF1)
> @@ -526,47 +517,4 @@
> #define GPIO46_UTM_PHYDATA_7 MFP_CFG(GPIO46, AF3)
> #endif /* CONFIG_CPU_PXA300 */
>
> -/*
> - * PXA310 specific MFP configurations
> - */
> -#ifdef CONFIG_CPU_PXA310
> -/* USB P2 */
> -#define GPIO36_USB_P2_1 MFP_CFG(GPIO36, AF1)
> -#define GPIO30_USB_P2_2 MFP_CFG(GPIO30, AF1)
> -#define GPIO35_USB_P2_3 MFP_CFG(GPIO35, AF1)
> -#define GPIO32_USB_P2_4 MFP_CFG(GPIO32, AF1)
> -#define GPIO34_USB_P2_5 MFP_CFG(GPIO34, AF1)
> -#define GPIO31_USB_P2_6 MFP_CFG(GPIO31, AF1)
> -
> -/* MMC1 */
> -#define GPIO24_MMC1_CMD MFP_CFG(GPIO24, AF3)
> -#define GPIO29_MMC1_DAT0 MFP_CFG(GPIO29, AF3)
> -
> -/* MMC3 */
> -#define GPIO103_MMC3_CLK MFP_CFG(GPIO103, AF2)
> -#define GPIO105_MMC3_CMD MFP_CFG(GPIO105, AF2)
> -#define GPIO11_2_MMC3_CLK MFP_CFG(GPIO11_2, AF1)
> -#define GPIO12_2_MMC3_CMD MFP_CFG(GPIO12_2, AF1)
> -#define GPIO7_2_MMC3_DAT0 MFP_CFG(GPIO7_2, AF1)
> -#define GPIO8_2_MMC3_DAT1 MFP_CFG(GPIO8_2, AF1)
> -#define GPIO9_2_MMC3_DAT2 MFP_CFG(GPIO9_2, AF1)
> -#define GPIO10_2_MMC3_DAT3 MFP_CFG(GPIO10_2, AF1)
> -
> -/* ULPI */
> -#define GPIO38_ULPI_CLK MFP_CFG(GPIO38, AF1)
> -#define GPIO30_ULPI_DATA_OUT_0 MFP_CFG(GPIO30, AF3)
> -#define GPIO31_ULPI_DATA_OUT_1 MFP_CFG(GPIO31, AF3)
> -#define GPIO32_ULPI_DATA_OUT_2 MFP_CFG(GPIO32, AF3)
> -#define GPIO33_ULPI_DATA_OUT_3 MFP_CFG(GPIO33, AF3)
> -#define GPIO34_ULPI_DATA_OUT_4 MFP_CFG(GPIO34, AF3)
> -#define GPIO35_ULPI_DATA_OUT_5 MFP_CFG(GPIO35, AF3)
> -#define GPIO36_ULPI_DATA_OUT_6 MFP_CFG(GPIO36, AF3)
> -#define GPIO37_ULPI_DATA_OUT_7 MFP_CFG(GPIO37, AF3)
> -#define GPIO33_ULPI_OTG_INTR MFP_CFG(GPIO33, AF1)
> -
> -#define ULPI_DIR MFP_CFG_DRV(ULPI_DIR, AF0, DS01X)
> -#define ULPI_NXT MFP_CFG_DRV(ULPI_NXT, AF0, DS01X)
> -#define ULPI_STP MFP_CFG_DRV(ULPI_STP, AF0, DS01X)
> -#endif /* CONFIG_CPU_PXA310 */
> -
> #endif /* __ASM_ARCH_MFP_PXA300_H */
> diff --git a/arch/arm/mach-pxa/mfp-pxa930.h b/arch/arm/mach-pxa/mfp-pxa930.h
> deleted file mode 100644
> index 0d195d3a8c61..000000000000
> diff --git a/arch/arm/mach-pxa/pxa300.c b/arch/arm/mach-pxa/pxa300.c
> index f77ec118d5b9..accd270ff8e2 100644
> --- a/arch/arm/mach-pxa/pxa300.c
> +++ b/arch/arm/mach-pxa/pxa300.c
> @@ -69,28 +69,13 @@ static struct mfp_addr_map pxa300_mfp_addr_map[] __initdata = {
> MFP_ADDR_END,
> };
>
> -/* override pxa300 MFP register addresses */
> -static struct mfp_addr_map pxa310_mfp_addr_map[] __initdata = {
> - MFP_ADDR_X(GPIO30, GPIO98, 0x0418),
> - MFP_ADDR_X(GPIO7_2, GPIO12_2, 0x052C),
> -
> - MFP_ADDR(ULPI_STP, 0x040C),
> - MFP_ADDR(ULPI_NXT, 0x0410),
> - MFP_ADDR(ULPI_DIR, 0x0414),
> -
> - MFP_ADDR_END,
> -};
> -
> static int __init pxa300_init(void)
> {
> - if (cpu_is_pxa300() || cpu_is_pxa310()) {
> + if (cpu_is_pxa300()) {
> mfp_init_base(io_p2v(MFPR_BASE));
> mfp_init_addr(pxa300_mfp_addr_map);
> }
>
> - if (cpu_is_pxa310())
> - mfp_init_addr(pxa310_mfp_addr_map);
> -
> return 0;
> }
>
> diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
> index b26f00fc75d5..7a02ddb30969 100644
> --- a/arch/arm/mach-pxa/pxa3xx.c
> +++ b/arch/arm/mach-pxa/pxa3xx.c
> @@ -496,8 +496,6 @@ static int __init pxa3xx_init(void)
> pxa3xx_init_pm();
>
> enable_irq_wake(IRQ_WAKEUP0);
> - if (cpu_is_pxa320())
> - enable_irq_wake(IRQ_WAKEUP1);
>
> register_syscore_ops(&pxa_irq_syscore_ops);
> register_syscore_ops(&pxa3xx_mfp_syscore_ops);
> @@ -509,7 +507,7 @@ static int __init pxa3xx_init(void)
> ret = platform_add_devices(devices, ARRAY_SIZE(devices));
> if (ret)
> return ret;
> - if (cpu_is_pxa300() || cpu_is_pxa310() || cpu_is_pxa320()) {
> + if (cpu_is_pxa300()) {
> platform_device_add_data(&pxa3xx_device_gpio,
> &pxa3xx_gpio_pdata,
> sizeof(pxa3xx_gpio_pdata));
> diff --git a/drivers/clk/pxa/clk-pxa3xx.c b/drivers/clk/pxa/clk-pxa3xx.c
> index 42958a542662..9b45dc297b22 100644
> --- a/drivers/clk/pxa/clk-pxa3xx.c
> +++ b/drivers/clk/pxa/clk-pxa3xx.c
> @@ -269,19 +269,6 @@ static struct desc_clk_cken pxa300_310_clocks[] __initdata = {
> PXA3XX_CKEN_1RATE("pxa3xx-gpio", NULL, GPIO, pxa3xx_13MHz_bus_parents),
> };
>
> -static struct desc_clk_cken pxa320_clocks[] __initdata = {
> - PXA3XX_PBUS_CKEN("pxa3xx-nand", NULL, NAND, 1, 2, 1, 6, 0),
> - PXA3XX_PBUS_CKEN("pxa3xx-gcu", NULL, PXA320_GCU, 1, 1, 1, 1, 0),
> - PXA3XX_CKEN_1RATE("pxa3xx-gpio", NULL, GPIO, pxa3xx_13MHz_bus_parents),
> -};
> -
> -static struct desc_clk_cken pxa93x_clocks[] __initdata = {
> -
> - PXA3XX_PBUS_CKEN("pxa3xx-gcu", NULL, PXA300_GCU, 1, 1, 1, 1, 0),
> - PXA3XX_PBUS_CKEN("pxa3xx-nand", NULL, NAND, 1, 2, 1, 4, 0),
> - PXA3XX_CKEN_1RATE("pxa93x-gpio", NULL, GPIO, pxa3xx_13MHz_bus_parents),
> -};
> -
> static unsigned long clk_pxa3xx_system_bus_get_rate(struct clk_hw *hw,
> unsigned long parent_rate)
> {
> @@ -446,13 +433,8 @@ int __init pxa3xx_clocks_init(void __iomem *regs, void __iomem *oscc_reg)
> ret = clk_pxa_cken_init(pxa3xx_clocks, ARRAY_SIZE(pxa3xx_clocks), regs);
> if (ret)
> return ret;
> - if (cpu_is_pxa320())
> - return clk_pxa_cken_init(pxa320_clocks,
> - ARRAY_SIZE(pxa320_clocks), regs);
> - if (cpu_is_pxa300() || cpu_is_pxa310())
> - return clk_pxa_cken_init(pxa300_310_clocks,
> - ARRAY_SIZE(pxa300_310_clocks), regs);
> - return clk_pxa_cken_init(pxa93x_clocks, ARRAY_SIZE(pxa93x_clocks), regs);
> + return clk_pxa_cken_init(pxa300_310_clocks,
> + ARRAY_SIZE(pxa300_310_clocks), regs);
> }
>
> static void __init pxa3xx_dt_clocks_init(struct device_node *np)
> diff --git a/drivers/cpufreq/pxa3xx-cpufreq.c b/drivers/cpufreq/pxa3xx-cpufreq.c
> index 4afa48d172db..23bc3c7a6288 100644
> --- a/drivers/cpufreq/pxa3xx-cpufreq.c
> +++ b/drivers/cpufreq/pxa3xx-cpufreq.c
> @@ -91,15 +91,6 @@ static struct pxa3xx_freq_info pxa300_freqs[] = {
> OP(624, 24, 2, 208, 260, 208, 312, 3, 1375, 1400), /* 624MHz */
> };
>
> -static struct pxa3xx_freq_info pxa320_freqs[] = {
> - /* CPU XL XN HSS DMEM SMEM SRAM DFI VCC_CORE VCC_SRAM */
> - OP(104, 8, 1, 104, 260, 78, 104, 3, 1000, 1100), /* 104MHz */
> - OP(208, 16, 1, 104, 260, 104, 156, 2, 1000, 1100), /* 208MHz */
> - OP(416, 16, 2, 156, 260, 104, 208, 2, 1100, 1200), /* 416MHz */
> - OP(624, 24, 2, 208, 260, 208, 312, 3, 1375, 1400), /* 624MHz */
> - OP(806, 31, 2, 208, 260, 208, 312, 3, 1400, 1400), /* 806MHz */
> -};
> -
> static unsigned int pxa3xx_freqs_num;
> static struct pxa3xx_freq_info *pxa3xx_freqs;
> static struct cpufreq_frequency_table *pxa3xx_freqs_table;
> @@ -186,17 +177,11 @@ static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy)
>
> /* set default policy and cpuinfo */
> policy->min = policy->cpuinfo.min_freq = 104000;
> - policy->max = policy->cpuinfo.max_freq =
> - (cpu_is_pxa320()) ? 806000 : 624000;
> + policy->max = policy->cpuinfo.max_freq = 624000;
> policy->cpuinfo.transition_latency = 1000; /* FIXME: 1 ms, assumed */
>
> - if (cpu_is_pxa300() || cpu_is_pxa310())
> - ret = setup_freqs_table(policy, pxa300_freqs,
> - ARRAY_SIZE(pxa300_freqs));
> -
> - if (cpu_is_pxa320())
> - ret = setup_freqs_table(policy, pxa320_freqs,
> - ARRAY_SIZE(pxa320_freqs));
> + ret = setup_freqs_table(policy, pxa300_freqs,
> + ARRAY_SIZE(pxa300_freqs));
>
> if (ret) {
> pr_err("failed to setup frequency table\n");
> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
> index 2a988f942b6c..60bdd691c391 100644
> --- a/drivers/mmc/host/pxamci.c
> +++ b/drivers/mmc/host/pxamci.c
> @@ -44,8 +44,7 @@
> #define NR_SG 1
> #define CLKRT_OFF (~0)
>
> -#define mmc_has_26MHz() (cpu_is_pxa300() || cpu_is_pxa310() \
> - || cpu_is_pxa935())
> +#define mmc_has_26MHz() (cpu_is_pxa300())
>
> struct pxamci_host {
> struct mmc_host *mmc;
> diff --git a/drivers/pcmcia/pxa2xx_base.c b/drivers/pcmcia/pxa2xx_base.c
> index 5254028354f4..a6c6ee034582 100644
> --- a/drivers/pcmcia/pxa2xx_base.c
> +++ b/drivers/pcmcia/pxa2xx_base.c
> @@ -268,12 +268,6 @@ static int pxa2xx_drv_pcmcia_probe(struct platform_device *dev)
> goto err0;
> }
>
> - if (cpu_is_pxa320() && ops->nr > 1) {
> - dev_err(&dev->dev, "pxa320 supports only one pcmcia slot");
> - ret = -EINVAL;
> - goto err0;
> - }
> -
> clk = devm_clk_get(&dev->dev, NULL);
> if (IS_ERR(clk))
> return -ENODEV;
> diff --git a/include/linux/soc/pxa/cpu.h b/include/linux/soc/pxa/cpu.h
> index 5782450ee45c..0f894d12fe1d 100644
> --- a/include/linux/soc/pxa/cpu.h
> +++ b/include/linux/soc/pxa/cpu.h
> @@ -56,12 +56,6 @@
> * PXA935 B1 0x56056938 0x8E653013
> */
> #ifdef CONFIG_PXA25x
> -#define __cpu_is_pxa210(id) \
> - ({ \
> - unsigned int _id = (id) & 0xf3f0; \
> - _id == 0x2120; \
> - })
> -
> #define __cpu_is_pxa250(id) \
> ({ \
> unsigned int _id = (id) & 0xf3ff; \
> @@ -80,7 +74,6 @@
> _id == 0x2100; \
> })
> #else
> -#define __cpu_is_pxa210(id) (0)
> #define __cpu_is_pxa250(id) (0)
> #define __cpu_is_pxa255(id) (0)
> #define __cpu_is_pxa25x(id) (0)
> @@ -106,51 +99,6 @@
> #define __cpu_is_pxa300(id) (0)
> #endif
>
> -#ifdef CONFIG_CPU_PXA310
> -#define __cpu_is_pxa310(id) \
> - ({ \
> - unsigned int _id = (id) >> 4 & 0xfff; \
> - _id == 0x689; \
> - })
> -#else
> -#define __cpu_is_pxa310(id) (0)
> -#endif
> -
> -#ifdef CONFIG_CPU_PXA320
> -#define __cpu_is_pxa320(id) \
> - ({ \
> - unsigned int _id = (id) >> 4 & 0xfff; \
> - _id == 0x603 || _id == 0x682; \
> - })
> -#else
> -#define __cpu_is_pxa320(id) (0)
> -#endif
> -
> -#ifdef CONFIG_CPU_PXA930
> -#define __cpu_is_pxa930(id) \
> - ({ \
> - unsigned int _id = (id) >> 4 & 0xfff; \
> - _id == 0x683; \
> - })
> -#else
> -#define __cpu_is_pxa930(id) (0)
> -#endif
> -
> -#ifdef CONFIG_CPU_PXA935
> -#define __cpu_is_pxa935(id) \
> - ({ \
> - unsigned int _id = (id) >> 4 & 0xfff; \
> - _id == 0x693; \
> - })
> -#else
> -#define __cpu_is_pxa935(id) (0)
> -#endif
> -
> -#define cpu_is_pxa210() \
> - ({ \
> - __cpu_is_pxa210(read_cpuid_id()); \
> - })
> -
> #define cpu_is_pxa250() \
> ({ \
> __cpu_is_pxa250(read_cpuid_id()); \
> @@ -176,27 +124,6 @@
> __cpu_is_pxa300(read_cpuid_id()); \
> })
>
> -#define cpu_is_pxa310() \
> - ({ \
> - __cpu_is_pxa310(read_cpuid_id()); \
> - })
> -
> -#define cpu_is_pxa320() \
> - ({ \
> - __cpu_is_pxa320(read_cpuid_id()); \
> - })
> -
> -#define cpu_is_pxa930() \
> - ({ \
> - __cpu_is_pxa930(read_cpuid_id()); \
> - })
> -
> -#define cpu_is_pxa935() \
> - ({ \
> - __cpu_is_pxa935(read_cpuid_id()); \
> - })
> -
> -
>
> /*
> * CPUID Core Generation Bit
> @@ -215,25 +142,12 @@
> #ifdef CONFIG_PXA3xx
> #define __cpu_is_pxa3xx(id) \
> ({ \
> - __cpu_is_pxa300(id) \
> - || __cpu_is_pxa310(id) \
> - || __cpu_is_pxa320(id) \
> - || __cpu_is_pxa93x(id); \
> + __cpu_is_pxa300(id); \
> })
> #else
> #define __cpu_is_pxa3xx(id) (0)
> #endif
>
> -#if defined(CONFIG_CPU_PXA930) || defined(CONFIG_CPU_PXA935)
> -#define __cpu_is_pxa93x(id) \
> - ({ \
> - __cpu_is_pxa930(id) \
> - || __cpu_is_pxa935(id); \
> - })
> -#else
> -#define __cpu_is_pxa93x(id) (0)
> -#endif
> -
> #define cpu_is_pxa2xx() \
> ({ \
> __cpu_is_pxa2xx(read_cpuid_id()); \
> @@ -244,9 +158,4 @@
> __cpu_is_pxa3xx(read_cpuid_id()); \
> })
>
> -#define cpu_is_pxa93x() \
> - ({ \
> - __cpu_is_pxa93x(read_cpuid_id()); \
> - })
> -
> #endif
> --
> 2.39.0
>
On 05-01-23, 14:45, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> There is currently no devicetree support for any of these three
> SoCs, and no board files remain. As it seems unlikely that anyone
> is going to add DT support soon, let's drop the SoC specific code
> now.
>
> Cc: Michael Turquette <mturquette@baylibre.com>
> Cc: Stephen Boyd <sboyd@kernel.org>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Viresh Kumar <viresh.kumar@linaro.org>
> Cc: Ulf Hansson <ulf.hansson@linaro.org>
> Cc: Dominik Brodowski <linux@dominikbrodowski.net>
> Cc: linux-clk@vger.kernel.org
> Cc: linux-pm@vger.kernel.org
> Cc: linux-mmc@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> drivers/cpufreq/pxa3xx-cpufreq.c | 21 +-
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Arnd Bergmann <arnd@kernel.org> writes:
> There is currently no devicetree support for any of these three
> SoCs, and no board files remain. As it seems unlikely that
> anyone
> is going to add DT support soon, let's drop the SoC specific
> code
> now.
Hi Arnd,
Here you're dropping pxa variant support. For the currently
"partly" working
boards in devicetree, such a zylonite, this will break their
current support.
For example the zylonite I have which is working on DT has a
pxa310 variant.
The cm-x300, which also works in DT, has a pxa320 variant.
What these boards need is their IO mappings and cpufreq to still
work after
your serie in DT. What bothers me are the changes to :
- drivers/clk/pxa/clk-pxa3xx.c
- drivers/cpufreq/pxa3xx-cpufreq.c
Here the clock changes will probably remove the clock provided to
specific
pxa310/pxa320 drivers for example.
I don't know how you want to proceed, yet this change will break
some pxa3xx
platforms.
Cheers.
--
Robert
On Sun, Jan 8, 2023, at 09:49, Robert Jarzmik wrote:
> Arnd Bergmann <arnd@kernel.org> writes:
>> There is currently no devicetree support for any of these three
>> SoCs, and no board files remain. As it seems unlikely that
>> anyone is going to add DT support soon, let's drop the SoC specific
>> code now.
>
> Hi Arnd,
>
> Here you're dropping pxa variant support. For the currently
> "partly" working boards in devicetree, such a zylonite, this
> will break their current support.
>
> For example the zylonite I have which is working on DT has a
> pxa310 variant.
> The cm-x300, which also works in DT, has a pxa320 variant.
>
> What these boards need is their IO mappings and cpufreq to still
> work after
> your serie in DT. What bothers me are the changes to :
> - drivers/clk/pxa/clk-pxa3xx.c
> - drivers/cpufreq/pxa3xx-cpufreq.c
>
> Here the clock changes will probably remove the clock provided to
> specific
> pxa310/pxa320 drivers for example.
>
> I don't know how you want to proceed, yet this change will break
> some pxa3xx platforms.
Hi Robert,
Thanks for pointing this out, I thought that I had caught
all the missing dependencies ones after you pointed out
the AC97_BUS_NEW that I fixed in patch 14.
From what I can tell, commit b5aaaa666a85 ("ARM: pxa: add
Kconfig dependencies for ATAGS based boards"), the
PXA310/PXA320 DT support became dead code because
MACH_PXA3XX_DT only selects CPU_PXA300, so if it worked
before that commit, it now needs CONFIG_UNUSED_BOARD_FILES
and CONFIG_EXPERT as well as enabling one of the legacy
board files with the corresponding chip support.
If that's all you think is missing, I can add this
trivial patch as well and rework the series to not
drop code that depends on PXA310/PXA320:
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -45,6 +45,8 @@ config MACH_PXA27X_DT
config MACH_PXA3XX_DT
bool "Support PXA3xx platforms from device tree"
select CPU_PXA300
+ select CPU_PXA310
+ select CPU_PXA320
select PINCTRL
select POWER_SUPPLY
select PXA3xx
Can you have a look at the other patches to see if there
are more removed drivers or platform bits that are currently
dead code but are actually required?
Arnd
On Sun, Jan 8, 2023, at 14:40, Arnd Bergmann wrote:
> On Sun, Jan 8, 2023, at 09:49, Robert Jarzmik wrote:
>> Arnd Bergmann <arnd@kernel.org> writes:
> If that's all you think is missing, I can add this
> trivial patch as well and rework the series to not
> drop code that depends on PXA310/PXA320:
>
> --- a/arch/arm/mach-pxa/Kconfig
> +++ b/arch/arm/mach-pxa/Kconfig
> @@ -45,6 +45,8 @@ config MACH_PXA27X_DT
> config MACH_PXA3XX_DT
> bool "Support PXA3xx platforms from device tree"
> select CPU_PXA300
> + select CPU_PXA310
> + select CPU_PXA320
> select PINCTRL
> select POWER_SUPPLY
> select PXA3xx
I've put this in a separate branch now and will submit
it as a bugfix along with two other patches for issues
I found while testing omap1.
I've dropped the pxa310/320 removal now, but kept
the pxa93x removal, since that has no DT support at
all and remains dead code.
Arnd
"Arnd Bergmann" <arnd@arndb.de> writes:
> Hi Robert,
Hi Arnd,
> Thanks for pointing this out, I thought that I had caught
> all the missing dependencies ones after you pointed out
> the AC97_BUS_NEW that I fixed in patch 14.
Sorry I've not seen this one in my previous review.
> From what I can tell, commit b5aaaa666a85 ("ARM: pxa: add
> Kconfig dependencies for ATAGS based boards"), the
> PXA310/PXA320 DT support became dead code because
> MACH_PXA3XX_DT only selects CPU_PXA300, so if it worked
> before that commit, it now needs CONFIG_UNUSED_BOARD_FILES
> and CONFIG_EXPERT as well as enabling one of the legacy
> board files with the corresponding chip support.
>
> If that's all you think is missing, I can add this
> trivial patch as well and rework the series to not
> drop code that depends on PXA310/PXA320:
Yes, that would be great !
> Can you have a look at the other patches to see if there
> are more removed drivers or platform bits that are currently
> dead code but are actually required?
Yes, I've been through your whole serie and that's the
last thing I have identified. I've read carefully all the
patches now, and the whole serie looks good to me.
So with this patch and keeping the clocks and cpufreq
parts for pxa3*0, you can add everywhere my :
Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
Cheers.
--
Robert
@@ -54,7 +54,6 @@ extern struct platform_device pxa_device_asoc_ssp4;
extern struct platform_device pxa25x_device_gpio;
extern struct platform_device pxa27x_device_gpio;
extern struct platform_device pxa3xx_device_gpio;
-extern struct platform_device pxa93x_device_gpio;
void __init pxa_register_device(struct platform_device *dev, void *data);
void __init pxa2xx_set_dmac_info(struct mmp_dma_platdata *dma_pdata);
@@ -27,15 +27,6 @@
#define GPIO61_GPIO MFP_CFG(GPIO61, AF0)
#define GPIO62_GPIO MFP_CFG(GPIO62, AF0)
-#ifdef CONFIG_CPU_PXA310
-#define GPIO7_2_GPIO MFP_CFG(GPIO7_2, AF0)
-#define GPIO8_2_GPIO MFP_CFG(GPIO8_2, AF0)
-#define GPIO9_2_GPIO MFP_CFG(GPIO9_2, AF0)
-#define GPIO10_2_GPIO MFP_CFG(GPIO10_2, AF0)
-#define GPIO11_2_GPIO MFP_CFG(GPIO11_2, AF0)
-#define GPIO12_2_GPIO MFP_CFG(GPIO12_2, AF0)
-#endif
-
/* Chip Select */
#define GPIO1_nCS2 MFP_CFG(GPIO1, AF1)
#define GPIO2_nCS3 MFP_CFG(GPIO2, AF1)
@@ -526,47 +517,4 @@
#define GPIO46_UTM_PHYDATA_7 MFP_CFG(GPIO46, AF3)
#endif /* CONFIG_CPU_PXA300 */
-/*
- * PXA310 specific MFP configurations
- */
-#ifdef CONFIG_CPU_PXA310
-/* USB P2 */
-#define GPIO36_USB_P2_1 MFP_CFG(GPIO36, AF1)
-#define GPIO30_USB_P2_2 MFP_CFG(GPIO30, AF1)
-#define GPIO35_USB_P2_3 MFP_CFG(GPIO35, AF1)
-#define GPIO32_USB_P2_4 MFP_CFG(GPIO32, AF1)
-#define GPIO34_USB_P2_5 MFP_CFG(GPIO34, AF1)
-#define GPIO31_USB_P2_6 MFP_CFG(GPIO31, AF1)
-
-/* MMC1 */
-#define GPIO24_MMC1_CMD MFP_CFG(GPIO24, AF3)
-#define GPIO29_MMC1_DAT0 MFP_CFG(GPIO29, AF3)
-
-/* MMC3 */
-#define GPIO103_MMC3_CLK MFP_CFG(GPIO103, AF2)
-#define GPIO105_MMC3_CMD MFP_CFG(GPIO105, AF2)
-#define GPIO11_2_MMC3_CLK MFP_CFG(GPIO11_2, AF1)
-#define GPIO12_2_MMC3_CMD MFP_CFG(GPIO12_2, AF1)
-#define GPIO7_2_MMC3_DAT0 MFP_CFG(GPIO7_2, AF1)
-#define GPIO8_2_MMC3_DAT1 MFP_CFG(GPIO8_2, AF1)
-#define GPIO9_2_MMC3_DAT2 MFP_CFG(GPIO9_2, AF1)
-#define GPIO10_2_MMC3_DAT3 MFP_CFG(GPIO10_2, AF1)
-
-/* ULPI */
-#define GPIO38_ULPI_CLK MFP_CFG(GPIO38, AF1)
-#define GPIO30_ULPI_DATA_OUT_0 MFP_CFG(GPIO30, AF3)
-#define GPIO31_ULPI_DATA_OUT_1 MFP_CFG(GPIO31, AF3)
-#define GPIO32_ULPI_DATA_OUT_2 MFP_CFG(GPIO32, AF3)
-#define GPIO33_ULPI_DATA_OUT_3 MFP_CFG(GPIO33, AF3)
-#define GPIO34_ULPI_DATA_OUT_4 MFP_CFG(GPIO34, AF3)
-#define GPIO35_ULPI_DATA_OUT_5 MFP_CFG(GPIO35, AF3)
-#define GPIO36_ULPI_DATA_OUT_6 MFP_CFG(GPIO36, AF3)
-#define GPIO37_ULPI_DATA_OUT_7 MFP_CFG(GPIO37, AF3)
-#define GPIO33_ULPI_OTG_INTR MFP_CFG(GPIO33, AF1)
-
-#define ULPI_DIR MFP_CFG_DRV(ULPI_DIR, AF0, DS01X)
-#define ULPI_NXT MFP_CFG_DRV(ULPI_NXT, AF0, DS01X)
-#define ULPI_STP MFP_CFG_DRV(ULPI_STP, AF0, DS01X)
-#endif /* CONFIG_CPU_PXA310 */
-
#endif /* __ASM_ARCH_MFP_PXA300_H */
deleted file mode 100644
@@ -69,28 +69,13 @@ static struct mfp_addr_map pxa300_mfp_addr_map[] __initdata = {
MFP_ADDR_END,
};
-/* override pxa300 MFP register addresses */
-static struct mfp_addr_map pxa310_mfp_addr_map[] __initdata = {
- MFP_ADDR_X(GPIO30, GPIO98, 0x0418),
- MFP_ADDR_X(GPIO7_2, GPIO12_2, 0x052C),
-
- MFP_ADDR(ULPI_STP, 0x040C),
- MFP_ADDR(ULPI_NXT, 0x0410),
- MFP_ADDR(ULPI_DIR, 0x0414),
-
- MFP_ADDR_END,
-};
-
static int __init pxa300_init(void)
{
- if (cpu_is_pxa300() || cpu_is_pxa310()) {
+ if (cpu_is_pxa300()) {
mfp_init_base(io_p2v(MFPR_BASE));
mfp_init_addr(pxa300_mfp_addr_map);
}
- if (cpu_is_pxa310())
- mfp_init_addr(pxa310_mfp_addr_map);
-
return 0;
}
@@ -496,8 +496,6 @@ static int __init pxa3xx_init(void)
pxa3xx_init_pm();
enable_irq_wake(IRQ_WAKEUP0);
- if (cpu_is_pxa320())
- enable_irq_wake(IRQ_WAKEUP1);
register_syscore_ops(&pxa_irq_syscore_ops);
register_syscore_ops(&pxa3xx_mfp_syscore_ops);
@@ -509,7 +507,7 @@ static int __init pxa3xx_init(void)
ret = platform_add_devices(devices, ARRAY_SIZE(devices));
if (ret)
return ret;
- if (cpu_is_pxa300() || cpu_is_pxa310() || cpu_is_pxa320()) {
+ if (cpu_is_pxa300()) {
platform_device_add_data(&pxa3xx_device_gpio,
&pxa3xx_gpio_pdata,
sizeof(pxa3xx_gpio_pdata));
@@ -269,19 +269,6 @@ static struct desc_clk_cken pxa300_310_clocks[] __initdata = {
PXA3XX_CKEN_1RATE("pxa3xx-gpio", NULL, GPIO, pxa3xx_13MHz_bus_parents),
};
-static struct desc_clk_cken pxa320_clocks[] __initdata = {
- PXA3XX_PBUS_CKEN("pxa3xx-nand", NULL, NAND, 1, 2, 1, 6, 0),
- PXA3XX_PBUS_CKEN("pxa3xx-gcu", NULL, PXA320_GCU, 1, 1, 1, 1, 0),
- PXA3XX_CKEN_1RATE("pxa3xx-gpio", NULL, GPIO, pxa3xx_13MHz_bus_parents),
-};
-
-static struct desc_clk_cken pxa93x_clocks[] __initdata = {
-
- PXA3XX_PBUS_CKEN("pxa3xx-gcu", NULL, PXA300_GCU, 1, 1, 1, 1, 0),
- PXA3XX_PBUS_CKEN("pxa3xx-nand", NULL, NAND, 1, 2, 1, 4, 0),
- PXA3XX_CKEN_1RATE("pxa93x-gpio", NULL, GPIO, pxa3xx_13MHz_bus_parents),
-};
-
static unsigned long clk_pxa3xx_system_bus_get_rate(struct clk_hw *hw,
unsigned long parent_rate)
{
@@ -446,13 +433,8 @@ int __init pxa3xx_clocks_init(void __iomem *regs, void __iomem *oscc_reg)
ret = clk_pxa_cken_init(pxa3xx_clocks, ARRAY_SIZE(pxa3xx_clocks), regs);
if (ret)
return ret;
- if (cpu_is_pxa320())
- return clk_pxa_cken_init(pxa320_clocks,
- ARRAY_SIZE(pxa320_clocks), regs);
- if (cpu_is_pxa300() || cpu_is_pxa310())
- return clk_pxa_cken_init(pxa300_310_clocks,
- ARRAY_SIZE(pxa300_310_clocks), regs);
- return clk_pxa_cken_init(pxa93x_clocks, ARRAY_SIZE(pxa93x_clocks), regs);
+ return clk_pxa_cken_init(pxa300_310_clocks,
+ ARRAY_SIZE(pxa300_310_clocks), regs);
}
static void __init pxa3xx_dt_clocks_init(struct device_node *np)
@@ -91,15 +91,6 @@ static struct pxa3xx_freq_info pxa300_freqs[] = {
OP(624, 24, 2, 208, 260, 208, 312, 3, 1375, 1400), /* 624MHz */
};
-static struct pxa3xx_freq_info pxa320_freqs[] = {
- /* CPU XL XN HSS DMEM SMEM SRAM DFI VCC_CORE VCC_SRAM */
- OP(104, 8, 1, 104, 260, 78, 104, 3, 1000, 1100), /* 104MHz */
- OP(208, 16, 1, 104, 260, 104, 156, 2, 1000, 1100), /* 208MHz */
- OP(416, 16, 2, 156, 260, 104, 208, 2, 1100, 1200), /* 416MHz */
- OP(624, 24, 2, 208, 260, 208, 312, 3, 1375, 1400), /* 624MHz */
- OP(806, 31, 2, 208, 260, 208, 312, 3, 1400, 1400), /* 806MHz */
-};
-
static unsigned int pxa3xx_freqs_num;
static struct pxa3xx_freq_info *pxa3xx_freqs;
static struct cpufreq_frequency_table *pxa3xx_freqs_table;
@@ -186,17 +177,11 @@ static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy)
/* set default policy and cpuinfo */
policy->min = policy->cpuinfo.min_freq = 104000;
- policy->max = policy->cpuinfo.max_freq =
- (cpu_is_pxa320()) ? 806000 : 624000;
+ policy->max = policy->cpuinfo.max_freq = 624000;
policy->cpuinfo.transition_latency = 1000; /* FIXME: 1 ms, assumed */
- if (cpu_is_pxa300() || cpu_is_pxa310())
- ret = setup_freqs_table(policy, pxa300_freqs,
- ARRAY_SIZE(pxa300_freqs));
-
- if (cpu_is_pxa320())
- ret = setup_freqs_table(policy, pxa320_freqs,
- ARRAY_SIZE(pxa320_freqs));
+ ret = setup_freqs_table(policy, pxa300_freqs,
+ ARRAY_SIZE(pxa300_freqs));
if (ret) {
pr_err("failed to setup frequency table\n");
@@ -44,8 +44,7 @@
#define NR_SG 1
#define CLKRT_OFF (~0)
-#define mmc_has_26MHz() (cpu_is_pxa300() || cpu_is_pxa310() \
- || cpu_is_pxa935())
+#define mmc_has_26MHz() (cpu_is_pxa300())
struct pxamci_host {
struct mmc_host *mmc;
@@ -268,12 +268,6 @@ static int pxa2xx_drv_pcmcia_probe(struct platform_device *dev)
goto err0;
}
- if (cpu_is_pxa320() && ops->nr > 1) {
- dev_err(&dev->dev, "pxa320 supports only one pcmcia slot");
- ret = -EINVAL;
- goto err0;
- }
-
clk = devm_clk_get(&dev->dev, NULL);
if (IS_ERR(clk))
return -ENODEV;
@@ -56,12 +56,6 @@
* PXA935 B1 0x56056938 0x8E653013
*/
#ifdef CONFIG_PXA25x
-#define __cpu_is_pxa210(id) \
- ({ \
- unsigned int _id = (id) & 0xf3f0; \
- _id == 0x2120; \
- })
-
#define __cpu_is_pxa250(id) \
({ \
unsigned int _id = (id) & 0xf3ff; \
@@ -80,7 +74,6 @@
_id == 0x2100; \
})
#else
-#define __cpu_is_pxa210(id) (0)
#define __cpu_is_pxa250(id) (0)
#define __cpu_is_pxa255(id) (0)
#define __cpu_is_pxa25x(id) (0)
@@ -106,51 +99,6 @@
#define __cpu_is_pxa300(id) (0)
#endif
-#ifdef CONFIG_CPU_PXA310
-#define __cpu_is_pxa310(id) \
- ({ \
- unsigned int _id = (id) >> 4 & 0xfff; \
- _id == 0x689; \
- })
-#else
-#define __cpu_is_pxa310(id) (0)
-#endif
-
-#ifdef CONFIG_CPU_PXA320
-#define __cpu_is_pxa320(id) \
- ({ \
- unsigned int _id = (id) >> 4 & 0xfff; \
- _id == 0x603 || _id == 0x682; \
- })
-#else
-#define __cpu_is_pxa320(id) (0)
-#endif
-
-#ifdef CONFIG_CPU_PXA930
-#define __cpu_is_pxa930(id) \
- ({ \
- unsigned int _id = (id) >> 4 & 0xfff; \
- _id == 0x683; \
- })
-#else
-#define __cpu_is_pxa930(id) (0)
-#endif
-
-#ifdef CONFIG_CPU_PXA935
-#define __cpu_is_pxa935(id) \
- ({ \
- unsigned int _id = (id) >> 4 & 0xfff; \
- _id == 0x693; \
- })
-#else
-#define __cpu_is_pxa935(id) (0)
-#endif
-
-#define cpu_is_pxa210() \
- ({ \
- __cpu_is_pxa210(read_cpuid_id()); \
- })
-
#define cpu_is_pxa250() \
({ \
__cpu_is_pxa250(read_cpuid_id()); \
@@ -176,27 +124,6 @@
__cpu_is_pxa300(read_cpuid_id()); \
})
-#define cpu_is_pxa310() \
- ({ \
- __cpu_is_pxa310(read_cpuid_id()); \
- })
-
-#define cpu_is_pxa320() \
- ({ \
- __cpu_is_pxa320(read_cpuid_id()); \
- })
-
-#define cpu_is_pxa930() \
- ({ \
- __cpu_is_pxa930(read_cpuid_id()); \
- })
-
-#define cpu_is_pxa935() \
- ({ \
- __cpu_is_pxa935(read_cpuid_id()); \
- })
-
-
/*
* CPUID Core Generation Bit
@@ -215,25 +142,12 @@
#ifdef CONFIG_PXA3xx
#define __cpu_is_pxa3xx(id) \
({ \
- __cpu_is_pxa300(id) \
- || __cpu_is_pxa310(id) \
- || __cpu_is_pxa320(id) \
- || __cpu_is_pxa93x(id); \
+ __cpu_is_pxa300(id); \
})
#else
#define __cpu_is_pxa3xx(id) (0)
#endif
-#if defined(CONFIG_CPU_PXA930) || defined(CONFIG_CPU_PXA935)
-#define __cpu_is_pxa93x(id) \
- ({ \
- __cpu_is_pxa930(id) \
- || __cpu_is_pxa935(id); \
- })
-#else
-#define __cpu_is_pxa93x(id) (0)
-#endif
-
#define cpu_is_pxa2xx() \
({ \
__cpu_is_pxa2xx(read_cpuid_id()); \
@@ -244,9 +158,4 @@
__cpu_is_pxa3xx(read_cpuid_id()); \
})
-#define cpu_is_pxa93x() \
- ({ \
- __cpu_is_pxa93x(read_cpuid_id()); \
- })
-
#endif