Lines Matching refs:hsotg
42 static void dwc2_set_bcm_params(struct dwc2_hsotg *hsotg) in dwc2_set_bcm_params() argument
44 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_bcm_params()
52 static void dwc2_set_his_params(struct dwc2_hsotg *hsotg) in dwc2_set_his_params() argument
54 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_his_params()
74 static void dwc2_set_s3c6400_params(struct dwc2_hsotg *hsotg) in dwc2_set_s3c6400_params() argument
76 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_s3c6400_params()
83 static void dwc2_set_rk_params(struct dwc2_hsotg *hsotg) in dwc2_set_rk_params() argument
85 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_rk_params()
96 static void dwc2_set_ltq_params(struct dwc2_hsotg *hsotg) in dwc2_set_ltq_params() argument
98 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_ltq_params()
110 static void dwc2_set_amlogic_params(struct dwc2_hsotg *hsotg) in dwc2_set_amlogic_params() argument
112 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_amlogic_params()
126 static void dwc2_set_amlogic_g12a_params(struct dwc2_hsotg *hsotg) in dwc2_set_amlogic_g12a_params() argument
128 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_amlogic_g12a_params()
136 static void dwc2_set_amcc_params(struct dwc2_hsotg *hsotg) in dwc2_set_amcc_params() argument
138 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_amcc_params()
143 static void dwc2_set_stm32f4x9_fsotg_params(struct dwc2_hsotg *hsotg) in dwc2_set_stm32f4x9_fsotg_params() argument
145 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32f4x9_fsotg_params()
158 static void dwc2_set_stm32f7_hsotg_params(struct dwc2_hsotg *hsotg) in dwc2_set_stm32f7_hsotg_params() argument
160 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32f7_hsotg_params()
167 static void dwc2_set_stm32mp15_fsotg_params(struct dwc2_hsotg *hsotg) in dwc2_set_stm32mp15_fsotg_params() argument
169 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32mp15_fsotg_params()
187 static void dwc2_set_stm32mp15_hsotg_params(struct dwc2_hsotg *hsotg) in dwc2_set_stm32mp15_hsotg_params() argument
189 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32mp15_hsotg_params()
192 p->activate_stm_id_vb_detection = !device_property_read_bool(hsotg->dev, "usb-role-switch"); in dwc2_set_stm32mp15_hsotg_params()
242 static void dwc2_set_param_otg_cap(struct dwc2_hsotg *hsotg) in dwc2_set_param_otg_cap() argument
246 switch (hsotg->hw_params.op_mode) { in dwc2_set_param_otg_cap()
260 hsotg->params.otg_cap = val; in dwc2_set_param_otg_cap()
263 static void dwc2_set_param_phy_type(struct dwc2_hsotg *hsotg) in dwc2_set_param_phy_type() argument
266 u32 hs_phy_type = hsotg->hw_params.hs_phy_type; in dwc2_set_param_phy_type()
277 if (dwc2_is_fs_iot(hsotg)) in dwc2_set_param_phy_type()
278 hsotg->params.phy_type = DWC2_PHY_TYPE_PARAM_FS; in dwc2_set_param_phy_type()
280 hsotg->params.phy_type = val; in dwc2_set_param_phy_type()
283 static void dwc2_set_param_speed(struct dwc2_hsotg *hsotg) in dwc2_set_param_speed() argument
287 val = hsotg->params.phy_type == DWC2_PHY_TYPE_PARAM_FS ? in dwc2_set_param_speed()
290 if (dwc2_is_fs_iot(hsotg)) in dwc2_set_param_speed()
293 if (dwc2_is_hs_iot(hsotg)) in dwc2_set_param_speed()
296 hsotg->params.speed = val; in dwc2_set_param_speed()
299 static void dwc2_set_param_phy_utmi_width(struct dwc2_hsotg *hsotg) in dwc2_set_param_phy_utmi_width() argument
303 val = (hsotg->hw_params.utmi_phy_data_width == in dwc2_set_param_phy_utmi_width()
306 if (hsotg->phy) { in dwc2_set_param_phy_utmi_width()
311 if (phy_get_bus_width(hsotg->phy) == 8) in dwc2_set_param_phy_utmi_width()
315 hsotg->params.phy_utmi_width = val; in dwc2_set_param_phy_utmi_width()
318 static void dwc2_set_param_tx_fifo_sizes(struct dwc2_hsotg *hsotg) in dwc2_set_param_tx_fifo_sizes() argument
320 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_param_tx_fifo_sizes()
325 fifo_count = dwc2_hsotg_tx_fifo_count(hsotg); in dwc2_set_param_tx_fifo_sizes()
328 depth_average = dwc2_hsotg_tx_fifo_average_depth(hsotg); in dwc2_set_param_tx_fifo_sizes()
333 static void dwc2_set_param_power_down(struct dwc2_hsotg *hsotg) in dwc2_set_param_power_down() argument
337 if (hsotg->hw_params.hibernation) in dwc2_set_param_power_down()
339 else if (hsotg->hw_params.power_optimized) in dwc2_set_param_power_down()
344 hsotg->params.power_down = val; in dwc2_set_param_power_down()
347 static void dwc2_set_param_lpm(struct dwc2_hsotg *hsotg) in dwc2_set_param_lpm() argument
349 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_param_lpm()
351 p->lpm = hsotg->hw_params.lpm_mode; in dwc2_set_param_lpm()
371 static void dwc2_set_default_params(struct dwc2_hsotg *hsotg) in dwc2_set_default_params() argument
373 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_set_default_params()
374 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_default_params()
377 dwc2_set_param_otg_cap(hsotg); in dwc2_set_default_params()
378 dwc2_set_param_phy_type(hsotg); in dwc2_set_default_params()
379 dwc2_set_param_speed(hsotg); in dwc2_set_default_params()
380 dwc2_set_param_phy_utmi_width(hsotg); in dwc2_set_default_params()
381 dwc2_set_param_power_down(hsotg); in dwc2_set_default_params()
382 dwc2_set_param_lpm(hsotg); in dwc2_set_default_params()
403 if ((hsotg->dr_mode == USB_DR_MODE_HOST) || in dwc2_set_default_params()
404 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_set_default_params()
416 if ((hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) || in dwc2_set_default_params()
417 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_set_default_params()
432 dwc2_set_param_tx_fifo_sizes(hsotg); in dwc2_set_default_params()
443 static void dwc2_get_device_properties(struct dwc2_hsotg *hsotg) in dwc2_get_device_properties() argument
445 struct dwc2_core_params *p = &hsotg->params; in dwc2_get_device_properties()
448 if ((hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) || in dwc2_get_device_properties()
449 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_get_device_properties()
450 device_property_read_u32(hsotg->dev, "g-rx-fifo-size", in dwc2_get_device_properties()
453 device_property_read_u32(hsotg->dev, "g-np-tx-fifo-size", in dwc2_get_device_properties()
456 num = device_property_count_u32(hsotg->dev, "g-tx-fifo-size"); in dwc2_get_device_properties()
461 device_property_read_u32_array(hsotg->dev, in dwc2_get_device_properties()
468 if (of_find_property(hsotg->dev->of_node, "disable-over-current", NULL)) in dwc2_get_device_properties()
472 static void dwc2_check_param_otg_cap(struct dwc2_hsotg *hsotg) in dwc2_check_param_otg_cap() argument
476 switch (hsotg->params.otg_cap) { in dwc2_check_param_otg_cap()
478 if (hsotg->hw_params.op_mode != GHWCFG2_OP_MODE_HNP_SRP_CAPABLE) in dwc2_check_param_otg_cap()
482 switch (hsotg->hw_params.op_mode) { in dwc2_check_param_otg_cap()
502 dwc2_set_param_otg_cap(hsotg); in dwc2_check_param_otg_cap()
505 static void dwc2_check_param_phy_type(struct dwc2_hsotg *hsotg) in dwc2_check_param_phy_type() argument
511 hs_phy_type = hsotg->hw_params.hs_phy_type; in dwc2_check_param_phy_type()
512 fs_phy_type = hsotg->hw_params.fs_phy_type; in dwc2_check_param_phy_type()
514 switch (hsotg->params.phy_type) { in dwc2_check_param_phy_type()
534 dwc2_set_param_phy_type(hsotg); in dwc2_check_param_phy_type()
537 static void dwc2_check_param_speed(struct dwc2_hsotg *hsotg) in dwc2_check_param_speed() argument
540 int phy_type = hsotg->params.phy_type; in dwc2_check_param_speed()
541 int speed = hsotg->params.speed; in dwc2_check_param_speed()
545 if ((hsotg->params.speed == DWC2_SPEED_PARAM_HIGH) && in dwc2_check_param_speed()
558 dwc2_set_param_speed(hsotg); in dwc2_check_param_speed()
561 static void dwc2_check_param_phy_utmi_width(struct dwc2_hsotg *hsotg) in dwc2_check_param_phy_utmi_width() argument
564 int param = hsotg->params.phy_utmi_width; in dwc2_check_param_phy_utmi_width()
565 int width = hsotg->hw_params.utmi_phy_data_width; in dwc2_check_param_phy_utmi_width()
580 dwc2_set_param_phy_utmi_width(hsotg); in dwc2_check_param_phy_utmi_width()
583 static void dwc2_check_param_power_down(struct dwc2_hsotg *hsotg) in dwc2_check_param_power_down() argument
585 int param = hsotg->params.power_down; in dwc2_check_param_power_down()
591 if (hsotg->hw_params.power_optimized) in dwc2_check_param_power_down()
593 dev_dbg(hsotg->dev, in dwc2_check_param_power_down()
598 if (hsotg->hw_params.hibernation) in dwc2_check_param_power_down()
600 dev_dbg(hsotg->dev, in dwc2_check_param_power_down()
605 dev_err(hsotg->dev, in dwc2_check_param_power_down()
612 hsotg->params.power_down = param; in dwc2_check_param_power_down()
615 static void dwc2_check_param_tx_fifo_sizes(struct dwc2_hsotg *hsotg) in dwc2_check_param_tx_fifo_sizes() argument
623 fifo_count = dwc2_hsotg_tx_fifo_count(hsotg); in dwc2_check_param_tx_fifo_sizes()
624 min = hsotg->hw_params.en_multiple_tx_fifo ? 16 : 4; in dwc2_check_param_tx_fifo_sizes()
627 total += hsotg->params.g_tx_fifo_size[fifo]; in dwc2_check_param_tx_fifo_sizes()
629 if (total > dwc2_hsotg_tx_fifo_total_depth(hsotg) || !total) { in dwc2_check_param_tx_fifo_sizes()
630 dev_warn(hsotg->dev, "%s: Invalid parameter g-tx-fifo-size, setting to default average\n", in dwc2_check_param_tx_fifo_sizes()
632 dwc2_set_param_tx_fifo_sizes(hsotg); in dwc2_check_param_tx_fifo_sizes()
636 dptxfszn = hsotg->hw_params.g_tx_fifo_size[fifo]; in dwc2_check_param_tx_fifo_sizes()
638 if (hsotg->params.g_tx_fifo_size[fifo] < min || in dwc2_check_param_tx_fifo_sizes()
639 hsotg->params.g_tx_fifo_size[fifo] > dptxfszn) { in dwc2_check_param_tx_fifo_sizes()
640 dev_warn(hsotg->dev, "%s: Invalid parameter g_tx_fifo_size[%d]=%d\n", in dwc2_check_param_tx_fifo_sizes()
642 hsotg->params.g_tx_fifo_size[fifo]); in dwc2_check_param_tx_fifo_sizes()
643 hsotg->params.g_tx_fifo_size[fifo] = dptxfszn; in dwc2_check_param_tx_fifo_sizes()
649 if ((int)(hsotg->params._param) < (_min) || \
650 (hsotg->params._param) > (_max)) { \
651 dev_warn(hsotg->dev, "%s: Invalid parameter %s=%d\n", \
652 __func__, #_param, hsotg->params._param); \
653 hsotg->params._param = (_def); \
658 if (hsotg->params._param && !(_check)) { \
659 dev_warn(hsotg->dev, "%s: Invalid parameter %s=%d\n", \
660 __func__, #_param, hsotg->params._param); \
661 hsotg->params._param = false; \
665 static void dwc2_check_params(struct dwc2_hsotg *hsotg) in dwc2_check_params() argument
667 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_check_params()
668 struct dwc2_core_params *p = &hsotg->params; in dwc2_check_params()
671 dwc2_check_param_otg_cap(hsotg); in dwc2_check_params()
672 dwc2_check_param_phy_type(hsotg); in dwc2_check_params()
673 dwc2_check_param_speed(hsotg); in dwc2_check_params()
674 dwc2_check_param_phy_utmi_width(hsotg); in dwc2_check_params()
675 dwc2_check_param_power_down(hsotg); in dwc2_check_params()
681 CHECK_BOOL(reload_ctl, (hsotg->hw_params.snpsid > DWC2_CORE_REV_2_92a)); in dwc2_check_params()
682 CHECK_BOOL(lpm, (hsotg->hw_params.snpsid >= DWC2_CORE_REV_2_80a)); in dwc2_check_params()
684 CHECK_BOOL(lpm_clock_gating, hsotg->params.lpm); in dwc2_check_params()
685 CHECK_BOOL(besl, hsotg->params.lpm); in dwc2_check_params()
686 CHECK_BOOL(besl, (hsotg->hw_params.snpsid >= DWC2_CORE_REV_3_00a)); in dwc2_check_params()
687 CHECK_BOOL(hird_threshold_en, hsotg->params.lpm); in dwc2_check_params()
688 CHECK_RANGE(hird_threshold, 0, hsotg->params.besl ? 12 : 7, 0); in dwc2_check_params()
697 if ((hsotg->dr_mode == USB_DR_MODE_HOST) || in dwc2_check_params()
698 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_check_params()
718 if ((hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) || in dwc2_check_params()
719 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_check_params()
728 dwc2_check_param_tx_fifo_sizes(hsotg); in dwc2_check_params()
737 static void dwc2_get_host_hwparams(struct dwc2_hsotg *hsotg) in dwc2_get_host_hwparams() argument
739 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_get_host_hwparams()
743 if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) in dwc2_get_host_hwparams()
746 dwc2_force_mode(hsotg, true); in dwc2_get_host_hwparams()
748 gnptxfsiz = dwc2_readl(hsotg, GNPTXFSIZ); in dwc2_get_host_hwparams()
749 hptxfsiz = dwc2_readl(hsotg, HPTXFSIZ); in dwc2_get_host_hwparams()
762 static void dwc2_get_dev_hwparams(struct dwc2_hsotg *hsotg) in dwc2_get_dev_hwparams() argument
764 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_get_dev_hwparams()
768 if (hsotg->dr_mode == USB_DR_MODE_HOST) in dwc2_get_dev_hwparams()
771 dwc2_force_mode(hsotg, false); in dwc2_get_dev_hwparams()
773 gnptxfsiz = dwc2_readl(hsotg, GNPTXFSIZ); in dwc2_get_dev_hwparams()
775 fifo_count = dwc2_hsotg_tx_fifo_count(hsotg); in dwc2_get_dev_hwparams()
779 (dwc2_readl(hsotg, DPTXFSIZN(fifo)) & in dwc2_get_dev_hwparams()
794 int dwc2_get_hwparams(struct dwc2_hsotg *hsotg) in dwc2_get_hwparams() argument
796 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_get_hwparams()
801 hwcfg1 = dwc2_readl(hsotg, GHWCFG1); in dwc2_get_hwparams()
802 hwcfg2 = dwc2_readl(hsotg, GHWCFG2); in dwc2_get_hwparams()
803 hwcfg3 = dwc2_readl(hsotg, GHWCFG3); in dwc2_get_hwparams()
804 hwcfg4 = dwc2_readl(hsotg, GHWCFG4); in dwc2_get_hwparams()
805 grxfsiz = dwc2_readl(hsotg, GRXFSIZ); in dwc2_get_hwparams()
870 dwc2_get_host_hwparams(hsotg); in dwc2_get_hwparams()
871 dwc2_get_dev_hwparams(hsotg); in dwc2_get_hwparams()
878 int dwc2_init_params(struct dwc2_hsotg *hsotg) in dwc2_init_params() argument
883 dwc2_set_default_params(hsotg); in dwc2_init_params()
884 dwc2_get_device_properties(hsotg); in dwc2_init_params()
886 match = of_match_device(dwc2_of_match_table, hsotg->dev); in dwc2_init_params()
889 set_params(hsotg); in dwc2_init_params()
893 amatch = acpi_match_device(dwc2_acpi_match, hsotg->dev); in dwc2_init_params()
896 set_params(hsotg); in dwc2_init_params()
900 dwc2_check_params(hsotg); in dwc2_init_params()