Location of files for a new driver
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
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
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
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