Re: [linux-sunxi] Re: Passing the platform data for SPI device

2014-01-27 Thread viniciusfre
Em quinta-feira, 23 de janeiro de 2014 17h24min27s UTC-3, Tomas Novotny  
escreveu:
 On Thu, 23 Jan 2014 19:11:32 +0100, Gustavo Zamboni
 
 gustavozamb...@gmail.com wrote:
 
 
 
 Hi Gustavo,
 
 
 
  Why dont you just add the device to the fex file ??
 
 
 
  activate your spix_para parameters
 
  
 
  and add something like:
 
  
 
  
 
  |[spi_devices]|
 
  spi_dev_num=1
 
  
 
  |[spi_board0]|
 
  |modalias| |= |||mcp251x
 
  |max_speed_hz| |= ||1200|
 
  |bus_num| |= ||1|
 
  |chip_select| |= ||0|
 
  |mode| |= ||3|
 
  |full_duplex| |= ||0|
 
  |manual_cs| |= ||0|
 
  
 
  
 
  With spidev it works well with modalias spidev.
 
 
 
 yes, this is exactly what I did. I was trying both spidev and mcp251x. There
 
 is no problem with spidev (it is currently working) but for mcp251x I need to
 
 pass (very simple) platform data with oscillator frequency. The mcp251x is
 
 being initialized during boot but it fails because of missing platform data.
 
   I don't know if there is some clean way how to pass platform data
 
 of the mcp251x driver. I think that FEX is not able to do that (there is no
 
 handling in sunxi spi).
 
 Thanks for you answer,
 
 
 
 Tomas
 
 
 
  Gustavo Zamboni
 
  
 
  
 
  
 
  
 
  Le 23/01/2014 18:03, vinicius...@gmail.com a écrit :
 
   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, cs0cs1-0x3. */
 
  
 
 };
 
  
 
 
 
  
 
   +static struct mcp251x_platform_data mcp251x_info = {
 
  
 
   + .oscillator_frequency = 800,
 
  
 
   +};
 
  
 
   +
 
   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, cs0cs1-0x3. */
 
 };
 
 
 
   +static struct mcp251x_platform_data mcp251x_info = {
 
   + .oscillator_frequency = 800,
 
   +};
 
   +
 
 /* 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 Tomas,

your fex is ok, now you just change spi_sunxi.c as suggested or the way you 
think best, that is enough.

-- 
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.


[linux-sunxi] Re: Passing the platform data for SPI device

2014-01-23 Thread viniciusfre
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, cs0cs1-0x3. */
 };
 
+static struct mcp251x_platform_data mcp251x_info = {
+ .oscillator_frequency = 800,
+};
+

-- 
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.