mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
- Add platform interface to choose ttctrl.ttha
- Some tiny improvements -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJW0+LJAAoJEEhZKYFQ1nG7Nj8IAMJ8ePjdaCHhSy0EkkyIx+nC IeMAfWV0oIi9PZ0R7H/VkWhKsxkifggC6pJ4beyL+Uw77VdJ7s2Matw5mNtMJRFz jTJn2F5NFAcs9PPrGHmW512vgUNeoOWMH9f2EvNgmlU/7atJa279PKQSIteQWlYb TOC3sc2EOyVjuGYD5S2EvUeWnYEvwESTOFNmhbNuzHtagXDlJvmIA0VvG17G3JR+ ++HDMme3taq333Ro7BPw8Qcuskmq3qLzw20TR8MRDtSYGJmt68Ums5Tz0KOk1+Iy +jvekqKRmAtuiTOD9Z3a5h3T5lu3rGCss46Lxo3qiLWvodDG4dC8DdpDDnFgmKU= =AGD8 -----END PGP SIGNATURE----- Merge tag 'usb-ci-v4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb into usb-next Peter writes: - Add platform interface to choose ttctrl.ttha - Some tiny improvements
This commit is contained in:
commit
7b05d3b374
@ -2,7 +2,14 @@
|
||||
|
||||
Required properties:
|
||||
- compatible: should be one of:
|
||||
"fsl,imx23-usb"
|
||||
"fsl,imx27-usb"
|
||||
"fsl,imx28-usb"
|
||||
"fsl,imx6q-usb"
|
||||
"fsl,imx6sl-usb"
|
||||
"fsl,imx6sx-usb"
|
||||
"fsl,imx6ul-usb"
|
||||
"fsl,imx7d-usb"
|
||||
"lsi,zevio-usb"
|
||||
"qcom,ci-hdrc"
|
||||
"chipidea,usb2"
|
||||
@ -53,6 +60,22 @@ Optional properties:
|
||||
be specified.
|
||||
- phy-clkgate-delay-us: the delay time (us) between putting the PHY into
|
||||
low power mode and gating the PHY clock.
|
||||
- non-zero-ttctrl-ttha: after setting this property, the value of register
|
||||
ttctrl.ttha will be 0x7f; if not, the value will be 0x0, this is the default
|
||||
value. It needs to be very carefully for setting this property, it is
|
||||
recommended that consult with your IC engineer before setting this value.
|
||||
On the most of chipidea platforms, the "usage_tt" flag at RTL is 0, so this
|
||||
property only affects siTD.
|
||||
If this property is not set, the max packet size is 1023 bytes, and if
|
||||
the total of packet size for pervious transactions are more than 256 bytes,
|
||||
it can't accept any transactions within this frame. The use case is single
|
||||
transaction, but higher frame rate.
|
||||
If this property is set, the max packet size is 188 bytes, it can handle
|
||||
more transactions than above case, it can accept transactions until it
|
||||
considers the left room size within frame is less than 188 bytes, software
|
||||
needs to make sure it does not send more than 90%
|
||||
maximum_periodic_data_per_frame. The use case is multiple transactions, but
|
||||
less frame rate.
|
||||
|
||||
i.mx specific properties
|
||||
- fsl,usbmisc: phandler of non-core register device, with one
|
||||
|
@ -28,6 +28,11 @@ struct ci_hdrc_imx_platform_flag {
|
||||
bool runtime_pm;
|
||||
};
|
||||
|
||||
static const struct ci_hdrc_imx_platform_flag imx23_usb_data = {
|
||||
.flags = CI_HDRC_TURN_VBUS_EARLY_ON |
|
||||
CI_HDRC_DISABLE_STREAMING,
|
||||
};
|
||||
|
||||
static const struct ci_hdrc_imx_platform_flag imx27_usb_data = {
|
||||
CI_HDRC_DISABLE_STREAMING,
|
||||
};
|
||||
@ -66,6 +71,7 @@ static const struct ci_hdrc_imx_platform_flag imx7d_usb_data = {
|
||||
};
|
||||
|
||||
static const struct of_device_id ci_hdrc_imx_dt_ids[] = {
|
||||
{ .compatible = "fsl,imx23-usb", .data = &imx23_usb_data},
|
||||
{ .compatible = "fsl,imx28-usb", .data = &imx28_usb_data},
|
||||
{ .compatible = "fsl,imx27-usb", .data = &imx27_usb_data},
|
||||
{ .compatible = "fsl,imx6q-usb", .data = &imx6q_usb_data},
|
||||
@ -244,7 +250,6 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)
|
||||
struct ci_hdrc_platform_data pdata = {
|
||||
.name = dev_name(&pdev->dev),
|
||||
.capoffset = DEF_CAPOFFSET,
|
||||
.flags = CI_HDRC_SET_NON_ZERO_TTHA,
|
||||
};
|
||||
int ret;
|
||||
const struct of_device_id *of_id;
|
||||
@ -302,9 +307,9 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)
|
||||
&pdata);
|
||||
if (IS_ERR(data->ci_pdev)) {
|
||||
ret = PTR_ERR(data->ci_pdev);
|
||||
dev_err(&pdev->dev,
|
||||
"Can't register ci_hdrc platform device, err=%d\n",
|
||||
ret);
|
||||
if (ret != -EPROBE_DEFER)
|
||||
dev_err(&pdev->dev,
|
||||
"ci_hdrc_add_device failed, err=%d\n", ret);
|
||||
goto err_clk;
|
||||
}
|
||||
|
||||
|
@ -721,6 +721,9 @@ static int ci_get_platdata(struct device *dev,
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (of_find_property(dev->of_node, "non-zero-ttctrl-ttha", NULL))
|
||||
platdata->flags |= CI_HDRC_SET_NON_ZERO_TTHA;
|
||||
|
||||
ext_id = ERR_PTR(-ENODEV);
|
||||
ext_vbus = ERR_PTR(-ENODEV);
|
||||
if (of_property_read_bool(dev->of_node, "extcon")) {
|
||||
|
@ -819,7 +819,6 @@ static int _ep_queue(struct usb_ep *ep, struct usb_request *req,
|
||||
ci->ep0out : ci->ep0in;
|
||||
if (!list_empty(&hwep->qh.queue)) {
|
||||
_ep_nuke(hwep);
|
||||
retval = -EOVERFLOW;
|
||||
dev_warn(hwep->ci->dev, "endpoint ctrl %X nuked\n",
|
||||
_usb_addr(hwep));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user