Lines Matching refs:params
141 #define USB_CTRL_MASK_FAMILY(params, reg, field) \
142 (params->usb_reg_bits_map[USB_CTRL_##reg##_##field##_SELECTOR])
144 #define USB_CTRL_SET_FAMILY(params, reg, field) \
145 usb_ctrl_set_family(params, USB_CTRL_##reg, \
147 #define USB_CTRL_UNSET_FAMILY(params, reg, field) \
148 usb_ctrl_unset_family(params, USB_CTRL_##reg, \
448 void usb_ctrl_unset_family(struct brcm_usb_init_params *params,
453 mask = params->usb_reg_bits_map[field];
454 brcm_usb_ctrl_unset(params->regs[BRCM_REGS_CTRL] + reg_offset, mask);
458 void usb_ctrl_set_family(struct brcm_usb_init_params *params,
463 mask = params->usb_reg_bits_map[field];
464 brcm_usb_ctrl_set(params->regs[BRCM_REGS_CTRL] + reg_offset, mask);
593 static void brcmusb_usb3_pll_54mhz(struct brcm_usb_init_params *params)
597 void __iomem *ctrl_base = params->regs[BRCM_REGS_CTRL];
610 switch (params->selected_family) {
621 if (BRCM_REV(params->family_id) < 0x20)
677 static void brcmusb_usb3_phy_workarounds(struct brcm_usb_init_params *params)
679 void __iomem *ctrl_base = params->regs[BRCM_REGS_CTRL];
682 brcmusb_usb3_pll_54mhz(params);
690 static void brcmusb_memc_fix(struct brcm_usb_init_params *params)
694 if (params->selected_family != BRCM_FAMILY_7445D0)
707 prid = params->product_id & 0xfffff000;
715 USB_CTRL_UNSET_FAMILY(params, SETUP, SCB2_EN);
719 static void brcmusb_usb3_otp_fix(struct brcm_usb_init_params *params)
721 void __iomem *xhci_ec_base = params->regs[BRCM_REGS_XHCI_EC];
724 if (params->family_id != 0x74371000 || !xhci_ec_base)
734 USB_CTRL_UNSET(params->regs[BRCM_REGS_CTRL], USB30_CTL1, PHY3_RESETB);
735 USB_CTRL_SET(params->regs[BRCM_REGS_CTRL], USB30_CTL1, PHY3_RESETB);
738 static void brcmusb_xhci_soft_reset(struct brcm_usb_init_params *params,
743 if (USB_CTRL_MASK_FAMILY(params, USB_PM, XHC_SOFT_RESETB))
744 USB_CTRL_UNSET_FAMILY(params, USB_PM, XHC_SOFT_RESETB);
746 USB_CTRL_UNSET_FAMILY(params,
749 if (USB_CTRL_MASK_FAMILY(params, USB_PM, XHC_SOFT_RESETB))
750 USB_CTRL_SET_FAMILY(params, USB_PM, XHC_SOFT_RESETB);
752 USB_CTRL_SET_FAMILY(params, USB30_CTL1,
765 struct brcm_usb_init_params *params)
773 family = params->family_id & 0xfffffff0;
774 family_no_major = params->family_id & 0xffffff00;
792 static void usb_init_ipp(struct brcm_usb_init_params *params)
794 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
801 if (USB_CTRL_MASK_FAMILY(params, USB30_CTL1, USB3_IOC)) {
802 if (params->ioc)
803 USB_CTRL_SET_FAMILY(params, USB30_CTL1, USB3_IOC);
804 if (params->ipp == 1)
805 USB_CTRL_SET_FAMILY(params, USB30_CTL1, USB3_IPP);
810 if (USB_CTRL_MASK_FAMILY(params, SETUP, STRAP_CC_DRD_MODE_ENABLE_SEL))
812 reg &= ~(USB_CTRL_MASK_FAMILY(params,
815 if (USB_CTRL_MASK_FAMILY(params, SETUP, STRAP_IPP_SEL))
817 if (params->ipp != 2)
818 reg &= ~(USB_CTRL_MASK_FAMILY(params, SETUP,
823 if (params->ioc)
825 if (params->ipp == 1)
837 static void usb_wake_enable(struct brcm_usb_init_params *params,
840 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
848 static void usb_init_common(struct brcm_usb_init_params *params)
851 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
854 usb_wake_enable(params, false);
859 if (USB_CTRL_MASK_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN)) {
860 USB_CTRL_UNSET_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN);
865 if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB_PWRDN)) {
866 USB_CTRL_UNSET_FAMILY(params, USB_PM, USB_PWRDN);
871 if (params->selected_family != BRCM_FAMILY_74371A0 &&
872 (BRCM_ID(params->family_id) != 0x7364))
877 USB_CTRL_SET_FAMILY(params, SETUP, SS_EHCI64BIT_EN);
883 if (params->selected_family == BRCM_FAMILY_7364A0)
885 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, OC3_DISABLE);
894 if (USB_CTRL_MASK_FAMILY(params, SETUP, SCB1_EN))
895 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, SCB1_EN);
896 if (USB_CTRL_MASK_FAMILY(params, SETUP, SCB2_EN))
897 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, SCB2_EN);
900 brcmusb_memc_fix(params);
903 if ((params->family_id == 0x74390012) &&
904 (params->supported_port_modes != USB_CTLR_MODE_HOST)) {
906 USB_CTRL_SET_FAMILY(params, SETUP, OC3_DISABLE_PORT1);
909 if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) {
911 reg &= ~USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1,
913 reg |= params->port_mode;
916 if (USB_CTRL_MASK_FAMILY(params, USB_PM, BDC_SOFT_RESETB)) {
917 switch (params->supported_port_modes) {
919 USB_CTRL_UNSET_FAMILY(params, USB_PM, BDC_SOFT_RESETB);
922 USB_CTRL_UNSET_FAMILY(params, USB_PM, BDC_SOFT_RESETB);
923 USB_CTRL_SET_FAMILY(params, USB_PM, BDC_SOFT_RESETB);
927 if (USB_CTRL_MASK_FAMILY(params, SETUP, CC_DRD_MODE_ENABLE)) {
928 if (params->supported_port_modes == USB_CTLR_MODE_TYPEC_PD)
929 USB_CTRL_SET_FAMILY(params, SETUP, CC_DRD_MODE_ENABLE);
931 USB_CTRL_UNSET_FAMILY(params, SETUP,
936 static void usb_init_eohci(struct brcm_usb_init_params *params)
939 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
941 if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB20_HC_RESETB))
942 USB_CTRL_SET_FAMILY(params, USB_PM, USB20_HC_RESETB);
944 if (params->selected_family == BRCM_FAMILY_7366C0)
954 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, ENDIAN);
957 if (params->selected_family == BRCM_FAMILY_7271A0)
961 if (params->family_id == 0x72550000) {
973 static void usb_init_xhci(struct brcm_usb_init_params *params)
975 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
981 if (BRCM_ID(params->family_id) == 0x7366) {
996 brcmusb_usb3_phy_workarounds(params);
997 brcmusb_xhci_soft_reset(params, 0);
998 brcmusb_usb3_otp_fix(params);
1001 static void usb_uninit_common(struct brcm_usb_init_params *params)
1003 if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB_PWRDN))
1004 USB_CTRL_SET_FAMILY(params, USB_PM, USB_PWRDN);
1006 if (USB_CTRL_MASK_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN))
1007 USB_CTRL_SET_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN);
1008 if (params->wake_enabled)
1009 usb_wake_enable(params, true);
1012 static void usb_uninit_eohci(struct brcm_usb_init_params *params)
1016 static void usb_uninit_xhci(struct brcm_usb_init_params *params)
1018 brcmusb_xhci_soft_reset(params, 1);
1019 USB_CTRL_SET(params->regs[BRCM_REGS_CTRL], USB30_PCTL,
1023 static int usb_get_dual_select(struct brcm_usb_init_params *params)
1025 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
1029 if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) {
1031 reg &= USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1,
1037 static void usb_set_dual_select(struct brcm_usb_init_params *params)
1039 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
1044 if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) {
1046 reg &= ~USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1,
1048 reg |= params->port_mode;
1065 void brcm_usb_dvr_init_4908(struct brcm_usb_init_params *params)
1070 params->selected_family = fam;
1071 params->usb_reg_bits_map =
1073 params->family_name = family_names[fam];
1074 params->ops = &bcm7445_ops;
1077 void brcm_usb_dvr_init_7445(struct brcm_usb_init_params *params)
1083 fam = get_family_type(params);
1084 params->selected_family = fam;
1085 params->usb_reg_bits_map =
1087 params->family_name = family_names[fam];
1088 params->ops = &bcm7445_ops;