On Thu, 23 Jan 2014 09:03:28 -0800 (PST), vinicius...@gmail.com
<vinicius...@gmail.com> wrote:
> Em quinta-feira, 23 de janeiro de 2014 13h59min19s UTC-3, vinic...@gmail.com  
> escreveu:
> > Em terça-feira, 21 de janeiro de 2014 08h44min19s UTC-3, Tomas Novotny  
> > escreveu:
> > 
> > > Hi All,
> > 
> > > 
> > 
> > > 
> > 
> > > 
> > 
> > > I'm trying to use some SPI devices on A10s OLinuXino. It was flawless for
> > 
> > > 
> > 
> > > simple MCU driven by spidev (everything needed is defined in FEX). Now I'm
> > 
> > > 
> > 
> > > trying to connect external CAN over SPI (MCP2515).
> > 
> > > 
> > 
> > >   The mcp251x driver needs to pass oscillator frequency through the
> > 
> > > 
> > 
> > > mcp251x_platform_data structure. Is there any clean way how to do it on 
> > > 3.4
> > 
> > > 
> > 
> > > linux-sunxi? It seems that platform data for SPI board aren't passed by 
> > > sunxi
> > 
> > > 
> > 
> > > SPI driver.
> > 
> > > 
> > 
> > >   I'm using Debian image with custom built 3.4.61 linux-sunxi.
> > 
> > > 
> > 
> > >   Thanks to all,
> > 
> > > 
> > 
> > > 
> > 
> > > 
> > 
> > >   Tomas
> > 
> > 
> > 
> > You can change by yourself spi_sunxi.c, something like that:
> > 
> > 
> > 
> > diff --git a/drivers/spi/spi_sunxi.c b/drivers/spi/spi_sunxi.c
> > 
> > index a3792fd..2f0ab7c 100644
> > 
> > --- a/drivers/spi/spi_sunxi.c
> > 
> > +++ b/drivers/spi/spi_sunxi.c
> > 
> > @@ -28,6 +28,7 @@
> > 
> >  
> > 
> >  #include <linux/spi/spi.h>
> > 
> >  #include <linux/spi/spi_bitbang.h>
> > 
> > +#include <linux/can/platform/mcp251x.h>
> > 
> >  
> > 
> >  #include <asm/io.h>
> > 
> >  #include <plat/dma.h>
> > 
> > @@ -134,6 +135,10 @@ struct sunxi_spi {
> > 
> >     int cs_bitmap;/* cs0- 0x1; cs1-0x2, cs0&cs1-0x3. */
> > 
> >  };
> > 
> >  
> > 
> > +static struct mcp251x_platform_data mcp251x_info = {
> > 
> > +         .oscillator_frequency = 8000000,
> > 
> > +};
> > 
> > +
> 
> Sorry, something like that:
> 
> diff --git a/drivers/spi/spi_sunxi.c b/drivers/spi/spi_sunxi.c
> index a3792fd..2f0ab7c 100644
> --- a/drivers/spi/spi_sunxi.c
> +++ b/drivers/spi/spi_sunxi.c
> @@ -28,6 +28,7 @@
>  
>  #include <linux/spi/spi.h>
>  #include <linux/spi/spi_bitbang.h>
> +#include <linux/can/platform/mcp251x.h>
>  
>  #include <asm/io.h>
>  #include <plat/dma.h>
> @@ -134,6 +135,10 @@ struct sunxi_spi {
>       int cs_bitmap;/* cs0- 0x1; cs1-0x2, cs0&cs1-0x3. */
>  };
>  
> +static struct mcp251x_platform_data mcp251x_info = {
> +         .oscillator_frequency = 8000000,
> +};
> +
>  /* config chip select */
>  s32 aw_spi_set_cs(u32 chipselect, void *base_addr)
>  {
> @@ -1922,6 +1927,7 @@ int __devinit spi_sunxi_register_spidev(void)
>      {
>          board = &spi_boards[i];
>          sprintf(spi_board_name, "spi_board%d", i);
> +        board->platform_data = &mcp251x_info;
>          ret = script_parser_fetch(spi_board_name, "modalias", 
> (void*)board->modalias, sizeof(char*));
>          if(ret != SCRIPT_PARSER_OK) {
>              spi_msg("Get spi devices modalias failed\n");
> 

Hi,

yes, I know that there are these "dirty" ways how to do it. In fact I was
thinking about similar way as a last option. I will probably hardcode
oscillator frequency directly to the mcp251x driver if there is no clean way
how to pass platform data through FEX.
Thanks for your answer,

Tomas

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to