Lines Matching refs:params
141 #define USB_CTRL_MASK_FAMILY(params, reg, field) \ argument
142 (params->usb_reg_bits_map[USB_CTRL_##reg##_##field##_SELECTOR])
144 #define USB_CTRL_SET_FAMILY(params, reg, field) \ argument
145 usb_ctrl_set_family(params, USB_CTRL_##reg, \
147 #define USB_CTRL_UNSET_FAMILY(params, reg, field) \ argument
148 usb_ctrl_unset_family(params, USB_CTRL_##reg, \
450 void usb_ctrl_unset_family(struct brcm_usb_init_params *params, in usb_ctrl_unset_family() argument
455 mask = params->usb_reg_bits_map[field]; in usb_ctrl_unset_family()
456 brcm_usb_ctrl_unset(params->regs[BRCM_REGS_CTRL] + reg_offset, mask); in usb_ctrl_unset_family()
460 void usb_ctrl_set_family(struct brcm_usb_init_params *params, in usb_ctrl_set_family() argument
465 mask = params->usb_reg_bits_map[field]; in usb_ctrl_set_family()
466 brcm_usb_ctrl_set(params->regs[BRCM_REGS_CTRL] + reg_offset, mask); in usb_ctrl_set_family()
595 static void brcmusb_usb3_pll_54mhz(struct brcm_usb_init_params *params) in brcmusb_usb3_pll_54mhz() argument
599 void __iomem *ctrl_base = params->regs[BRCM_REGS_CTRL]; in brcmusb_usb3_pll_54mhz()
612 switch (params->selected_family) { in brcmusb_usb3_pll_54mhz()
623 if (BRCM_REV(params->family_id) < 0x20) in brcmusb_usb3_pll_54mhz()
679 static void brcmusb_usb3_phy_workarounds(struct brcm_usb_init_params *params) in brcmusb_usb3_phy_workarounds() argument
681 void __iomem *ctrl_base = params->regs[BRCM_REGS_CTRL]; in brcmusb_usb3_phy_workarounds()
684 brcmusb_usb3_pll_54mhz(params); in brcmusb_usb3_phy_workarounds()
692 static void brcmusb_memc_fix(struct brcm_usb_init_params *params) in brcmusb_memc_fix() argument
696 if (params->selected_family != BRCM_FAMILY_7445D0) in brcmusb_memc_fix()
709 prid = params->product_id & 0xfffff000; in brcmusb_memc_fix()
717 USB_CTRL_UNSET_FAMILY(params, SETUP, SCB2_EN); in brcmusb_memc_fix()
721 static void brcmusb_usb3_otp_fix(struct brcm_usb_init_params *params) in brcmusb_usb3_otp_fix() argument
723 void __iomem *xhci_ec_base = params->regs[BRCM_REGS_XHCI_EC]; in brcmusb_usb3_otp_fix()
726 if (params->family_id != 0x74371000 || !xhci_ec_base) in brcmusb_usb3_otp_fix()
736 USB_CTRL_UNSET(params->regs[BRCM_REGS_CTRL], USB30_CTL1, PHY3_RESETB); in brcmusb_usb3_otp_fix()
737 USB_CTRL_SET(params->regs[BRCM_REGS_CTRL], USB30_CTL1, PHY3_RESETB); in brcmusb_usb3_otp_fix()
740 static void brcmusb_xhci_soft_reset(struct brcm_usb_init_params *params, in brcmusb_xhci_soft_reset() argument
745 if (USB_CTRL_MASK_FAMILY(params, USB_PM, XHC_SOFT_RESETB)) in brcmusb_xhci_soft_reset()
746 USB_CTRL_UNSET_FAMILY(params, USB_PM, XHC_SOFT_RESETB); in brcmusb_xhci_soft_reset()
748 USB_CTRL_UNSET_FAMILY(params, in brcmusb_xhci_soft_reset()
751 if (USB_CTRL_MASK_FAMILY(params, USB_PM, XHC_SOFT_RESETB)) in brcmusb_xhci_soft_reset()
752 USB_CTRL_SET_FAMILY(params, USB_PM, XHC_SOFT_RESETB); in brcmusb_xhci_soft_reset()
754 USB_CTRL_SET_FAMILY(params, USB30_CTL1, in brcmusb_xhci_soft_reset()
767 struct brcm_usb_init_params *params) in get_family_type() argument
775 family = params->family_id & 0xfffffff0; in get_family_type()
776 family_no_major = params->family_id & 0xffffff00; in get_family_type()
794 static void usb_init_ipp(struct brcm_usb_init_params *params) in usb_init_ipp() argument
796 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL]; in usb_init_ipp()
803 if (USB_CTRL_MASK_FAMILY(params, USB30_CTL1, USB3_IOC)) { in usb_init_ipp()
804 if (params->ioc) in usb_init_ipp()
805 USB_CTRL_SET_FAMILY(params, USB30_CTL1, USB3_IOC); in usb_init_ipp()
806 if (params->ipp == 1) in usb_init_ipp()
807 USB_CTRL_SET_FAMILY(params, USB30_CTL1, USB3_IPP); in usb_init_ipp()
812 if (USB_CTRL_MASK_FAMILY(params, SETUP, STRAP_CC_DRD_MODE_ENABLE_SEL)) in usb_init_ipp()
814 reg &= ~(USB_CTRL_MASK_FAMILY(params, in usb_init_ipp()
817 if (USB_CTRL_MASK_FAMILY(params, SETUP, STRAP_IPP_SEL)) in usb_init_ipp()
819 if (params->ipp != 2) in usb_init_ipp()
820 reg &= ~(USB_CTRL_MASK_FAMILY(params, SETUP, in usb_init_ipp()
825 if (params->ioc) in usb_init_ipp()
827 if (params->ipp == 1) in usb_init_ipp()
839 static void usb_wake_enable(struct brcm_usb_init_params *params, in usb_wake_enable() argument
842 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL]; in usb_wake_enable()
850 static void usb_init_common(struct brcm_usb_init_params *params) in usb_init_common() argument
853 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL]; in usb_init_common()
856 usb_wake_enable(params, false); in usb_init_common()
861 if (USB_CTRL_MASK_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN)) { in usb_init_common()
862 USB_CTRL_UNSET_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN); in usb_init_common()
867 if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB_PWRDN)) { in usb_init_common()
868 USB_CTRL_UNSET_FAMILY(params, USB_PM, USB_PWRDN); in usb_init_common()
873 if (params->selected_family != BRCM_FAMILY_74371A0 && in usb_init_common()
874 (BRCM_ID(params->family_id) != 0x7364)) in usb_init_common()
879 USB_CTRL_SET_FAMILY(params, SETUP, SS_EHCI64BIT_EN); in usb_init_common()
885 if (params->selected_family == BRCM_FAMILY_7364A0) in usb_init_common()
887 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, OC3_DISABLE); in usb_init_common()
896 if (USB_CTRL_MASK_FAMILY(params, SETUP, SCB1_EN)) in usb_init_common()
897 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, SCB1_EN); in usb_init_common()
898 if (USB_CTRL_MASK_FAMILY(params, SETUP, SCB2_EN)) in usb_init_common()
899 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, SCB2_EN); in usb_init_common()
902 brcmusb_memc_fix(params); in usb_init_common()
905 if ((params->family_id == 0x74390012) && in usb_init_common()
906 (params->supported_port_modes != USB_CTLR_MODE_HOST)) { in usb_init_common()
908 USB_CTRL_SET_FAMILY(params, SETUP, OC3_DISABLE_PORT1); in usb_init_common()
911 if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) { in usb_init_common()
913 reg &= ~USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, in usb_init_common()
915 reg |= params->port_mode; in usb_init_common()
918 if (USB_CTRL_MASK_FAMILY(params, USB_PM, BDC_SOFT_RESETB)) { in usb_init_common()
919 switch (params->supported_port_modes) { in usb_init_common()
921 USB_CTRL_UNSET_FAMILY(params, USB_PM, BDC_SOFT_RESETB); in usb_init_common()
924 USB_CTRL_UNSET_FAMILY(params, USB_PM, BDC_SOFT_RESETB); in usb_init_common()
925 USB_CTRL_SET_FAMILY(params, USB_PM, BDC_SOFT_RESETB); in usb_init_common()
929 if (USB_CTRL_MASK_FAMILY(params, SETUP, CC_DRD_MODE_ENABLE)) { in usb_init_common()
930 if (params->supported_port_modes == USB_CTLR_MODE_TYPEC_PD) in usb_init_common()
931 USB_CTRL_SET_FAMILY(params, SETUP, CC_DRD_MODE_ENABLE); in usb_init_common()
933 USB_CTRL_UNSET_FAMILY(params, SETUP, in usb_init_common()
938 static void usb_init_eohci(struct brcm_usb_init_params *params) in usb_init_eohci() argument
941 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL]; in usb_init_eohci()
943 if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB20_HC_RESETB)) in usb_init_eohci()
944 USB_CTRL_SET_FAMILY(params, USB_PM, USB20_HC_RESETB); in usb_init_eohci()
946 if (params->selected_family == BRCM_FAMILY_7366C0) in usb_init_eohci()
956 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, ENDIAN); in usb_init_eohci()
959 if (params->selected_family == BRCM_FAMILY_7271A0) in usb_init_eohci()
963 if (params->family_id == 0x72550000) { in usb_init_eohci()
975 static void usb_init_xhci(struct brcm_usb_init_params *params) in usb_init_xhci() argument
977 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL]; in usb_init_xhci()
983 if (BRCM_ID(params->family_id) == 0x7366) { in usb_init_xhci()
998 brcmusb_usb3_phy_workarounds(params); in usb_init_xhci()
999 brcmusb_xhci_soft_reset(params, 0); in usb_init_xhci()
1000 brcmusb_usb3_otp_fix(params); in usb_init_xhci()
1003 static void usb_uninit_common(struct brcm_usb_init_params *params) in usb_uninit_common() argument
1005 if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB_PWRDN)) in usb_uninit_common()
1006 USB_CTRL_SET_FAMILY(params, USB_PM, USB_PWRDN); in usb_uninit_common()
1008 if (USB_CTRL_MASK_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN)) in usb_uninit_common()
1009 USB_CTRL_SET_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN); in usb_uninit_common()
1010 if (params->wake_enabled) in usb_uninit_common()
1011 usb_wake_enable(params, true); in usb_uninit_common()
1014 static void usb_uninit_eohci(struct brcm_usb_init_params *params) in usb_uninit_eohci() argument
1018 static void usb_uninit_xhci(struct brcm_usb_init_params *params) in usb_uninit_xhci() argument
1020 brcmusb_xhci_soft_reset(params, 1); in usb_uninit_xhci()
1021 USB_CTRL_SET(params->regs[BRCM_REGS_CTRL], USB30_PCTL, in usb_uninit_xhci()
1025 static int usb_get_dual_select(struct brcm_usb_init_params *params) in usb_get_dual_select() argument
1027 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL]; in usb_get_dual_select()
1031 if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) { in usb_get_dual_select()
1033 reg &= USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, in usb_get_dual_select()
1039 static void usb_set_dual_select(struct brcm_usb_init_params *params) in usb_set_dual_select() argument
1041 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL]; in usb_set_dual_select()
1046 if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) { in usb_set_dual_select()
1048 reg &= ~USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, in usb_set_dual_select()
1050 reg |= params->port_mode; in usb_set_dual_select()
1067 void brcm_usb_dvr_init_4908(struct brcm_usb_init_params *params) in brcm_usb_dvr_init_4908() argument
1072 params->selected_family = fam; in brcm_usb_dvr_init_4908()
1073 params->usb_reg_bits_map = in brcm_usb_dvr_init_4908()
1075 params->family_name = family_names[fam]; in brcm_usb_dvr_init_4908()
1076 params->ops = &bcm7445_ops; in brcm_usb_dvr_init_4908()
1079 void brcm_usb_dvr_init_7445(struct brcm_usb_init_params *params) in brcm_usb_dvr_init_7445() argument
1085 fam = get_family_type(params); in brcm_usb_dvr_init_7445()
1086 params->selected_family = fam; in brcm_usb_dvr_init_7445()
1087 params->usb_reg_bits_map = in brcm_usb_dvr_init_7445()
1089 params->family_name = family_names[fam]; in brcm_usb_dvr_init_7445()
1090 params->ops = &bcm7445_ops; in brcm_usb_dvr_init_7445()