summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2020-08-13watchdog: imx8_wdt: improve help and loggingOleksandr Suvorov
Improve module help messages and logging operations in debug mode. Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com> (cherry picked from commit 912e48ef088c1f39e8534ecbdb4d1342baa733a8) Conflicts: drivers/watchdog/imx8_wdt.c Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2020-08-13rpmsg: virtio rpmsg: compilation error and warningsIgor Opaniuk
1. Fix this compilation error: /workdir/oe/tmp-glibc/work-shared/verdin-imx8mm/kernel-source/drivers/ rpmsg/virtio_rpmsg_bus.c:1106:23: error: redeclaration of 'newch' with no linkage struct rpmsg_device *newch; ^~~~~ /workdir/oe/tmp-glibc/work-shared/verdin-imx8mm/kernel-source/drivers/ rpmsg/virtio_rpmsg_bus.c:1101:23: note: previous declaration of 'newch' was here struct rpmsg_device *newch; 2. Fix warnings that are reproduced when RPMsg char device support is disabled. Fixes: 1172ee2e ("rpmsg: virtio rpmsg: Add RPMsg char driver support") Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com> (cherry picked from commit 1f734be74f1d17ac072edbb6d333cd5041157ef0)
2020-08-13spi: fsl-lpspi: register spi controller earlier in probePhilippe Schenker
Ordering of stuff in lpspi probe was a little off. - num_chipselect gets set with devm_spi_register_controller. - devm_spi_register_controller needs data that gets set into controller variable Order stuff appropriate so num_chipselect gets set before it is used. Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com> (cherry picked from commit a22e9000e304c75472c294abf5ba17a66d399fba)
2020-08-13rpmsg: virtio rpmsg: Add RPMsg char driver supportIgor Opaniuk
virtio rpmsg was not implemented to use RPMsg char driver. Each virtio ns announcement will create a new RPMsg device which is supposed to bound to a RPMsg driver. It doesn't support dynamic endpoints with name service per RPMsg device. With RPMsg char driver, you can have multiple endpoints per RPMsg device. Here is the change from this patch: * Introduce a macro to indicate if want to use RPMsg char driver for virtio RPMsg. The RPMsg device can either be bounded to a simple RPMsg driver or the RPMsg char driver. * Create Virtio RPMsg char device when the virtio RPMsg driver is probed. * when there is a remote service announced, keep it in the virtio proc remote services list. * when there is an endpoint created, bind it to a remote service from the remote services list. If the service doesn't exist yet, create one and mark the service address as ANY. That patch ported to our 4.14 kernel + additional fixes added [1]. Example of usage from userspace app: ``` char data_buf [] = {'a', 'b', 'c', 'd', '\0'}; struct rpmsg_endpoint_info ept_info = {"rpmsg-openamp-demo-channel", 0x2, 0x1}; int fd = open("/dev/rpmsg_ctrl0", O_RDWR); /* create endpoint interface */ ioctl(fd, RPMSG_CREATE_EPT_IOCTL, &ept_info); /* create endpoint */ int fd_ept = open("/dev/rpmsg0", O_RDWR); /* receive data from remote device */ read(fd_ept, &data_buf, sizeof(data_buf)); /* send data to remote device */ write(fd_ept, &data_buf, sizeof(data_buf)); /* destroy endpoint */ ioctl(fd_ept, RPMSG_DESTROY_EPT_IOCTL); close(fd_ept); close(fd); ``` [1] https://patchwork.kernel.org/patch/10145779/ Signed-off-by: Wendy Liang <jliang@xilinx.com> Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com> (cherry picked from commit 06ab53a559eddc27d0c45e4935a65a19820714a2)
2020-08-13regulator: bd71837: add enable_time for all ldoMax Krummenacher
The LDO have a Soft-Start feature. Add enable_time to all LDOs to account for that. Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> (cherry picked from commit b567a056ed74d8c9700f6dc5e838d3e22e7068bf) Conflicts: drivers/regulator/bd71837-regulator.c Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2020-08-13drm: bridge: lt8912: set bus_formatMax Krummenacher
Some CRTC drivers use and evaluate this information and if missing print a warning. | [ 248.956112] imx_sec_dsim_drv 32e10000.mipi_dsi: no bus formats assigned by connector Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> (cherry picked from commit 17e26f89a107a2844b9091bd937225b8b06fa4d0)
2020-08-13can: mcp25xxfd: allow to keep the clock allways onMax Krummenacher
This allows to have a clock on clko even if the controller is disabled. Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> (cherry picked from commit 417c1031677a958c5c936c243a83fc933c0cfda3)
2020-08-13can: mcp25xxfd: allow using clko as start of frameMax Krummenacher
The current implementation uses the clko pin always as a clock out. Implement the binding documentation and use the pin as a start of frame indication when microchip,clock-out-div is set to 0. Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> (cherry picked from commit ccf8ae1f467602baedd2b0c11022c00a6b2e4f8f)
2020-08-13can: mcp25xxfd: allow building without debugfs functionalityMax Krummenacher
If CONFIG_CAN_MCP25XXFD_DEBUG_FS is not defined but CONFIG_DEBUG_FS is then the code fails to compile. Fix this by conditionally compile on CONFIG_CAN_MCP25XXFD_DEBUG_FS. CONFIG_CAN_MCP25XXFD_DEBUG_FS depends on CONFIG_DEBUG_FS, there is no need to test for both. Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> (cherry picked from commit c6be3e002d9d878a5119bcaa31ff85a4dbf00301)
2020-08-13can: mcp25xxfd: mcp25xxfd_can_fifo_clear(): fix fifo initializationMarc Kleine-Budde
By masking the FIFO number in the MCP25XXFD_CAN_FLTCON macro, the mcp25xxfd_can_fifo_clear() function doesn't clear the filters at all, as the masking makes MCP25XXFD_CAN_FLTCON(32) equal MCP25XXFD_CAN_FLTCON(0). | mcp25xxfd_can_fifo_clear_regs(cpriv, MCP25XXFD_CAN_FLTCON(0), | MCP25XXFD_CAN_FLTCON(32)); Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 265153724aa0339bae525d22511377380fa45af5) (cherry picked from commit 8db84b98f1d4c27c943d98ab0ebb17d966585a1d)
2020-08-13can: mcp25xxfd: mcp25xxfd_can_int(): do not reschedule after inital loopMarc Kleine-Budde
The interrupt handler thread mcp25xxfd_can_int() will reschedule, if "loops % reschedule_int_thread_after" equals 0. This is the case for the initial loop. Change the code to match what the module parameter suggests to do. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit d4f9db41f6db9c233dd8847171c82c7f2ba0ec2e) (cherry picked from commit 907cf9a34059e621dfbf3ad77c30eab5014de5b3)
2020-08-13can: mcp25xxfd: mcp25xxfd_can_queue_frame(): change argument "ts" to u32Marc Kleine-Budde
The timestamp is an u32, so don't cap to upper 16 bit. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 6546a196615cae17d1e4c52f5135b02469adc15f) (cherry picked from commit 1736603794d37359ce180fc0a2819adc701e8099)
2020-08-13can: mcp25xxfd: mcp25xxfd_can_tx_start_xmit() fix possible race conditionMarc Kleine-Budde
Put sbk into echo queue before triggering send. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 2c1df7da765455d86f5630e050905aa3b599ed97) (cherry picked from commit 670deff1f2c9e20a3073bcf2af309e042b893bf6)
2020-08-13can: mcp25xxfd: mcp25xxfd_can_int_send_error_skb(): use correct function to ↵Marc Kleine-Budde
push skb into networking stack in interrupt handler Use netif_rx() instead of netif_receive_skb() to push skb into networking stack from interrupt handler. Reported-by: Tom Prohaszka <tprohaszka@capp-tech.com> Tested-by: Tom Prohaszka <tprohaszka@capp-tech.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 62f9531af8e7f470830d3d285b39570b361e6473) (cherry picked from commit 7623274a7a1b87a879e08eb339ebac1580b42579)
2020-08-13can: mcp25xxfd: remove struct mcp25xxfd_tx_spi_message_queue::spi_lockMarc Kleine-Budde
The xmit callback is serialized by the network stack, no need for locking. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 8d59059d2098ef612fad460e0e9f832ec36d5fbd) (cherry picked from commit dda94b4f004fd92d8534b6c8b6c4bc0854569fc6)
2020-08-13can: mcp25xxfd: only build GPIOLIB support if enabledMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 6f267fd90b21536d3dcb3b4549dbf800357cd944) (cherry picked from commit abfc29bd48224618fed077c3a3ca5aaf89b04886)
2020-08-13can: mcp25xxfd: fix building without CONFIG_GPIOLIBMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 4dc124bd4f631ff0f83a43a2ae9bfafd664b0e34) (cherry picked from commit 3cc268978d684815b222ad47fc321c3dcd70d23a)
2020-08-13can: mcp25xxfd: gpio: remove unused enum mcp25xxfd_gpio_pinsMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 9781ee8b4dc9feb1809e864bbbbe0bd2001aed59) (cherry picked from commit 67fbdce642e12c3a2626b378932d14f31afb5243)
2020-08-13can: mcp25xxfd: make debugfs support a separate optionMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 6cf806f542afb974470f29324fcfa76539539c8b) (cherry picked from commit a6b68b69cf6ae66d72074ca2284592f30b353c80)
2020-08-13can: mcp25xxfd: only build DEBUG_FS code if enabledMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit d8a864d5eab58cfb0e4deb137359f80a828dc050) (cherry picked from commit 82094b7384832058d8c53ff8df8ac7a0ee9b3531)
2020-08-13can: mcp25xxfd: fix building without CONFIG_DEBUG_FSMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 5a142c75c22d38f7166e2e3ac8b08b3f834b61bc) (cherry picked from commit 78ee9b42516d73a6363a4482c6fdc319c81b0241)
2020-08-13can: mcp25xxfd: mcp25xxfd_can_queue_frame: always increment the ↵Marc Kleine-Budde
submit_queue_count otherwise with switched off DEBUGFS support the driver will not work anymore. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 3d566db75ce8a954c0a4ad67b23d9069e7851175) (cherry picked from commit 4f0a5324eaa82c33e88165d99bc793b0a3d29b2b)
2020-08-13can: mcp25xxfd: mcp25xxfd_can_tx_handle_int_tefif(): simplyfy function and ↵Marc Kleine-Budde
add comments Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit bd0713e14f8665ffaff2f17f6e0ac0b7fcaef902) (cherry picked from commit e4e4be66ec3cbcee3a5d68de507d679b6b2dda19)
2020-08-13can: mcp25xxfd: mcp25xxfd_cmd_sync_write(): use C99 initializersMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 252e80b4deb8cc90c723d64eac22b2ccdb699234) (cherry picked from commit 6dbc7444ef7a686cb064f845a326ddd03786382b)
2020-08-13can: mcp25xxfd: mcp25xxfd_cmd_sync_write(): make argument tx_len an "unsigned"Marc Kleine-Budde
... to match struct spi_transfer::len Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 39254b601f7f8b96772b2e5438f246b3222aa394) (cherry picked from commit 67553a4d94e207b489139009926d0357b1c50f27)
2020-08-13can: mcp25xxfd: mcp25xxfd_cmd_writen(): simplify functionMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 6aea7d2725f280dba39fdaef0c44ad44e3e6ac28) (cherry picked from commit d62107d6f16e83454eb24297cdeac524ef623a32)
2020-08-13can: mcp25xxfd: mcp25xxfd_cmd_readn(): simplify functionMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 50eb980ed7a5ce26e282bbbb1a9967e8eeb90103) (cherry picked from commit 3fcd5e431aaca6800bf3020b689bd4124b27bf83)
2020-08-13can: mcp25xxfd: mcp25xxfd_cmd_calc(): simplify functionMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 9aad623041c9f51dbbfdabdb06105c2418250a58) (cherry picked from commit 1893ad574867391df738709558bdeb8139a74ec8)
2020-08-13can: mcp25xxfd: remove return of int in void functionMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 8cbcb26c1b0b5b3651b1b8ad3b45108ade0a3520) (cherry picked from commit e0181dd273d69e2731b5324cbaacba163c70ff55)
2020-08-13can: mcp25xxfd: mcp25xxfd_can_int: sort include alphabeticallyMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 94cb09bb6940af90e070b35795700eebd80de944) (cherry picked from commit 786ce0ae18ab7a90bbf244a46e4f679273ad3ecb)
2020-08-13can: mcp25xxfd: mcp25xxfd_priv: struct mcp25xxfd_priv: fix typoMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 07b342ed30c877fa5c80a12e2ebc00912991cafb) (cherry picked from commit e5139bd1a2c5ef0f0aee51ccf80def78c6dbdddd)
2020-08-13can: mcp25xxfd: mcp25xxfd_can_rx: mcp25xxfd_can_rx_predict_prefetch(): fix typoMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 0471451da27026b16091e2eeb5e23a642c730202) (cherry picked from commit d6e19af21417ca13d392364ec34c534b56150fc5)
2020-08-13can: mcp25xxfd: Makefile: fix indentionMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit e777dddeaa081a0384c20b079844e3216bfb5dc9) (cherry picked from commit 763b1a1ee532cb075ae627ed6d7e8801bf3395ea)
2020-08-13can: mcp25xxfd: Kconfig/Makefile: add SPDX identifiersMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit 045e9e8c3dfa53b0cc47ea7e514a0d5b10a79ec1) (cherry picked from commit be81ee3cc51729f2a683530ba91016e688473be8)
2020-08-13can: mcp25xxfd: fix checkpatch warningsMarc Kleine-Budde
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit ed57b613fa490cc9c85ddfc8ff00c2ff951581d3) (cherry picked from commit edab6033d7d7e77a60d69d96b09ed2b7060c3c23)
2020-08-13can: mcp25xxfd: fix register definitions, cleanup names to match DSThomas Kopp
Fixing a couple MCP25xxFD reg/bit definitions, switching to the names used in the DS. Signed-off-by: Thomas Kopp <thomas.kopp@microchip.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> (cherry picked from commit bc37d9df4543a47703fa876d8a283d7db23ab2c9) (cherry picked from commit f512b45cf5684dff2c2ba0936215c52e5bfec809)
2020-08-13can: mcp25xxfd: optimize reception of big CanFD frame reception with BRSMartin Sperl
In case of predicted DLC=15 and in case at least 33% of those are sent via BRS be aggressive and use bulk fifo reads to avoid missing any frames due to releasing FIFOs not as fast as possible. This would be of most impact when having a 1MHz Can Bus with a 8MHz data bitrate. Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit c23b97d9301f0683d0064f446cc2116109b03b6b) (cherry picked from commit 35b27ceff48808ea3876a1840c62c81b0c7f52e9)
2020-08-13can: mcp25xxfd: add prediction of CanFD frames sizes based on historyMartin Sperl
Allow prediction of can frame sizes based on the last 32 Can Frames received. Naive histogram approach hast been taken for now. Some simple stats based on 1000 frames received with DLC=6: ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_reads_prefetched_too_few 16 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_reads_prefetched_too_few_bytes 96 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_reads_prefetched_too_many 0 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_reads_prefetched_too_many_bytes 0 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_reads_prefetch_predicted 6 The first 16 frames are predicted as 0, but after that the prediction is 6. It should be possible to take this prediction to use bulk reads for CanFD as well when we have a prediction of length of 48 or 64. Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit f355fdaa97c026ad70882a0cb11943cccefad81b) (cherry picked from commit 0c0a804cb53c699d61f13aa9904c3d9cc249dd3a)
2020-08-13can: mcp25xxfd: optimize SPI reads of FIFOs in can2.0 modeMartin Sperl
To reduce the amount of spi_messages send this patch optimizes the read of RX fifos so that multiple Fifos are read together. This only works well in CAN2.0 mode where the overhead of prefetching 8 bytes (even if the actual length is 0) is negligable compared to the SPI-framework overhead. Statistics in debugfs show for 1000000 DLC=0 can messages received: ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_bulk_reads <== 355411 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_bulk_reads_1 <== 92778 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_bulk_reads_2 <== 7133 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_bulk_reads_3 <== 130390 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_bulk_reads_4 <== 123807 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_bulk_reads_5 <== 1266 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_bulk_reads_6 <== 34 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_bulk_reads_7 <== 1 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_bulk_reads_8+ <== 0 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/rx_reads <== 999999 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/int_system_error <== 1 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/int_system_error_rx <== 1 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/int_system_error_tx <== 0 There was one SERR error where we lost one can frame during the handling of the error condition. So to read all of those 999999 RX fifos we formerly have scheduled 999999 spi_messages. With this patch we have only scheduled 355411 spi_messages, so only 35.5% of the former value. This also means we have not been transferring 1289176 (=2*(999999-355411)) unnecessary command bytes over the SPI bus. As we have been issuing less SPI transfers reading SRAM this also has reduced the likleyhood of SERR happening - it does not solve the complete issue as seen above. Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit 0f869f3a7c36805b1b64c54ebf654a94e81735c1) (cherry picked from commit 2908eda0a54b696379a4aec213e3a2883eebe51e)
2020-08-13can: mcp25xxfd: optimize TEF reads reading multiple TEFs in one goMartin Sperl
To reduce the amount of spi_messages send this patch optimizes the read TEF so that multiple TEFs are read together. Statistics in debugfs show for 100000 DLC=0 can messages sent: ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_conservative_reads 0 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_optimized_reads 44691 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_optimized_reads_1 1862 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_optimized_reads_2 30349 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_optimized_reads_3 12480 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_optimized_reads_4 0 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_optimized_reads_5 0 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_optimized_reads_6 0 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_optimized_reads_7 0 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_optimized_reads_8+ 0 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_reads 100000 ==> /sys/kernel/debug/mcp25xxfd-spi0.0/can/stats/tef_read_splits 0 So to read all of those 100000 TEF frames to read we formerly have scheduled 100000 spi_messages. While with this patch we have only scheduled 44691 spi_messages, so only 44.6% of the former value. This also means we have not been transferring 110618 (=2*30349+2*2*12480) unnecessary command bytes over the SPI bus. Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit 345593580ee21f51fee1eb410905641379dcb329) (cherry picked from commit 92b343a1c54d91a1520ac10f7486a25c6b08cd11)
2020-08-13can: mcp25xxfd: optimize TEF read avoiding unnecessary SPI transfersMartin Sperl
We have already enough information to know how many tx-messages have been terminated so that we do not have to query TEF every time if there is anything pending but we can read the tefs blindly. This avoids 1 SPI transfer per TEF read. Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit 4c0efe3aeb48a536fd6a9d6f23954e64e60f8c0c) (cherry picked from commit 9a0ddec6de652158e49fecd6e4b6cc732873062a)
2020-08-13can: mcp25xxfd: use CRC to probe the clock for more reliable detectionMartin Sperl
To more reliably detect if the controller is connected use crc spi commands and fail when the CRC does not match. Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit 974eff55c1aff4c83de955fc12cb9cc5776a219c) (cherry picked from commit f9c2fb5910481b220b925d8306fd5f2291aa90c7)
2020-08-13can: mcp25xxfd: optionally enable SPI crc commands for readsMartin Sperl
Allow the (optional) use of SPI CRC read commands that can get enabled via a module parameter. In the future it may become necessary to enable this for register reads (or at least some specific register reads) as there is a HW bug that may result in glitches on the spi bus. Possible variants here are: * just retry the read * do not use some fifos (7, 15, 23, 31) at all * test for bit flips of specific bits and retest CRC -- Changelog: V7 -> V8: added in V8 Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit 1e37e00f473bc9b9f192234a40e4b0ffac1d27ad) (cherry picked from commit a5f9a2ea20aca68620199e4e6e80834544c74063)
2020-08-13can: mcp25xxfd: Add Can transmission supportMartin Sperl
Add un-optimized Can2.0 and CanFD transmission support. On a Rpi3 we can saturate the CAN bus at 1MHz transmitting Can2.0 frames with DLC=0 for the number of configured tx-fifos. Afterwards we need some time to recover the state before we can fill in the fifos again. With 7 tx fifos we can: send those 7 frames in 0.33ms and then we wait for 0.26ms so that is a 56% duty cycle. With 24 tx fifos this changes to: 1.19ms for 24 frames and then we wait for 0.52ms so that is a 70% duty cycle. -- Changelog: V6 -> V7: added can transmission into a separate patch to reduce the size of the individual patches to make the linux-can mailing-list happy... V7 -> V8: reduce default number of tx fifos to 6 to avoid HW-bug during spi-read of TXREQ include feedback by Joe Burmeister sparse fixes based on feedback by Marc Kleine-Budde Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit 69a74571ed18c82f0c5d8cc8e8ce5d6214070481) (cherry picked from commit c428a5b90cddba52796f5a266c4f4e7eca71903d)
2020-08-13can: mcp25xxfd: Add Microchip mcp25xxfd CAN FD driverMartin Sperl
Add un-optimized Can2.0 and CanFD support. CAN-Transmission and Optimizations and are separate patches On a Rasperry pi 3 it is already able to process Can2.0 Frames with DLC=0 on a CAN bus with 1MHz. without losing any packets on the SPI side. Packets still get lost inside the network stack. Signed-off-by: Martin Sperl <kernel@martin.sperl.org> --- Changelog: V1 -> V2: new more generic name based on feedback from microchip cleanup of code (checkpatch) address all feedback on code prepare code for GPIO handling (separate patches) handle systemerrors in a much better/reliable way V2 -> V3: added vendor-prefix for gpio-opendrain V3 -> V4: resend V4 -> V5: split can driver into a separate patch code cleanup/rewrite V5 -> V6: update copyright year add rational documentation for basic rx-prefetch length fix CAN_OBJ_FLAGS_BRS and CAN_OBJ_FLAGS_ESI bug fixed TDC configuration - at this moment configurable via module parameters but with (hopefully) sensible defaults use length instead of dlc as parameter in call of mcp25xxfd_can_submit_rx_fd_frame moved use of mcp25xxfd_can_int_handle_tefif_oportunistic to separate patch reorganized code based on feedback by Wolfgang Grandegger fixed transmission problem reported by Hubert Denkmair added extra custom error flags added voluntary scheduling in interrupt thread V6 -> V7: added include linux/irqreturn.h (feedback by Eric Scholz) move can transmission into a separate patch to reduce the size of the individual patches to make the linux-can mailing-list happy... V7 -> V8: sparse changes as hinted by Marc Kleine-Budde integrate feedback by Marc Kleine-Budde integrate feedback by Joe Burmeister mcp25xxfd_can_get_mode return error handling error messages on error in interrupt-handler disable interrupts when we experience errors. Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit 531555f2fb48fa41e4dcc2259bbd3a37257effca) (cherry picked from commit 7d087020946cbf93983cba9c78cc7225f2f0f48d)
2020-08-13can: mcp25xxfd: add gpiolib support for GPIO0/1 (aka. INT0/INT1)Martin Sperl
Add GPIOLIB support to mcp25xxfd. -- Changelog: V4 -> V5: reorganisation of the patchset into smaller patches V7 -> V8: include mcp25xxfd_gpio.h to fix sparse checks as per feedback from Marc Kleine-Budde added xstandby and open drain support Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit a350a0e406c4c3d988d6486ab893a4755b441d7d) (cherry picked from commit bdf9d5f9f84a9d189709e9ac6aedca7e920cfa26)
2020-08-13can: mcp25xxfd: Add Microchip mcp25xxfd CAN FD driver basicsMartin Sperl
This patch adds basic driver support for the Microchip mcp2517fd CAN-FD controller. The mcp2517fd is capable of transmitting and receiving standard data frames, extended data frames, remote frames and Can-FD frames. The mcp2517fd interfaces with the host over SPI. This patch iprovides basic driver functionality: setting up clocks and the infrastructure for the can and gpio portions of the driver. Datasheet: * http://ww1.microchip.com/downloads/en/DeviceDoc/20005688A.pdf Reference manual: * http://ww1.microchip.com/downloads/en/DeviceDoc/20005678A.pdf Errata: * http://ww1.microchip.com/downloads/en/DeviceDoc/MCP2517FD-Silicon-Errata-and-Data-Sheet-Clarification-DS80000792A.pdf -- Changelog: V4 -> V5: reorganisation of the patchset into smaller patches review of the whole driver code for better modularization V5 -> V6: Major refactoring as per feedback from Wilhelm Grandegger Fixing bugs reported by several other parties Split out of optimizations into separate patches V6 -> V7: added include linux/irqreturn.h (feedback by Eric Scholz) move can transmission into a separate patch to reduce the size of the individual patches to make the linux-can mailing-list happy... V7 -> V8: add support for mcp2518fd fixed mcp25xxfd_cmd_read_mask bug clearing bits allow setting SPI clock speeds via debugfs Incorprated Feedback by Marc Kleine-Budde sparse fixes makefile indenting Signed-off-by: Martin Sperl <kernel@martin.sperl.org> (cherry picked from commit db3a48198fe1e4131a85df5b29a60851cd975703) (git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git -- mcp25xxfd-rpi) (cherry picked from commit 4aa1a60f4f30bceb360f8e5405fa4de53008abe2)
2020-08-13media: mxc: capture: add proper select to MXC_TVIN_ADV7280Philippe Schenker
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com> (cherry picked from commit 4b59b3de14e5bb1b9d449f8b419a9de3616907e9)
2020-08-13usb: phy: phy-generic: add an ability to reset on resumeOleksandr Suvorov
Regular USB device gets power down in system suspend. New hardware designs require to include USB devices as part of main scheme. If this case the power could be provide to a device unmanagable. The best option to reset this kind of devices is to reset it on USB physical interface level. Add this ability. Using "reset-on-resume" DT-option for usb-generic driver enables reset nested device on resume event by gpio interface. Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com> (cherry picked from commit 4c74d1a7b1e1ece7f6b7a4dfe5da9170a6dd9644) Conflicts: drivers/usb/phy/phy-generic.c Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2020-08-13gpio: mxc: Fix clean up on probingOleksandr Suvorov
- Fix order of after-error clean procedures upon probing new device. - Refactor handling of wakeup PAD setup. Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com> (cherry picked from commit f62ce7ec98206218b4fc56891cb34ab263fc1d5c) Conflicts: drivers/gpio/gpio-mxc.c Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> Guarded the label out_clk_disable: with Deleted whitespace Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>