Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/83xx: Split usb.c

usb.c contains three independent parts with no common part.

Split it.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
[mpe: Drop usb.o from Makefile to fix build]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/75712b54bf9cb85ab10e47cd2772cd2a098ca895.1692199324.git.christophe.leroy@csgroup.eu

authored by

Christophe Leroy and committed by
Michael Ellerman
5951b62b d25f01fb

+152 -119
+4 -1
arch/powerpc/platforms/83xx/Makefile
··· 2 2 # 3 3 # Makefile for the PowerPC 83xx linux kernel. 4 4 # 5 - obj-y := misc.o usb.o 5 + obj-y := misc.o 6 6 obj-$(CONFIG_SUSPEND) += suspend.o suspend-asm.o 7 7 obj-$(CONFIG_MCU_MPC8349EMITX) += mcu_mpc8349emitx.o 8 8 obj-$(CONFIG_MPC830x_RDB) += mpc830x_rdb.o ··· 13 13 obj-$(CONFIG_MPC837x_RDB) += mpc837x_rdb.o 14 14 obj-$(CONFIG_ASP834x) += asp834x.o 15 15 obj-$(CONFIG_KMETER1) += km83xx.o 16 + obj-$(CONFIG_PPC_MPC831x) += usb_831x.o 17 + obj-$(CONFIG_PPC_MPC834x) += usb_834x.o 18 + obj-$(CONFIG_PPC_MPC837x) += usb_837x.o
-118
arch/powerpc/platforms/83xx/usb.c arch/powerpc/platforms/83xx/usb_831x.c
··· 17 17 18 18 #include "mpc83xx.h" 19 19 20 - #ifdef CONFIG_PPC_MPC834x 21 - int __init mpc834x_usb_cfg(void) 22 - { 23 - unsigned long sccr, sicrl, sicrh; 24 - void __iomem *immap; 25 - struct device_node *np = NULL; 26 - int port0_is_dr = 0, port1_is_dr = 0; 27 - const void *prop, *dr_mode; 28 - 29 - immap = ioremap(get_immrbase(), 0x1000); 30 - if (!immap) 31 - return -ENOMEM; 32 - 33 - /* Read registers */ 34 - /* Note: DR and MPH must use the same clock setting in SCCR */ 35 - sccr = in_be32(immap + MPC83XX_SCCR_OFFS) & ~MPC83XX_SCCR_USB_MASK; 36 - sicrl = in_be32(immap + MPC83XX_SICRL_OFFS) & ~MPC834X_SICRL_USB_MASK; 37 - sicrh = in_be32(immap + MPC83XX_SICRH_OFFS) & ~MPC834X_SICRH_USB_UTMI; 38 - 39 - np = of_find_compatible_node(NULL, NULL, "fsl-usb2-dr"); 40 - if (np) { 41 - sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */ 42 - 43 - prop = of_get_property(np, "phy_type", NULL); 44 - port1_is_dr = 1; 45 - if (prop && 46 - (!strcmp(prop, "utmi") || !strcmp(prop, "utmi_wide"))) { 47 - sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1; 48 - sicrh |= MPC834X_SICRH_USB_UTMI; 49 - port0_is_dr = 1; 50 - } else if (prop && !strcmp(prop, "serial")) { 51 - dr_mode = of_get_property(np, "dr_mode", NULL); 52 - if (dr_mode && !strcmp(dr_mode, "otg")) { 53 - sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1; 54 - port0_is_dr = 1; 55 - } else { 56 - sicrl |= MPC834X_SICRL_USB1; 57 - } 58 - } else if (prop && !strcmp(prop, "ulpi")) { 59 - sicrl |= MPC834X_SICRL_USB1; 60 - } else { 61 - pr_warn("834x USB PHY type not supported\n"); 62 - } 63 - of_node_put(np); 64 - } 65 - np = of_find_compatible_node(NULL, NULL, "fsl-usb2-mph"); 66 - if (np) { 67 - sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */ 68 - 69 - prop = of_get_property(np, "port0", NULL); 70 - if (prop) { 71 - if (port0_is_dr) 72 - pr_warn("834x USB port0 can't be used by both DR and MPH!\n"); 73 - sicrl &= ~MPC834X_SICRL_USB0; 74 - } 75 - prop = of_get_property(np, "port1", NULL); 76 - if (prop) { 77 - if (port1_is_dr) 78 - pr_warn("834x USB port1 can't be used by both DR and MPH!\n"); 79 - sicrl &= ~MPC834X_SICRL_USB1; 80 - } 81 - of_node_put(np); 82 - } 83 - 84 - /* Write back */ 85 - out_be32(immap + MPC83XX_SCCR_OFFS, sccr); 86 - out_be32(immap + MPC83XX_SICRL_OFFS, sicrl); 87 - out_be32(immap + MPC83XX_SICRH_OFFS, sicrh); 88 - 89 - iounmap(immap); 90 - return 0; 91 - } 92 - #endif /* CONFIG_PPC_MPC834x */ 93 - 94 - #ifdef CONFIG_PPC_MPC831x 95 20 int __init mpc831x_usb_cfg(void) 96 21 { 97 22 u32 temp; ··· 126 201 of_node_put(np); 127 202 return ret; 128 203 } 129 - #endif /* CONFIG_PPC_MPC831x */ 130 - 131 - #ifdef CONFIG_PPC_MPC837x 132 - int __init mpc837x_usb_cfg(void) 133 - { 134 - void __iomem *immap; 135 - struct device_node *np = NULL; 136 - const void *prop; 137 - int ret = 0; 138 - 139 - np = of_find_compatible_node(NULL, NULL, "fsl-usb2-dr"); 140 - if (!np || !of_device_is_available(np)) { 141 - of_node_put(np); 142 - return -ENODEV; 143 - } 144 - prop = of_get_property(np, "phy_type", NULL); 145 - 146 - if (!prop || (strcmp(prop, "ulpi") && strcmp(prop, "serial"))) { 147 - pr_warn("837x USB PHY type not supported\n"); 148 - of_node_put(np); 149 - return -EINVAL; 150 - } 151 - 152 - /* Map IMMR space for pin and clock settings */ 153 - immap = ioremap(get_immrbase(), 0x1000); 154 - if (!immap) { 155 - of_node_put(np); 156 - return -ENOMEM; 157 - } 158 - 159 - /* Configure clock */ 160 - clrsetbits_be32(immap + MPC83XX_SCCR_OFFS, MPC837X_SCCR_USB_DRCM_11, 161 - MPC837X_SCCR_USB_DRCM_11); 162 - 163 - /* Configure pin mux for ULPI/serial */ 164 - clrsetbits_be32(immap + MPC83XX_SICRL_OFFS, MPC837X_SICRL_USB_MASK, 165 - MPC837X_SICRL_USB_ULPI); 166 - 167 - iounmap(immap); 168 - of_node_put(np); 169 - return ret; 170 - } 171 - #endif /* CONFIG_PPC_MPC837x */
+90
arch/powerpc/platforms/83xx/usb_834x.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-or-later 2 + /* 3 + * Freescale 83xx USB SOC setup code 4 + * 5 + * Copyright (C) 2007 Freescale Semiconductor, Inc. 6 + * Author: Li Yang 7 + */ 8 + 9 + #include <linux/stddef.h> 10 + #include <linux/kernel.h> 11 + #include <linux/errno.h> 12 + #include <linux/of.h> 13 + #include <linux/of_address.h> 14 + #include <linux/io.h> 15 + 16 + #include <sysdev/fsl_soc.h> 17 + 18 + #include "mpc83xx.h" 19 + 20 + int __init mpc834x_usb_cfg(void) 21 + { 22 + unsigned long sccr, sicrl, sicrh; 23 + void __iomem *immap; 24 + struct device_node *np = NULL; 25 + int port0_is_dr = 0, port1_is_dr = 0; 26 + const void *prop, *dr_mode; 27 + 28 + immap = ioremap(get_immrbase(), 0x1000); 29 + if (!immap) 30 + return -ENOMEM; 31 + 32 + /* Read registers */ 33 + /* Note: DR and MPH must use the same clock setting in SCCR */ 34 + sccr = in_be32(immap + MPC83XX_SCCR_OFFS) & ~MPC83XX_SCCR_USB_MASK; 35 + sicrl = in_be32(immap + MPC83XX_SICRL_OFFS) & ~MPC834X_SICRL_USB_MASK; 36 + sicrh = in_be32(immap + MPC83XX_SICRH_OFFS) & ~MPC834X_SICRH_USB_UTMI; 37 + 38 + np = of_find_compatible_node(NULL, NULL, "fsl-usb2-dr"); 39 + if (np) { 40 + sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */ 41 + 42 + prop = of_get_property(np, "phy_type", NULL); 43 + port1_is_dr = 1; 44 + if (prop && 45 + (!strcmp(prop, "utmi") || !strcmp(prop, "utmi_wide"))) { 46 + sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1; 47 + sicrh |= MPC834X_SICRH_USB_UTMI; 48 + port0_is_dr = 1; 49 + } else if (prop && !strcmp(prop, "serial")) { 50 + dr_mode = of_get_property(np, "dr_mode", NULL); 51 + if (dr_mode && !strcmp(dr_mode, "otg")) { 52 + sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1; 53 + port0_is_dr = 1; 54 + } else { 55 + sicrl |= MPC834X_SICRL_USB1; 56 + } 57 + } else if (prop && !strcmp(prop, "ulpi")) { 58 + sicrl |= MPC834X_SICRL_USB1; 59 + } else { 60 + pr_warn("834x USB PHY type not supported\n"); 61 + } 62 + of_node_put(np); 63 + } 64 + np = of_find_compatible_node(NULL, NULL, "fsl-usb2-mph"); 65 + if (np) { 66 + sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */ 67 + 68 + prop = of_get_property(np, "port0", NULL); 69 + if (prop) { 70 + if (port0_is_dr) 71 + pr_warn("834x USB port0 can't be used by both DR and MPH!\n"); 72 + sicrl &= ~MPC834X_SICRL_USB0; 73 + } 74 + prop = of_get_property(np, "port1", NULL); 75 + if (prop) { 76 + if (port1_is_dr) 77 + pr_warn("834x USB port1 can't be used by both DR and MPH!\n"); 78 + sicrl &= ~MPC834X_SICRL_USB1; 79 + } 80 + of_node_put(np); 81 + } 82 + 83 + /* Write back */ 84 + out_be32(immap + MPC83XX_SCCR_OFFS, sccr); 85 + out_be32(immap + MPC83XX_SICRL_OFFS, sicrl); 86 + out_be32(immap + MPC83XX_SICRH_OFFS, sicrh); 87 + 88 + iounmap(immap); 89 + return 0; 90 + }
+58
arch/powerpc/platforms/83xx/usb_837x.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-or-later 2 + /* 3 + * Freescale 83xx USB SOC setup code 4 + * 5 + * Copyright (C) 2007 Freescale Semiconductor, Inc. 6 + * Author: Li Yang 7 + */ 8 + 9 + #include <linux/stddef.h> 10 + #include <linux/kernel.h> 11 + #include <linux/errno.h> 12 + #include <linux/of.h> 13 + #include <linux/of_address.h> 14 + #include <linux/io.h> 15 + 16 + #include <sysdev/fsl_soc.h> 17 + 18 + #include "mpc83xx.h" 19 + 20 + int __init mpc837x_usb_cfg(void) 21 + { 22 + void __iomem *immap; 23 + struct device_node *np = NULL; 24 + const void *prop; 25 + int ret = 0; 26 + 27 + np = of_find_compatible_node(NULL, NULL, "fsl-usb2-dr"); 28 + if (!np || !of_device_is_available(np)) { 29 + of_node_put(np); 30 + return -ENODEV; 31 + } 32 + prop = of_get_property(np, "phy_type", NULL); 33 + 34 + if (!prop || (strcmp(prop, "ulpi") && strcmp(prop, "serial"))) { 35 + pr_warn("837x USB PHY type not supported\n"); 36 + of_node_put(np); 37 + return -EINVAL; 38 + } 39 + 40 + /* Map IMMR space for pin and clock settings */ 41 + immap = ioremap(get_immrbase(), 0x1000); 42 + if (!immap) { 43 + of_node_put(np); 44 + return -ENOMEM; 45 + } 46 + 47 + /* Configure clock */ 48 + clrsetbits_be32(immap + MPC83XX_SCCR_OFFS, MPC837X_SCCR_USB_DRCM_11, 49 + MPC837X_SCCR_USB_DRCM_11); 50 + 51 + /* Configure pin mux for ULPI/serial */ 52 + clrsetbits_be32(immap + MPC83XX_SICRL_OFFS, MPC837X_SICRL_USB_MASK, 53 + MPC837X_SICRL_USB_ULPI); 54 + 55 + iounmap(immap); 56 + of_node_put(np); 57 + return ret; 58 + }