Using '_make nconfig_' I selected the following options:
(_Keep in mind I using an Altera/Intel Arria 10 SoC which uses
DesignWare hard SPI controllers. BUT the SPI controllers I'm concerned
with now are soft controllers defined in the FPGA code)_.
.config - Linux/arm 5.4.74 Kernel Configuration
┌── SPI support
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│
│
│ --- SPI support
│
│ [*] Debug support for SPI drivers
│
│ -*- SPI memory extension
│
│ *** SPI Master Controller Drivers
*** │
│ <M> Altera SPI Controller
...
│ <*> Utilities for Bitbanging SPI masters
│
│ < > Cadence SPI controller
│
│ < > CLPS711X host SPI controller
│
│ <*> DesignWare SPI controller core
support │
│ <*> PCI interface driver for DW SPI
core │
│ <*> Memory-mapped io interface driver
for DW SPI core │
...
│ *** SPI Protocol Masters ***
│
│ <M> User mode SPI device driver support
│
│ <M> spi loopback test framework support
│
│ < > Infineon TLE62X0 (for power
switching) │
│ [*] SPI slave protocol handlers
│
│ <M> SPI slave handler reporting boot
up time │
│ <M> SPI slave handler controlling
system state │
This got the SPI nodes to show up in _/sys/firmware/devicetree/_ but
there were no _udev_ files (_/dev/spidevXX_). So I commented out the
'_interrupts_' in the DTSI file and the _udev_ files appeared?
spi2: spi@0xc00c0800 { // hps_spi_1553_int
address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0xc00c0800 0x20>;
// interrupt-parent = <&intc>;
// interrupts = <0 24 IRQ_TYPE_EDGE_FALLING>;
num-cs = <0x1>;
status = "okay";
spidev@0 {
compatible = "rohm,dh2228fv";
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x0>;
spi-max-frequency = <0x1f400>;
// enable-dma = <0x1>;
};
};
BUT I need those interrupts. Thoughts and/or suggestions?
---John
On 2021-03-19 01:10, Zoran wrote:
Hello John,
It seems that your target is configured correctly. Since you have all
the components you should and must have as SPI framework.
Namely I was looking for /sys/bus (since you must have an SPI bus
driver), and then /sys/class (since as my best understanding is that
SPI is a master/slave device), you must have class/). Others are
assumed, you added debug directories.
When I separately build spidev.c as an .ko and try
loading it, I get: "Device or resource busy"
This is understandable, since you already have included spidev.ko as
menuconfig value Y, so it is already present in the kernel, but as a
built-in part of the kernel (my best guess).
root@arria10:~# lsmod
Module Size Used by
spi_altera 16384 0
spidev 20480 0
I see that you did change the menuconfig, and made spidev to be M.
What I also see is that there are no dependencies between spidev and
spi_altera. This is what you really wanted?
But there are NO udev files for the SPI devices
defined in the DTSI file.
Could you, please, better explain this sentence? In more details (as
much as you can)?
Thank you,
Zee
_______
On Thu, Mar 18, 2021 at 10:07 PM jchludzinski <jchludzin...@vivaldi.net> wrote:
root@arria10:~# find /sys/ -name 'spi*'
/sys/kernel/debug/clk/spi_m_clk
/sys/kernel/debug/tracing/events/spi
/sys/kernel/debug/tracing/events/spi/spi_controller_idle
/sys/kernel/debug/tracing/events/spi/spi_controller_busy
...
/sys/bus/spi/devices/spi0.0
/sys/bus/spi/drivers/spi-nor
/sys/bus/spi/drivers/altr_a10sr/spi0.0
/sys/bus/spi/drivers/spidev
/sys/module/spidev
/sys/module/spidev/drivers/spi:spidev
/sys/module/spi_altera
On 2021-03-18 03:44, Zoran wrote:
I am guessing here.... But what do you have while executing the
following command being in /sys
as root?
root@arm:/sys# find . -name spi*
Zee
_______
On Wed, Mar 17, 2021 at 5:41 PM jchludzinski via
lists.yoctoproject.org
<jchludzinski=vivaldi....@lists.yoctoproject.org> wrote:
In the YOCTO/Linux source tree there's drivers/spi/ which has all the source
for SPI drivers. There's only 1 file, spidev.c, which has:
static int __init spidev_init(void)
{
int status;
/* Claim our 256 reserved device numbers. Then register a class
* that will key udev/mdev to add/remove /dev nodes. Last, register
* the driver which manages those device numbers.
*/
BUILD_BUG_ON(N_SPI_MINORS > 256);
status = register_chrdev(SPIDEV_MAJOR, "spi", &spidev_fops);
if (status < 0)
return status;
spidev_class = class_create(THIS_MODULE, "spidev");
if (IS_ERR(spidev_class)) {
unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name);
return PTR_ERR(spidev_class);
}
status = spi_register_driver(&spidev_spi_driver);
if (status < 0) {
class_destroy(spidev_class);
unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name);
}
return status;
}
module_init(spidev_init);
... for creating device files in udev.
So when I use 'make nconfig' to specifiy that I want a loadable module for the
ALTERA SPI driver, why don't I see a spidev.o file in drivers/spi/ ?
How does spi-altera.ko create device files without a call to
register_chrdev(...).
How is it a loadable module without module_init(...)?
When I separately build spidev.c as an .ko and try loading it, I get: "Device or
resourse busy"
---John
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#52782): https://lists.yoctoproject.org/g/yocto/message/52782
Mute This Topic: https://lists.yoctoproject.org/mt/81407811/21656
Group Owner: yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-