Skip to contentSkip to conversation

New: Platform drivers autoloading from info in device tree does not work

Buildroot bugzilla at busybox.net 1 participant 6 messages Dec 30, 2016 – Jan 2, 2017

lore
Share & tools
lore
#0 lore raw

https://bugs.busybox.net/show_bug.cgi?id=9541

Bug ID: 9541
Summary: Platform drivers autoloading from info in device tree
does not work
Product: buildroot
Version: unspecified
Hardware: All
OS: Linux
Status: NEW
Severity: normal
Priority: P5
Component: Other
Assignee: unassigned at buildroot.uclibc.org
Reporter: a.synytsyn at gmail.com
CC: buildroot at uclibc.org
Target Milestone: ---

Hello everyone! What is going on with autoloading modules for platform devices from device tree? I've build image for raspberry pi, added device tree overlay for enc28j60. I've checked: device tree node with this device exists in /proc/device-tree/soc/spi at 7e204000. But lsmod does not shows that enc28j60.ko is not loaded. In contrast of, raspbian distro successfully managed with this - module loaded successfully.
Also, I've read this thread:
http://lists.busybox.net/pipermail/buildroot/2016-December/178779.html. As I understand, command

find /sys/ -name modalias -print0 | xargs -0 sort -u -z | xargs -0 modprobe -abq

does not work.

Regards,

Artem Synytsyn

Signature · 2 lines
You are receiving this mail because:
You are on the CC list for the bug.
#1 lore raw

[Buildroot] [Bug 9541] Platform drivers autoloading from info in device tree does not work

https://bugs.busybox.net/show_bug.cgi?id=9541

Peter Korsgaard <[email protected]> changed:

What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED

--- Comment #1 from Peter Korsgaard <[email protected]> --- It is hard to know what is going on without more details.

For drivers to load automatically, you need:

- Device tree snippet according to the defined bindings (in your case it sounds like Documentation/devicetree/bindings/net/microchip,enc28j60.txt)

- Driver enabled as a module in the kernel

- A user space kernel module loader, E.G. mdev or (e)udev

If you still have problems, please provide more details about the above.

Signature · 2 lines
You are receiving this mail because:
You are on the CC list for the bug.
#2 lore raw

[Buildroot] [Bug 9541] Platform drivers autoloading from info in device tree does not work

In reply to bugzilla at busybox.net

https://bugs.busybox.net/show_bug.cgi?id=9541

--- Comment #2 from Artem Synytsyn <[email protected]> --- Hello, Peter,

First of all I'll describe steps, which I've made.
1. Clone buildroot from official repo
2. make raspberrypi_defconfig
3. Add enc28j60.dtbo into overlays directory on boot partition
4. Add dtoverlay=enc28j60 into config.txt

After boot lsmod command output is empty(except ipv6 module, which is marked as "permanent").

- I've used device tree overlay from the firmware, which was built by buildroot itself. As for the snippet it is standard also, here is its code:
https://github.com/raspberrypi/linux/blob/rpi-4.4.y/arch/arm/boot/dts/overlays/enc28j60-overlay.dts.
Also, as I said, device tree node with this device is exposed in /proc/device-tree, so I think it is ok.
- driver enc28j60.ko is enabled in kernel configuration as loadable, it is present in /lib/modules filesystem. I can load it manually and it is ok too.
- mdev is present in system. And I think it is root of the problem, because Raspbian distro has udev instead mdev and it successfully loads kernel module based on info from device tree.

Signature · 2 lines
You are receiving this mail because:
You are on the CC list for the bug.
#3 lore raw

[Buildroot] [Bug 9541] Platform drivers autoloading from info in device tree does not work

In reply to bugzilla at busybox.net

https://bugs.busybox.net/show_bug.cgi?id=9541

--- Comment #3 from Peter Korsgaard <[email protected]> --- I take it that you somewhere in that sequence enabled mdev? (E.G. System configuration->/dev management (Dynamic using devtmpfs+mdev)

The module specifies the following aliases:

modinfo target/lib/modules/4.4.36-v7/kernel/drivers/net/ethernet/microchip/enc28j60.ko | grep alias

alias:          spi:enc28j60
alias:          of:N*T*Cmicrochip,enc28j60*

Can you first of all verify that you can load the module with these wildcards?

E.G.

modprobe 'spi:enc28j60'
lsmod | grep enc28j60
rmmod enc28j60.ko

modprobe 'of:N*T*Cmicrochip,enc28j60*'
lsmod | grep enc28j60
rmmod enc28j60.ko

And check what the modalias is for the /sys/bus/spi/* device?

Signature · 2 lines
You are receiving this mail because:
You are on the CC list for the bug.
#5 lore raw

[Buildroot] [Bug 9541] Platform drivers autoloading from info in device tree does not work

In reply to bugzilla at busybox.net

https://bugs.busybox.net/show_bug.cgi?id=9541

Peter Korsgaard <[email protected]> changed:

What |Removed |Added
----------------------------------------------------------------------------

         Resolution|---                         |WORKSFORME
             Status|ASSIGNED                    |RESOLVED

--- Comment #5 from Peter Korsgaard <[email protected]> ---
Great, I'll close the issue then. Perhaps it makes sense to enable mdev for the rpi*_defconfigs to make it easier to use?

Signature · 2 lines
You are receiving this mail because:
You are on the CC list for the bug.