diff options
Diffstat (limited to 'target/linux/bcm4908/patches-5.4/084-v5.6-0005-phy-usb-Restructure-in-preparation-for-adding-7216-U.patch')
-rw-r--r-- | target/linux/bcm4908/patches-5.4/084-v5.6-0005-phy-usb-Restructure-in-preparation-for-adding-7216-U.patch | 611 |
1 files changed, 0 insertions, 611 deletions
diff --git a/target/linux/bcm4908/patches-5.4/084-v5.6-0005-phy-usb-Restructure-in-preparation-for-adding-7216-U.patch b/target/linux/bcm4908/patches-5.4/084-v5.6-0005-phy-usb-Restructure-in-preparation-for-adding-7216-U.patch deleted file mode 100644 index 2a63556122..0000000000 --- a/target/linux/bcm4908/patches-5.4/084-v5.6-0005-phy-usb-Restructure-in-preparation-for-adding-7216-U.patch +++ /dev/null @@ -1,611 +0,0 @@ -From 94583a41047eb9489f576344b8ba9370cf4cbfb7 Mon Sep 17 00:00:00 2001 -From: Al Cooper <alcooperx@gmail.com> -Date: Fri, 3 Jan 2020 13:18:03 -0500 -Subject: [PATCH] phy: usb: Restructure in preparation for adding 7216 USB - support - -The driver is being restructured in preparation for adding support -for the new Synopsys USB conroller on the 7216. Since all the bugs -and work-arounds in previous STB chips are supposed to be fixed, -most of the code in phy-brcm-usb-init.c is not needed. Instead of -adding more complexity to the already complicated phy-brcm-usb-init.c -module, the driver will be restructured to use a vector table to -dispatch into different C modules for the different controllers. - -There was also some general cleanup done including some ipp setup -code that was incorrect. - -Signed-off-by: Al Cooper <alcooperx@gmail.com> -Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> -Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> ---- - drivers/phy/broadcom/phy-brcm-usb-init.c | 191 ++++++++++------------- - drivers/phy/broadcom/phy-brcm-usb-init.h | 140 +++++++++++++++-- - drivers/phy/broadcom/phy-brcm-usb.c | 6 +- - 3 files changed, 214 insertions(+), 123 deletions(-) - ---- a/drivers/phy/broadcom/phy-brcm-usb-init.c -+++ b/drivers/phy/broadcom/phy-brcm-usb-init.c -@@ -129,10 +129,6 @@ enum { - USB_CTRL_SELECTOR_COUNT, - }; - --#define USB_CTRL_REG(base, reg) ((void __iomem *)base + USB_CTRL_##reg) --#define USB_XHCI_EC_REG(base, reg) ((void __iomem *)base + USB_XHCI_EC_##reg) --#define USB_CTRL_MASK(reg, field) \ -- USB_CTRL_##reg##_##field##_MASK - #define USB_CTRL_MASK_FAMILY(params, reg, field) \ - (params->usb_reg_bits_map[USB_CTRL_##reg##_##field##_SELECTOR]) - -@@ -143,13 +139,6 @@ enum { - usb_ctrl_unset_family(params, USB_CTRL_##reg, \ - USB_CTRL_##reg##_##field##_SELECTOR) - --#define USB_CTRL_SET(base, reg, field) \ -- usb_ctrl_set(USB_CTRL_REG(base, reg), \ -- USB_CTRL_##reg##_##field##_MASK) --#define USB_CTRL_UNSET(base, reg, field) \ -- usb_ctrl_unset(USB_CTRL_REG(base, reg), \ -- USB_CTRL_##reg##_##field##_MASK) -- - #define MDIO_USB2 0 - #define MDIO_USB3 BIT(31) - -@@ -405,26 +394,14 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNT - }, - }; - --static inline u32 brcmusb_readl(void __iomem *addr) --{ -- return readl(addr); --} -- --static inline void brcmusb_writel(u32 val, void __iomem *addr) --{ -- writel(val, addr); --} -- - static inline - void usb_ctrl_unset_family(struct brcm_usb_init_params *params, - u32 reg_offset, u32 field) - { - u32 mask; -- void __iomem *reg; - - mask = params->usb_reg_bits_map[field]; -- reg = params->ctrl_regs + reg_offset; -- brcmusb_writel(brcmusb_readl(reg) & ~mask, reg); -+ brcm_usb_ctrl_unset(params->ctrl_regs + reg_offset, mask); - }; - - static inline -@@ -432,45 +409,27 @@ void usb_ctrl_set_family(struct brcm_usb - u32 reg_offset, u32 field) - { - u32 mask; -- void __iomem *reg; - - mask = params->usb_reg_bits_map[field]; -- reg = params->ctrl_regs + reg_offset; -- brcmusb_writel(brcmusb_readl(reg) | mask, reg); -+ brcm_usb_ctrl_set(params->ctrl_regs + reg_offset, mask); - }; - --static inline void usb_ctrl_set(void __iomem *reg, u32 field) --{ -- u32 value; -- -- value = brcmusb_readl(reg); -- brcmusb_writel(value | field, reg); --} -- --static inline void usb_ctrl_unset(void __iomem *reg, u32 field) --{ -- u32 value; -- -- value = brcmusb_readl(reg); -- brcmusb_writel(value & ~field, reg); --} -- - static u32 brcmusb_usb_mdio_read(void __iomem *ctrl_base, u32 reg, int mode) - { - u32 data; - - data = (reg << 16) | mode; -- brcmusb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); -+ brcm_usb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); - data |= (1 << 24); -- brcmusb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); -+ brcm_usb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); - data &= ~(1 << 24); - /* wait for the 60MHz parallel to serial shifter */ - usleep_range(10, 20); -- brcmusb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); -+ brcm_usb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); - /* wait for the 60MHz parallel to serial shifter */ - usleep_range(10, 20); - -- return brcmusb_readl(USB_CTRL_REG(ctrl_base, MDIO2)) & 0xffff; -+ return brcm_usb_readl(USB_CTRL_REG(ctrl_base, MDIO2)) & 0xffff; - } - - static void brcmusb_usb_mdio_write(void __iomem *ctrl_base, u32 reg, -@@ -479,14 +438,14 @@ static void brcmusb_usb_mdio_write(void - u32 data; - - data = (reg << 16) | val | mode; -- brcmusb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); -+ brcm_usb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); - data |= (1 << 25); -- brcmusb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); -+ brcm_usb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); - data &= ~(1 << 25); - - /* wait for the 60MHz parallel to serial shifter */ - usleep_range(10, 20); -- brcmusb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); -+ brcm_usb_writel(data, USB_CTRL_REG(ctrl_base, MDIO)); - /* wait for the 60MHz parallel to serial shifter */ - usleep_range(10, 20); - } -@@ -713,12 +672,12 @@ static void brcmusb_usb3_otp_fix(struct - - if (params->family_id != 0x74371000 || !xhci_ec_base) - return; -- brcmusb_writel(0xa20c, USB_XHCI_EC_REG(xhci_ec_base, IRAADR)); -- val = brcmusb_readl(USB_XHCI_EC_REG(xhci_ec_base, IRADAT)); -+ brcm_usb_writel(0xa20c, USB_XHCI_EC_REG(xhci_ec_base, IRAADR)); -+ val = brcm_usb_readl(USB_XHCI_EC_REG(xhci_ec_base, IRADAT)); - - /* set cfg_pick_ss_lock */ - val |= (1 << 27); -- brcmusb_writel(val, USB_XHCI_EC_REG(xhci_ec_base, IRADAT)); -+ brcm_usb_writel(val, USB_XHCI_EC_REG(xhci_ec_base, IRADAT)); - - /* Reset USB 3.0 PHY for workaround to take effect */ - USB_CTRL_UNSET(params->ctrl_regs, USB30_CTL1, PHY3_RESETB); -@@ -751,7 +710,7 @@ static void brcmusb_xhci_soft_reset(stru - * - default chip/rev. - * NOTE: The minor rev is always ignored. - */ --static enum brcm_family_type brcmusb_get_family_type( -+static enum brcm_family_type get_family_type( - struct brcm_usb_init_params *params) - { - int last_type = -1; -@@ -779,7 +738,7 @@ static enum brcm_family_type brcmusb_get - return last_type; - } - --void brcm_usb_init_ipp(struct brcm_usb_init_params *params) -+static void usb_init_ipp(struct brcm_usb_init_params *params) - { - void __iomem *ctrl = params->ctrl_regs; - u32 reg; -@@ -795,7 +754,7 @@ void brcm_usb_init_ipp(struct brcm_usb_i - USB_CTRL_SET_FAMILY(params, USB30_CTL1, USB3_IPP); - } - -- reg = brcmusb_readl(USB_CTRL_REG(ctrl, SETUP)); -+ reg = brcm_usb_readl(USB_CTRL_REG(ctrl, SETUP)); - orig_reg = reg; - if (USB_CTRL_MASK_FAMILY(params, SETUP, STRAP_CC_DRD_MODE_ENABLE_SEL)) - /* Never use the strap, it's going away. */ -@@ -803,8 +762,8 @@ void brcm_usb_init_ipp(struct brcm_usb_i - SETUP, - STRAP_CC_DRD_MODE_ENABLE_SEL)); - if (USB_CTRL_MASK_FAMILY(params, SETUP, STRAP_IPP_SEL)) -+ /* override ipp strap pin (if it exits) */ - if (params->ipp != 2) -- /* override ipp strap pin (if it exits) */ - reg &= ~(USB_CTRL_MASK_FAMILY(params, SETUP, - STRAP_IPP_SEL)); - -@@ -812,54 +771,26 @@ void brcm_usb_init_ipp(struct brcm_usb_i - reg &= ~(USB_CTRL_MASK(SETUP, IPP) | USB_CTRL_MASK(SETUP, IOC)); - if (params->ioc) - reg |= USB_CTRL_MASK(SETUP, IOC); -- if (params->ipp == 1 && ((reg & USB_CTRL_MASK(SETUP, IPP)) == 0)) -+ if (params->ipp == 1) - reg |= USB_CTRL_MASK(SETUP, IPP); -- brcmusb_writel(reg, USB_CTRL_REG(ctrl, SETUP)); -+ brcm_usb_writel(reg, USB_CTRL_REG(ctrl, SETUP)); - - /* - * If we're changing IPP, make sure power is off long enough - * to turn off any connected devices. - */ -- if (reg != orig_reg) -+ if ((reg ^ orig_reg) & USB_CTRL_MASK(SETUP, IPP)) - msleep(50); - } - --int brcm_usb_init_get_dual_select(struct brcm_usb_init_params *params) --{ -- void __iomem *ctrl = params->ctrl_regs; -- u32 reg = 0; -- -- if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) { -- reg = brcmusb_readl(USB_CTRL_REG(ctrl, USB_DEVICE_CTL1)); -- reg &= USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, -- PORT_MODE); -- } -- return reg; --} -- --void brcm_usb_init_set_dual_select(struct brcm_usb_init_params *params, -- int mode) --{ -- void __iomem *ctrl = params->ctrl_regs; -- u32 reg; -- -- if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) { -- reg = brcmusb_readl(USB_CTRL_REG(ctrl, USB_DEVICE_CTL1)); -- reg &= ~USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, -- PORT_MODE); -- reg |= mode; -- brcmusb_writel(reg, USB_CTRL_REG(ctrl, USB_DEVICE_CTL1)); -- } --} -- --void brcm_usb_init_common(struct brcm_usb_init_params *params) -+static void usb_init_common(struct brcm_usb_init_params *params) - { - u32 reg; - void __iomem *ctrl = params->ctrl_regs; - - /* Clear any pending wake conditions */ -- reg = brcmusb_readl(USB_CTRL_REG(ctrl, USB_PM_STATUS)); -- brcmusb_writel(reg, USB_CTRL_REG(ctrl, USB_PM_STATUS)); -+ reg = brcm_usb_readl(USB_CTRL_REG(ctrl, USB_PM_STATUS)); -+ brcm_usb_writel(reg, USB_CTRL_REG(ctrl, USB_PM_STATUS)); - - /* Take USB out of power down */ - if (USB_CTRL_MASK_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN)) { -@@ -885,7 +816,7 @@ void brcm_usb_init_common(struct brcm_us - /* Block auto PLL suspend by USB2 PHY (Sasi) */ - USB_CTRL_SET(ctrl, PLL_CTL, PLL_SUSPEND_EN); - -- reg = brcmusb_readl(USB_CTRL_REG(ctrl, SETUP)); -+ reg = brcm_usb_readl(USB_CTRL_REG(ctrl, SETUP)); - if (params->selected_family == BRCM_FAMILY_7364A0) - /* Suppress overcurrent indication from USB30 ports for A0 */ - reg |= USB_CTRL_MASK_FAMILY(params, SETUP, OC3_DISABLE); -@@ -901,16 +832,16 @@ void brcm_usb_init_common(struct brcm_us - reg |= USB_CTRL_MASK_FAMILY(params, SETUP, SCB1_EN); - if (USB_CTRL_MASK_FAMILY(params, SETUP, SCB2_EN)) - reg |= USB_CTRL_MASK_FAMILY(params, SETUP, SCB2_EN); -- brcmusb_writel(reg, USB_CTRL_REG(ctrl, SETUP)); -+ brcm_usb_writel(reg, USB_CTRL_REG(ctrl, SETUP)); - - brcmusb_memc_fix(params); - - if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) { -- reg = brcmusb_readl(USB_CTRL_REG(ctrl, USB_DEVICE_CTL1)); -+ reg = brcm_usb_readl(USB_CTRL_REG(ctrl, USB_DEVICE_CTL1)); - reg &= ~USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, - PORT_MODE); - reg |= params->mode; -- brcmusb_writel(reg, USB_CTRL_REG(ctrl, USB_DEVICE_CTL1)); -+ brcm_usb_writel(reg, USB_CTRL_REG(ctrl, USB_DEVICE_CTL1)); - } - if (USB_CTRL_MASK_FAMILY(params, USB_PM, BDC_SOFT_RESETB)) { - switch (params->mode) { -@@ -932,7 +863,7 @@ void brcm_usb_init_common(struct brcm_us - } - } - --void brcm_usb_init_eohci(struct brcm_usb_init_params *params) -+static void usb_init_eohci(struct brcm_usb_init_params *params) - { - u32 reg; - void __iomem *ctrl = params->ctrl_regs; -@@ -948,10 +879,10 @@ void brcm_usb_init_eohci(struct brcm_usb - USB_CTRL_SET(ctrl, EBRIDGE, ESTOP_SCB_REQ); - - /* Setup the endian bits */ -- reg = brcmusb_readl(USB_CTRL_REG(ctrl, SETUP)); -+ reg = brcm_usb_readl(USB_CTRL_REG(ctrl, SETUP)); - reg &= ~USB_CTRL_SETUP_ENDIAN_BITS; - reg |= USB_CTRL_MASK_FAMILY(params, SETUP, ENDIAN); -- brcmusb_writel(reg, USB_CTRL_REG(ctrl, SETUP)); -+ brcm_usb_writel(reg, USB_CTRL_REG(ctrl, SETUP)); - - if (params->selected_family == BRCM_FAMILY_7271A0) - /* Enable LS keep alive fix for certain keyboards */ -@@ -962,14 +893,14 @@ void brcm_usb_init_eohci(struct brcm_usb - * Make the burst size 512 bytes to fix a hardware bug - * on the 7255a0. See HW7255-24. - */ -- reg = brcmusb_readl(USB_CTRL_REG(ctrl, EBRIDGE)); -+ reg = brcm_usb_readl(USB_CTRL_REG(ctrl, EBRIDGE)); - reg &= ~USB_CTRL_MASK(EBRIDGE, EBR_SCB_SIZE); - reg |= 0x800; -- brcmusb_writel(reg, USB_CTRL_REG(ctrl, EBRIDGE)); -+ brcm_usb_writel(reg, USB_CTRL_REG(ctrl, EBRIDGE)); - } - } - --void brcm_usb_init_xhci(struct brcm_usb_init_params *params) -+static void usb_init_xhci(struct brcm_usb_init_params *params) - { - void __iomem *ctrl = params->ctrl_regs; - -@@ -997,7 +928,7 @@ void brcm_usb_init_xhci(struct brcm_usb_ - brcmusb_usb3_otp_fix(params); - } - --void brcm_usb_uninit_common(struct brcm_usb_init_params *params) -+static void usb_uninit_common(struct brcm_usb_init_params *params) - { - if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB_PWRDN)) - USB_CTRL_SET_FAMILY(params, USB_PM, USB_PWRDN); -@@ -1006,17 +937,47 @@ void brcm_usb_uninit_common(struct brcm_ - USB_CTRL_SET_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN); - } - --void brcm_usb_uninit_eohci(struct brcm_usb_init_params *params) -+static void usb_uninit_eohci(struct brcm_usb_init_params *params) - { - } - --void brcm_usb_uninit_xhci(struct brcm_usb_init_params *params) -+static void usb_uninit_xhci(struct brcm_usb_init_params *params) - { - brcmusb_xhci_soft_reset(params, 1); - USB_CTRL_SET(params->ctrl_regs, USB30_PCTL, PHY3_IDDQ_OVERRIDE); - } - --void brcm_usb_wake_enable(struct brcm_usb_init_params *params, -+static int usb_get_dual_select(struct brcm_usb_init_params *params) -+{ -+ void __iomem *ctrl = params->ctrl_regs; -+ u32 reg = 0; -+ -+ pr_debug("%s\n", __func__); -+ if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) { -+ reg = brcm_usb_readl(USB_CTRL_REG(ctrl, USB_DEVICE_CTL1)); -+ reg &= USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, -+ PORT_MODE); -+ } -+ return reg; -+} -+ -+static void usb_set_dual_select(struct brcm_usb_init_params *params, int mode) -+{ -+ void __iomem *ctrl = params->ctrl_regs; -+ u32 reg; -+ -+ pr_debug("%s\n", __func__); -+ -+ if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) { -+ reg = brcm_usb_readl(USB_CTRL_REG(ctrl, USB_DEVICE_CTL1)); -+ reg &= ~USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, -+ PORT_MODE); -+ reg |= mode; -+ brcm_usb_writel(reg, USB_CTRL_REG(ctrl, USB_DEVICE_CTL1)); -+ } -+} -+ -+static void usb_wake_enable(struct brcm_usb_init_params *params, - int enable) - { - void __iomem *ctrl = params->ctrl_regs; -@@ -1027,13 +988,29 @@ void brcm_usb_wake_enable(struct brcm_us - USB_CTRL_UNSET(ctrl, USB_PM, RMTWKUP_EN); - } - --void brcm_usb_set_family_map(struct brcm_usb_init_params *params) -+static const struct brcm_usb_init_ops bcm7445_ops = { -+ .init_ipp = usb_init_ipp, -+ .init_common = usb_init_common, -+ .init_eohci = usb_init_eohci, -+ .init_xhci = usb_init_xhci, -+ .uninit_common = usb_uninit_common, -+ .uninit_eohci = usb_uninit_eohci, -+ .uninit_xhci = usb_uninit_xhci, -+ .get_dual_select = usb_get_dual_select, -+ .set_dual_select = usb_set_dual_select, -+ .wake_enable = usb_wake_enable, -+}; -+ -+void brcm_usb_dvr_init_7445(struct brcm_usb_init_params *params) - { - int fam; - -- fam = brcmusb_get_family_type(params); -+ pr_debug("%s\n", __func__); -+ -+ fam = get_family_type(params); - params->selected_family = fam; - params->usb_reg_bits_map = - &usb_reg_bits_map_table[fam][0]; - params->family_name = family_names[fam]; -+ params->ops = &bcm7445_ops; - } ---- a/drivers/phy/broadcom/phy-brcm-usb-init.h -+++ b/drivers/phy/broadcom/phy-brcm-usb-init.h -@@ -13,6 +13,33 @@ - - struct brcm_usb_init_params; - -+#define USB_CTRL_REG(base, reg) ((void __iomem *)base + USB_CTRL_##reg) -+#define USB_XHCI_EC_REG(base, reg) ((void __iomem *)base + USB_XHCI_EC_##reg) -+#define USB_CTRL_MASK(reg, field) \ -+ USB_CTRL_##reg##_##field##_MASK -+#define USB_CTRL_SET(base, reg, field) \ -+ brcm_usb_ctrl_set(USB_CTRL_REG(base, reg), \ -+ USB_CTRL_##reg##_##field##_MASK) -+#define USB_CTRL_UNSET(base, reg, field) \ -+ brcm_usb_ctrl_unset(USB_CTRL_REG(base, reg), \ -+ USB_CTRL_##reg##_##field##_MASK) -+ -+struct brcm_usb_init_params; -+ -+struct brcm_usb_init_ops { -+ void (*init_ipp)(struct brcm_usb_init_params *params); -+ void (*init_common)(struct brcm_usb_init_params *params); -+ void (*init_eohci)(struct brcm_usb_init_params *params); -+ void (*init_xhci)(struct brcm_usb_init_params *params); -+ void (*uninit_common)(struct brcm_usb_init_params *params); -+ void (*uninit_eohci)(struct brcm_usb_init_params *params); -+ void (*uninit_xhci)(struct brcm_usb_init_params *params); -+ int (*get_dual_select)(struct brcm_usb_init_params *params); -+ void (*set_dual_select)(struct brcm_usb_init_params *params, int mode); -+ void (*wake_enable)(struct brcm_usb_init_params *params, -+ int enable); -+}; -+ - struct brcm_usb_init_params { - void __iomem *ctrl_regs; - void __iomem *xhci_ec_regs; -@@ -24,20 +51,107 @@ struct brcm_usb_init_params { - int selected_family; - const char *family_name; - const u32 *usb_reg_bits_map; -+ const struct brcm_usb_init_ops *ops; - }; - --void brcm_usb_set_family_map(struct brcm_usb_init_params *params); --int brcm_usb_init_get_dual_select(struct brcm_usb_init_params *params); --void brcm_usb_init_set_dual_select(struct brcm_usb_init_params *params, -- int mode); -- --void brcm_usb_init_ipp(struct brcm_usb_init_params *ini); --void brcm_usb_init_common(struct brcm_usb_init_params *ini); --void brcm_usb_init_eohci(struct brcm_usb_init_params *ini); --void brcm_usb_init_xhci(struct brcm_usb_init_params *ini); --void brcm_usb_uninit_common(struct brcm_usb_init_params *ini); --void brcm_usb_uninit_eohci(struct brcm_usb_init_params *ini); --void brcm_usb_uninit_xhci(struct brcm_usb_init_params *ini); --void brcm_usb_wake_enable(struct brcm_usb_init_params *params, int enable); -+void brcm_usb_dvr_init_7445(struct brcm_usb_init_params *params); -+ -+static inline u32 brcm_usb_readl(void __iomem *addr) -+{ -+ /* -+ * MIPS endianness is configured by boot strap, which also reverses all -+ * bus endianness (i.e., big-endian CPU + big endian bus ==> native -+ * endian I/O). -+ * -+ * Other architectures (e.g., ARM) either do not support big endian, or -+ * else leave I/O in little endian mode. -+ */ -+ if (IS_ENABLED(CONFIG_MIPS) && IS_ENABLED(__BIG_ENDIAN)) -+ return __raw_readl(addr); -+ else -+ return readl_relaxed(addr); -+} -+ -+static inline void brcm_usb_writel(u32 val, void __iomem *addr) -+{ -+ /* See brcmnand_readl() comments */ -+ if (IS_ENABLED(CONFIG_MIPS) && IS_ENABLED(__BIG_ENDIAN)) -+ __raw_writel(val, addr); -+ else -+ writel_relaxed(val, addr); -+} -+ -+static inline void brcm_usb_ctrl_unset(void __iomem *reg, u32 mask) -+{ -+ brcm_usb_writel(brcm_usb_readl(reg) & ~(mask), reg); -+}; -+ -+static inline void brcm_usb_ctrl_set(void __iomem *reg, u32 mask) -+{ -+ brcm_usb_writel(brcm_usb_readl(reg) | (mask), reg); -+}; -+ -+static inline void brcm_usb_init_ipp(struct brcm_usb_init_params *ini) -+{ -+ if (ini->ops->init_ipp) -+ ini->ops->init_ipp(ini); -+} -+ -+static inline void brcm_usb_init_common(struct brcm_usb_init_params *ini) -+{ -+ if (ini->ops->init_common) -+ ini->ops->init_common(ini); -+} -+ -+static inline void brcm_usb_init_eohci(struct brcm_usb_init_params *ini) -+{ -+ if (ini->ops->init_eohci) -+ ini->ops->init_eohci(ini); -+} -+ -+static inline void brcm_usb_init_xhci(struct brcm_usb_init_params *ini) -+{ -+ if (ini->ops->init_xhci) -+ ini->ops->init_xhci(ini); -+} -+ -+static inline void brcm_usb_uninit_common(struct brcm_usb_init_params *ini) -+{ -+ if (ini->ops->uninit_common) -+ ini->ops->uninit_common(ini); -+} -+ -+static inline void brcm_usb_uninit_eohci(struct brcm_usb_init_params *ini) -+{ -+ if (ini->ops->uninit_eohci) -+ ini->ops->uninit_eohci(ini); -+} -+ -+static inline void brcm_usb_uninit_xhci(struct brcm_usb_init_params *ini) -+{ -+ if (ini->ops->uninit_xhci) -+ ini->ops->uninit_xhci(ini); -+} -+ -+static inline void brcm_usb_wake_enable(struct brcm_usb_init_params *ini, -+ int enable) -+{ -+ if (ini->ops->wake_enable) -+ ini->ops->wake_enable(ini, enable); -+} -+ -+static inline int brcm_usb_get_dual_select(struct brcm_usb_init_params *ini) -+{ -+ if (ini->ops->get_dual_select) -+ return ini->ops->get_dual_select(ini); -+ return 0; -+} -+ -+static inline void brcm_usb_set_dual_select(struct brcm_usb_init_params *ini, -+ int mode) -+{ -+ if (ini->ops->set_dual_select) -+ ini->ops->set_dual_select(ini, mode); -+} - - #endif /* _USB_BRCM_COMMON_INIT_H */ ---- a/drivers/phy/broadcom/phy-brcm-usb.c -+++ b/drivers/phy/broadcom/phy-brcm-usb.c -@@ -207,7 +207,7 @@ static ssize_t dual_select_store(struct - res = name_to_value(&brcm_dual_mode_to_name[0], - ARRAY_SIZE(brcm_dual_mode_to_name), buf, &value); - if (!res) { -- brcm_usb_init_set_dual_select(&priv->ini, value); -+ brcm_usb_set_dual_select(&priv->ini, value); - res = len; - } - mutex_unlock(&sysfs_lock); -@@ -222,7 +222,7 @@ static ssize_t dual_select_show(struct d - int value; - - mutex_lock(&sysfs_lock); -- value = brcm_usb_init_get_dual_select(&priv->ini); -+ value = brcm_usb_get_dual_select(&priv->ini); - mutex_unlock(&sysfs_lock); - return sprintf(buf, "%s\n", - value_to_name(&brcm_dual_mode_to_name[0], -@@ -331,7 +331,7 @@ static int brcm_usb_phy_probe(struct pla - - priv->ini.family_id = brcmstb_get_family_id(); - priv->ini.product_id = brcmstb_get_product_id(); -- brcm_usb_set_family_map(&priv->ini); -+ brcm_usb_dvr_init_7445(&priv->ini); - dev_dbg(dev, "Best mapping table is for %s\n", - priv->ini.family_name); - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |