diff options
author | Matthijs Kooijman <matthijs@stdin.nl> | 2013-10-03 09:46:25 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-10-03 13:50:54 -0700 |
commit | 2d1155478fb6f972b3a97cbf13151ee4f078a164 (patch) | |
tree | 0aaf34bbbddbd51301a00ad7d42504194051bc0a /drivers/staging/dwc2 | |
parent | ab06e0f20ed4c4eb472a1e16f942d6e0150c00bc (diff) | |
download | op-kernel-dev-2d1155478fb6f972b3a97cbf13151ee4f078a164.zip op-kernel-dev-2d1155478fb6f972b3a97cbf13151ee4f078a164.tar.gz |
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 9badec2 (staging: dwc2: interpret all
hwcfg and related register at init time).
Reported-by: Dinh Nguyen <dinguyen@altera.com>
Signed-off-by: Matthijs Kooijman <matthijs@stdin.nl>
Acked-by: Paul Zimmerman <paulz@synopsys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/dwc2')
-rw-r--r-- | drivers/staging/dwc2/core.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/staging/dwc2/core.h b/drivers/staging/dwc2/core.h index f7ba34b..fab718d 100644 --- a/drivers/staging/dwc2/core.h +++ b/drivers/staging/dwc2/core.h @@ -294,7 +294,7 @@ struct dwc2_hw_params { unsigned dev_token_q_depth:5; unsigned max_transfer_size:26; unsigned max_packet_count:11; - unsigned host_channels:4; + unsigned host_channels:5; unsigned hs_phy_type:2; unsigned fs_phy_type:2; unsigned i2c_enable:1; |