Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Apr 2015 20:06:03 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Tom Jones <jones@sdf.org>
Cc:        "freebsd-embedded@freebsd.org" <freebsd-embedded@freebsd.org>
Subject:   Re: SPI User Space Interface
Message-ID:  <CAJ-VmokuB6vXV-uP7ezXqdifcDmCDzN3Txg9HWpsDHKqhE3wqQ@mail.gmail.com>
In-Reply-To: <20150426203344.GA27490@gmail.com>
References:  <20150426203344.GA27490@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hey, this is cool!

What can we do to spibus to make it better?



-adrian


On 26 April 2015 at 13:33, Tom Jones <jones@sdf.org> wrote:
> This atteched patch adds user space access to spi drivers. Access is possible
> via read, write and an ioctl call. I have tested this patch on a raspberry-pi B
> against an avr running a simple program and a small monochrome oled screen
> based on the ssd1306 display driver.
>
> The ioctl requires the use of two new structs. The spi_rdwr_data struct takes a
> number of spi_ioc_transfer structs, this is modeled on the iic driver. The
> spi_ioc_transfer struct is compatible with the linux spidev implementation.
>
> There is no support for ioctls to set spi device settings are there is in
> linux, this is due to the limited driver interface in spibus. Only the buffer
> and length options are used from the spi_ioc_transfer struct, this is from the
> lack of driver interface on spibus.
>
> struct spi_ioc_transfer {
>     void *tx_buf;
>     void *rx_buf;
>
>     uint32_t len;
>     uint32_t speed_hz;
>
>     uint16_t delay_usecs;
>     uint8_t  bits_per_word;
>     uint8_t  cs_change;
>     uint32_t pad;
> };
>
> struct spi_rdwr_data {
>     struct spi_ioc_transfer *msgs;
>     uint32_t nmsgs;
> };
>
> #define SPIRDWR _IOW('S', 1, struct spi_rdwr_data)
>
> I have only managed to test this code on one platform and against a limited
> number of spi devices. I think it needs more testing against real hardware, I
> don't have any lying around.
>
> --
> Tom
> @adventureloop
> adventurist.me
>
> :wq
>
> _______________________________________________
> freebsd-embedded@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-embedded
> To unsubscribe, send any mail to "freebsd-embedded-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmokuB6vXV-uP7ezXqdifcDmCDzN3Txg9HWpsDHKqhE3wqQ>