Lines Matching refs:hsotg

13 static void dwc2_set_bcm_params(struct dwc2_hsotg *hsotg)  in dwc2_set_bcm_params()  argument
15 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_bcm_params()
23 static void dwc2_set_his_params(struct dwc2_hsotg *hsotg) in dwc2_set_his_params() argument
25 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_his_params()
46 static void dwc2_set_jz4775_params(struct dwc2_hsotg *hsotg) in dwc2_set_jz4775_params() argument
48 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_jz4775_params()
55 !device_property_read_bool(hsotg->dev, "disable-over-current"); in dwc2_set_jz4775_params()
58 static void dwc2_set_x1600_params(struct dwc2_hsotg *hsotg) in dwc2_set_x1600_params() argument
60 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_x1600_params()
68 !device_property_read_bool(hsotg->dev, "disable-over-current"); in dwc2_set_x1600_params()
71 static void dwc2_set_x2000_params(struct dwc2_hsotg *hsotg) in dwc2_set_x2000_params() argument
73 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_x2000_params()
84 !device_property_read_bool(hsotg->dev, "disable-over-current"); in dwc2_set_x2000_params()
87 static void dwc2_set_s3c6400_params(struct dwc2_hsotg *hsotg) in dwc2_set_s3c6400_params() argument
89 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_s3c6400_params()
96 static void dwc2_set_socfpga_agilex_params(struct dwc2_hsotg *hsotg) in dwc2_set_socfpga_agilex_params() argument
98 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_socfpga_agilex_params()
104 static void dwc2_set_rk_params(struct dwc2_hsotg *hsotg) in dwc2_set_rk_params() argument
106 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_rk_params()
118 static void dwc2_set_ltq_params(struct dwc2_hsotg *hsotg) in dwc2_set_ltq_params() argument
120 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_ltq_params()
133 static void dwc2_set_amlogic_params(struct dwc2_hsotg *hsotg) in dwc2_set_amlogic_params() argument
135 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_amlogic_params()
150 static void dwc2_set_amlogic_g12a_params(struct dwc2_hsotg *hsotg) in dwc2_set_amlogic_g12a_params() argument
152 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_amlogic_g12a_params()
160 static void dwc2_set_amcc_params(struct dwc2_hsotg *hsotg) in dwc2_set_amcc_params() argument
162 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_amcc_params()
167 static void dwc2_set_stm32f4x9_fsotg_params(struct dwc2_hsotg *hsotg) in dwc2_set_stm32f4x9_fsotg_params() argument
169 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32f4x9_fsotg_params()
183 static void dwc2_set_stm32f7_hsotg_params(struct dwc2_hsotg *hsotg) in dwc2_set_stm32f7_hsotg_params() argument
185 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32f7_hsotg_params()
192 static void dwc2_set_stm32mp15_fsotg_params(struct dwc2_hsotg *hsotg) in dwc2_set_stm32mp15_fsotg_params() argument
194 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32mp15_fsotg_params()
214 static void dwc2_set_stm32mp15_hsotg_params(struct dwc2_hsotg *hsotg) in dwc2_set_stm32mp15_hsotg_params() argument
216 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32mp15_hsotg_params()
221 p->activate_stm_id_vb_detection = !device_property_read_bool(hsotg->dev, "usb-role-switch"); in dwc2_set_stm32mp15_hsotg_params()
280 static void dwc2_set_param_otg_cap(struct dwc2_hsotg *hsotg) in dwc2_set_param_otg_cap() argument
282 switch (hsotg->hw_params.op_mode) { in dwc2_set_param_otg_cap()
284 hsotg->params.otg_caps.hnp_support = true; in dwc2_set_param_otg_cap()
285 hsotg->params.otg_caps.srp_support = true; in dwc2_set_param_otg_cap()
290 hsotg->params.otg_caps.hnp_support = false; in dwc2_set_param_otg_cap()
291 hsotg->params.otg_caps.srp_support = true; in dwc2_set_param_otg_cap()
294 hsotg->params.otg_caps.hnp_support = false; in dwc2_set_param_otg_cap()
295 hsotg->params.otg_caps.srp_support = false; in dwc2_set_param_otg_cap()
300 static void dwc2_set_param_phy_type(struct dwc2_hsotg *hsotg) in dwc2_set_param_phy_type() argument
303 u32 hs_phy_type = hsotg->hw_params.hs_phy_type; in dwc2_set_param_phy_type()
314 if (dwc2_is_fs_iot(hsotg)) in dwc2_set_param_phy_type()
315 hsotg->params.phy_type = DWC2_PHY_TYPE_PARAM_FS; in dwc2_set_param_phy_type()
317 hsotg->params.phy_type = val; in dwc2_set_param_phy_type()
320 static void dwc2_set_param_speed(struct dwc2_hsotg *hsotg) in dwc2_set_param_speed() argument
324 val = hsotg->params.phy_type == DWC2_PHY_TYPE_PARAM_FS ? in dwc2_set_param_speed()
327 if (dwc2_is_fs_iot(hsotg)) in dwc2_set_param_speed()
330 if (dwc2_is_hs_iot(hsotg)) in dwc2_set_param_speed()
333 hsotg->params.speed = val; in dwc2_set_param_speed()
336 static void dwc2_set_param_phy_utmi_width(struct dwc2_hsotg *hsotg) in dwc2_set_param_phy_utmi_width() argument
340 val = (hsotg->hw_params.utmi_phy_data_width == in dwc2_set_param_phy_utmi_width()
343 if (hsotg->phy) { in dwc2_set_param_phy_utmi_width()
348 if (phy_get_bus_width(hsotg->phy) == 8) in dwc2_set_param_phy_utmi_width()
352 hsotg->params.phy_utmi_width = val; in dwc2_set_param_phy_utmi_width()
355 static void dwc2_set_param_tx_fifo_sizes(struct dwc2_hsotg *hsotg) in dwc2_set_param_tx_fifo_sizes() argument
357 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_param_tx_fifo_sizes()
362 fifo_count = dwc2_hsotg_tx_fifo_count(hsotg); in dwc2_set_param_tx_fifo_sizes()
365 depth_average = dwc2_hsotg_tx_fifo_average_depth(hsotg); in dwc2_set_param_tx_fifo_sizes()
370 static void dwc2_set_param_power_down(struct dwc2_hsotg *hsotg) in dwc2_set_param_power_down() argument
374 if (hsotg->hw_params.hibernation) in dwc2_set_param_power_down()
376 else if (hsotg->hw_params.power_optimized) in dwc2_set_param_power_down()
381 hsotg->params.power_down = val; in dwc2_set_param_power_down()
384 static void dwc2_set_param_lpm(struct dwc2_hsotg *hsotg) in dwc2_set_param_lpm() argument
386 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_param_lpm()
388 p->lpm = hsotg->hw_params.lpm_mode; in dwc2_set_param_lpm()
408 static void dwc2_set_default_params(struct dwc2_hsotg *hsotg) in dwc2_set_default_params() argument
410 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_set_default_params()
411 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_default_params()
414 dwc2_set_param_otg_cap(hsotg); in dwc2_set_default_params()
415 dwc2_set_param_phy_type(hsotg); in dwc2_set_default_params()
416 dwc2_set_param_speed(hsotg); in dwc2_set_default_params()
417 dwc2_set_param_phy_utmi_width(hsotg); in dwc2_set_default_params()
418 dwc2_set_param_power_down(hsotg); in dwc2_set_default_params()
419 dwc2_set_param_lpm(hsotg); in dwc2_set_default_params()
440 if ((hsotg->dr_mode == USB_DR_MODE_HOST) || in dwc2_set_default_params()
441 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_set_default_params()
453 if ((hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) || in dwc2_set_default_params()
454 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_set_default_params()
469 dwc2_set_param_tx_fifo_sizes(hsotg); in dwc2_set_default_params()
480 static void dwc2_get_device_properties(struct dwc2_hsotg *hsotg) in dwc2_get_device_properties() argument
482 struct dwc2_core_params *p = &hsotg->params; in dwc2_get_device_properties()
485 if ((hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) || in dwc2_get_device_properties()
486 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_get_device_properties()
487 device_property_read_u32(hsotg->dev, "g-rx-fifo-size", in dwc2_get_device_properties()
490 device_property_read_u32(hsotg->dev, "g-np-tx-fifo-size", in dwc2_get_device_properties()
493 num = device_property_count_u32(hsotg->dev, "g-tx-fifo-size"); in dwc2_get_device_properties()
498 device_property_read_u32_array(hsotg->dev, in dwc2_get_device_properties()
504 of_usb_update_otg_caps(hsotg->dev->of_node, &p->otg_caps); in dwc2_get_device_properties()
507 if (of_find_property(hsotg->dev->of_node, "disable-over-current", NULL)) in dwc2_get_device_properties()
511 static void dwc2_check_param_otg_cap(struct dwc2_hsotg *hsotg) in dwc2_check_param_otg_cap() argument
515 if (hsotg->params.otg_caps.hnp_support && hsotg->params.otg_caps.srp_support) { in dwc2_check_param_otg_cap()
517 if (hsotg->hw_params.op_mode != GHWCFG2_OP_MODE_HNP_SRP_CAPABLE) in dwc2_check_param_otg_cap()
519 } else if (!hsotg->params.otg_caps.hnp_support) { in dwc2_check_param_otg_cap()
521 if (hsotg->params.otg_caps.srp_support) { in dwc2_check_param_otg_cap()
522 switch (hsotg->hw_params.op_mode) { in dwc2_check_param_otg_cap()
539 dwc2_set_param_otg_cap(hsotg); in dwc2_check_param_otg_cap()
542 static void dwc2_check_param_phy_type(struct dwc2_hsotg *hsotg) in dwc2_check_param_phy_type() argument
548 hs_phy_type = hsotg->hw_params.hs_phy_type; in dwc2_check_param_phy_type()
549 fs_phy_type = hsotg->hw_params.fs_phy_type; in dwc2_check_param_phy_type()
551 switch (hsotg->params.phy_type) { in dwc2_check_param_phy_type()
571 dwc2_set_param_phy_type(hsotg); in dwc2_check_param_phy_type()
574 static void dwc2_check_param_speed(struct dwc2_hsotg *hsotg) in dwc2_check_param_speed() argument
577 int phy_type = hsotg->params.phy_type; in dwc2_check_param_speed()
578 int speed = hsotg->params.speed; in dwc2_check_param_speed()
582 if ((hsotg->params.speed == DWC2_SPEED_PARAM_HIGH) && in dwc2_check_param_speed()
595 dwc2_set_param_speed(hsotg); in dwc2_check_param_speed()
598 static void dwc2_check_param_phy_utmi_width(struct dwc2_hsotg *hsotg) in dwc2_check_param_phy_utmi_width() argument
601 int param = hsotg->params.phy_utmi_width; in dwc2_check_param_phy_utmi_width()
602 int width = hsotg->hw_params.utmi_phy_data_width; in dwc2_check_param_phy_utmi_width()
617 dwc2_set_param_phy_utmi_width(hsotg); in dwc2_check_param_phy_utmi_width()
620 static void dwc2_check_param_power_down(struct dwc2_hsotg *hsotg) in dwc2_check_param_power_down() argument
622 int param = hsotg->params.power_down; in dwc2_check_param_power_down()
628 if (hsotg->hw_params.power_optimized) in dwc2_check_param_power_down()
630 dev_dbg(hsotg->dev, in dwc2_check_param_power_down()
635 if (hsotg->hw_params.hibernation) in dwc2_check_param_power_down()
637 dev_dbg(hsotg->dev, in dwc2_check_param_power_down()
642 dev_err(hsotg->dev, in dwc2_check_param_power_down()
649 hsotg->params.power_down = param; in dwc2_check_param_power_down()
652 static void dwc2_check_param_tx_fifo_sizes(struct dwc2_hsotg *hsotg) in dwc2_check_param_tx_fifo_sizes() argument
660 fifo_count = dwc2_hsotg_tx_fifo_count(hsotg); in dwc2_check_param_tx_fifo_sizes()
661 min = hsotg->hw_params.en_multiple_tx_fifo ? 16 : 4; in dwc2_check_param_tx_fifo_sizes()
664 total += hsotg->params.g_tx_fifo_size[fifo]; in dwc2_check_param_tx_fifo_sizes()
666 if (total > dwc2_hsotg_tx_fifo_total_depth(hsotg) || !total) { in dwc2_check_param_tx_fifo_sizes()
667 dev_warn(hsotg->dev, "%s: Invalid parameter g-tx-fifo-size, setting to default average\n", in dwc2_check_param_tx_fifo_sizes()
669 dwc2_set_param_tx_fifo_sizes(hsotg); in dwc2_check_param_tx_fifo_sizes()
673 dptxfszn = hsotg->hw_params.g_tx_fifo_size[fifo]; in dwc2_check_param_tx_fifo_sizes()
675 if (hsotg->params.g_tx_fifo_size[fifo] < min || in dwc2_check_param_tx_fifo_sizes()
676 hsotg->params.g_tx_fifo_size[fifo] > dptxfszn) { in dwc2_check_param_tx_fifo_sizes()
677 dev_warn(hsotg->dev, "%s: Invalid parameter g_tx_fifo_size[%d]=%d\n", in dwc2_check_param_tx_fifo_sizes()
679 hsotg->params.g_tx_fifo_size[fifo]); in dwc2_check_param_tx_fifo_sizes()
680 hsotg->params.g_tx_fifo_size[fifo] = dptxfszn; in dwc2_check_param_tx_fifo_sizes()
686 if ((int)(hsotg->params._param) < (_min) || \
687 (hsotg->params._param) > (_max)) { \
688 dev_warn(hsotg->dev, "%s: Invalid parameter %s=%d\n", \
689 __func__, #_param, hsotg->params._param); \
690 hsotg->params._param = (_def); \
695 if (hsotg->params._param && !(_check)) { \
696 dev_warn(hsotg->dev, "%s: Invalid parameter %s=%d\n", \
697 __func__, #_param, hsotg->params._param); \
698 hsotg->params._param = false; \
702 static void dwc2_check_params(struct dwc2_hsotg *hsotg) in dwc2_check_params() argument
704 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_check_params()
705 struct dwc2_core_params *p = &hsotg->params; in dwc2_check_params()
708 dwc2_check_param_otg_cap(hsotg); in dwc2_check_params()
709 dwc2_check_param_phy_type(hsotg); in dwc2_check_params()
710 dwc2_check_param_speed(hsotg); in dwc2_check_params()
711 dwc2_check_param_phy_utmi_width(hsotg); in dwc2_check_params()
712 dwc2_check_param_power_down(hsotg); in dwc2_check_params()
718 CHECK_BOOL(reload_ctl, (hsotg->hw_params.snpsid > DWC2_CORE_REV_2_92a)); in dwc2_check_params()
719 CHECK_BOOL(lpm, (hsotg->hw_params.snpsid >= DWC2_CORE_REV_2_80a)); in dwc2_check_params()
721 CHECK_BOOL(lpm_clock_gating, hsotg->params.lpm); in dwc2_check_params()
722 CHECK_BOOL(besl, hsotg->params.lpm); in dwc2_check_params()
723 CHECK_BOOL(besl, (hsotg->hw_params.snpsid >= DWC2_CORE_REV_3_00a)); in dwc2_check_params()
724 CHECK_BOOL(hird_threshold_en, hsotg->params.lpm); in dwc2_check_params()
725 CHECK_RANGE(hird_threshold, 0, hsotg->params.besl ? 12 : 7, 0); in dwc2_check_params()
734 if ((hsotg->dr_mode == USB_DR_MODE_HOST) || in dwc2_check_params()
735 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_check_params()
755 if ((hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) || in dwc2_check_params()
756 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_check_params()
765 dwc2_check_param_tx_fifo_sizes(hsotg); in dwc2_check_params()
774 static void dwc2_get_host_hwparams(struct dwc2_hsotg *hsotg) in dwc2_get_host_hwparams() argument
776 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_get_host_hwparams()
780 if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) in dwc2_get_host_hwparams()
783 dwc2_force_mode(hsotg, true); in dwc2_get_host_hwparams()
785 gnptxfsiz = dwc2_readl(hsotg, GNPTXFSIZ); in dwc2_get_host_hwparams()
786 hptxfsiz = dwc2_readl(hsotg, HPTXFSIZ); in dwc2_get_host_hwparams()
799 static void dwc2_get_dev_hwparams(struct dwc2_hsotg *hsotg) in dwc2_get_dev_hwparams() argument
801 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_get_dev_hwparams()
805 if (hsotg->dr_mode == USB_DR_MODE_HOST) in dwc2_get_dev_hwparams()
808 dwc2_force_mode(hsotg, false); in dwc2_get_dev_hwparams()
810 gnptxfsiz = dwc2_readl(hsotg, GNPTXFSIZ); in dwc2_get_dev_hwparams()
812 fifo_count = dwc2_hsotg_tx_fifo_count(hsotg); in dwc2_get_dev_hwparams()
816 (dwc2_readl(hsotg, DPTXFSIZN(fifo)) & in dwc2_get_dev_hwparams()
831 int dwc2_get_hwparams(struct dwc2_hsotg *hsotg) in dwc2_get_hwparams() argument
833 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_get_hwparams()
838 hwcfg1 = dwc2_readl(hsotg, GHWCFG1); in dwc2_get_hwparams()
839 hwcfg2 = dwc2_readl(hsotg, GHWCFG2); in dwc2_get_hwparams()
840 hwcfg3 = dwc2_readl(hsotg, GHWCFG3); in dwc2_get_hwparams()
841 hwcfg4 = dwc2_readl(hsotg, GHWCFG4); in dwc2_get_hwparams()
842 grxfsiz = dwc2_readl(hsotg, GRXFSIZ); in dwc2_get_hwparams()
907 dwc2_get_host_hwparams(hsotg); in dwc2_get_hwparams()
908 dwc2_get_dev_hwparams(hsotg); in dwc2_get_hwparams()
915 int dwc2_init_params(struct dwc2_hsotg *hsotg) in dwc2_init_params() argument
920 dwc2_set_default_params(hsotg); in dwc2_init_params()
921 dwc2_get_device_properties(hsotg); in dwc2_init_params()
923 match = of_match_device(dwc2_of_match_table, hsotg->dev); in dwc2_init_params()
926 set_params(hsotg); in dwc2_init_params()
930 amatch = acpi_match_device(dwc2_acpi_match, hsotg->dev); in dwc2_init_params()
933 set_params(hsotg); in dwc2_init_params()
937 dwc2_check_params(hsotg); in dwc2_init_params()