Macpaul Lin
456244aeec
usb: mtu3: fix USB 3.0 dual-role-switch from device to host
...
Issue description:
When an OTG port has been switched to device role and then switch back
to host role again, the USB 3.0 Host (XHCI) will not be able to detect
"plug in event of a connected USB 2.0/1.0 ((Highspeed and Fullspeed)
devices until system reboot.
Root cause and Solution:
There is a condition checking flag "ssusb->otg_switch.is_u3_drd" in
toggle_opstate(). At the end of role switch procedure, toggle_opstate()
will be called to set DC_SESSION and SOFT_CONN bit. If "is_u3_drd" was
set and switched the role to USB host 3.0, bit DC_SESSION and SOFT_CONN
will be skipped hence caused the port cannot detect connected USB 2.0
(Highspeed and Fullspeed) devices. Simply remove the condition check to
solve this issue.
Fixes: d0ed062a8b ("usb: mtu3: dual-role mode support")
Cc: stable@vger.kernel.org
Tested-by: Fabien Parent <fparent@baylibre.com >
Reviewed-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com >
Signed-off-by: Tainping Fang <tianping.fang@mediatek.com >
Link: https://lore.kernel.org/r/20220419081245.21015-1-macpaul.lin@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2022-04-21 19:06:41 +02:00
Chunfeng Yun
43f3b8cbcf
usb: mtu3: set interval of FS intr and isoc endpoint
...
Add support to set interval also for FS intr and isoc endpoint.
Fixes: 4d79e042ed ("usb: mtu3: add support for usb3.1 IP")
Cc: stable@vger.kernel.org
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/20211218095749.6250-4-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-12-21 09:05:45 +01:00
Chunfeng Yun
8c313e3bfd
usb: mtu3: fix list_head check warning
...
This is caused by uninitialization of list_head.
BUG: KASAN: use-after-free in __list_del_entry_valid+0x34/0xe4
Call trace:
dump_backtrace+0x0/0x298
show_stack+0x24/0x34
dump_stack+0x130/0x1a8
print_address_description+0x88/0x56c
__kasan_report+0x1b8/0x2a0
kasan_report+0x14/0x20
__asan_load8+0x9c/0xa0
__list_del_entry_valid+0x34/0xe4
mtu3_req_complete+0x4c/0x300 [mtu3]
mtu3_gadget_stop+0x168/0x448 [mtu3]
usb_gadget_unregister_driver+0x204/0x3a0
unregister_gadget_item+0x44/0xa4
Fixes: 83374e035b ("usb: mtu3: add tracepoints to help debug")
Cc: stable@vger.kernel.org
Reported-by: Yuwen Ng <yuwen.ng@mediatek.com >
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/20211218095749.6250-3-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-12-21 09:05:45 +01:00
Chunfeng Yun
a7aae769ca
usb: mtu3: add memory barrier before set GPD's HWO
...
There is a seldom issue that the controller access invalid address
and trigger devapc or emimpu violation. That is due to memory access
is out of order and cause gpd data is not correct.
Add mb() to prohibit compiler or cpu from reordering to make sure GPD
is fully written before setting its HWO.
Fixes: 48e0d3735a ("usb: mtu3: supports new QMU format")
Cc: stable@vger.kernel.org
Reported-by: Eddie Hung <eddie.hung@mediatek.com >
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/20211218095749.6250-2-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-12-21 09:05:44 +01:00
Chunfeng Yun
e3d4621c22
usb: mtu3: fix interval value for intr and isoc
...
Use the Interval value from isoc/intr endpoint descriptor, no need
minus one. The original code doesn't cause transfer error for
normal cases, but it may have side effect with respond time of ERDY
or tPingTimeout.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/20211218095749.6250-1-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-12-21 09:05:44 +01:00
Chunfeng Yun
7ddae8c779
usb: mtu3: enable wake-up interrupt after runtime_suspend called
...
Use the new API dev_pm_set_dedicated_wake_irq_reverse() to request
dedicated wake-up interrupt, due to we want to enable the wake IRQ
after running ->runtime_suspend().
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com >
2021-10-27 20:49:32 +02:00
Chunfeng Yun
d98a30ccdc
usb: mtu3: fix random remote wakeup
...
Some platforms, e.g. 8183/8192, use low level latch way to keep
wakeup signal, it may latch a wrong signal if debounce more time,
and enable wakeup earlier.
____________________
ip_sleep ____/ \__________
___________________
wakeup_signal ____________/ \______
_______________________________
wakeup_en _______/
^ ^
|(1) |(2)
latch wakeup_signal mistakenly at (1), should latch it at (2);
Workaround: delay about 100us to enable wakeup, meanwhile decrease
debounce time.
Fixes: b1a344589e ("usb: mtu3: support ip-sleep wakeup for MT8183")
Cc: stable@vger.kernel.org
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/20210826083637.33237-2-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-08-26 13:41:52 +02:00
Chunfeng Yun
50fdcb56c4
usb: mtu3: return successful suspend status
...
Forgot 'return 0;' when suspend successfully, make the mistake
when I split patches.
Fixes: 6b587394c6 ("usb: mtu3: support suspend/resume for dual-role mode")
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/20210826083637.33237-1-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-08-26 13:41:52 +02:00
Chunfeng Yun
44e4439d8f
usb: mtu3: fix the wrong HS mult value
...
usb_endpoint_maxp() returns actual max packet size, @mult will
always be zero, fix it by using usb_endpoint_maxp_mult() instead
to get mult.
Fixes: 4d79e042ed ("usb: mtu3: add support for usb3.1 IP")
Cc: stable@vger.kernel.org
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1628836253-7432-3-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-08-13 13:05:50 +02:00
Chunfeng Yun
fd7cb394ec
usb: mtu3: use @mult for HS isoc or intr
...
For HS isoc or intr, should use @mult but not @burst
to save mult value.
Fixes: 4d79e042ed ("usb: mtu3: add support for usb3.1 IP")
Cc: stable@vger.kernel.org
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1628836253-7432-2-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-08-13 13:05:50 +02:00
Chunfeng Yun
e88f285140
usb: mtu3: restore HS function when set SS/SSP
...
Due to HS function is disabled when set as FS, need restore
it when set as SS/SSP.
Fixes: dc4c1aa7ea ("usb: mtu3: add ->udc_set_speed()")
Cc: stable@vger.kernel.org
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1628836253-7432-1-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-08-13 13:05:50 +02:00
Chunfeng Yun
6b587394c6
usb: mtu3: support suspend/resume for dual-role mode
...
Support suspend/resume for dual-role mode including the single
port and multi-ports supported by host controller, when the host
supports mult-ports, only port0 (u2/u3) is used to support dual
role mode.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1626340078-29111-14-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-07-27 15:58:37 +02:00
Chunfeng Yun
427c66422e
usb: mtu3: support suspend/resume for device mode
...
Support suspend/resume for device mode if the device is not
connected with a host, otherwise reject to suspend.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1626340078-29111-13-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-07-27 15:58:37 +02:00
Chunfeng Yun
6244831543
usb: mtu3: add helper to power on/down device
...
Add helper to power on/down device ports and ip, it will be
used when support device suspend/resume
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1626340078-29111-12-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-07-27 15:58:37 +02:00
Chunfeng Yun
fa6f59e28c
usb: mtu3: support runtime PM for host mode
...
Use a dedicated wakeup irq for runtime suspend/resume, and interrupts
names are provided if using wakeup irq, this patch only support host
mode.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1626340078-29111-11-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-07-27 15:58:37 +02:00
Chunfeng Yun
0609c1aa10
usb: mtu3: add new helpers for host suspend/resume
...
Extract two helpers for host suspend and resume, will make it easy
to support dual-role mode suspend/resume later.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1626340078-29111-10-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-07-27 15:58:37 +02:00
Chunfeng Yun
d7e1272428
usb: mtu3: support option to disable usb2 ports
...
Add support to disable specific usb2 host ports, it's useful when
a usb2 port is disabled on some platforms, but enabled on others
for the same SoC.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1626340078-29111-9-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-07-27 15:58:37 +02:00
Chunfeng Yun
88c6b90188
usb: mtu3: support property role-switch-default-mode
...
Support default mode config when use usb-role-switch
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1626340078-29111-8-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-07-27 15:58:37 +02:00
Chunfeng Yun
cd59ea91ea
usb: mtu3: use clock bulk to get clocks
...
Use clock bulk helpers to get/enable/disable clocks, meanwhile
make sys_ck optional, then will be easier to handle clocks.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1623139069-8173-24-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-15 15:46:45 +02:00
Chunfeng Yun
bfce43c43e
usb: mtu3: rebuild role switch get/set hooks
...
Use common helper ssusb_set_mode() to do role switch instead
of manual switch helper;
Remove unnecessary local variable when get role status
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1623139069-8173-14-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-15 15:43:57 +02:00
Chunfeng Yun
13862176a3
usb: mtu3: use force mode for dual role switch
...
Force IDDIG status for all three ways of dual role switch, this
is needed when use Type-C to switch mode.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1623139069-8173-13-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-15 15:43:50 +02:00
Chunfeng Yun
6c7b949762
usb: mtu3: add helper to get pointer of ssusb_mtk struct
...
Add a helper to get pointer of ssusb_mtk struct from the pointer
of otg_switch_mtk struct.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1623139069-8173-12-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-15 15:43:43 +02:00
Chunfeng Yun
18cfd7b85c
usb: mtu3: rebuild role switch flow of extcon
...
This is a preparation patch to plan to use the same work to
handle role switch for all three supported ways.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1623139069-8173-11-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-15 15:43:36 +02:00
Chunfeng Yun
a04c9f2d5d
usb: mtu3: use enum usb_role instead of private defined ones
...
Now we mainly use usb-role-switch to set dual role mode, and all
three ways supported use the same function to switch mode, use
usb_role enum will make code clear
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1623139069-8173-10-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-15 15:43:11 +02:00
Chunfeng Yun
ae634f9321
usb: mtu3: drop support vbus detection
...
Until now it's never used on any platform, and will not used
later.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1623139069-8173-9-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-15 15:43:00 +02:00
Chunfeng Yun
3abf562723
usb: mtu3: remove wakelock
...
Prefer to use /sys/power/wake_lock instead.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1623139069-8173-8-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-15 15:42:48 +02:00
Chunfeng Yun
960d3557d2
usb: mtu3: power down port when power down device IP
...
When power down device IP, we can also power down device port,
then power on the port again when power on device ip, it's helpful
to make device ip enter ip sleep mode.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1623139069-8173-7-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-15 15:42:37 +02:00
Chunfeng Yun
b057da6d54
usb: mtu3: power down device IP by default
...
Power down device IP by default until @udc_start is called.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1623139069-8173-6-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-15 15:42:20 +02:00
Chunfeng Yun
51c236d5e1
usb: mtu3: skip getting extcon when use manual drd switch
...
When use manual drd switch, extcon is not used in fact, so no
need get it even it exists, just skip it like using role switch.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1622182260-23767-5-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-03 13:53:04 +02:00
Chunfeng Yun
f3ec606efc
usb: mtu3: use dev_err_probe to print error log about extcon
...
Print an error log when the error number is not -EPROBE_DEFER
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1622182260-23767-4-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-03 13:53:04 +02:00
Chunfeng Yun
10e93e0814
usb: mtu3: dump a status register of IPPC
...
Add a SSUSB_IP_PW_STS1 register to show ip sleep status
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1622182260-23767-3-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-03 13:53:04 +02:00
Chunfeng Yun
2c09bdaa58
usb: mtu3: remove repeated setting of speed
...
mtu3_gadget_start() will set speed, no need set it again in
mtu3_gadget_set_speed(), just save the desired speed.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1622182260-23767-2-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-03 13:53:04 +02:00
Chunfeng Yun
32ab701df6
usb: mtu3: remove mtu3_ep0_setup() declaration in mtu3.h
...
It's defined and only used in the same file, so remove its declaration
in mtu3.h, and make it static
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1622182260-23767-1-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-06-03 13:53:04 +02:00
Chunfeng Yun
24327c478b
usb: mtu3: drop CONFIG_OF
...
The driver can match only the devices created by the OF core
via the DT table, so the table should be always used.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1616482975-17841-12-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-03-26 14:47:19 +01:00
Chunfeng Yun
a099d36884
usb: mtu3: add support ip-sleep wakeup for MT8192
...
Add add support ip-sleep wakeup for MT8192, it's a specific
revision, not following IPM rule.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1616482975-17841-11-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-03-26 14:46:39 +01:00
Chunfeng Yun
b1a344589e
usb: mtu3: support ip-sleep wakeup for MT8183
...
Add support ip-sleep wakeup for MT8183, it's similar to MT8173,
and it's also a specific one, but not following IPM rule.
Due to the index 2 already used by many DTS, it's better to keep
it unchanged for backward compatibility, treat specific ones without
following IPM rule as revision 1.x, meanwhile reserve 3~10 for later
revision that follows the IPM rule.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1616482975-17841-10-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-03-26 14:46:14 +01:00
Colin Ian King
18106234c0
usb: mtu3: Fix spelling mistake "disabed" -> "disabled"
...
The variable u3_ports_disabed contains a spelling mistake,
rename it to u3_ports_disabled.
Reviewed-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Signed-off-by: Colin Ian King <colin.king@canonical.com >
Link: https://lore.kernel.org/r/20210311092529.4898-1-colin.king@canonical.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-03-18 09:02:27 +01:00
Dan Carpenter
3f6f6343a2
usb: mtu3: fix memory corruption in mtu3_debugfs_regset()
...
This code is using the wrong sizeof() so it does not allocate enough
memory. It allocates 32 bytes but 72 are required. That will lead to
memory corruption.
Fixes: ae07809255 ("usb: mtu3: add debugfs interface files")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Link: https://lore.kernel.org/r/X8ikqc4Mo2/0G72j@mwanda
Cc: stable <stable@vger.kernel.org >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-12-07 15:26:18 +01:00
Dan Carpenter
e3541d5de5
usb: mtu3: mtu3_debug: remove an unused struct member
...
The "nregs" member is not used. The code uses the "regset.nregs"
struct member instead.
Acked-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Link: https://lore.kernel.org/r/X8ikv1QA3Do50D+R@mwanda
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-12-04 16:49:06 +01:00
Macpaul Lin
20914919ad
usb: mtu3: fix panic in mtu3_gadget_stop()
...
This patch fixes a possible issue when mtu3_gadget_stop()
already assigned NULL to mtu->gadget_driver during mtu_gadget_disconnect().
[<ffffff9008161974>] notifier_call_chain+0xa4/0x128
[<ffffff9008161fd4>] __atomic_notifier_call_chain+0x84/0x138
[<ffffff9008162ec0>] notify_die+0xb0/0x120
[<ffffff900809e340>] die+0x1f8/0x5d0
[<ffffff90080d03b4>] __do_kernel_fault+0x19c/0x280
[<ffffff90080d04dc>] do_bad_area+0x44/0x140
[<ffffff90080d0f9c>] do_translation_fault+0x4c/0x90
[<ffffff9008080a78>] do_mem_abort+0xb8/0x258
[<ffffff90080849d0>] el1_da+0x24/0x3c
[<ffffff9009bde01c>] mtu3_gadget_disconnect+0xac/0x128
[<ffffff9009bd576c>] mtu3_irq+0x34c/0xc18
[<ffffff90082ac03c>] __handle_irq_event_percpu+0x2ac/0xcd0
[<ffffff90082acae0>] handle_irq_event_percpu+0x80/0x138
[<ffffff90082acc44>] handle_irq_event+0xac/0x148
[<ffffff90082b71cc>] handle_fasteoi_irq+0x234/0x568
[<ffffff90082a8708>] generic_handle_irq+0x48/0x68
[<ffffff90082a96ac>] __handle_domain_irq+0x264/0x1740
[<ffffff90080819f4>] gic_handle_irq+0x14c/0x250
[<ffffff9008084cec>] el1_irq+0xec/0x194
[<ffffff90085b985c>] dma_pool_alloc+0x6e4/0xae0
[<ffffff9008d7f890>] cmdq_mbox_pool_alloc_impl+0xb0/0x238
[<ffffff9008d80904>] cmdq_pkt_alloc_buf+0x2dc/0x7c0
[<ffffff9008d80f60>] cmdq_pkt_add_cmd_buffer+0x178/0x270
[<ffffff9008d82320>] cmdq_pkt_perf_begin+0x108/0x148
[<ffffff9008d824d8>] cmdq_pkt_create+0x178/0x1f0
[<ffffff9008f96230>] mtk_crtc_config_default_path+0x328/0x7a0
[<ffffff90090246cc>] mtk_drm_idlemgr_kick+0xa6c/0x1460
[<ffffff9008f9bbb4>] mtk_drm_crtc_atomic_begin+0x1a4/0x1a68
[<ffffff9008e8df9c>] drm_atomic_helper_commit_planes+0x154/0x878
[<ffffff9008f2fb70>] mtk_atomic_complete.isra.16+0xe80/0x19c8
[<ffffff9008f30910>] mtk_atomic_commit+0x258/0x898
[<ffffff9008ef142c>] drm_atomic_commit+0xcc/0x108
[<ffffff9008ef7cf0>] drm_mode_atomic_ioctl+0x1c20/0x2580
[<ffffff9008ebc768>] drm_ioctl_kernel+0x118/0x1b0
[<ffffff9008ebcde8>] drm_ioctl+0x5c0/0x920
[<ffffff900863b030>] do_vfs_ioctl+0x188/0x1820
[<ffffff900863c754>] SyS_ioctl+0x8c/0xa0
Fixes: df2069acb0 ("usb: Add MediaTek USB3 DRD driver")
Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com >
Acked-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/1604642069-20961-1-git-send-email-macpaul.lin@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-11-06 12:06:57 +01:00
YueHaibing
5963296b82
usb: mtu3: Remove unsused inline function is_first_entry
...
It is never used, so can be removed.
Signed-off-by: YueHaibing <yuehaibing@huawei.com >
Link: https://lore.kernel.org/r/20200731082008.33016-1-yuehaibing@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-08-18 12:11:55 +02:00
Chunfeng Yun
ab4dc051d7
usb: mtu3: simplify mtu3_req_complete()
...
Use argument req directly instead of mreq->request, they
are the same usb request.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1595834101-13094-11-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-07-29 16:53:59 +02:00
Chunfeng Yun
f1e51e99ed
usb: mtu3: clear dual mode of u3port when disable device
...
If not clear u3port's dual mode when disable device, the IP
will fail to enter sleep mode when suspend.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1595834101-13094-10-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-07-29 16:53:58 +02:00
Chunfeng Yun
54402373c4
usb: mtu3: use MTU3_EP_WEDGE flag
...
Use MTU3_EP_WEDGE flag instead of the member @wedged in mtu3_ep
struct, then @wedged can be removed.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1595834101-13094-9-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-07-29 16:53:58 +02:00
Chunfeng Yun
bf77804b1c
usb: mtu3: remove useless member @busy in mtu3_ep struct
...
The member @busy in mtu3_ep struct is unnecessary, so remove it.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1595834101-13094-8-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-07-29 16:53:58 +02:00
Chunfeng Yun
ba428976a8
usb: mtu3: remove repeated error log
...
The caller already print error log.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1595834101-13094-7-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-07-29 16:53:58 +02:00
Chunfeng Yun
dc4c1aa7ea
usb: mtu3: add ->udc_set_speed()
...
Make use of the method to make sure connect on speeds
supported by the gadget driver.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1595834101-13094-6-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-07-29 16:53:58 +02:00
Chunfeng Yun
1258450ef3
usb: mtu3: introduce a funtion to check maximum speed
...
The max_speed got from DTS may be not supported by the
hardware, so need check it, and assign a proper default
value. And make it clear by introducing a funtion.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1595834101-13094-5-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-07-29 16:53:58 +02:00
Chunfeng Yun
b7d5c3cabc
usb: mtu3: clear interrupts status when disable interrupts
...
When disable interrupts, will also want to clear their status,
ensure it by calling mtu3_intr_status_clear() in
mtu3_intr_disable().
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1595834101-13094-4-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-07-29 16:53:58 +02:00
Chunfeng Yun
f55df11e31
usb: mtu3: reinitialize CSR registers
...
The CSR registers will be reset as default value if the
ports are disabled, so reinitialize them when the ports
are enabled again.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com >
Link: https://lore.kernel.org/r/1595834101-13094-3-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-07-29 16:53:57 +02:00