Re: mcp251xfd on RPi 5.4 downstream

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux