Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: help getting SPI interface to work



On Monday 20 Sep 2021 09:34:21 Michael van Elst wrote:
> dtyson%anduin.org.uk@localhost (Dave Tyson) writes:
> >/dev/spi0 is defined which is a good start::
> >
> >[     1.000003] sun4ispi0 at simplebus1: SPI
> >[     1.000003] sun4ispi0: interrupting on GIC irq 42
> >[     1.000003] spi0 at sun4ispi0: SPI bus
> >
> >The board has the SPI mos1/miso/clk together with cs0 and cs1.
> >
> >Looking at spi(4) there is no mention of a way to control cs0/1 to select
> >devices so I guess this is down to using gpio commands to pull the
> >appropriate pin low.
> 
> The spi driver gets an address parameter that may control which cs line
> is asserted. It depends on the hardware if that is actually used.
> 
> On these devices, the SPI controller is multiplexed on GPIO pins. You
> need to activate the function. This can be done by providing the
> proper DTB file or overlay, it _could_ also be done with the gpio
> driver (selecting an alt mode), but the sunxi gpio driver doesn't
> support that.
> 
> >    command = 0  ;  /*we are not sending anything */
> >    spit.sit_addr =  0x00 ;
> >    spit.sit_send = &command ;
> 
> if you don't send anything, use NULL.
> 
> >The device just needs the register address sending and should return a
> >single byte with the contents.
> 
> Not sure what you want to control, but most devices require a
> read command to actually send data. The read command then usually
> includes the register address, sit_addr is not the register address
> but selects a slave device.

Thanks to the info - I hadn't realised the sit_addr selected the slave device 
- will have a look at the DTB file and look to see how things are wired up in 
the kernel.

Cheers,
Dave


Home | Main Index | Thread Index | Old Index