Commit Graph

13157 Commits

Author SHA1 Message Date
Jon Lin 09ad69fdeb rkflash: support new SPI Nor flash
1.EN25QH64A, EN25QH32B, 25Q256JVEM, BH25Q128AS, BH25Q64BS

Change-Id: I7154ab38ad03766f13621cefd899d842ce0835fc
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-03-02 15:23:12 +08:00
Simon Xue 2bb8d138c1 misc: decompress: add decompress driver
Signed-off-by: Simon Xue <xxm@rock-chips.com>
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
Change-Id: I0bffe944c54a933fd8ea48d856e6ac5da06b3b16
2020-03-02 09:19:49 +08:00
Joseph Chen 23b55d3d0f drm/rockchip: fix compile error
Error when CONFIG_ROCKCHIP_RESOURCE_IMAGE is disabled

Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
Change-Id: I3e6dd7c5528409c37ad8fbdcf1cc7f5178253bb2
2020-02-28 11:14:28 +08:00
Frank Wang 73d7b075b0 usb: dwc3: amend UTMI/UTMIW phy interface setup
Let move 8/16-bit UTMI+ interface initialization into DWC3 core init
that is convenient for both DM_USB and u-boot traditional process.

Change-Id: I7fe45af396098749b2acf4a885dff875dcbc6f63
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2020-02-27 17:51:21 +08:00
Frank Wang efc9f55618 usb: dwc3: add dis_u2_freeclk_exists_quirk
Add a quirk to clear the GUSB2PHYCFG.U2_FREECLK_EXISTS bit,
which specifies whether the USB2.0 PHY provides a free-running
PHY clock, which is active when the clock control input is active.

Refer to commit 27f83eeb6b42("usb: dwc3: add dis_u2_freeclk_exists_quirk")
in Linux Rockchip Kernel.

Change-Id: Id90ac25a7e82bbf7918cc9658797c23008871852
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2020-02-27 17:51:21 +08:00
Frank Wang f4acaed3e7 usb: dwc3: add dis_enblslpm_quirk
Add a quirk to clear the GUSB2PHYCFG.ENBLSLPM bit, which controls
whether the PHY receives the suspend signal from the controller.

Refer to commit ec791d149bca("usb: dwc3: Add dis_enblslpm_quirk")
in Linux Kernel.

Change-Id: If8bffb5a8dc1b02e4b3100dc722d14a3d9b74992
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2020-02-27 17:51:21 +08:00
Neil Armstrong 989a41fcc4 UPSTREAM: reset: fix reset_get_bulk when phandle error
This fixes the Coverity Defect CID 175348 when dev_count_phandle_with_args()
returns a negative value.

Change-Id: I3572567e0dce19548a970ecf4e446ff9b23b895f
Fixes: 0c28233903b5 ("reset: Add get/assert/deassert/release for bulk of reset signals")
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 895a82ce90278130828b26c230da99331a33e729)
2020-02-27 17:51:21 +08:00
Jean-Jacques Hiblot 94fbbf0f6d UPSTREAM: dm: Add a No-op uclass
This uclass is intended for devices that do not need any features from the
uclass, including binding children.
This will typically be used by devices that are used to bind child devices
but do not use dm_scan_fdt_dev() to do it. That is for example the case of
several USB wrappers that have 2 child devices (1 for device and 1 for
host) but bind only one at a any given time.

Change-Id: Iad9ba5f368bd2de9940cf069baf9bec9d668920c
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 07e33711fec4f1106f36805b5dc830da07c783c5)
2020-02-27 17:51:21 +08:00
Elaine Zhang 9bc02da530 clk: rockchip: px30: Restore sfc frequency after PLL frequency setting
Change-Id: I261885b027c4c5ba6d94fb228fb04563cb4e0b0e
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
2020-02-25 16:56:09 +08:00
Jason Zhu 1a0c3c4ddd mmc: dw_mmc: implement the function board_mmc_dm_reinit
Change-Id: I18409bd6857d3bc8f4268a78593b23b3e19e744f
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2020-02-24 18:20:52 +08:00
Elaine Zhang c2fb06de29 clk: rockchip: rk1808: Restore mmc/sfc frequency after PLL frequency setting
Change-Id: I14d0f9c41c45253de3a71b7c3d3fdae89ddf9952
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
2020-02-24 18:09:37 +08:00
Jason Zhu e531136ec7 mmc: avoid reading ext_csd several times
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
Change-Id: Iaf952a4721ea74a1fa55da9f1a3eece5cdcd2c0c
2020-02-24 16:35:30 +08:00
Jason Zhu 1f250d0a05 mmc: support hs200 in spl
Change-Id: I9c25265a2a1e2b10a4e6815c918b6bba750c5df8
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2020-02-24 16:35:26 +08:00
Jason Zhu 28e9e98a51 clk: rockchip: rk1808: set gpll to 594000000
The eMMC clk is depended on gpll, and the eMMC is needed to run 150MHz
in HS200 mode. So set gpll to 594000000.

Change-Id: Id356c87b1db158a0638e4560e886868f133dfaf9
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2020-02-24 14:03:43 +08:00
Jason Zhu ace0ade619 mmc: add func mmc_gpio_init_direct in spl
Sometimes we need to reconfigure the eMMC gpio state in spl without
pinctrl driver. So add func mmc_gpio_init_direct to initialize the
eMMC gpio in different platform.

Change-Id: I22500f8865a9e29e59be6ff224001bad899cec48
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2020-02-24 14:03:43 +08:00
Joseph Chen 30a8590450 core: device: add and update some comment
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
Change-Id: I7e58aab5eeb77913c8438ed066a7a73c7d6f0bb6
2020-02-21 16:20:07 +08:00
Joseph Chen 43e3c846b3 pmic: rk8xx: set rk818 2000mA input current if no battery node
Assume that no battery node means the board is always supplied with
adapter, so set 2000mA input curren to make board have enough power.

Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
Change-Id: I9d66c02682cc3ff66a2d8e365837fc66bf991933
2020-02-19 16:57:32 +08:00
Frank Wang a61b9434cd usb: gadget: amend usb download req buffer to 256K
Through contrast test, the use of 256K buffer can improve the
download speed than 128K buffer about 14% for USB2 and 27% for USB3.

The statistics on RK3328-EVB as below:

Buffer  USB2.0    USB3.0
128K    21MB/S    30MB/S
256K    24MB/S    38MB/S

Change-Id: I3b040ed225b212196fc5ca677a4fce240ad290f3
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2020-01-15 08:17:18 +08:00
Frank Wang 5433dc646a usb: dwc3: gadget: fix TRB buffer to multiple of MaxPacketSize
According to the chapter 8.2.3.3 of DWC3 Databook, the total size
of a Buffer Descriptor must be a multiple of MaxPacketSize for OUT
endpoints. This commit fixes it.

Change-Id: I7a4ae8ee73561c06cb4927cb83b4ae18a3f46c43
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2020-01-15 08:17:18 +08:00
Frank Wang c936c8a6a9 usb: dwc3: gadget: always enable CSP
CSP bit of TRB Control is useful for protocols such CDC EEM/ECM/NCM
where we're transferring in blocks of MTU-sized requests (usually MTU
is 1500 bytes).

We know we will always have a short packet after two (for HS)
wMaxPacketSize packets and, usually, we will have a long(-ish) queue of
requests (for our g_ether gadget, we have at least 10 requests).

Instead of always stopping the queue processing to interrupt, giveback
and restart, let's tell dwc3 to interrupt but continue processing
following request if we have anything already pending in the queue.

Refer to commit ca4d44ea2a91 ("usb: dwc3: gadget: always enable CSP")
in Linux Kernel.

Change-Id: Icce79fa174f6d7f040e1c332fe6792a1922c5a04
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2020-01-15 08:17:18 +08:00
Frank Wang 9c946fbb24 usb: dwc3: add dis-u1u2-quirk to reject enter U1 and U2
The DWC3 with Innosilicon USB 3.0 PHY on Rockchip platforms
(e.g. rk3328, rk1808) has problem to exit to U0 state from
U1 or U2 state when DWC3 work as peripheral mode. This patch
adds a quirk to reject transition to U1 and U2 state to
workaround this issue.

Refer to commit aaa5c055cc06 ("usb: dwc3: add dis-u1u2-quirk to
reject enter U1 and U2") in Rockchip Linux Kernel-4.4 .

Change-Id: I1f4176caab3ccdc31ba7eb06684267833bf804db
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2020-01-15 08:17:17 +08:00
Frank Wang 7ce213e781 Revert "UPSTREAM: drivers: usb: dwc3: setup phy before dwc3 core soft reset"
This reverts commit 0dcb583e26.

Change-Id: If0f661a4e1b139c0d12b80e5fd98398bf0892373
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2020-01-15 08:17:17 +08:00
Joseph Chen 243edbf940 clk: rockchip: rk3399: init 816 MHz for ARM big core
We don't use clk_set_defaults() to initial it, because
there are too many clocks to be set in "assigned-clock-rates"
which wastes time.

Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
Change-Id: I6de5e2174945fdbce06e044c390ae2860970b0c4
2020-01-10 10:51:42 +08:00
Joseph Chen 0df2c3dfbc cpu: rockchip amp: add read_rockchip_image()
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
Change-Id: I1015178484053329c0e6d77169486b0305c4268e
2020-01-09 14:31:59 +08:00
Finley Xiao 1bbed24709 clk: rockchip: rk3308: Add support to set and get clk_rtc32k clock
Change-Id: Iea481af0c99a2b2ca9d6eff050e96e80845c8478
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
2020-01-08 17:50:42 +08:00
Finley Xiao 492844a318 rockchip: efuse: Add rockchip_rk3288_efuse_secure_read() for rk3288
The 256-bit and 1024-bit efuse are always secure.

Change-Id: I763a745360952991e63785bcacf0b63e859e60f8
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
2020-01-08 15:11:32 +08:00
Jagan Teki 2136741eb8 UPSTREAM: usb: dwc3: Fix UTMI/UTMIW phy interface initialization
DWC3 support phy interfaces like 8/16-bit UTMI+. phy interface
initialization code would handle them properly along with UNKNOWN
type by default if none of the user/board doesn't need to use the
phy interfaces at all.

The current code is masking the 8/16-bit UTMI+ interface bits globally
which indeed effect the UNKNOWN cases, therefore it effects the platforms
which are not using phy interfaces at all.

So, handle the phy masking bits accordingly on respective interface
type cases.

Conflicts:
	drivers/usb/dwc3/core.h

Change-Id: I28ce66d68984e30fa308a0b5a52c321d7bd96eda
Fixes: 6b7ebff00190 ("usb: dwc3: Add phy interface for dwc3_uboot")
Reported-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 5c207282f53f86ecbf8c25cb691030d8c643ba1c)
2020-01-07 17:25:04 +08:00
Vignesh Raghavendra 6a2b8f4861 UPSTREAM: usb: cdns3: ep0: Fix build warnings related to cache ops
Since, commit 62f9b6544728 ("common: Move older CPU functions to their own header")
cache ops functions are declared in a separate header. Include the same
to avoid build warnings.

Change-Id: I76b3f46ce7e8988335380a22038fb12296ccfb75
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit bdf30e84909d8d99c2700a0fc6c3e799e3d8e2d4)
2020-01-07 17:25:04 +08:00
Jagan Teki e0c79ab406 UPSTREAM: usb: dwc3: Add phy interface for dwc3_uboot
U-Boot has two different variants of dwc3 initializations,
- with dm variant gadget, so the respective dm driver would
  call the dwc3_init in core.
- with non-dm variant gadget, so the usage board file would
  call dwc3_uboot_init in core.

The driver probe would handle all respective gadget properties
including phy interface via phy_type property and then trigger
dwc3_init for dm-variant gadgets.

So, to support the phy interface for non-dm variant gadgets,
the better option is dwc3_uboot_init since there is no
dedicated controller for non-dm variant gadgets.

This patch support for adding phy interface like 8/16-bit UTMI+
code for dwc3_uboot.

This change used Linux phy.h enum list, to make proper code
compatibility.

Conflicts:
	drivers/usb/dwc3/core.h

Change-Id: I626e2428b548a2624fead5418ecb8f7571c77e89
Cc: Marek Vasut <marex@denx.de>
Tested-by: Levin Du <djw@t-chip.com.cn>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
Reviewed-by: Marek Vasut <marex@denx.de>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 6b7ebff00190649d2136b34f6feebc0dbe85bfdc)
2020-01-07 17:25:04 +08:00
Simon Goldschmidt 7808becd6b UPSTREAM: usb: dwc2: fix possible alignment issues
Since upgrading to gcc9, warnings are issued:
"taking address of packed member of ‘...’ may result in an unaligned
pointer value"

Fix this by converting dwc2_fifo_read to use unaligned access since packed
structures may be on an unaligned address, depending on USB hardware.

Change-Id: I2cc286df6fda386353cd2d350534e8ae398e67bb
Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 7dc0ac6015718f5fb66bb79bf53df19f64fbfeee)
2020-01-07 17:25:03 +08:00
Simon Goldschmidt bafc57b2ad UPSTREAM: usb: composite: fix possible alignment issues
Since upgrading to gcc9, warnings are issued:
"taking address of packed member of ‘...’ may result in an unaligned
pointer value"

Fix this by converting two functions to use unaligned access since packed
structures may be on an unaligned address, depending on USB hardware.

Conflicts:
	drivers/usb/gadget/composite.c

Change-Id: I9a42dcd3ca1a633204396e2a2699069a88df0890
Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 616ebd8b9cb455c5949bd94c47283835eba1954a)
2020-01-07 17:25:03 +08:00
Vignesh Raghavendra 8cf2756ce2 UPSTREAM: usb: cdns3: Fix include file path
xhci.h has now been moved to include/usb/ directory. Therefore, update the
path in the Cadence USB drivers.

Change-Id: Id8eb19ff4ee0130265b14d9f350f6f78c6d691aa
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit e5521b1c6f4e2d18f7b33e6db06af5e47fdef52c)
2020-01-07 17:25:03 +08:00
Chunfeng Yun 58693cd5f2 UPSTREAM: usb: xhci: support 1.1 or later version
The xHCI 1.1 version also need set Transfer Type field

Change-Id: Icd6c9f61352f56037566c356773a1908726897ab
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit e0891bb679200a8cc73c3b3d98ba40c02c31b850)
2020-01-07 17:25:03 +08:00
Vignesh Raghavendra 349befe519 UPSTREAM: usb: gadget: Add gadget_is_cdns3() macro
Add a new bcdDevice entry for Cadence USB gadget controller similar to
other controller and add gadget_is_cdns3() macro as well.

Conflicts:
	drivers/usb/gadget/gadget_chips.h

Change-Id: I9be2baf3a8b57a0b1fb9116f51a04a71d59bb5f0
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit d80effb1847822e521cda17b4c73c83629b035d0)
2020-01-07 17:25:03 +08:00
Vignesh Raghavendra 5cec6cdf3e UPSTREAM: usb: cdns3: Add TI wrapper driver for CDNS USB3 controller
Add driver to handle TI specific wrapper for Cadence USB3 controller
present on J721e SoC. Based on Linux driver for the same.

Change-Id: I68fb3c8144633bb6f363ee0f5dd7f5461d4a38a0
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit a9ca4193bd3d96f1545d30c4b6a6845442403f26)
2020-01-07 17:25:03 +08:00
Vignesh Raghavendra 5fac2ed3c9 UPSTREAM: usb: cdns3: gadget: Implement udc_set_speed() callback
Implement udc_set_speed() callback to limit Controller's speed to
high-speed/full-speed when working with gadgets that are high-speed or
full-speed only

Change-Id: Iee46beaf6336dc974597b3163287344c4bda2771
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 927c22b0dae7ee9e3e89d8be6393b030371cb842)
2020-01-07 17:25:03 +08:00
Vignesh Raghavendra f6ce6072be UPSTREAM: usb: Add Cadence USB3 host and gadget driver
Add support for USB3 host and gadget driver. This is a direct sync of
Linux kernel Cadence USB stack that from v5.4-rc1 release.
Driver has been modified so that it compiles without errors against
U-Boot code base.
Features not required for U-Boot such as scatter-gather DMA and OTG
interrupt handling has been dropped.

Change-Id: I168e032f35d259ad1bb7a7f9f3c066bd13f129d4
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
[jjhiblot@ti.com: Add PHY support]
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 7e91f6ccdc84fe5952e5c26769e65d12e5fc4733)
2020-01-07 17:25:03 +08:00
Sherry Sun 16dff7857a UPSTREAM: usb: udc: Introduce ->udc_set_speed() method
This patch was copied from kernel commit: 67fdfda4a99ed.

Sometimes, the gadget driver we want to run has max_speed lower than
what the UDC supports. In such situations, UDC might want to make sure
we don't try to connect on speeds not supported by the gadget
driver because that will just fail.

So here introduce a new optional ->udc_set_speed() method which can be
implemented by interested UDC drivers to achieve this purpose.

Change-Id: I8ce57970c9095a92553ee12520e3724bd029d6b6
Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 8d94e184ffdef48b40942c12d9e7b0290e60a1ef)
2020-01-07 17:25:03 +08:00
Vignesh Raghavendra 0943909d36 UPSTREAM: usb: gadget: Add match_ep() op to usb_gadget_ops
Add match_ep() op to usb_gadget_ops similar to Linux kernel which is
useful in finding a suitable ep match for the function driver. This will
avoid adding more gadget_is_xxx() handling code to usb_ep_autoconfig().

Also sync usb_ep_caps struct thats is usually used in the match_ep()
callback by the gadget controller driver

Change-Id: I94fe5d1b3ae984cbf3f6e10f86020191d8ca8090
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 77dcbdf3c1ce96de19c00caca0766b5bbaa0cf28)
2020-01-07 17:25:03 +08:00
Marek Vasut db0e15c2c3 UPSTREAM: usb: ehci-hcd: Keep async schedule running
Profiling the EHCI driver shows a significant performance problem in
ehci_submit_async(). Specifically, this function keeps enabling and
disabling async schedule back and forth for every single transaction.
However, enabling/disabling the async schedule does not take effect
immediatelly, but instead may take up to 1 mS (8 uFrames) to complete.

This impacts USB storage significantly, esp. since the recent reduction
of maximum transfer size to support more USB storage devices. This in
turn results in sharp increase in the number of ehci_submit_async()
calls. Since one USB storage BBB transfer does three such calls and
the maximum transfer size is 120 kiB, the overhead is 6 mS per 120 kiB,
which is unacceptable.

However, this overhead can be removed simply by keeping the async
schedule running. Specifically, the first transfer starts the async
schedule and then each and every subsequent transfer only adds a new
QH into that schedule, waits until the QH is completed and does NOT
disable the async schedule. The async schedule is stopped only by
shutting down the controller, which must happen before moving out
of U-Boot, otherwise the controller will corrupt memory.

Change-Id: I33a5eccac2579be09c5f1c9385ae245e680bc125
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 02b0e1a36c5bc20174299312556ec4e266872bd6)
2020-01-07 17:25:02 +08:00
Marek Szyprowski 3a9207743d UPSTREAM: dwc3: flush cache only if there is a buffer attached to a request
Calling cache flush on invalid buffer, even with zero length might cause
an exception on certain platforms.

Change-Id: Idf8e2c87a24c80627279faa69430881d5c2c6800
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit fd15b58c1a9a61edcdeef8ce1eb4df2442295f58)
2020-01-07 17:25:02 +08:00
Marek Szyprowski 10daf97492 UPSTREAM: gadget: f_thor: properly enable 3rd endpoint defined by the protocol
This is needed to make Windows THOR flash tool happy, because it
starts sending data only when interrupt packet is received on the 3rd
endpoint.

Change-Id: I51b9eee20646a7a0f65a1282fe96a575d3ebead7
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Lukasz Majewski <lukma@denx.de>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit ade08db8993687926773b32a477d9a24a9ede9e7)
2020-01-07 17:25:02 +08:00
Vignesh Raghavendra c6e835c1fd UPSTREAM: dwc3-generic: Don't fail probe if clk/reset entries are absent
Some boards don't populate clk/reset entries as these are are optional
as per binding documentation. Therefore, don't fail driver probe if
clk/reset entries are absent in DT.

This fixes fastboot failures seen due to enabling of CONFIG_CLK on AM57xx

Change-Id: I5a8e1d24f74b78647fd263ba11eaf68d4252abb5
Fixes: e8e683d33b0c ("board: ti: am57xx-idk: Configure the CDCE913 clock synthesizer")
Reported-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit d624434f5ebc5e3eb5f5609f06200f477cf8d8b5)
2020-01-07 17:25:02 +08:00
Ye Li 48afbe4fcc UPSTREAM: ehci-mx6: Update EHCI driver to support OTG0 on i.MX7ULP
The ULP has two USB controllers. These two controllers have similar NC
registers layout as i.MX7D. But OTG0 uses UTMI PHY simliar as i.MX6, not
the integrated PHY on i.MX7D. The OTG1 needs off-chip HSIC PHY or ULPI PHY
to work.

This patch only supports OTG0 with UTMI PHY.

Change-Id: Iccbcd113f87e5382eab12558abbb7ff596e4688d
Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 235f5e158e336371759f98ffbf265fe078cda251)
2020-01-07 17:25:02 +08:00
Igor Opaniuk a9aeb7ee74 UPSTREAM: usb: ehci-mx6: Fix bus enumeration for iMX7 SoCs
This fixes the issues with calculation of controller indexes in
ehci_usb_bind() for iMX7, as USB controllers on iMX7 SoCs aren't
placed next to each other, and their addresses incremented by 0x10000.

Example of USB nodes for iMX7S/D:

usbotg1: usb@30b10000 {
    compatible = "fsl,imx7d-usb", "fsl,imx27-usb";
    reg = <0x30b10000 0x200>;
           ^^^^^^^^^^
....
usbotg2: usb@30b20000 {
    compatible = "fsl,imx7d-usb", "fsl,imx27-usb";
    reg = <0x30b20000 0x200>;
           ^^^^^^^^^^
....

usbh: usb@30b30000 {
    compatible = "fsl,imx7d-usb", "fsl,imx27-usb";
    reg = <0x30b30000 0x200>;
           ^^^^^^^^^^
....

Which was leading to usb enumeration issues:
Colibri iMX7 # usb start
starting USB...
Bus usb@30b10000: USB EHCI 1.00
Bus usb@30b20000: probe failed, error -22
scanning bus usb@30b10000 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found

Change-Id: I2c458dfa9e590ba054f63bb1e7ce1fad525eb56c
Fixes: 501547cec1("usb: ehci-mx6: Fix bus enumeration for DM case")
Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 1198a104d37b10064cd90f36d472787d549eda02)
2020-01-07 17:25:02 +08:00
Jean-Jacques Hiblot eedade5714 UPSTREAM: usb: dwc3: Add dwc3_of_parse() to get quirks information from DT
Add a new function that read quirk and configuration information from the
DT. The goal is to allow platforms using their own version of DWC3 driver
to migrate to the generic DWC3 driver.
The function is adapted from the function dwc3_get_properties() in the
linux dwc3 driver introduced in commit c5ac6116db35d.

Change-Id: I0716519c36b390cee532d3556e136012a277d036
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit ba6c5f7a28c8f8ac9eae194c2d37afa0ef51cb3d)
2020-01-07 17:25:02 +08:00
Jean-Jacques Hiblot 28b6cda65f UPSTREAM: usb: dwc3-generic: if no max speed is specified in DT, assume super speed
There is no need to fail if the maximum speed is not specified.
If the speed is not specified, do the same as linux and assume super speed.

Change-Id: I6fd5df9a3536a939b96915f6e260904da947e466
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 1a63e5e5fbfff7779ce24b404bef3b8ccddf1a8b)
2020-01-07 17:25:02 +08:00
Jean-Jacques Hiblot f7133ecd39 UPSTREAM: usb: dwc3-generic: add a new host driver that uses the dwc3 core
Currently the host driver used by dwc3-generic is "xhci-dwc3". This is
a functional driver but it doesn't use the dwc3 core and, in particular,
it lacks some bits that may be important.
For example on the k2 platforms, it is important that the phy are properly
suspended when the USB is not used anymore. The dwc3 core also has a
partial support for quirks.
The new driver can be used as a drop-in replacement for "xhci-dwc3".

In terms of implementation, it may seem strange that 2 private structures
dwc3_generic_host_priv and dwc3_generic_priv) are used. The reason for this
is simply that the xhci layer expects a struct xhci_ctrl at the beginning
of the private data and it seemed wasteful to include it also for the
peripheral case.

Change-Id: I68b9e506836292d5de24feb55c5619d907c173ef
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit b575e909168ca559609f6793720c4811b1dd55fd)
2020-01-07 17:25:02 +08:00
Jean-Jacques Hiblot 0d25c40a91 UPSTREAM: usb: dwc3-generic: factorize code
Factor code for re-usability.
This is another step toward adding host support.

Change-Id: I7c59c13bd9df4839e77555a45720fe318acde94c
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 1af590df164f88fffb6484842eec8c8d8e500e70)
2020-01-07 17:25:02 +08:00
Jean-Jacques Hiblot c28d0fe224 UPSTREAM: usb: dwc3-generic: use platdata
Separate platform data from the private data.
This is one step toward adding host support.

Change-Id: Ibd70d22283d064c77a179105c7e7f5675a598c49
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 3a38a0adb95bfebbbd39b2bb164f04bdeb10bc03)
2020-01-07 17:25:01 +08:00