This spi-mcp251x.dts made me use can0 with SEENGREAT Dual-CH Can Hat on latest Armbian v25.11.2 for BananaPi BPI-M4-Zero running Armbian Linux 6.12.58-current-sunxi64:
/*
* Device tree overlay for mcp2517/18 @ can0 on SPI1.0 (BananaPi Zero M4) / Works with SEENGREAT Dual-CH Can Hat (can0 only)
*/
/dts-v1/;
/plugin/;
/ {
compatible = "allwinner,sun50i-h616";
fragment@0 {
target-path = "/";
__overlay__ {
can0_osc_fixed: can0_osc_fixed {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <16000000>;
};
};
};
fragment@1 {
target = <&pio>;
__overlay__ {
can0_pin_irq: can0_pin_irq {
pins = "PC2"; /* Pin 22 on BananaPi BPI-M4-Zero */
function = "irq";
bias-pull-up;
};
};
};
fragment@2 {
target = <&spi1>; /* Use SPI1 */
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
mcp2518fd@1 {
compatible = "microchip,mcp2515";
reg = <0>; /* Use SPIx.0 */
pinctrl-names = "default";
pinctrl-0 = <&can0_pin_irq>;
spi-max-frequency = <10000000>;
interrupt-parent = <&pio>;
interrupts = <2 2 0x08>; /* PC2 IRQ_TYPE_LEVEL_LOW */
clocks = <&can0_osc_fixed>;
status = "okay";
};
};
};
};
Create file:
sudo nano /boot/dtb/spi-mcp251x.dts
Add overlay:
sudo armbian-add-overlay /boot/dtb/spi-mcp251x.dts
Edit armbianEnv.txt:
overlays=bananapi-m4-pi-5-6-i2c0 bananapi-m4-sdio-wifi-bt bananapi-m4-spi1-cs0-spidev spi-mcp251x
param_spidev_spi_bus=1
dtparam=spi=on
param_i2c_arm_baudrate=10000
I did not try to get can1 to work since I don't need it at the moment.
I hope it helps.
Have fun!