Lines Matching +full:meson +full:- +full:g12a +full:- +full:usb

1 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
3 * Copyright (C) 2004-2016 Synopsys, Inc.
14 * 3. The names of the above-listed copyright holders may not be used
44 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_bcm_params()
46 p->host_rx_fifo_size = 774; in dwc2_set_bcm_params()
47 p->max_transfer_size = 65535; in dwc2_set_bcm_params()
48 p->max_packet_count = 511; in dwc2_set_bcm_params()
49 p->ahbcfg = 0x10; in dwc2_set_bcm_params()
54 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_his_params()
56 p->otg_cap = DWC2_CAP_PARAM_NO_HNP_SRP_CAPABLE; in dwc2_set_his_params()
57 p->speed = DWC2_SPEED_PARAM_HIGH; in dwc2_set_his_params()
58 p->host_rx_fifo_size = 512; in dwc2_set_his_params()
59 p->host_nperio_tx_fifo_size = 512; in dwc2_set_his_params()
60 p->host_perio_tx_fifo_size = 512; in dwc2_set_his_params()
61 p->max_transfer_size = 65535; in dwc2_set_his_params()
62 p->max_packet_count = 511; in dwc2_set_his_params()
63 p->host_channels = 16; in dwc2_set_his_params()
64 p->phy_type = DWC2_PHY_TYPE_PARAM_UTMI; in dwc2_set_his_params()
65 p->phy_utmi_width = 8; in dwc2_set_his_params()
66 p->i2c_enable = false; in dwc2_set_his_params()
67 p->reload_ctl = false; in dwc2_set_his_params()
68 p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << in dwc2_set_his_params()
70 p->change_speed_quirk = true; in dwc2_set_his_params()
71 p->power_down = DWC2_POWER_DOWN_PARAM_NONE; in dwc2_set_his_params()
76 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_s3c6400_params()
78 p->power_down = DWC2_POWER_DOWN_PARAM_NONE; in dwc2_set_s3c6400_params()
79 p->phy_utmi_width = 8; in dwc2_set_s3c6400_params()
84 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_rk_params()
86 p->otg_cap = DWC2_CAP_PARAM_NO_HNP_SRP_CAPABLE; in dwc2_set_rk_params()
87 p->host_rx_fifo_size = 525; in dwc2_set_rk_params()
88 p->host_nperio_tx_fifo_size = 128; in dwc2_set_rk_params()
89 p->host_perio_tx_fifo_size = 256; in dwc2_set_rk_params()
90 p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << in dwc2_set_rk_params()
92 p->power_down = DWC2_POWER_DOWN_PARAM_NONE; in dwc2_set_rk_params()
93 p->lpm = false; in dwc2_set_rk_params()
94 p->g_dma_desc = false; in dwc2_set_rk_params()
99 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_ltq_params()
101 p->otg_cap = 2; in dwc2_set_ltq_params()
102 p->host_rx_fifo_size = 288; in dwc2_set_ltq_params()
103 p->host_nperio_tx_fifo_size = 128; in dwc2_set_ltq_params()
104 p->host_perio_tx_fifo_size = 96; in dwc2_set_ltq_params()
105 p->max_transfer_size = 65535; in dwc2_set_ltq_params()
106 p->max_packet_count = 511; in dwc2_set_ltq_params()
107 p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << in dwc2_set_ltq_params()
113 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_amlogic_params()
115 p->otg_cap = DWC2_CAP_PARAM_NO_HNP_SRP_CAPABLE; in dwc2_set_amlogic_params()
116 p->speed = DWC2_SPEED_PARAM_HIGH; in dwc2_set_amlogic_params()
117 p->host_rx_fifo_size = 512; in dwc2_set_amlogic_params()
118 p->host_nperio_tx_fifo_size = 500; in dwc2_set_amlogic_params()
119 p->host_perio_tx_fifo_size = 500; in dwc2_set_amlogic_params()
120 p->host_channels = 16; in dwc2_set_amlogic_params()
121 p->phy_type = DWC2_PHY_TYPE_PARAM_UTMI; in dwc2_set_amlogic_params()
122 p->ahbcfg = GAHBCFG_HBSTLEN_INCR8 << in dwc2_set_amlogic_params()
124 p->power_down = DWC2_POWER_DOWN_PARAM_NONE; in dwc2_set_amlogic_params()
129 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_amlogic_g12a_params()
131 p->lpm = false; in dwc2_set_amlogic_g12a_params()
132 p->lpm_clock_gating = false; in dwc2_set_amlogic_g12a_params()
133 p->besl = false; in dwc2_set_amlogic_g12a_params()
134 p->hird_threshold_en = false; in dwc2_set_amlogic_g12a_params()
139 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_amcc_params()
141 p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << GAHBCFG_HBSTLEN_SHIFT; in dwc2_set_amcc_params()
146 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32f4x9_fsotg_params()
148 p->otg_cap = DWC2_CAP_PARAM_NO_HNP_SRP_CAPABLE; in dwc2_set_stm32f4x9_fsotg_params()
149 p->speed = DWC2_SPEED_PARAM_FULL; in dwc2_set_stm32f4x9_fsotg_params()
150 p->host_rx_fifo_size = 128; in dwc2_set_stm32f4x9_fsotg_params()
151 p->host_nperio_tx_fifo_size = 96; in dwc2_set_stm32f4x9_fsotg_params()
152 p->host_perio_tx_fifo_size = 96; in dwc2_set_stm32f4x9_fsotg_params()
153 p->max_packet_count = 256; in dwc2_set_stm32f4x9_fsotg_params()
154 p->phy_type = DWC2_PHY_TYPE_PARAM_FS; in dwc2_set_stm32f4x9_fsotg_params()
155 p->i2c_enable = false; in dwc2_set_stm32f4x9_fsotg_params()
156 p->activate_stm_fs_transceiver = true; in dwc2_set_stm32f4x9_fsotg_params()
161 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32f7_hsotg_params()
163 p->host_rx_fifo_size = 622; in dwc2_set_stm32f7_hsotg_params()
164 p->host_nperio_tx_fifo_size = 128; in dwc2_set_stm32f7_hsotg_params()
165 p->host_perio_tx_fifo_size = 256; in dwc2_set_stm32f7_hsotg_params()
170 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32mp15_fsotg_params()
172 p->otg_cap = DWC2_CAP_PARAM_NO_HNP_SRP_CAPABLE; in dwc2_set_stm32mp15_fsotg_params()
173 p->speed = DWC2_SPEED_PARAM_FULL; in dwc2_set_stm32mp15_fsotg_params()
174 p->host_rx_fifo_size = 128; in dwc2_set_stm32mp15_fsotg_params()
175 p->host_nperio_tx_fifo_size = 96; in dwc2_set_stm32mp15_fsotg_params()
176 p->host_perio_tx_fifo_size = 96; in dwc2_set_stm32mp15_fsotg_params()
177 p->max_packet_count = 256; in dwc2_set_stm32mp15_fsotg_params()
178 p->phy_type = DWC2_PHY_TYPE_PARAM_FS; in dwc2_set_stm32mp15_fsotg_params()
179 p->i2c_enable = false; in dwc2_set_stm32mp15_fsotg_params()
180 p->activate_stm_fs_transceiver = true; in dwc2_set_stm32mp15_fsotg_params()
181 p->activate_stm_id_vb_detection = true; in dwc2_set_stm32mp15_fsotg_params()
182 p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << GAHBCFG_HBSTLEN_SHIFT; in dwc2_set_stm32mp15_fsotg_params()
183 p->power_down = DWC2_POWER_DOWN_PARAM_NONE; in dwc2_set_stm32mp15_fsotg_params()
184 p->host_support_fs_ls_low_power = true; in dwc2_set_stm32mp15_fsotg_params()
185 p->host_ls_low_power_phy_clk = true; in dwc2_set_stm32mp15_fsotg_params()
190 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_stm32mp15_hsotg_params()
192 p->otg_cap = DWC2_CAP_PARAM_NO_HNP_SRP_CAPABLE; in dwc2_set_stm32mp15_hsotg_params()
193 p->activate_stm_id_vb_detection = !device_property_read_bool(hsotg->dev, "usb-role-switch"); in dwc2_set_stm32mp15_hsotg_params()
194 p->host_rx_fifo_size = 440; in dwc2_set_stm32mp15_hsotg_params()
195 p->host_nperio_tx_fifo_size = 256; in dwc2_set_stm32mp15_hsotg_params()
196 p->host_perio_tx_fifo_size = 256; in dwc2_set_stm32mp15_hsotg_params()
197 p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << GAHBCFG_HBSTLEN_SHIFT; in dwc2_set_stm32mp15_hsotg_params()
198 p->power_down = DWC2_POWER_DOWN_PARAM_NONE; in dwc2_set_stm32mp15_hsotg_params()
199 p->lpm = false; in dwc2_set_stm32mp15_hsotg_params()
200 p->lpm_clock_gating = false; in dwc2_set_stm32mp15_hsotg_params()
201 p->besl = false; in dwc2_set_stm32mp15_hsotg_params()
202 p->hird_threshold_en = false; in dwc2_set_stm32mp15_hsotg_params()
206 { .compatible = "brcm,bcm2835-usb", .data = dwc2_set_bcm_params },
207 { .compatible = "hisilicon,hi6220-usb", .data = dwc2_set_his_params },
208 { .compatible = "rockchip,rk3066-usb", .data = dwc2_set_rk_params },
209 { .compatible = "lantiq,arx100-usb", .data = dwc2_set_ltq_params },
210 { .compatible = "lantiq,xrx200-usb", .data = dwc2_set_ltq_params },
212 { .compatible = "samsung,s3c6400-hsotg",
214 { .compatible = "amlogic,meson8-usb",
216 { .compatible = "amlogic,meson8b-usb",
218 { .compatible = "amlogic,meson-gxbb-usb",
220 { .compatible = "amlogic,meson-g12a-usb",
222 { .compatible = "amcc,dwc-otg", .data = dwc2_set_amcc_params },
223 { .compatible = "apm,apm82181-dwc-otg", .data = dwc2_set_amcc_params },
224 { .compatible = "st,stm32f4x9-fsotg",
226 { .compatible = "st,stm32f4x9-hsotg" },
227 { .compatible = "st,stm32f7-hsotg",
229 { .compatible = "st,stm32mp15-fsotg",
231 { .compatible = "st,stm32mp15-hsotg",
241 switch (hsotg->hw_params.op_mode) { in dwc2_set_param_otg_cap()
255 hsotg->params.otg_cap = val; in dwc2_set_param_otg_cap()
261 u32 hs_phy_type = hsotg->hw_params.hs_phy_type; in dwc2_set_param_phy_type()
273 hsotg->params.phy_type = DWC2_PHY_TYPE_PARAM_FS; in dwc2_set_param_phy_type()
275 hsotg->params.phy_type = val; in dwc2_set_param_phy_type()
282 val = hsotg->params.phy_type == DWC2_PHY_TYPE_PARAM_FS ? in dwc2_set_param_speed()
291 hsotg->params.speed = val; in dwc2_set_param_speed()
298 val = (hsotg->hw_params.utmi_phy_data_width == in dwc2_set_param_phy_utmi_width()
301 if (hsotg->phy) { in dwc2_set_param_phy_utmi_width()
304 * width is 8-bit and set the phyif appropriately. in dwc2_set_param_phy_utmi_width()
306 if (phy_get_bus_width(hsotg->phy) == 8) in dwc2_set_param_phy_utmi_width()
310 hsotg->params.phy_utmi_width = val; in dwc2_set_param_phy_utmi_width()
315 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_param_tx_fifo_sizes()
322 memset(p->g_tx_fifo_size, 0, sizeof(p->g_tx_fifo_size)); in dwc2_set_param_tx_fifo_sizes()
325 p->g_tx_fifo_size[i] = depth_average; in dwc2_set_param_tx_fifo_sizes()
332 if (hsotg->hw_params.hibernation) in dwc2_set_param_power_down()
334 else if (hsotg->hw_params.power_optimized) in dwc2_set_param_power_down()
339 hsotg->params.power_down = val; in dwc2_set_param_power_down()
344 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_param_lpm()
346 p->lpm = hsotg->hw_params.lpm_mode; in dwc2_set_param_lpm()
347 if (p->lpm) { in dwc2_set_param_lpm()
348 p->lpm_clock_gating = true; in dwc2_set_param_lpm()
349 p->besl = true; in dwc2_set_param_lpm()
350 p->hird_threshold_en = true; in dwc2_set_param_lpm()
351 p->hird_threshold = 4; in dwc2_set_param_lpm()
353 p->lpm_clock_gating = false; in dwc2_set_param_lpm()
354 p->besl = false; in dwc2_set_param_lpm()
355 p->hird_threshold_en = false; in dwc2_set_param_lpm()
360 * dwc2_set_default_params() - Set all core parameters to their
361 * auto-detected default values.
368 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_set_default_params()
369 struct dwc2_core_params *p = &hsotg->params; in dwc2_set_default_params()
370 bool dma_capable = !(hw->arch == GHWCFG2_SLAVE_ONLY_ARCH); in dwc2_set_default_params()
378 p->phy_ulpi_ddr = false; in dwc2_set_default_params()
379 p->phy_ulpi_ext_vbus = false; in dwc2_set_default_params()
381 p->enable_dynamic_fifo = hw->enable_dynamic_fifo; in dwc2_set_default_params()
382 p->en_multiple_tx_fifo = hw->en_multiple_tx_fifo; in dwc2_set_default_params()
383 p->i2c_enable = hw->i2c_enable; in dwc2_set_default_params()
384 p->acg_enable = hw->acg_enable; in dwc2_set_default_params()
385 p->ulpi_fs_ls = false; in dwc2_set_default_params()
386 p->ts_dline = false; in dwc2_set_default_params()
387 p->reload_ctl = (hw->snpsid >= DWC2_CORE_REV_2_92a); in dwc2_set_default_params()
388 p->uframe_sched = true; in dwc2_set_default_params()
389 p->external_id_pin_ctl = false; in dwc2_set_default_params()
390 p->ipg_isoc_en = false; in dwc2_set_default_params()
391 p->service_interval = false; in dwc2_set_default_params()
392 p->max_packet_count = hw->max_packet_count; in dwc2_set_default_params()
393 p->max_transfer_size = hw->max_transfer_size; in dwc2_set_default_params()
394 p->ahbcfg = GAHBCFG_HBSTLEN_INCR << GAHBCFG_HBSTLEN_SHIFT; in dwc2_set_default_params()
395 p->ref_clk_per = 33333; in dwc2_set_default_params()
396 p->sof_cnt_wkup_alert = 100; in dwc2_set_default_params()
398 if ((hsotg->dr_mode == USB_DR_MODE_HOST) || in dwc2_set_default_params()
399 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_set_default_params()
400 p->host_dma = dma_capable; in dwc2_set_default_params()
401 p->dma_desc_enable = false; in dwc2_set_default_params()
402 p->dma_desc_fs_enable = false; in dwc2_set_default_params()
403 p->host_support_fs_ls_low_power = false; in dwc2_set_default_params()
404 p->host_ls_low_power_phy_clk = false; in dwc2_set_default_params()
405 p->host_channels = hw->host_channels; in dwc2_set_default_params()
406 p->host_rx_fifo_size = hw->rx_fifo_size; in dwc2_set_default_params()
407 p->host_nperio_tx_fifo_size = hw->host_nperio_tx_fifo_size; in dwc2_set_default_params()
408 p->host_perio_tx_fifo_size = hw->host_perio_tx_fifo_size; in dwc2_set_default_params()
411 if ((hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) || in dwc2_set_default_params()
412 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_set_default_params()
413 p->g_dma = dma_capable; in dwc2_set_default_params()
414 p->g_dma_desc = hw->dma_desc_enable; in dwc2_set_default_params()
419 * gadget driver. These defaults have been hard-coded in dwc2_set_default_params()
422 * auto-detect if the hardware does not support the in dwc2_set_default_params()
425 p->g_rx_fifo_size = 2048; in dwc2_set_default_params()
426 p->g_np_tx_fifo_size = 1024; in dwc2_set_default_params()
432 * dwc2_get_device_properties() - Read in device properties.
440 struct dwc2_core_params *p = &hsotg->params; in dwc2_get_device_properties()
443 if ((hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) || in dwc2_get_device_properties()
444 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_get_device_properties()
445 device_property_read_u32(hsotg->dev, "g-rx-fifo-size", in dwc2_get_device_properties()
446 &p->g_rx_fifo_size); in dwc2_get_device_properties()
448 device_property_read_u32(hsotg->dev, "g-np-tx-fifo-size", in dwc2_get_device_properties()
449 &p->g_np_tx_fifo_size); in dwc2_get_device_properties()
451 num = device_property_count_u32(hsotg->dev, "g-tx-fifo-size"); in dwc2_get_device_properties()
454 memset(p->g_tx_fifo_size, 0, in dwc2_get_device_properties()
455 sizeof(p->g_tx_fifo_size)); in dwc2_get_device_properties()
456 device_property_read_u32_array(hsotg->dev, in dwc2_get_device_properties()
457 "g-tx-fifo-size", in dwc2_get_device_properties()
458 &p->g_tx_fifo_size[1], in dwc2_get_device_properties()
463 if (of_find_property(hsotg->dev->of_node, "disable-over-current", NULL)) in dwc2_get_device_properties()
464 p->oc_disable = true; in dwc2_get_device_properties()
471 switch (hsotg->params.otg_cap) { in dwc2_check_param_otg_cap()
473 if (hsotg->hw_params.op_mode != GHWCFG2_OP_MODE_HNP_SRP_CAPABLE) in dwc2_check_param_otg_cap()
477 switch (hsotg->hw_params.op_mode) { in dwc2_check_param_otg_cap()
506 hs_phy_type = hsotg->hw_params.hs_phy_type; in dwc2_check_param_phy_type()
507 fs_phy_type = hsotg->hw_params.fs_phy_type; in dwc2_check_param_phy_type()
509 switch (hsotg->params.phy_type) { in dwc2_check_param_phy_type()
535 int phy_type = hsotg->params.phy_type; in dwc2_check_param_speed()
536 int speed = hsotg->params.speed; in dwc2_check_param_speed()
540 if ((hsotg->params.speed == DWC2_SPEED_PARAM_HIGH) && in dwc2_check_param_speed()
559 int param = hsotg->params.phy_utmi_width; in dwc2_check_param_phy_utmi_width()
560 int width = hsotg->hw_params.utmi_phy_data_width; in dwc2_check_param_phy_utmi_width()
580 int param = hsotg->params.power_down; in dwc2_check_param_power_down()
586 if (hsotg->hw_params.power_optimized) in dwc2_check_param_power_down()
588 dev_dbg(hsotg->dev, in dwc2_check_param_power_down()
593 if (hsotg->hw_params.hibernation) in dwc2_check_param_power_down()
595 dev_dbg(hsotg->dev, in dwc2_check_param_power_down()
600 dev_err(hsotg->dev, in dwc2_check_param_power_down()
607 hsotg->params.power_down = param; in dwc2_check_param_power_down()
619 min = hsotg->hw_params.en_multiple_tx_fifo ? 16 : 4; in dwc2_check_param_tx_fifo_sizes()
622 total += hsotg->params.g_tx_fifo_size[fifo]; in dwc2_check_param_tx_fifo_sizes()
625 dev_warn(hsotg->dev, "%s: Invalid parameter g-tx-fifo-size, setting to default average\n", in dwc2_check_param_tx_fifo_sizes()
631 dptxfszn = hsotg->hw_params.g_tx_fifo_size[fifo]; in dwc2_check_param_tx_fifo_sizes()
633 if (hsotg->params.g_tx_fifo_size[fifo] < min || in dwc2_check_param_tx_fifo_sizes()
634 hsotg->params.g_tx_fifo_size[fifo] > dptxfszn) { in dwc2_check_param_tx_fifo_sizes()
635 dev_warn(hsotg->dev, "%s: Invalid parameter g_tx_fifo_size[%d]=%d\n", in dwc2_check_param_tx_fifo_sizes()
637 hsotg->params.g_tx_fifo_size[fifo]); in dwc2_check_param_tx_fifo_sizes()
638 hsotg->params.g_tx_fifo_size[fifo] = dptxfszn; in dwc2_check_param_tx_fifo_sizes()
644 if ((int)(hsotg->params._param) < (_min) || \
645 (hsotg->params._param) > (_max)) { \
646 dev_warn(hsotg->dev, "%s: Invalid parameter %s=%d\n", \
647 __func__, #_param, hsotg->params._param); \
648 hsotg->params._param = (_def); \
653 if (hsotg->params._param && !(_check)) { \
654 dev_warn(hsotg->dev, "%s: Invalid parameter %s=%d\n", \
655 __func__, #_param, hsotg->params._param); \
656 hsotg->params._param = false; \
662 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_check_params()
663 struct dwc2_core_params *p = &hsotg->params; in dwc2_check_params()
664 bool dma_capable = !(hw->arch == GHWCFG2_SLAVE_ONLY_ARCH); in dwc2_check_params()
671 CHECK_BOOL(enable_dynamic_fifo, hw->enable_dynamic_fifo); in dwc2_check_params()
672 CHECK_BOOL(en_multiple_tx_fifo, hw->en_multiple_tx_fifo); in dwc2_check_params()
673 CHECK_BOOL(i2c_enable, hw->i2c_enable); in dwc2_check_params()
674 CHECK_BOOL(ipg_isoc_en, hw->ipg_isoc_en); in dwc2_check_params()
675 CHECK_BOOL(acg_enable, hw->acg_enable); in dwc2_check_params()
676 CHECK_BOOL(reload_ctl, (hsotg->hw_params.snpsid > DWC2_CORE_REV_2_92a)); in dwc2_check_params()
677 CHECK_BOOL(lpm, (hsotg->hw_params.snpsid >= DWC2_CORE_REV_2_80a)); in dwc2_check_params()
678 CHECK_BOOL(lpm, hw->lpm_mode); in dwc2_check_params()
679 CHECK_BOOL(lpm_clock_gating, hsotg->params.lpm); in dwc2_check_params()
680 CHECK_BOOL(besl, hsotg->params.lpm); in dwc2_check_params()
681 CHECK_BOOL(besl, (hsotg->hw_params.snpsid >= DWC2_CORE_REV_3_00a)); in dwc2_check_params()
682 CHECK_BOOL(hird_threshold_en, hsotg->params.lpm); in dwc2_check_params()
683 CHECK_RANGE(hird_threshold, 0, hsotg->params.besl ? 12 : 7, 0); in dwc2_check_params()
684 CHECK_BOOL(service_interval, hw->service_interval_mode); in dwc2_check_params()
686 15, hw->max_packet_count, in dwc2_check_params()
687 hw->max_packet_count); in dwc2_check_params()
689 2047, hw->max_transfer_size, in dwc2_check_params()
690 hw->max_transfer_size); in dwc2_check_params()
692 if ((hsotg->dr_mode == USB_DR_MODE_HOST) || in dwc2_check_params()
693 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_check_params()
695 CHECK_BOOL(dma_desc_enable, p->host_dma); in dwc2_check_params()
696 CHECK_BOOL(dma_desc_fs_enable, p->dma_desc_enable); in dwc2_check_params()
698 p->phy_type == DWC2_PHY_TYPE_PARAM_FS); in dwc2_check_params()
700 1, hw->host_channels, in dwc2_check_params()
701 hw->host_channels); in dwc2_check_params()
703 16, hw->rx_fifo_size, in dwc2_check_params()
704 hw->rx_fifo_size); in dwc2_check_params()
706 16, hw->host_nperio_tx_fifo_size, in dwc2_check_params()
707 hw->host_nperio_tx_fifo_size); in dwc2_check_params()
709 16, hw->host_perio_tx_fifo_size, in dwc2_check_params()
710 hw->host_perio_tx_fifo_size); in dwc2_check_params()
713 if ((hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) || in dwc2_check_params()
714 (hsotg->dr_mode == USB_DR_MODE_OTG)) { in dwc2_check_params()
716 CHECK_BOOL(g_dma_desc, (p->g_dma && hw->dma_desc_enable)); in dwc2_check_params()
718 16, hw->rx_fifo_size, in dwc2_check_params()
719 hw->rx_fifo_size); in dwc2_check_params()
721 16, hw->dev_nperio_tx_fifo_size, in dwc2_check_params()
722 hw->dev_nperio_tx_fifo_size); in dwc2_check_params()
734 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_get_host_hwparams()
738 if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) in dwc2_get_host_hwparams()
746 hw->host_nperio_tx_fifo_size = (gnptxfsiz & FIFOSIZE_DEPTH_MASK) >> in dwc2_get_host_hwparams()
748 hw->host_perio_tx_fifo_size = (hptxfsiz & FIFOSIZE_DEPTH_MASK) >> in dwc2_get_host_hwparams()
759 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_get_dev_hwparams()
763 if (hsotg->dr_mode == USB_DR_MODE_HOST) in dwc2_get_dev_hwparams()
773 hw->g_tx_fifo_size[fifo] = in dwc2_get_dev_hwparams()
778 hw->dev_nperio_tx_fifo_size = (gnptxfsiz & FIFOSIZE_DEPTH_MASK) >> in dwc2_get_dev_hwparams()
791 struct dwc2_hw_params *hw = &hsotg->hw_params; in dwc2_get_hwparams()
803 hw->dev_ep_dirs = hwcfg1; in dwc2_get_hwparams()
806 hw->op_mode = (hwcfg2 & GHWCFG2_OP_MODE_MASK) >> in dwc2_get_hwparams()
808 hw->arch = (hwcfg2 & GHWCFG2_ARCHITECTURE_MASK) >> in dwc2_get_hwparams()
810 hw->enable_dynamic_fifo = !!(hwcfg2 & GHWCFG2_DYNAMIC_FIFO); in dwc2_get_hwparams()
811 hw->host_channels = 1 + ((hwcfg2 & GHWCFG2_NUM_HOST_CHAN_MASK) >> in dwc2_get_hwparams()
813 hw->hs_phy_type = (hwcfg2 & GHWCFG2_HS_PHY_TYPE_MASK) >> in dwc2_get_hwparams()
815 hw->fs_phy_type = (hwcfg2 & GHWCFG2_FS_PHY_TYPE_MASK) >> in dwc2_get_hwparams()
817 hw->num_dev_ep = (hwcfg2 & GHWCFG2_NUM_DEV_EP_MASK) >> in dwc2_get_hwparams()
819 hw->nperio_tx_q_depth = in dwc2_get_hwparams()
822 hw->host_perio_tx_q_depth = in dwc2_get_hwparams()
825 hw->dev_token_q_depth = in dwc2_get_hwparams()
832 hw->max_transfer_size = (1 << (width + 11)) - 1; in dwc2_get_hwparams()
835 hw->max_packet_count = (1 << (width + 4)) - 1; in dwc2_get_hwparams()
836 hw->i2c_enable = !!(hwcfg3 & GHWCFG3_I2C); in dwc2_get_hwparams()
837 hw->total_fifo_size = (hwcfg3 & GHWCFG3_DFIFO_DEPTH_MASK) >> in dwc2_get_hwparams()
839 hw->lpm_mode = !!(hwcfg3 & GHWCFG3_OTG_LPM_EN); in dwc2_get_hwparams()
842 hw->en_multiple_tx_fifo = !!(hwcfg4 & GHWCFG4_DED_FIFO_EN); in dwc2_get_hwparams()
843 hw->num_dev_perio_in_ep = (hwcfg4 & GHWCFG4_NUM_DEV_PERIO_IN_EP_MASK) >> in dwc2_get_hwparams()
845 hw->num_dev_in_eps = (hwcfg4 & GHWCFG4_NUM_IN_EPS_MASK) >> in dwc2_get_hwparams()
847 hw->dma_desc_enable = !!(hwcfg4 & GHWCFG4_DESC_DMA); in dwc2_get_hwparams()
848 hw->power_optimized = !!(hwcfg4 & GHWCFG4_POWER_OPTIMIZ); in dwc2_get_hwparams()
849 hw->hibernation = !!(hwcfg4 & GHWCFG4_HIBER); in dwc2_get_hwparams()
850 hw->utmi_phy_data_width = (hwcfg4 & GHWCFG4_UTMI_PHY_DATA_WIDTH_MASK) >> in dwc2_get_hwparams()
852 hw->acg_enable = !!(hwcfg4 & GHWCFG4_ACG_SUPPORTED); in dwc2_get_hwparams()
853 hw->ipg_isoc_en = !!(hwcfg4 & GHWCFG4_IPG_ISOC_SUPPORTED); in dwc2_get_hwparams()
854 hw->service_interval_mode = !!(hwcfg4 & in dwc2_get_hwparams()
858 hw->rx_fifo_size = (grxfsiz & GRXFSIZ_DEPTH_MASK) >> in dwc2_get_hwparams()
879 match = of_match_device(dwc2_of_match_table, hsotg->dev); in dwc2_init_params()
880 if (match && match->data) { in dwc2_init_params()
881 set_params = match->data; in dwc2_init_params()