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.


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

2014-01-27 Thread Tomas Novotny
On Mon, 27 Jan 2014 08:42:51 -0800 (PST), vinicius...@gmail.com
vinicius...@gmail.com wrote:
 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.
 

Hi Vinicius,

finally the osc frequency was harcoded to mcp251x driver and the device is
now being initialized. I was just curious if there is some clean way.
Unfortunately mcp chip is not working yet as there is some problem
with communication over spi. I will check spi with some analyzer soon. But
this is different story...
Thanks 

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


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

2014-01-23 Thread Gustavo Zamboni

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.

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);



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


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

2014-01-23 Thread Tomas Novotny
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, 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,

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.


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

2014-01-23 Thread Tomas Novotny
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);
 
 


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


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

2014-01-23 Thread Gustavo Zamboni

I'm sorry, i didnt see you needed that.
you can use on of the script parse functions to get the oscilator 
frequency value from the fex.

Of course you will have to change the spi src as vinicius said.

Gustavo

Le 23/01/2014 21:24, Tomas Novotny a écrit :

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);





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