9c1587d9 | 27-Aug-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: otg control register access
The set/clear of the otg control values is done writing to two different 16bit registers, however we setup the regmap width for isp1760/61 to 32bit value bi
usb: isp1760: otg control register access
The set/clear of the otg control values is done writing to two different 16bit registers, however we setup the regmap width for isp1760/61 to 32bit value bits.
So, just access the clear register address (0x376)as the high part of the otg control register set (0x374), and write the values in one go to make sure they get clear/set.
Reported-by: Dietmar Eggemann <dietmar.eggemann@arm.com> Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com> Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210827131154.4151862-6-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
955d0fb5 | 27-Aug-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: use the right irq status bit
Instead of using the fields enum values to check interrupts trigged, use the correct bit values.
Reported-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
usb: isp1760: use the right irq status bit
Instead of using the fields enum values to check interrupts trigged, use the correct bit values.
Reported-by: Dietmar Eggemann <dietmar.eggemann@arm.com> Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com> Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210827131154.4151862-5-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
36815a4a | 27-Aug-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: write to status and address register
We were already writing directly the port status register to trigger changes in isp1763. The same is needed in other IP from the family, including
usb: isp1760: write to status and address register
We were already writing directly the port status register to trigger changes in isp1763. The same is needed in other IP from the family, including also to setup the read address before reading from device.
Reported-by: Dietmar Eggemann <dietmar.eggemann@arm.com> Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com> Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210827131154.4151862-4-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
cbfa3eff | 27-Aug-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: fix qtd fill length
When trying to send bulks bigger than the biggest block size we need to split them over several qtd. Fix this limiting the maximum qtd size to largest block size.
usb: isp1760: fix qtd fill length
When trying to send bulks bigger than the biggest block size we need to split them over several qtd. Fix this limiting the maximum qtd size to largest block size.
Reported-by: Dietmar Eggemann <dietmar.eggemann@arm.com> Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com> Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210827131154.4151862-3-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
de940244 | 19-Aug-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: clean never read udc_enabled warning
When CONFIG_USB_ISP1761_UDC is not enabled the udc_enabled variable is never used since it is short circuited before in the logic operations.
This
usb: isp1760: clean never read udc_enabled warning
When CONFIG_USB_ISP1761_UDC is not enabled the udc_enabled variable is never used since it is short circuited before in the logic operations.
This would trigger the following warning by clang analyzer:
drivers/usb/isp1760/isp1760-core.c:490:2: warning: Value stored to 'udc_enabled' is never read [clang-analyzer-deadcode.DeadStores] udc_enabled = ((devflags & ISP1760_FLAG_ISP1763) || ^ drivers/usb/isp1760/isp1760-core.c:490:2: note: Value stored to 'udc_enabled' is never read
Just swap the other of the operands in the logic operations.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210819180929.1327349-6-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
7d1d3882 | 19-Aug-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: do not shift in uninitialized slot
Even though it is not expected, and would trigger a WARN_ON, killing a transfer in a uninitialized slot this sequence is warned by clang analyzer, tw
usb: isp1760: do not shift in uninitialized slot
Even though it is not expected, and would trigger a WARN_ON, killing a transfer in a uninitialized slot this sequence is warned by clang analyzer, twice:
drivers/usb/isp1760/isp1760-hcd.c:1976:18: warning: The result of the left shift is undefined because the right operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult] skip_map |= (1 << qh->slot); drivers/usb/isp1760/isp1760-hcd.c:1983:18: warning: The result of the left shift is undefined because the right operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult] skip_map |= (1 << qh->slot);
Only set skip map if slot is active.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210819180929.1327349-5-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
5e4cd1b6 | 19-Aug-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: do not reset retval
We do not really need to reset retval before get used bellow. This will avoid the clang-analyzer warning:
drivers/usb/isp1760/isp1760-hcd.c:1919:2: warning: Value
usb: isp1760: do not reset retval
We do not really need to reset retval before get used bellow. This will avoid the clang-analyzer warning:
drivers/usb/isp1760/isp1760-hcd.c:1919:2: warning: Value stored to 'retval' is never read [clang-analyzer-deadcode.DeadStores] retval = 0;
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210819180929.1327349-4-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
8e58b771 | 19-Aug-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: check maxpacketsize before using it
When checking if we need one more packet on a bulk pipe we may, even though not probable at all, get there with a zero maxpacketsize. In that case f
usb: isp1760: check maxpacketsize before using it
When checking if we need one more packet on a bulk pipe we may, even though not probable at all, get there with a zero maxpacketsize. In that case for sure no packet, no even a one more, will be allocated.
This will clean the clang-analyzer warning: drivers/usb/isp1760/isp1760-hcd.c:1856:38: warning: Division by zero [clang-analyzer-core.DivideZero] && !(urb->transfer_buffer_length %
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210819180929.1327349-3-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
cbbdb3fe | 27-Jul-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: rework cache initialization error handling
If we fail to create qtd cache we were not destroying the urb_listitem, rework the error handling logic to cope with that.
Signed-off-by: Ru
usb: isp1760: rework cache initialization error handling
If we fail to create qtd cache we were not destroying the urb_listitem, rework the error handling logic to cope with that.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210727100516.4190681-4-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
41f67318 | 27-Jul-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: do not sleep in field register poll
When polling for a setup or clear of a register field we were sleeping in atomic context but using a very tight sleep interval.
Since the use cases
usb: isp1760: do not sleep in field register poll
When polling for a setup or clear of a register field we were sleeping in atomic context but using a very tight sleep interval.
Since the use cases for this poll mechanism are only in setup and stop paths, and in practice this poll is not used most of the times but needs to be there to comply to hardware setup times, remove the sleep time and make the poll loop tighter.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210727100516.4190681-3-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
d369c918 | 13-May-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1763: add peripheral mode
Besides the already host mode support add peripheral mode support for the isp1763 IP from the isp1760 family.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org
usb: isp1763: add peripheral mode
Besides the already host mode support add peripheral mode support for the isp1763 IP from the isp1760 family.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210513084717.2487366-10-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
60d789f3 | 13-May-2021 |
Rui Miguel Silva <rui.silva@linaro.org> |
usb: isp1760: add support for isp1763
isp1763 have some differences from the isp1760, 8 bit address for registers and 16 bit for values, no bulk access to memory addresses, 16 PTD's instead of 32.
usb: isp1760: add support for isp1763
isp1763 have some differences from the isp1760, 8 bit address for registers and 16 bit for values, no bulk access to memory addresses, 16 PTD's instead of 32.
Following the regmap work done before add the registers, memory access and add the functions to support differences in setup sequences.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Link: https://lore.kernel.org/r/20210513084717.2487366-8-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|