aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/qualcomm/qca_7k.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/qualcomm/qca_7k.c')
-rw-r--r--drivers/net/ethernet/qualcomm/qca_7k.c76
1 files changed, 36 insertions, 40 deletions
diff --git a/drivers/net/ethernet/qualcomm/qca_7k.c b/drivers/net/ethernet/qualcomm/qca_7k.c
index ffe7a16bdfc8..6c8543fb90c0 100644
--- a/drivers/net/ethernet/qualcomm/qca_7k.c
+++ b/drivers/net/ethernet/qualcomm/qca_7k.c
@@ -45,34 +45,33 @@ qcaspi_read_register(struct qcaspi *qca, u16 reg, u16 *result)
45{ 45{
46 __be16 rx_data; 46 __be16 rx_data;
47 __be16 tx_data; 47 __be16 tx_data;
48 struct spi_transfer *transfer; 48 struct spi_transfer transfer[2];
49 struct spi_message *msg; 49 struct spi_message msg;
50 int ret; 50 int ret;
51 51
52 memset(transfer, 0, sizeof(transfer));
53
54 spi_message_init(&msg);
55
52 tx_data = cpu_to_be16(QCA7K_SPI_READ | QCA7K_SPI_INTERNAL | reg); 56 tx_data = cpu_to_be16(QCA7K_SPI_READ | QCA7K_SPI_INTERNAL | reg);
57 *result = 0;
58
59 transfer[0].tx_buf = &tx_data;
60 transfer[0].len = QCASPI_CMD_LEN;
61 transfer[1].rx_buf = &rx_data;
62 transfer[1].len = QCASPI_CMD_LEN;
63
64 spi_message_add_tail(&transfer[0], &msg);
53 65
54 if (qca->legacy_mode) { 66 if (qca->legacy_mode) {
55 msg = &qca->spi_msg1; 67 spi_sync(qca->spi_dev, &msg);
56 transfer = &qca->spi_xfer1; 68 spi_message_init(&msg);
57 transfer->tx_buf = &tx_data;
58 transfer->rx_buf = NULL;
59 transfer->len = QCASPI_CMD_LEN;
60 spi_sync(qca->spi_dev, msg);
61 } else {
62 msg = &qca->spi_msg2;
63 transfer = &qca->spi_xfer2[0];
64 transfer->tx_buf = &tx_data;
65 transfer->rx_buf = NULL;
66 transfer->len = QCASPI_CMD_LEN;
67 transfer = &qca->spi_xfer2[1];
68 } 69 }
69 transfer->tx_buf = NULL; 70 spi_message_add_tail(&transfer[1], &msg);
70 transfer->rx_buf = &rx_data; 71 ret = spi_sync(qca->spi_dev, &msg);
71 transfer->len = QCASPI_CMD_LEN;
72 ret = spi_sync(qca->spi_dev, msg);
73 72
74 if (!ret) 73 if (!ret)
75 ret = msg->status; 74 ret = msg.status;
76 75
77 if (ret) 76 if (ret)
78 qcaspi_spi_error(qca); 77 qcaspi_spi_error(qca);
@@ -86,35 +85,32 @@ int
86qcaspi_write_register(struct qcaspi *qca, u16 reg, u16 value) 85qcaspi_write_register(struct qcaspi *qca, u16 reg, u16 value)
87{ 86{
88 __be16 tx_data[2]; 87 __be16 tx_data[2];
89 struct spi_transfer *transfer; 88 struct spi_transfer transfer[2];
90 struct spi_message *msg; 89 struct spi_message msg;
91 int ret; 90 int ret;
92 91
92 memset(&transfer, 0, sizeof(transfer));
93
94 spi_message_init(&msg);
95
93 tx_data[0] = cpu_to_be16(QCA7K_SPI_WRITE | QCA7K_SPI_INTERNAL | reg); 96 tx_data[0] = cpu_to_be16(QCA7K_SPI_WRITE | QCA7K_SPI_INTERNAL | reg);
94 tx_data[1] = cpu_to_be16(value); 97 tx_data[1] = cpu_to_be16(value);
95 98
99 transfer[0].tx_buf = &tx_data[0];
100 transfer[0].len = QCASPI_CMD_LEN;
101 transfer[1].tx_buf = &tx_data[1];
102 transfer[1].len = QCASPI_CMD_LEN;
103
104 spi_message_add_tail(&transfer[0], &msg);
96 if (qca->legacy_mode) { 105 if (qca->legacy_mode) {
97 msg = &qca->spi_msg1; 106 spi_sync(qca->spi_dev, &msg);
98 transfer = &qca->spi_xfer1; 107 spi_message_init(&msg);
99 transfer->tx_buf = &tx_data[0];
100 transfer->rx_buf = NULL;
101 transfer->len = QCASPI_CMD_LEN;
102 spi_sync(qca->spi_dev, msg);
103 } else {
104 msg = &qca->spi_msg2;
105 transfer = &qca->spi_xfer2[0];
106 transfer->tx_buf = &tx_data[0];
107 transfer->rx_buf = NULL;
108 transfer->len = QCASPI_CMD_LEN;
109 transfer = &qca->spi_xfer2[1];
110 } 108 }
111 transfer->tx_buf = &tx_data[1]; 109 spi_message_add_tail(&transfer[1], &msg);
112 transfer->rx_buf = NULL; 110 ret = spi_sync(qca->spi_dev, &msg);
113 transfer->len = QCASPI_CMD_LEN;
114 ret = spi_sync(qca->spi_dev, msg);
115 111
116 if (!ret) 112 if (!ret)
117 ret = msg->status; 113 ret = msg.status;
118 114
119 if (ret) 115 if (ret)
120 qcaspi_spi_error(qca); 116 qcaspi_spi_error(qca);