forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-09 244b2c5ca8b14627e4a17755e5922221e121c771
kernel/drivers/net/ethernet/qualcomm/qca_7k.c
....@@ -81,8 +81,8 @@
8181 return ret;
8282 }
8383
84
-int
85
-qcaspi_write_register(struct qcaspi *qca, u16 reg, u16 value)
84
+static int
85
+__qcaspi_write_register(struct qcaspi *qca, u16 reg, u16 value)
8686 {
8787 __be16 tx_data[2];
8888 struct spi_transfer transfer[2];
....@@ -117,3 +117,33 @@
117117
118118 return ret;
119119 }
120
+
121
+int
122
+qcaspi_write_register(struct qcaspi *qca, u16 reg, u16 value, int retry)
123
+{
124
+ int ret, i = 0;
125
+ u16 confirmed;
126
+
127
+ do {
128
+ ret = __qcaspi_write_register(qca, reg, value);
129
+ if (ret)
130
+ return ret;
131
+
132
+ if (!retry)
133
+ return 0;
134
+
135
+ ret = qcaspi_read_register(qca, reg, &confirmed);
136
+ if (ret)
137
+ return ret;
138
+
139
+ ret = confirmed != value;
140
+ if (!ret)
141
+ return 0;
142
+
143
+ i++;
144
+ qca->stats.write_verify_failed++;
145
+
146
+ } while (i <= retry);
147
+
148
+ return ret;
149
+}