I solved it with my own devicetree overlay, loaded after the BB-SPIDEV0 overlay. It's available at https://github.com/battlesnake/beaglebone-spi0-mcp2515
On Saturday, 18 February 2017 14:22:19 UTC, Laurits Telle Riple wrote: > > Hi! > > I got it to work, but not using the mainline driver. I bought a cape from > towertech to be sure that my hardware was correct. They shipped the device > with some modified version of the driver. Got some help in the beagle irc > chat to try to find the origin of that driver. IIRC the driver was based on > a driver from many years ago, but it works. I have not tested it over a > long period, but it seems to work. I am currently trying to get it to work > with the mainline driver, but its not my top priority right now. There has > been several changes to the mainline driver since I tried to use it the > last time, so i hope it will work next time I try it. With the towertech > driver I managed to get it to work, both by using a overlay and just making > my own DT. Should be instructions on how to compile if you download from > these links. And I think there is a dto in the zip as well. If I get it to > work with the mainline, I will update this thread. > > Btw. Some other guy on irc did not get this driver to work with his old > rev of the can cape. I think I have rev5. Should work with that. > > TT3201 driver for Debian 7.x / Kernel 3.x > < > https://dl.dropboxusercontent.com/u/2883083/TowerTech/towertech-tt3201-rev5.tar.gz > > > > * TT3201 driver for Debian 8.x / Kernel 4.x > < > https://dl.dropboxusercontent.com/u/2883083/TowerTech/towertech-tt3201-rev5-kernel-4.x.tar.gz > > > > > tirsdag 14. februar 2017 16.11.56 UTC+1 skrev Mark K Cowan følgende: >> >> Hi, >> >> Did you ever get the MCP2515 working over SPI? I'm attempting that now, >> but I'm not sure where to start. >> >> Thanks, >> Mark >> >> >> >> On Tuesday, 20 September 2016 14:30:39 UTC+1, Laurits Telle Riple wrote: >>> >>> After chatting in the IRC channel with Matthijs I was encouraged to not >>> use overlays, and just make my own dtb. I have tried that now, but it >>> doesn't seem to work properly. I've enabled spi0 and spi1. And used the >>> spi_loopback to see that my dtb was working, then i expanded it by adding a >>> clock node and adding the mcp in the spi config. Also, the max14830 not >>> working, maybe the same issue? Anyways, this is my dtb: >>> >>> /* >>> * Copyright (C) 2012 Texas Instruments Incorporated - >>> http://www.ti.com/ >>> * >>> * This program is free software; you can redistribute it and/or modify >>> * it under the terms of the GNU General Public License version 2 as >>> * published by the Free Software Foundation. >>> */ >>> >>> /dts-v1/; >>> >>> #include "am33xx.dtsi" >>> #include "am335x-bone-common.dtsi" >>> #include "am33xx-overlay-edma-fix.dtsi" >>> #include "irq.h" >>> >>> / { >>> model = "TI AM335x BeagleBone Black"; >>> compatible = "ti,am335x-bone-black", "ti,am335x-bone", >>> "ti,am33xx"; >>> >>> clk16m:clk16m{ >>> compatible = "fixed-clock"; >>> clock-frequency = <16000000>; >>> #clock-cells = <0>; >>> }; >>> >>> clk4m:clk4m{ >>> compatible = "fixed-clock"; >>> clock-frequency = <4000000>; >>> #clock-cells = <0>; >>> }; >>> }; >>> >>> &ldo3_reg { >>> regulator-min-microvolt = <1800000>; >>> regulator-max-microvolt = <1800000>; >>> regulator-always-on; >>> }; >>> >>> &mmc1 { >>> vmmc-supply = <&vmmcsd_fixed>; >>> }; >>> >>> &mmc2 { >>> vmmc-supply = <&vmmcsd_fixed>; >>> pinctrl-names = "default"; >>> pinctrl-0 = <&emmc_pins>; >>> bus-width = <8>; >>> status = "okay"; >>> }; >>> >>> &cpu0_opp_table { >>> /* >>> * All PG 2.0 silicon may not support 1GHz but some of the early >>> * BeagleBone Blacks have PG 2.0 silicon which is guaranteed >>> * to support 1GHz OPP so enable it for PG 2.0 on this board. >>> */ >>> oppnitro@1000000000 { >>> opp-supported-hw = <0x06 0x0100>; >>> }; >>> }; >>> >>> >>> &am33xx_pinmux{ >>> spi1_pins:spi1_pins{ >>> pinctrl-single,pins=< >>> 0x190 0x33 /* mcasp0_aclkx.spi1_sclk, >>> OUTPUT_PULLUP | MODE 3 */ >>> 0x194 0x33 /* mcasp0_fsx.spi1_d0, >>> INPUT_PULLUP | MODE3 */ >>> 0x198 0x13 /* mcasp0_axr0.spi1_d1, >>> OUTPUT_PULLUP | MODE 3 */ >>> 0x19c 0x13 /* mcasp0_ahclkr.spi1_cs0, >>> OUTPUT_PULLUP | MODE3 */ >>> >; >>> }; >>> spi0_pins:spi0_pins{ >>> pinctrl-single,pins=< >>> 0x150 0x30 /* spi0_sclk, INPUT_PULLUP | MODE0 */ >>> 0x154 0x30 /* spi0_d0, INPUT_PULLUP | MODE0 */ >>> 0x158 0x10 /* spi0_d1, OUTPUT_PULLUP | MODE0 */ >>> 0x15c 0x10 /* spi0_cs0, OUTPUT_PULLUP | MODE0 */ >>> >; >>> }; >>> mcp2515_pins:mcp2515_pins{ >>> pinctrl-single,pins=< >>> 0x1ac 0x37 /*mcasp0_ahclkx.gpio3_21,RX_ENABLED | >>> PULLUP | MODE7 */ >>> >; >>> }; >>> max14830_pins:max14830_pins{ >>> pinctrl-single,pins=< >>> 0x1a4 0x37 /* mcasp0_fsr.gpio3_19, >>> RX_ENABLED | PULLUP | MODE7 */ >>> >; >>> }; >>> }; >>> >>> &spi1{ >>> status="okay"; >>> pinctrl-names="default"; >>> pinctrl-0=<&spi1_pins>; >>> >>> /*spi1@0{ >>> compatible="spidev"; >>> reg=<0>; >>> spi-max-frequency=<16000000>; >>> };*/ >>> >>> max14830@0{ >>> compatible="maxim,max14830"; >>> reg=<0>; >>> spi-max-frequency=<16000000>; >>> clocks=<&clk4m>; >>> clock-names="osc"; >>> interrupt-parent=<&gpio3>; >>> interrupts=<19 IRQ_TYPE_EDGE_FALLING>; >>> gpio-controller; >>> #gpio-cells=<2>; >>> }; >>> mcp2515@1{ >>> compatible="microchip,mcp2515"; >>> reg=<1>; >>> spi-max-frequency=<10000000>; >>> pinctrl-names="default"; >>> pinctrl-0=<&mcp2515_pins>; >>> clocks=<&clk16m>; >>> interrupt-parent=<&gpio3>; >>> interrupts=<21 IRQ_TYPE_EDGE_FALLING>; >>> }; >>> }; >>> >>> &spi0{ >>> status="okay"; >>> pinctrl-names="default"; >>> pinctrl-0=<&spi0_pins>; >>> >>> spi0@0{ >>> compatible="spidev"; >>> reg=<0>; >>> spi-max-frequency=<16000000>; >>> }; >>> }; >>> >>> >>> But I still dont get any can devices when i issue the "ip a" command. >>> However running lsmod gives: >>> >>> debian@arm:/opt/source/dtb-4.4-ti$ lsmod >>> Module Size Used by >>> 8021q 17930 0 >>> garp 5769 1 8021q >>> mrp 7239 1 8021q >>> stp 2219 1 garp >>> llc 5123 2 stp,garp >>> usb_f_ecm 9336 1 >>> g_ether 4976 0 >>> usb_f_rndis 22191 2 g_ether >>> mcp251x 9039 0 >>> u_ether 11898 3 usb_f_ecm,usb_f_rndis,g_ether >>> libcomposite 43717 3 usb_f_ecm,usb_f_rndis,g_ether >>> can_dev 11820 1 mcp251x >>> spidev 7523 0 >>> bnep 13652 2 >>> omap_aes_driver 19045 0 >>> omap_sham 21340 0 >>> bluetooth 419221 7 bnep >>> rfkill 18276 3 bluetooth >>> omap_rng 4423 0 >>> rng_core 7703 1 omap_rng >>> snd_soc_davinci_mcasp 17079 0 >>> snd_soc_edma 1290 1 snd_soc_davinci_mcasp >>> snd_soc_omap 3058 1 snd_soc_davinci_mcasp >>> snd_soc_core 155549 3 >>> snd_soc_davinci_mcasp,snd_soc_edma,snd_soc_omap >>> snd_pcm_dmaengine 5209 2 snd_soc_core,snd_soc_omap >>> snd_pcm 83341 4 >>> snd_soc_davinci_mcasp,snd_soc_core,snd_soc_omap,snd_pcm_dmaengine >>> snd_timer 19788 1 snd_pcm >>> snd 59495 3 snd_soc_core,snd_timer,snd_pcm >>> soundcore 7637 1 snd >>> spi_omap2_mcspi 11148 0 >>> nfsd 261377 13 >>> evdev 10695 2 >>> uio_pdrv_genirq 3539 0 >>> uio 8822 1 uio_pdrv_genirq >>> pru_rproc 13507 0 >>> pruss_intc 7451 1 pru_rproc >>> pruss 10611 1 pru_rproc >>> >>> I have used https://www.sparkfun.com/products/13262 with bi-directional >>> heconverters on the logic signals. >>> >>> I don't understand what I am doing wrong? Dmesg output here: >>> http://dpaste.com/2XSZV56 >>> >>> >>> fredag 19. august 2016 19.37.11 UTC+2 skrev William Hermans følgende: >>>> >>>> Something I noticed about your device tree file. First, the mcp251x.c / >>>> mcp2515.c driver would be loaded as a module in a device tree. I see no >>>> "status=okay" so the driver would never load. Honestly I've yet to setup >>>> SPI on the beaglebone in ~3.5 years. So I'm no expert. However if I were >>>> you. I would at least initially setup, and use universal-io to mux your >>>> pins. https://github.com/cdsteinkuehler/beaglebone-universal-io . It >>>> is far simpler, and easier to use than a raw device tree source file. >>>> >>>> So, universal io is already installed, and loaded by default on the >>>> stick 4.4 debian images. The only thing you may have to do is download via >>>> wget config-pin, chmod +x it then move it to the appropriate /bin >>>> directory. >>>> >>>> Then you just: >>>> >>>> $ sudo config-pin PX.XX spi >>>> >>>> etc, etc. >>>> >>>> >>>> On Fri, Aug 19, 2016 at 9:01 AM, William Hermans <[email protected]> >>>> wrote: >>>> >>>>> https://github.com/msperl/mcp2515/blob/master/mcp2515.c there it is. >>>>> >>>>> By the way, the mcp2515 has a built in transceiver. The CANBUS >>>>> controller on the am335x does not. the MCP2515 is also more cost >>>>> efficient. >>>>> So don't let anyone make you feel bad for going that route. >>>>> >>>>> On Fri, Aug 19, 2016 at 8:58 AM, William Hermans <[email protected]> >>>>> wrote: >>>>> >>>>>> 1. Haha! It does? Must have missed it when I looked on the pinmap. >>>>>>> 2. Tried to disable universal cape, makes no difference. >>>>>>> >>>>>>> Anyways. I still want to get it to work. Have spent so much time on >>>>>>> it, and I would hate to just let it go. Even though I probably won't >>>>>>> use >>>>>>> it. I also need to get a spi to uart chip (max14830) to work, which has >>>>>>> almost the same configuration so I'm hoping that solving this issue, >>>>>>> will >>>>>>> also solve the max14830. >>>>>>> >>>>>>> I will try out your tool, looks very promising ;) Thanks for the >>>>>> help. >>>>>> >>>>>> Well, you're device tree would simply be for SPI anyway. Since thats >>>>>> the bus you're using. Also, so you know the mcp2515 driver already >>>>>> exists, >>>>>> so I forget whatexactly the module name is, but something like $ >>>>>> sudo modprobe mcp25xx should just work. >>>>>> >>>>>> >>>>>> On Fri, Aug 19, 2016 at 7:21 AM, <[email protected]> wrote: >>>>>> >>>>>>> 1. Haha! It does? Must have missed it when I looked on the pinmap. >>>>>>> 2. Tried to disable universal cape, makes no difference. >>>>>>> >>>>>>> Anyways. I still want to get it to work. Have spent so much time on >>>>>>> it, and I would hate to just let it go. Even though I probably won't >>>>>>> use >>>>>>> it. I also need to get a spi to uart chip (max14830) to work, which has >>>>>>> almost the same configuration so I'm hoping that solving this issue, >>>>>>> will >>>>>>> also solve the max14830. >>>>>>> >>>>>>> I will try out your tool, looks very promising ;) Thanks for the >>>>>>> help. >>>>>>> >>>>>>> >>>>>>> fredag 19. august 2016 15.42.06 UTC+2 skrev Matthijs van Duin >>>>>>> følgende: >>>>>>>> >>>>>>>> I haven't really looked yet at your overlay, but two immediate >>>>>>>> thoughts: >>>>>>>> 1. why on earth are you using an spi can controller when there are >>>>>>>> *two* built-in CAN controllers already on the beaglebone? >>>>>>>> 2. you have cape-universal enabled, this conflicts with pretty much >>>>>>>> every overlay (remove the cape_universal=enable from cmdline in your >>>>>>>> /boot/uEnv.txt >>>>>>>> >>>>>>>> BTW I made some utils to make the process of writing overlays less >>>>>>>> painful: https://github.com/mvduin/overlay-utils >>>>>>>> It lets you write them as device tree fragments and automatically >>>>>>>> converts them to the structure requires for overlays. It also includes >>>>>>>> macros that make pinmux much easier to read. No support for overlay >>>>>>>> metadata though, I didn't bother since the new configfs mechanism to >>>>>>>> load >>>>>>>> overlays ignores it anyway. >>>>>>>> >>>>>>>> Matthijs >>>>>>>> >>>>>>> -- >>>>>>> For more options, visit http://beagleboard.org/discuss >>>>>>> --- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "BeagleBoard" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to [email protected]. >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/beagleboard/01fc36f9-5d81-4597-acc6-d553e02a231b%40googlegroups.com >>>>>>> >>>>>>> <https://groups.google.com/d/msgid/beagleboard/01fc36f9-5d81-4597-acc6-d553e02a231b%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> >>>>>> >>>>> >>>> -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/dadbe3ea-847d-402e-8002-7f64f7d4f1a8%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
