On Tue, Oct 27, 2020 at 8:57 PM Drew Fustini <drew@xxxxxxxxxxxxxxx> wrote: > > On Tue, Oct 27, 2020 at 1:23 PM Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> wrote: > > > > On 10/27/20 7:18 PM, Patrick Menschel wrote: > > > > > >>> It is different but I'm having trouble understanding why it works and > > >>> the new overlay for the newer driver does not. > > >> > > >> Have you actually tested the waveshare driver and overlay with your setup? > > >> > > >> If you have a scope or logic analyser attach it to SPI bus (MISO, MOSI, Clock, > > >> Chipselect and the IRQ Line of the Chip) and check what's going on there. > > >> > > >> Marc > > >> > > > > > > Is the target path for clocks correct? > > > > > > I mean "/clocks" > > > > It doesn't matter where you put them... > > > > > https://gist.github.com/pdp7/784d0ba8b9648d20ab055747ec945225#file-2xmcp2517fd-overlay-dts-L49 > > > > > > instead of "/" > > > > > > https://github.com/marckleinebudde/linux/blob/v5.4-rpi/mcp251xfd-20201022-54/arch/arm/boot/dts/overlays/mcp251xfd-spi0-0-overlay.dts#L38 > > > > The mcp251xfd node references them via the label ("<&can_osc>"): > > > > https://github.com/marckleinebudde/linux/blob/v5.4-rpi/mcp251xfd-20201022-54/arch/arm/boot/dts/overlays/mcp251xfd-spi0-0-overlay.dts#L61 > > > > The driver will bail out even earlier if no clock is found: > > > > https://github.com/marckleinebudde/linux/blob/v5.4-rpi/mcp251xfd-20201022-54/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c#L2764 > > > > regards > > Marc > > > > -- > > Pengutronix e.K. | Marc Kleine-Budde | > > Embedded Linux | https://www.pengutronix.de | > > Vertretung West/Dortmund | Phone: +49-231-2826-924 | > > Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | > > > > Thank you for the suggestions. I've not been as multi-tasking as I > hoped during ELC-E :) > > I assumed the Waveshare instructions work but that is error on my part > for not actually reproducing. That is what I will do first. > Ultimately, I want the freshly upstreamed driver working but I should > check if their driver tarball works. > > thanks, > drew The Waveshare installer uses the 4.19 kernel with the mcp25xxfd driver. However, it also fails, sio I think I need to dig deeper: pi@raspberrypi:~ $ dmesg | grep -Ei spi\|can [ 4.263765] CAN device driver interface [ 4.286258] mcp25xxfd_can: loading out-of-tree module taints kernel. [ 5.477511] mcp25xxfd spi1.0: Cannot initialize MCP2517. Wrong wiring? (oscilator register reads as 00000000) [ 5.477530] mcp25xxfd spi1.0: Probe failed, err=19 [ 5.490325] mcp25xxfd spi0.0: Cannot initialize MCP2517. Wrong wiring? (oscilator register reads as 00000000) [ 5.490352] mcp25xxfd spi0.0: Probe failed, err=19 [ 5.490459] spi-bcm2835 fe204000.spi: chipselect 0 already in use [ 5.490479] spi_master spi0: spi_device register error /soc/spi@7e204000/mcp251xfd@0 [ 5.490497] spi_master spi0: Failed to create SPI device for /soc/spi@7e204000/mcp251xfd@0 pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux pi@raspberrypi:~ $ modinfo /lib/modules/4.19.75-v7l+/kernel/drivers/net/can/spi/mcp25xxfd-can.ko filename: /lib/modules/4.19.75-v7l+/kernel/drivers/net/can/spi/mcp25xxfd-can.ko license: GPL v2 description: Microchip 25XXFD CAN driver author: Martin Sperl <kernel@xxxxxxxxxxxxxxxx> srcversion: EE1DD0B30B5F99540B43858 alias: of:N*T*Cmicrochip,mcp2517fdC* alias: of:N*T*Cmicrochip,mcp2517fd alias: spi:mcp2517fd depends: can-dev name: mcp25xxfd_can vermagic: 4.19.75-v7l+ SMP mod_unload modversions ARMv7 p2v8 parm: rx_prefetch_bytes:number of bytes to blindly prefetch when reading a rx-fifo (uint) parm: reschedule_int_thread_after:Reschedule the interrupt thread after this many loops (uint) parm: tx_fifos:Number of tx-fifos to configure (uint) parm: three_shot:Use 3 shots when one-shot is requested (bool) parm: bw_sharing_log2bits:Delay between 2 transmissions in number of arbitration bit times (uint) parm: enable_edge_filter:Enable ISO11898-1:2015 edge_filtering (bool) parm: tdc_mode:Transmitter Delay Mode - 0 = disabled, 1 = fixed, 2 = auto (uint) parm: tdc_value:Transmission Delay Value - range: [0:63] SCLK (uint) parm: tdc_offset:Transmission Delay offset - range: [-64:63] SCLK (int) thanks, drew