This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/TDA2P-ACD: trouble using mcan in kernel 4.4.84

Part Number: TDA2P-ACD

Tool/software: Linux

Linux 4.4.84 (took out of SDK 3_2_0_0)

Questions:

(1) Looking inside the devicetree, I can only see DCAN-stuff configured in the "dra7.dtsi" file. 
What's up with mcan? No need to handle in devicetree? Not supported yet?

(2) I can switch on something called: "CONFIG_CAN_M_CAN" in the kernel configuration file. But this activates a driver for "Bosch m_can"... I guess, this is not what I need?
Otherwise: This driver do not compile, because some function called: "of_can_transceiver" can found nowhere in linux. This is not functional, if commenting it out - okay: It compiles, but wouldn't run. (or?) 
So: If the "bosch" - driver is not what I need, how can I start using tda2plus mcan?

(3) Are there any "how to" or examples of how to use mcan under linux? What driver I will need?

Silicium: TDA2PHArVQACDQ1  

Thank you... 

Marco.

  • Additional information -> Oops during Kernel boot: 

    [    0.120150] omap_hwmod: l3_main_2 using broken dt data from ocp
    [    0.253537] omap_hwmod: mcan: cannot clk_get main_clk mcan_clk
    [    0.253552] omap_hwmod: mcan: cannot _init_clocks
    [    0.253560] ------------[ cut here ]------------
    [    0.253574] WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2529 _init+0x320/0x434()
    [    0.253582] omap_hwmod: mcan: couldn't init clocks
    [    0.253590] Modules linked in:
    [    0.253607] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.84-SMS_MONOLYTHIC-00013-g7a35563-dirty #9
    [    0.253617] Hardware name: Generic DRA74X (Flattened Device Tree)
    [    0.253625] Backtrace: 
    [    0.253649] [<c0012f6c>] (dump_backtrace) from [<c0013108>] (show_stack+0x18/0x1c)
    [    0.253658]  r6:60000013 r5:ffffffff r4:00000000 r3:00000000
    [    0.253695] [<c00130f0>] (show_stack) from [<c02cce4c>] (dump_stack+0x88/0xa8)
    [    0.253711] [<c02ccdc4>] (dump_stack) from [<c0041758>] (warn_slowpath_common+0x80/0xbc)
    [    0.253719]  r8:c0855768 r7:00000009 r6:000009e1 r5:c0921e34 r4:eec77e58 r3:00000000
    [    0.253756] [<c00416d8>] (warn_slowpath_common) from [<c0041838>] (warn_slowpath_fmt+0x38/0x40)
    [    0.253764]  r8:ffffffea r7:00000000 r6:ffffffea r5:0000000c r4:c09800b8
    [    0.253799] [<c0041804>] (warn_slowpath_fmt) from [<c0921e34>] (_init+0x320/0x434)
    [    0.253807]  r3:c0857cfc r2:c0855b58
    [    0.253830] [<c0921b14>] (_init) from [<c0032900>] (omap_hwmod_for_each+0x38/0x64)
    [    0.253838]  r10:00000000 r8:c09226b0 r7:00000000 r6:c0921b14 r5:c0977810 r4:c09800b8
    [    0.253876] [<c00328c8>] (omap_hwmod_for_each) from [<c09226dc>] (__omap_hwmod_setup_all+0x2c/0x48)
    [    0.253883]  r7:c095481c r6:eede4780 r5:c0972e28 r4:c0972e28
    [    0.253913] [<c09226b0>] (__omap_hwmod_setup_all) from [<c000989c>] (do_one_initcall+0x88/0x1e0)
    [    0.253926] [<c0009814>] (do_one_initcall) from [<c0915ee0>] (kernel_init_freeable+0x1a0/0x278)
    [    0.253934]  r10:c095483c r9:000000c6 r8:00000000 r7:c095481c r6:c09cb000 r5:00000001
    [    0.253963]  r4:c0963278
    [    0.253981] [<c0915d40>] (kernel_init_freeable) from [<c06c8bec>] (kernel_init+0x10/0x100)
    [    0.253988]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c06c8bdc
    [    0.254018]  r4:00000000
    [    0.254034] [<c06c8bdc>] (kernel_init) from [<c000fe70>] (ret_from_fork+0x14/0x24)
    [    0.254042]  r4:00000000 r3:eec76000
    [    0.254071] ---[ end trace d15055dca3d60e5b ]---
    

  • Hi Marco,

    I have forwarded your question to a kernel expert.

    Regards,
    Yordan
  • Marco
    For MCAN functionality on TDA2P, you will need additional patches: these are made on available on more later kernel version

    You will need to back port them to k4.4 - list of patches required are as below

    git repo: git.ti.com/.../ti-linux-kernel
    Branch: ti-linux-4.14.y (git.ti.com/.../ti-linux-4.14.y)

    List of patches

    MCAN patches:

    a0a8e0d ARM: dts: dra76x: Add MCAN node
    7d257d9 ARM: dra762: hwmod: Add MCAN support
    7467f59 ARM: dts: dra762: Add MCAN clock support 3bbff6c can: m_can: Add PM Support
    63dffc1 can: m_can: get rid of function free_m_can_dev() ed92b2b can: m_can: Move allocation of net device to probe
    28705a2 can: m_can: Remove check for version when allocating m_can net device
    8c0ac00 can: m_can: Add call to of_can_transceiver
    e7610d1 can: m_can: Support higher speed CAN-FD bitrates b30144a can: dev: Add support for limiting configured bitrate 892946b dt-bindings: can: m_can: Document new can transceiver binding
    50c8055 dt-bindings: can: can-transceiver: Document new binding

    Clock patches:

    8ed916b clk: ti: add support for clock latching to mux clocks
    9659ce5 clk: ti: add support for clock latching to divider clocks
    3f56481 clk: ti: add generic support for clock latching
    59a2e07 clk: ti: add support for register read-modify-write low-level operation