mirror of
https://github.com/torvalds/linux.git
synced 2024-10-27 23:31:45 +00:00
usb: mtu3: fix U3 port link issue
the issue is introduced when @is_u3_ip is used in mtu3_device_enabe() before initialized in mtu3_mem_alloc(), so get global IP information at first before used by following functins. Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c7d4abbcb1
commit
220d88eadd
|
@ -481,21 +481,14 @@ static int mtu3_mem_alloc(struct mtu3 *mtu)
|
||||||
void __iomem *mbase = mtu->mac_base;
|
void __iomem *mbase = mtu->mac_base;
|
||||||
struct mtu3_ep *ep_array;
|
struct mtu3_ep *ep_array;
|
||||||
int in_ep_num, out_ep_num;
|
int in_ep_num, out_ep_num;
|
||||||
u32 cap_epinfo, cap_dev;
|
u32 cap_epinfo;
|
||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
mtu->hw_version = mtu3_readl(mtu->ippc_base, U3D_SSUSB_HW_ID);
|
|
||||||
|
|
||||||
cap_dev = mtu3_readl(mtu->ippc_base, U3D_SSUSB_IP_DEV_CAP);
|
|
||||||
mtu->is_u3_ip = !!SSUSB_IP_DEV_U3_PORT_NUM(cap_dev);
|
|
||||||
|
|
||||||
cap_epinfo = mtu3_readl(mbase, U3D_CAP_EPINFO);
|
cap_epinfo = mtu3_readl(mbase, U3D_CAP_EPINFO);
|
||||||
in_ep_num = CAP_TX_EP_NUM(cap_epinfo);
|
in_ep_num = CAP_TX_EP_NUM(cap_epinfo);
|
||||||
out_ep_num = CAP_RX_EP_NUM(cap_epinfo);
|
out_ep_num = CAP_RX_EP_NUM(cap_epinfo);
|
||||||
|
|
||||||
dev_info(mtu->dev, "IP version 0x%x(%s IP)\n", mtu->hw_version,
|
|
||||||
mtu->is_u3_ip ? "U3" : "U2");
|
|
||||||
dev_info(mtu->dev, "fifosz/epnum: Tx=%#x/%d, Rx=%#x/%d\n",
|
dev_info(mtu->dev, "fifosz/epnum: Tx=%#x/%d, Rx=%#x/%d\n",
|
||||||
mtu3_readl(mbase, U3D_CAP_EPNTXFFSZ), in_ep_num,
|
mtu3_readl(mbase, U3D_CAP_EPNTXFFSZ), in_ep_num,
|
||||||
mtu3_readl(mbase, U3D_CAP_EPNRXFFSZ), out_ep_num);
|
mtu3_readl(mbase, U3D_CAP_EPNRXFFSZ), out_ep_num);
|
||||||
|
@ -732,8 +725,17 @@ static irqreturn_t mtu3_irq(int irq, void *data)
|
||||||
|
|
||||||
static int mtu3_hw_init(struct mtu3 *mtu)
|
static int mtu3_hw_init(struct mtu3 *mtu)
|
||||||
{
|
{
|
||||||
|
u32 cap_dev;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
mtu->hw_version = mtu3_readl(mtu->ippc_base, U3D_SSUSB_HW_ID);
|
||||||
|
|
||||||
|
cap_dev = mtu3_readl(mtu->ippc_base, U3D_SSUSB_IP_DEV_CAP);
|
||||||
|
mtu->is_u3_ip = !!SSUSB_IP_DEV_U3_PORT_NUM(cap_dev);
|
||||||
|
|
||||||
|
dev_info(mtu->dev, "IP version 0x%x(%s IP)\n", mtu->hw_version,
|
||||||
|
mtu->is_u3_ip ? "U3" : "U2");
|
||||||
|
|
||||||
mtu3_device_reset(mtu);
|
mtu3_device_reset(mtu);
|
||||||
|
|
||||||
ret = mtu3_device_enable(mtu);
|
ret = mtu3_device_enable(mtu);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user