13
13
#define SJA1105_SIZE_SPI_TRANSFER_MAX \
14
14
(SJA1105_SIZE_SPI_MSG_HEADER + SJA1105_SIZE_SPI_MSG_MAXLEN)
15
15
16
- static int sja1105_spi_transfer (const struct sja1105_private * priv ,
17
- const void * tx , void * rx , int size )
18
- {
19
- struct spi_device * spi = priv -> spidev ;
20
- struct spi_transfer transfer = {
21
- .tx_buf = tx ,
22
- .rx_buf = rx ,
23
- .len = size ,
24
- };
25
- struct spi_message msg ;
26
- int rc ;
27
-
28
- if (size > SJA1105_SIZE_SPI_TRANSFER_MAX ) {
29
- dev_err (& spi -> dev , "SPI message (%d) longer than max of %d\n" ,
30
- size , SJA1105_SIZE_SPI_TRANSFER_MAX );
31
- return - EMSGSIZE ;
32
- }
33
-
34
- spi_message_init (& msg );
35
- spi_message_add_tail (& transfer , & msg );
36
-
37
- rc = spi_sync (spi , & msg );
38
- if (rc < 0 ) {
39
- dev_err (& spi -> dev , "SPI transfer failed: %d\n" , rc );
40
- return rc ;
41
- }
42
-
43
- return rc ;
44
- }
45
-
46
16
static void
47
17
sja1105_spi_message_pack (void * buf , const struct sja1105_spi_message * msg )
48
18
{
@@ -69,10 +39,17 @@ int sja1105_xfer_buf(const struct sja1105_private *priv,
69
39
sja1105_spi_rw_mode_t rw , u64 reg_addr ,
70
40
void * packed_buf , size_t size_bytes )
71
41
{
42
+ const int msg_len = size_bytes + SJA1105_SIZE_SPI_MSG_HEADER ;
72
43
u8 tx_buf [SJA1105_SIZE_SPI_TRANSFER_MAX ] = {0 };
73
44
u8 rx_buf [SJA1105_SIZE_SPI_TRANSFER_MAX ] = {0 };
74
- const int msg_len = size_bytes + SJA1105_SIZE_SPI_MSG_HEADER ;
45
+ struct spi_device * spi = priv -> spidev ;
75
46
struct sja1105_spi_message msg = {0 };
47
+ struct spi_transfer xfer = {
48
+ .tx_buf = tx_buf ,
49
+ .rx_buf = rx_buf ,
50
+ .len = msg_len ,
51
+ };
52
+ struct spi_message m ;
76
53
int rc ;
77
54
78
55
if (msg_len > SJA1105_SIZE_SPI_TRANSFER_MAX )
@@ -89,9 +66,14 @@ int sja1105_xfer_buf(const struct sja1105_private *priv,
89
66
memcpy (tx_buf + SJA1105_SIZE_SPI_MSG_HEADER ,
90
67
packed_buf , size_bytes );
91
68
92
- rc = sja1105_spi_transfer (priv , tx_buf , rx_buf , msg_len );
93
- if (rc < 0 )
69
+ spi_message_init (& m );
70
+ spi_message_add_tail (& xfer , & m );
71
+
72
+ rc = spi_sync (spi , & m );
73
+ if (rc < 0 ) {
74
+ dev_err (& spi -> dev , "SPI transfer failed: %d\n" , rc );
94
75
return rc ;
76
+ }
95
77
96
78
if (rw == SPI_READ )
97
79
memcpy (packed_buf , rx_buf + SJA1105_SIZE_SPI_MSG_HEADER ,
0 commit comments