Lines Matching refs:params

132 #define USB_CTRL_MASK_FAMILY(params, reg, field)			\
133 (params->usb_reg_bits_map[USB_CTRL_##reg##_##field##_SELECTOR])
135 #define USB_CTRL_SET_FAMILY(params, reg, field) \
136 usb_ctrl_set_family(params, USB_CTRL_##reg, \
138 #define USB_CTRL_UNSET_FAMILY(params, reg, field) \
139 usb_ctrl_unset_family(params, USB_CTRL_##reg, \
398 void usb_ctrl_unset_family(struct brcm_usb_init_params *params,
403 mask = params->usb_reg_bits_map[field];
404 brcm_usb_ctrl_unset(params->regs[BRCM_REGS_CTRL] + reg_offset, mask);
408 void usb_ctrl_set_family(struct brcm_usb_init_params *params,
413 mask = params->usb_reg_bits_map[field];
414 brcm_usb_ctrl_set(params->regs[BRCM_REGS_CTRL] + reg_offset, mask);
543 static void brcmusb_usb3_pll_54mhz(struct brcm_usb_init_params *params)
547 void __iomem *ctrl_base = params->regs[BRCM_REGS_CTRL];
560 switch (params->selected_family) {
570 if (BRCM_REV(params->family_id) < 0x20)
626 static void brcmusb_usb3_phy_workarounds(struct brcm_usb_init_params *params)
628 void __iomem *ctrl_base = params->regs[BRCM_REGS_CTRL];
631 brcmusb_usb3_pll_54mhz(params);
639 static void brcmusb_memc_fix(struct brcm_usb_init_params *params)
643 if (params->selected_family != BRCM_FAMILY_7445D0)
656 prid = params->product_id & 0xfffff000;
664 USB_CTRL_UNSET_FAMILY(params, SETUP, SCB2_EN);
668 static void brcmusb_usb3_otp_fix(struct brcm_usb_init_params *params)
670 void __iomem *xhci_ec_base = params->regs[BRCM_REGS_XHCI_EC];
673 if (params->family_id != 0x74371000 || !xhci_ec_base)
683 USB_CTRL_UNSET(params->regs[BRCM_REGS_CTRL], USB30_CTL1, PHY3_RESETB);
684 USB_CTRL_SET(params->regs[BRCM_REGS_CTRL], USB30_CTL1, PHY3_RESETB);
687 static void brcmusb_xhci_soft_reset(struct brcm_usb_init_params *params,
692 if (USB_CTRL_MASK_FAMILY(params, USB_PM, XHC_SOFT_RESETB))
693 USB_CTRL_UNSET_FAMILY(params, USB_PM, XHC_SOFT_RESETB);
695 USB_CTRL_UNSET_FAMILY(params,
698 if (USB_CTRL_MASK_FAMILY(params, USB_PM, XHC_SOFT_RESETB))
699 USB_CTRL_SET_FAMILY(params, USB_PM, XHC_SOFT_RESETB);
701 USB_CTRL_SET_FAMILY(params, USB30_CTL1,
714 struct brcm_usb_init_params *params)
722 family = params->family_id & 0xfffffff0;
723 family_no_major = params->family_id & 0xffffff00;
741 static void usb_init_ipp(struct brcm_usb_init_params *params)
743 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
750 if (USB_CTRL_MASK_FAMILY(params, USB30_CTL1, USB3_IOC)) {
751 if (params->ioc)
752 USB_CTRL_SET_FAMILY(params, USB30_CTL1, USB3_IOC);
753 if (params->ipp == 1)
754 USB_CTRL_SET_FAMILY(params, USB30_CTL1, USB3_IPP);
759 if (USB_CTRL_MASK_FAMILY(params, SETUP, STRAP_CC_DRD_MODE_ENABLE_SEL))
761 reg &= ~(USB_CTRL_MASK_FAMILY(params,
764 if (USB_CTRL_MASK_FAMILY(params, SETUP, STRAP_IPP_SEL))
766 if (params->ipp != 2)
767 reg &= ~(USB_CTRL_MASK_FAMILY(params, SETUP,
772 if (params->ioc)
774 if (params->ipp == 1)
786 static void usb_wake_enable(struct brcm_usb_init_params *params,
789 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
797 static void usb_init_common(struct brcm_usb_init_params *params)
800 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
803 usb_wake_enable(params, false);
808 if (USB_CTRL_MASK_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN)) {
809 USB_CTRL_UNSET_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN);
814 if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB_PWRDN)) {
815 USB_CTRL_UNSET_FAMILY(params, USB_PM, USB_PWRDN);
820 if (params->selected_family != BRCM_FAMILY_74371A0 &&
821 (BRCM_ID(params->family_id) != 0x7364))
826 USB_CTRL_SET_FAMILY(params, SETUP, SS_EHCI64BIT_EN);
832 if (params->selected_family == BRCM_FAMILY_7364A0)
834 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, OC3_DISABLE);
843 if (USB_CTRL_MASK_FAMILY(params, SETUP, SCB1_EN))
844 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, SCB1_EN);
845 if (USB_CTRL_MASK_FAMILY(params, SETUP, SCB2_EN))
846 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, SCB2_EN);
849 brcmusb_memc_fix(params);
851 if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) {
853 reg &= ~USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1,
855 reg |= params->mode;
858 if (USB_CTRL_MASK_FAMILY(params, USB_PM, BDC_SOFT_RESETB)) {
859 switch (params->mode) {
861 USB_CTRL_UNSET_FAMILY(params, USB_PM, BDC_SOFT_RESETB);
864 USB_CTRL_UNSET_FAMILY(params, USB_PM, BDC_SOFT_RESETB);
865 USB_CTRL_SET_FAMILY(params, USB_PM, BDC_SOFT_RESETB);
869 if (USB_CTRL_MASK_FAMILY(params, SETUP, CC_DRD_MODE_ENABLE)) {
870 if (params->mode == USB_CTLR_MODE_TYPEC_PD)
871 USB_CTRL_SET_FAMILY(params, SETUP, CC_DRD_MODE_ENABLE);
873 USB_CTRL_UNSET_FAMILY(params, SETUP,
878 static void usb_init_eohci(struct brcm_usb_init_params *params)
881 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
883 if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB20_HC_RESETB))
884 USB_CTRL_SET_FAMILY(params, USB_PM, USB20_HC_RESETB);
886 if (params->selected_family == BRCM_FAMILY_7366C0)
896 reg |= USB_CTRL_MASK_FAMILY(params, SETUP, ENDIAN);
899 if (params->selected_family == BRCM_FAMILY_7271A0)
903 if (params->family_id == 0x72550000) {
915 static void usb_init_xhci(struct brcm_usb_init_params *params)
917 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
923 if (BRCM_ID(params->family_id) == 0x7366) {
938 brcmusb_usb3_phy_workarounds(params);
939 brcmusb_xhci_soft_reset(params, 0);
940 brcmusb_usb3_otp_fix(params);
943 static void usb_uninit_common(struct brcm_usb_init_params *params)
945 if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB_PWRDN))
946 USB_CTRL_SET_FAMILY(params, USB_PM, USB_PWRDN);
948 if (USB_CTRL_MASK_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN))
949 USB_CTRL_SET_FAMILY(params, PLL_CTL, PLL_IDDQ_PWRDN);
950 if (params->wake_enabled)
951 usb_wake_enable(params, true);
954 static void usb_uninit_eohci(struct brcm_usb_init_params *params)
958 static void usb_uninit_xhci(struct brcm_usb_init_params *params)
960 brcmusb_xhci_soft_reset(params, 1);
961 USB_CTRL_SET(params->regs[BRCM_REGS_CTRL], USB30_PCTL,
965 static int usb_get_dual_select(struct brcm_usb_init_params *params)
967 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
971 if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) {
973 reg &= USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1,
979 static void usb_set_dual_select(struct brcm_usb_init_params *params, int mode)
981 void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
986 if (USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1, PORT_MODE)) {
988 reg &= ~USB_CTRL_MASK_FAMILY(params, USB_DEVICE_CTL1,
1007 void brcm_usb_dvr_init_7445(struct brcm_usb_init_params *params)
1013 fam = get_family_type(params);
1014 params->selected_family = fam;
1015 params->usb_reg_bits_map =
1017 params->family_name = family_names[fam];
1018 params->ops = &bcm7445_ops;