Commit 2d115547 authored by Matthijs Kooijman's avatar Matthijs Kooijman Committed by Greg Kroah-Hartman

staging: dwc2: Make dwc2_hw_params.host_channels large enough

The hardware offers a 4-bit register containing the number of host
channels. However, the values of these register mean 1-16 host channels,
not 0-15. Since the dwc2_hw_params struct stores the actual number of
host channels supported instead of the raw register value, it should be
5 bits wide instead of 4.

Before this commit, hardware with 16 host channels would overflow the
field, making it appear as 0 channels.

This bug was introduced in commit 9badec2f (staging: dwc2: interpret all
hwcfg and related register at init time).
Reported-by: default avatarDinh Nguyen <dinguyen@altera.com>
Signed-off-by: default avatarMatthijs Kooijman <matthijs@stdin.nl>
Acked-by: default avatarPaul Zimmerman <paulz@synopsys.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ab06e0f2
...@@ -294,7 +294,7 @@ struct dwc2_hw_params { ...@@ -294,7 +294,7 @@ struct dwc2_hw_params {
unsigned dev_token_q_depth:5; unsigned dev_token_q_depth:5;
unsigned max_transfer_size:26; unsigned max_transfer_size:26;
unsigned max_packet_count:11; unsigned max_packet_count:11;
unsigned host_channels:4; unsigned host_channels:5;
unsigned hs_phy_type:2; unsigned hs_phy_type:2;
unsigned fs_phy_type:2; unsigned fs_phy_type:2;
unsigned i2c_enable:1; unsigned i2c_enable:1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment