Skip to contentSkip to conversation

Location of files for a new driver

DISCUSSION Jacko Dirks 2 participants 4 messages May 5, 2020

lore
Share & tools
lore
#0 lore raw

Hello,

I am starting to work on a new driver. I think the actual driver (c file) needs to be placed in drivers/staging/subdir (am I correct?). But I also need to edit existing dts and dtsi files and I also need to introduce a new overlay. Where do I place those changes and new files?

Thanks in advance,

Jacko Dirks

_______________________________________________
Kernelnewbies mailing list
[email protected]
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

#1 lore raw
Quoted 5 lines · Jacko Dirks

Hello,

I am starting to work on a new driver. I think the actual driver (c file) needs to be placed in drivers/staging/subdir (am I correct?).

drivers/staging/ is only for code that needs lots and lots of work to get into the "real" part of the kernel. It also requires a TODO file that lists what is left to do to get it out of that location.

If you can write that TODO list, it's almost always easier to just do that work yourself and then get the code merged into the real part of the kernel than to put it into drivers/staging/

Quoted 3 lines

But I also need to edit existing dts and dtsi files and I also need to introduce a new overlay. Where do I place those changes and new files?

It all depends on what you are writing. What exactly does this code do? That will determine where it goes in the kernel tree.

thanks,

greg k-h

_______________________________________________
Kernelnewbies mailing list
[email protected]
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

#2 lore raw
Quoted 3 lines · Greg KH

drivers/staging/ is only for code that needs lots and lots of work to get into the "real" part of the kernel. It also requires a TODO file that lists what is left to do to get it out of that location.

Oh, I did not know that staging was optional. Well, I will attempt to skip staging in that case

Quoted 2 lines

It all depends on what you are writing. What exactly does this code do? That will determine where it goes in the kernel tree.

The code is a driver for the Broadcom BSC, which lives on the Raspberry Pi 3 & 4 (at least, maybe also on 1 & 2). This device can act as an I2C slave. To "announce" the device (tell the device tree which pins need to be configured how, etcetera) I need to change existing dts/dtsi files, to actually be able to enable the device I need to create a new overlay. Finally, the actual driver needs to be created in drivers/i2c/busses. And then there is also some makefile, documentation and kconfig.

Does that sound right?

Quoted 1 line

thanks,

No, thank you!

Jacko Dirks

_______________________________________________
Kernelnewbies mailing list
[email protected]
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

#3 lore raw
Quoted 7 lines · Jacko Dirks
Quoted 3 lines · Greg KH

drivers/staging/ is only for code that needs lots and lots of work to get into the "real" part of the kernel. It also requires a TODO file that lists what is left to do to get it out of that location.

Oh, I did not know that staging was optional. Well, I will attempt to skip staging in that case

Please do :)

Quoted 11 lines
Quoted 2 lines

It all depends on what you are writing. What exactly does this code do? That will determine where it goes in the kernel tree.

The code is a driver for the Broadcom BSC, which lives on the Raspberry Pi 3 & 4 (at least, maybe also on 1 & 2). This device can act as an I2C slave. To "announce" the device (tell the device tree which pins need to be configured how, etcetera) I need to change existing dts/dtsi files, to actually be able to enable the device I need to create a new overlay. Finally, the actual driver needs to be created in drivers/i2c/busses. And then there is also some makefile, documentation and kconfig.

Quoted 1 line

Does that sound right?

Sounds correct to me. It's easy to move files around if you make up a patch and submit it to the mailing lists and people tell you to do so. The harder part is writing a driver that works :)

good luck!

greg k-h

_______________________________________________
Kernelnewbies mailing list
[email protected]
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies