46 lines
1.0 KiB
Markdown
46 lines
1.0 KiB
Markdown
|
Bosch M_CAN (CAN Controller) Device Driver
|
||
|
==========================================
|
||
|
|
||
|
Files
|
||
|
-----
|
||
|
* *.c : Driver C-Source Files
|
||
|
* Kconfig : Config file for menuconfig etc.
|
||
|
* Makefile : Makefile for Kernel Build
|
||
|
|
||
|
Compile
|
||
|
-------
|
||
|
compile as normal Kernel Driver.
|
||
|
* Driver can be compiled as an externel module.
|
||
|
* Driver can be compiled statically into the kernel.
|
||
|
|
||
|
|
||
|
Device Tree
|
||
|
-----------
|
||
|
The following code shows a basic device tree for an M_CAN node:
|
||
|
|
||
|
```
|
||
|
/* M_CAN Device Tree Nodes */
|
||
|
hclk: hclk {
|
||
|
compatible = "fixed-clock";
|
||
|
#clock-cells = < 0 >;
|
||
|
clock-frequency = <50000000>;
|
||
|
};
|
||
|
cclk: cclk {
|
||
|
compatible = "fixed-clock";
|
||
|
#clock-cells = < 0 >;
|
||
|
clock-frequency = <40000000>;
|
||
|
};
|
||
|
mcan0: can@0xff240000 {
|
||
|
compatible = "bosch,m_can-3.2.1";
|
||
|
reg = <0xff240000 0x200>,<0xff260000 0x4000>;
|
||
|
reg-names = "m_can", "message_ram";
|
||
|
interrupt-parent = <&intc>;
|
||
|
/* Shared Interrupt for every M_CAN */
|
||
|
interrupts = <0x0 40 0x4>;
|
||
|
interrupt-names = "int0";
|
||
|
clocks = <&hclk>, <&cclk>;
|
||
|
clock-names = "hclk", "cclk";
|
||
|
bosch,mram-cfg = <0x0 128 64 64 32 64 32 32>;
|
||
|
};
|
||
|
```
|