OSDN Git Service

Merge "cnss2: Add support for genoa sdio"
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / drivers / net / ethernet / renesas / ravb_main.c
1 /* Renesas Ethernet AVB device driver
2  *
3  * Copyright (C) 2014-2019 Renesas Electronics Corporation
4  * Copyright (C) 2015 Renesas Solutions Corp.
5  * Copyright (C) 2015 Cogent Embedded, Inc. <source@cogentembedded.com>
6  *
7  * Based on the SuperH Ethernet driver
8  *
9  * This program is free software; you can redistribute it and/or modify it
10  * under the terms and conditions of the GNU General Public License version 2,
11  * as published by the Free Software Foundation.
12  */
13
14 #include <linux/cache.h>
15 #include <linux/clk.h>
16 #include <linux/delay.h>
17 #include <linux/dma-mapping.h>
18 #include <linux/err.h>
19 #include <linux/etherdevice.h>
20 #include <linux/ethtool.h>
21 #include <linux/if_vlan.h>
22 #include <linux/kernel.h>
23 #include <linux/list.h>
24 #include <linux/module.h>
25 #include <linux/net_tstamp.h>
26 #include <linux/of.h>
27 #include <linux/of_device.h>
28 #include <linux/of_irq.h>
29 #include <linux/of_mdio.h>
30 #include <linux/of_net.h>
31 #include <linux/pm_runtime.h>
32 #include <linux/slab.h>
33 #include <linux/spinlock.h>
34
35 #include "ravb.h"
36
37 #define RAVB_DEF_MSG_ENABLE \
38                 (NETIF_MSG_LINK   | \
39                  NETIF_MSG_TIMER  | \
40                  NETIF_MSG_RX_ERR | \
41                  NETIF_MSG_TX_ERR)
42
43 int ravb_wait(struct net_device *ndev, enum ravb_reg reg, u32 mask, u32 value)
44 {
45         int i;
46
47         for (i = 0; i < 10000; i++) {
48                 if ((ravb_read(ndev, reg) & mask) == value)
49                         return 0;
50                 udelay(10);
51         }
52         return -ETIMEDOUT;
53 }
54
55 static int ravb_config(struct net_device *ndev)
56 {
57         int error;
58
59         /* Set config mode */
60         ravb_write(ndev, (ravb_read(ndev, CCC) & ~CCC_OPC) | CCC_OPC_CONFIG,
61                    CCC);
62         /* Check if the operating mode is changed to the config mode */
63         error = ravb_wait(ndev, CSR, CSR_OPS, CSR_OPS_CONFIG);
64         if (error)
65                 netdev_err(ndev, "failed to switch device to config mode\n");
66
67         return error;
68 }
69
70 static void ravb_set_duplex(struct net_device *ndev)
71 {
72         struct ravb_private *priv = netdev_priv(ndev);
73         u32 ecmr = ravb_read(ndev, ECMR);
74
75         if (priv->duplex)       /* Full */
76                 ecmr |=  ECMR_DM;
77         else                    /* Half */
78                 ecmr &= ~ECMR_DM;
79         ravb_write(ndev, ecmr, ECMR);
80 }
81
82 static void ravb_set_rate(struct net_device *ndev)
83 {
84         struct ravb_private *priv = netdev_priv(ndev);
85
86         switch (priv->speed) {
87         case 100:               /* 100BASE */
88                 ravb_write(ndev, GECMR_SPEED_100, GECMR);
89                 break;
90         case 1000:              /* 1000BASE */
91                 ravb_write(ndev, GECMR_SPEED_1000, GECMR);
92                 break;
93         default:
94                 break;
95         }
96 }
97
98 static void ravb_set_buffer_align(struct sk_buff *skb)
99 {
100         u32 reserve = (unsigned long)skb->data & (RAVB_ALIGN - 1);
101
102         if (reserve)
103                 skb_reserve(skb, RAVB_ALIGN - reserve);
104 }
105
106 /* Get MAC address from the MAC address registers
107  *
108  * Ethernet AVB device doesn't have ROM for MAC address.
109  * This function gets the MAC address that was used by a bootloader.
110  */
111 static void ravb_read_mac_address(struct net_device *ndev, const u8 *mac)
112 {
113         if (mac) {
114                 ether_addr_copy(ndev->dev_addr, mac);
115         } else {
116                 ndev->dev_addr[0] = (ravb_read(ndev, MAHR) >> 24);
117                 ndev->dev_addr[1] = (ravb_read(ndev, MAHR) >> 16) & 0xFF;
118                 ndev->dev_addr[2] = (ravb_read(ndev, MAHR) >> 8) & 0xFF;
119                 ndev->dev_addr[3] = (ravb_read(ndev, MAHR) >> 0) & 0xFF;
120                 ndev->dev_addr[4] = (ravb_read(ndev, MALR) >> 8) & 0xFF;
121                 ndev->dev_addr[5] = (ravb_read(ndev, MALR) >> 0) & 0xFF;
122         }
123 }
124
125 static void ravb_mdio_ctrl(struct mdiobb_ctrl *ctrl, u32 mask, int set)
126 {
127         struct ravb_private *priv = container_of(ctrl, struct ravb_private,
128                                                  mdiobb);
129         u32 pir = ravb_read(priv->ndev, PIR);
130
131         if (set)
132                 pir |=  mask;
133         else
134                 pir &= ~mask;
135         ravb_write(priv->ndev, pir, PIR);
136 }
137
138 /* MDC pin control */
139 static void ravb_set_mdc(struct mdiobb_ctrl *ctrl, int level)
140 {
141         ravb_mdio_ctrl(ctrl, PIR_MDC, level);
142 }
143
144 /* Data I/O pin control */
145 static void ravb_set_mdio_dir(struct mdiobb_ctrl *ctrl, int output)
146 {
147         ravb_mdio_ctrl(ctrl, PIR_MMD, output);
148 }
149
150 /* Set data bit */
151 static void ravb_set_mdio_data(struct mdiobb_ctrl *ctrl, int value)
152 {
153         ravb_mdio_ctrl(ctrl, PIR_MDO, value);
154 }
155
156 /* Get data bit */
157 static int ravb_get_mdio_data(struct mdiobb_ctrl *ctrl)
158 {
159         struct ravb_private *priv = container_of(ctrl, struct ravb_private,
160                                                  mdiobb);
161
162         return (ravb_read(priv->ndev, PIR) & PIR_MDI) != 0;
163 }
164
165 /* MDIO bus control struct */
166 static struct mdiobb_ops bb_ops = {
167         .owner = THIS_MODULE,
168         .set_mdc = ravb_set_mdc,
169         .set_mdio_dir = ravb_set_mdio_dir,
170         .set_mdio_data = ravb_set_mdio_data,
171         .get_mdio_data = ravb_get_mdio_data,
172 };
173
174 /* Free TX skb function for AVB-IP */
175 static int ravb_tx_free(struct net_device *ndev, int q, bool free_txed_only)
176 {
177         struct ravb_private *priv = netdev_priv(ndev);
178         struct net_device_stats *stats = &priv->stats[q];
179         struct ravb_tx_desc *desc;
180         int free_num = 0;
181         int entry;
182         u32 size;
183
184         for (; priv->cur_tx[q] - priv->dirty_tx[q] > 0; priv->dirty_tx[q]++) {
185                 bool txed;
186
187                 entry = priv->dirty_tx[q] % (priv->num_tx_ring[q] *
188                                              NUM_TX_DESC);
189                 desc = &priv->tx_ring[q][entry];
190                 txed = desc->die_dt == DT_FEMPTY;
191                 if (free_txed_only && !txed)
192                         break;
193                 /* Descriptor type must be checked before all other reads */
194                 dma_rmb();
195                 size = le16_to_cpu(desc->ds_tagl) & TX_DS;
196                 /* Free the original skb. */
197                 if (priv->tx_skb[q][entry / NUM_TX_DESC]) {
198                         dma_unmap_single(ndev->dev.parent, le32_to_cpu(desc->dptr),
199                                          size, DMA_TO_DEVICE);
200                         /* Last packet descriptor? */
201                         if (entry % NUM_TX_DESC == NUM_TX_DESC - 1) {
202                                 entry /= NUM_TX_DESC;
203                                 dev_kfree_skb_any(priv->tx_skb[q][entry]);
204                                 priv->tx_skb[q][entry] = NULL;
205                                 if (txed)
206                                         stats->tx_packets++;
207                         }
208                         free_num++;
209                 }
210                 if (txed)
211                         stats->tx_bytes += size;
212                 desc->die_dt = DT_EEMPTY;
213         }
214         return free_num;
215 }
216
217 /* Free skb's and DMA buffers for Ethernet AVB */
218 static void ravb_ring_free(struct net_device *ndev, int q)
219 {
220         struct ravb_private *priv = netdev_priv(ndev);
221         int ring_size;
222         int i;
223
224         if (priv->rx_ring[q]) {
225                 for (i = 0; i < priv->num_rx_ring[q]; i++) {
226                         struct ravb_ex_rx_desc *desc = &priv->rx_ring[q][i];
227
228                         if (!dma_mapping_error(ndev->dev.parent,
229                                                le32_to_cpu(desc->dptr)))
230                                 dma_unmap_single(ndev->dev.parent,
231                                                  le32_to_cpu(desc->dptr),
232                                                  PKT_BUF_SZ,
233                                                  DMA_FROM_DEVICE);
234                 }
235                 ring_size = sizeof(struct ravb_ex_rx_desc) *
236                             (priv->num_rx_ring[q] + 1);
237                 dma_free_coherent(ndev->dev.parent, ring_size, priv->rx_ring[q],
238                                   priv->rx_desc_dma[q]);
239                 priv->rx_ring[q] = NULL;
240         }
241
242         if (priv->tx_ring[q]) {
243                 ravb_tx_free(ndev, q, false);
244
245                 ring_size = sizeof(struct ravb_tx_desc) *
246                             (priv->num_tx_ring[q] * NUM_TX_DESC + 1);
247                 dma_free_coherent(ndev->dev.parent, ring_size, priv->tx_ring[q],
248                                   priv->tx_desc_dma[q]);
249                 priv->tx_ring[q] = NULL;
250         }
251
252         /* Free RX skb ringbuffer */
253         if (priv->rx_skb[q]) {
254                 for (i = 0; i < priv->num_rx_ring[q]; i++)
255                         dev_kfree_skb(priv->rx_skb[q][i]);
256         }
257         kfree(priv->rx_skb[q]);
258         priv->rx_skb[q] = NULL;
259
260         /* Free aligned TX buffers */
261         kfree(priv->tx_align[q]);
262         priv->tx_align[q] = NULL;
263
264         /* Free TX skb ringbuffer.
265          * SKBs are freed by ravb_tx_free() call above.
266          */
267         kfree(priv->tx_skb[q]);
268         priv->tx_skb[q] = NULL;
269 }
270
271 /* Format skb and descriptor buffer for Ethernet AVB */
272 static void ravb_ring_format(struct net_device *ndev, int q)
273 {
274         struct ravb_private *priv = netdev_priv(ndev);
275         struct ravb_ex_rx_desc *rx_desc;
276         struct ravb_tx_desc *tx_desc;
277         struct ravb_desc *desc;
278         int rx_ring_size = sizeof(*rx_desc) * priv->num_rx_ring[q];
279         int tx_ring_size = sizeof(*tx_desc) * priv->num_tx_ring[q] *
280                            NUM_TX_DESC;
281         dma_addr_t dma_addr;
282         int i;
283
284         priv->cur_rx[q] = 0;
285         priv->cur_tx[q] = 0;
286         priv->dirty_rx[q] = 0;
287         priv->dirty_tx[q] = 0;
288
289         memset(priv->rx_ring[q], 0, rx_ring_size);
290         /* Build RX ring buffer */
291         for (i = 0; i < priv->num_rx_ring[q]; i++) {
292                 /* RX descriptor */
293                 rx_desc = &priv->rx_ring[q][i];
294                 /* The size of the buffer should be on 16-byte boundary. */
295                 rx_desc->ds_cc = cpu_to_le16(ALIGN(PKT_BUF_SZ, 16));
296                 dma_addr = dma_map_single(ndev->dev.parent, priv->rx_skb[q][i]->data,
297                                           ALIGN(PKT_BUF_SZ, 16),
298                                           DMA_FROM_DEVICE);
299                 /* We just set the data size to 0 for a failed mapping which
300                  * should prevent DMA from happening...
301                  */
302                 if (dma_mapping_error(ndev->dev.parent, dma_addr))
303                         rx_desc->ds_cc = cpu_to_le16(0);
304                 rx_desc->dptr = cpu_to_le32(dma_addr);
305                 rx_desc->die_dt = DT_FEMPTY;
306         }
307         rx_desc = &priv->rx_ring[q][i];
308         rx_desc->dptr = cpu_to_le32((u32)priv->rx_desc_dma[q]);
309         rx_desc->die_dt = DT_LINKFIX; /* type */
310
311         memset(priv->tx_ring[q], 0, tx_ring_size);
312         /* Build TX ring buffer */
313         for (i = 0, tx_desc = priv->tx_ring[q]; i < priv->num_tx_ring[q];
314              i++, tx_desc++) {
315                 tx_desc->die_dt = DT_EEMPTY;
316                 tx_desc++;
317                 tx_desc->die_dt = DT_EEMPTY;
318         }
319         tx_desc->dptr = cpu_to_le32((u32)priv->tx_desc_dma[q]);
320         tx_desc->die_dt = DT_LINKFIX; /* type */
321
322         /* RX descriptor base address for best effort */
323         desc = &priv->desc_bat[RX_QUEUE_OFFSET + q];
324         desc->die_dt = DT_LINKFIX; /* type */
325         desc->dptr = cpu_to_le32((u32)priv->rx_desc_dma[q]);
326
327         /* TX descriptor base address for best effort */
328         desc = &priv->desc_bat[q];
329         desc->die_dt = DT_LINKFIX; /* type */
330         desc->dptr = cpu_to_le32((u32)priv->tx_desc_dma[q]);
331 }
332
333 /* Init skb and descriptor buffer for Ethernet AVB */
334 static int ravb_ring_init(struct net_device *ndev, int q)
335 {
336         struct ravb_private *priv = netdev_priv(ndev);
337         struct sk_buff *skb;
338         int ring_size;
339         int i;
340
341         /* Allocate RX and TX skb rings */
342         priv->rx_skb[q] = kcalloc(priv->num_rx_ring[q],
343                                   sizeof(*priv->rx_skb[q]), GFP_KERNEL);
344         priv->tx_skb[q] = kcalloc(priv->num_tx_ring[q],
345                                   sizeof(*priv->tx_skb[q]), GFP_KERNEL);
346         if (!priv->rx_skb[q] || !priv->tx_skb[q])
347                 goto error;
348
349         for (i = 0; i < priv->num_rx_ring[q]; i++) {
350                 skb = netdev_alloc_skb(ndev, PKT_BUF_SZ + RAVB_ALIGN - 1);
351                 if (!skb)
352                         goto error;
353                 ravb_set_buffer_align(skb);
354                 priv->rx_skb[q][i] = skb;
355         }
356
357         /* Allocate rings for the aligned buffers */
358         priv->tx_align[q] = kmalloc(DPTR_ALIGN * priv->num_tx_ring[q] +
359                                     DPTR_ALIGN - 1, GFP_KERNEL);
360         if (!priv->tx_align[q])
361                 goto error;
362
363         /* Allocate all RX descriptors. */
364         ring_size = sizeof(struct ravb_ex_rx_desc) * (priv->num_rx_ring[q] + 1);
365         priv->rx_ring[q] = dma_alloc_coherent(ndev->dev.parent, ring_size,
366                                               &priv->rx_desc_dma[q],
367                                               GFP_KERNEL);
368         if (!priv->rx_ring[q])
369                 goto error;
370
371         priv->dirty_rx[q] = 0;
372
373         /* Allocate all TX descriptors. */
374         ring_size = sizeof(struct ravb_tx_desc) *
375                     (priv->num_tx_ring[q] * NUM_TX_DESC + 1);
376         priv->tx_ring[q] = dma_alloc_coherent(ndev->dev.parent, ring_size,
377                                               &priv->tx_desc_dma[q],
378                                               GFP_KERNEL);
379         if (!priv->tx_ring[q])
380                 goto error;
381
382         return 0;
383
384 error:
385         ravb_ring_free(ndev, q);
386
387         return -ENOMEM;
388 }
389
390 /* E-MAC init function */
391 static void ravb_emac_init(struct net_device *ndev)
392 {
393         struct ravb_private *priv = netdev_priv(ndev);
394         u32 ecmr;
395
396         /* Receive frame limit set register */
397         ravb_write(ndev, ndev->mtu + ETH_HLEN + VLAN_HLEN + ETH_FCS_LEN, RFLR);
398
399         /* PAUSE prohibition */
400         ecmr =  ravb_read(ndev, ECMR);
401         ecmr &= ECMR_DM;
402         ecmr |= ECMR_ZPF | (priv->duplex ? ECMR_DM : 0) | ECMR_TE | ECMR_RE;
403         ravb_write(ndev, ecmr, ECMR);
404
405         ravb_set_rate(ndev);
406
407         /* Set MAC address */
408         ravb_write(ndev,
409                    (ndev->dev_addr[0] << 24) | (ndev->dev_addr[1] << 16) |
410                    (ndev->dev_addr[2] << 8)  | (ndev->dev_addr[3]), MAHR);
411         ravb_write(ndev,
412                    (ndev->dev_addr[4] << 8)  | (ndev->dev_addr[5]), MALR);
413
414         ravb_write(ndev, 1, MPR);
415
416         /* E-MAC status register clear */
417         ravb_write(ndev, ECSR_ICD | ECSR_MPD, ECSR);
418
419         /* E-MAC interrupt enable register */
420         ravb_write(ndev, ECSIPR_ICDIP | ECSIPR_MPDIP | ECSIPR_LCHNGIP, ECSIPR);
421 }
422
423 /* Device init function for Ethernet AVB */
424 static int ravb_dmac_init(struct net_device *ndev)
425 {
426         int error;
427
428         /* Set CONFIG mode */
429         error = ravb_config(ndev);
430         if (error)
431                 return error;
432
433         error = ravb_ring_init(ndev, RAVB_BE);
434         if (error)
435                 return error;
436         error = ravb_ring_init(ndev, RAVB_NC);
437         if (error) {
438                 ravb_ring_free(ndev, RAVB_BE);
439                 return error;
440         }
441
442         /* Descriptor format */
443         ravb_ring_format(ndev, RAVB_BE);
444         ravb_ring_format(ndev, RAVB_NC);
445
446 #if defined(__LITTLE_ENDIAN)
447         ravb_write(ndev, ravb_read(ndev, CCC) & ~CCC_BOC, CCC);
448 #else
449         ravb_write(ndev, ravb_read(ndev, CCC) | CCC_BOC, CCC);
450 #endif
451
452         /* Set AVB RX */
453         ravb_write(ndev, RCR_EFFS | RCR_ENCF | RCR_ETS0 | 0x18000000, RCR);
454
455         /* Set FIFO size */
456         ravb_write(ndev, TGC_TQP_AVBMODE1 | 0x00112200, TGC);
457
458         /* Timestamp enable */
459         ravb_write(ndev, TCCR_TFEN, TCCR);
460
461         /* Interrupt enable: */
462         /* Frame receive */
463         ravb_write(ndev, RIC0_FRE0 | RIC0_FRE1, RIC0);
464         /* Receive FIFO full error, descriptor empty */
465         ravb_write(ndev, RIC2_QFE0 | RIC2_QFE1 | RIC2_RFFE, RIC2);
466         /* Frame transmitted, timestamp FIFO updated */
467         ravb_write(ndev, TIC_FTE0 | TIC_FTE1 | TIC_TFUE, TIC);
468
469         /* Setting the control will start the AVB-DMAC process. */
470         ravb_write(ndev, (ravb_read(ndev, CCC) & ~CCC_OPC) | CCC_OPC_OPERATION,
471                    CCC);
472
473         return 0;
474 }
475
476 static void ravb_get_tx_tstamp(struct net_device *ndev)
477 {
478         struct ravb_private *priv = netdev_priv(ndev);
479         struct ravb_tstamp_skb *ts_skb, *ts_skb2;
480         struct skb_shared_hwtstamps shhwtstamps;
481         struct sk_buff *skb;
482         struct timespec64 ts;
483         u16 tag, tfa_tag;
484         int count;
485         u32 tfa2;
486
487         count = (ravb_read(ndev, TSR) & TSR_TFFL) >> 8;
488         while (count--) {
489                 tfa2 = ravb_read(ndev, TFA2);
490                 tfa_tag = (tfa2 & TFA2_TST) >> 16;
491                 ts.tv_nsec = (u64)ravb_read(ndev, TFA0);
492                 ts.tv_sec = ((u64)(tfa2 & TFA2_TSV) << 32) |
493                             ravb_read(ndev, TFA1);
494                 memset(&shhwtstamps, 0, sizeof(shhwtstamps));
495                 shhwtstamps.hwtstamp = timespec64_to_ktime(ts);
496                 list_for_each_entry_safe(ts_skb, ts_skb2, &priv->ts_skb_list,
497                                          list) {
498                         skb = ts_skb->skb;
499                         tag = ts_skb->tag;
500                         list_del(&ts_skb->list);
501                         kfree(ts_skb);
502                         if (tag == tfa_tag) {
503                                 skb_tstamp_tx(skb, &shhwtstamps);
504                                 dev_consume_skb_any(skb);
505                                 break;
506                         } else {
507                                 dev_kfree_skb_any(skb);
508                         }
509                 }
510                 ravb_write(ndev, ravb_read(ndev, TCCR) | TCCR_TFR, TCCR);
511         }
512 }
513
514 /* Packet receive function for Ethernet AVB */
515 static bool ravb_rx(struct net_device *ndev, int *quota, int q)
516 {
517         struct ravb_private *priv = netdev_priv(ndev);
518         int entry = priv->cur_rx[q] % priv->num_rx_ring[q];
519         int boguscnt = (priv->dirty_rx[q] + priv->num_rx_ring[q]) -
520                         priv->cur_rx[q];
521         struct net_device_stats *stats = &priv->stats[q];
522         struct ravb_ex_rx_desc *desc;
523         struct sk_buff *skb;
524         dma_addr_t dma_addr;
525         struct timespec64 ts;
526         u8  desc_status;
527         u16 pkt_len;
528         int limit;
529
530         boguscnt = min(boguscnt, *quota);
531         limit = boguscnt;
532         desc = &priv->rx_ring[q][entry];
533         while (desc->die_dt != DT_FEMPTY) {
534                 /* Descriptor type must be checked before all other reads */
535                 dma_rmb();
536                 desc_status = desc->msc;
537                 pkt_len = le16_to_cpu(desc->ds_cc) & RX_DS;
538
539                 if (--boguscnt < 0)
540                         break;
541
542                 /* We use 0-byte descriptors to mark the DMA mapping errors */
543                 if (!pkt_len)
544                         continue;
545
546                 if (desc_status & MSC_MC)
547                         stats->multicast++;
548
549                 if (desc_status & (MSC_CRC | MSC_RFE | MSC_RTSF | MSC_RTLF |
550                                    MSC_CEEF)) {
551                         stats->rx_errors++;
552                         if (desc_status & MSC_CRC)
553                                 stats->rx_crc_errors++;
554                         if (desc_status & MSC_RFE)
555                                 stats->rx_frame_errors++;
556                         if (desc_status & (MSC_RTLF | MSC_RTSF))
557                                 stats->rx_length_errors++;
558                         if (desc_status & MSC_CEEF)
559                                 stats->rx_missed_errors++;
560                 } else {
561                         u32 get_ts = priv->tstamp_rx_ctrl & RAVB_RXTSTAMP_TYPE;
562
563                         skb = priv->rx_skb[q][entry];
564                         priv->rx_skb[q][entry] = NULL;
565                         dma_unmap_single(ndev->dev.parent, le32_to_cpu(desc->dptr),
566                                          ALIGN(PKT_BUF_SZ, 16),
567                                          DMA_FROM_DEVICE);
568                         get_ts &= (q == RAVB_NC) ?
569                                         RAVB_RXTSTAMP_TYPE_V2_L2_EVENT :
570                                         ~RAVB_RXTSTAMP_TYPE_V2_L2_EVENT;
571                         if (get_ts) {
572                                 struct skb_shared_hwtstamps *shhwtstamps;
573
574                                 shhwtstamps = skb_hwtstamps(skb);
575                                 memset(shhwtstamps, 0, sizeof(*shhwtstamps));
576                                 ts.tv_sec = ((u64) le16_to_cpu(desc->ts_sh) <<
577                                              32) | le32_to_cpu(desc->ts_sl);
578                                 ts.tv_nsec = le32_to_cpu(desc->ts_n);
579                                 shhwtstamps->hwtstamp = timespec64_to_ktime(ts);
580                         }
581                         skb_put(skb, pkt_len);
582                         skb->protocol = eth_type_trans(skb, ndev);
583                         napi_gro_receive(&priv->napi[q], skb);
584                         stats->rx_packets++;
585                         stats->rx_bytes += pkt_len;
586                 }
587
588                 entry = (++priv->cur_rx[q]) % priv->num_rx_ring[q];
589                 desc = &priv->rx_ring[q][entry];
590         }
591
592         /* Refill the RX ring buffers. */
593         for (; priv->cur_rx[q] - priv->dirty_rx[q] > 0; priv->dirty_rx[q]++) {
594                 entry = priv->dirty_rx[q] % priv->num_rx_ring[q];
595                 desc = &priv->rx_ring[q][entry];
596                 /* The size of the buffer should be on 16-byte boundary. */
597                 desc->ds_cc = cpu_to_le16(ALIGN(PKT_BUF_SZ, 16));
598
599                 if (!priv->rx_skb[q][entry]) {
600                         skb = netdev_alloc_skb(ndev,
601                                                PKT_BUF_SZ + RAVB_ALIGN - 1);
602                         if (!skb)
603                                 break;  /* Better luck next round. */
604                         ravb_set_buffer_align(skb);
605                         dma_addr = dma_map_single(ndev->dev.parent, skb->data,
606                                                   le16_to_cpu(desc->ds_cc),
607                                                   DMA_FROM_DEVICE);
608                         skb_checksum_none_assert(skb);
609                         /* We just set the data size to 0 for a failed mapping
610                          * which should prevent DMA  from happening...
611                          */
612                         if (dma_mapping_error(ndev->dev.parent, dma_addr))
613                                 desc->ds_cc = cpu_to_le16(0);
614                         desc->dptr = cpu_to_le32(dma_addr);
615                         priv->rx_skb[q][entry] = skb;
616                 }
617                 /* Descriptor type must be set after all the above writes */
618                 dma_wmb();
619                 desc->die_dt = DT_FEMPTY;
620         }
621
622         *quota -= limit - (++boguscnt);
623
624         return boguscnt <= 0;
625 }
626
627 static void ravb_rcv_snd_disable(struct net_device *ndev)
628 {
629         /* Disable TX and RX */
630         ravb_write(ndev, ravb_read(ndev, ECMR) & ~(ECMR_RE | ECMR_TE), ECMR);
631 }
632
633 static void ravb_rcv_snd_enable(struct net_device *ndev)
634 {
635         /* Enable TX and RX */
636         ravb_write(ndev, ravb_read(ndev, ECMR) | ECMR_RE | ECMR_TE, ECMR);
637 }
638
639 /* function for waiting dma process finished */
640 static int ravb_stop_dma(struct net_device *ndev)
641 {
642         int error;
643
644         /* Wait for stopping the hardware TX process */
645         error = ravb_wait(ndev, TCCR,
646                           TCCR_TSRQ0 | TCCR_TSRQ1 | TCCR_TSRQ2 | TCCR_TSRQ3, 0);
647         if (error)
648                 return error;
649
650         error = ravb_wait(ndev, CSR, CSR_TPO0 | CSR_TPO1 | CSR_TPO2 | CSR_TPO3,
651                           0);
652         if (error)
653                 return error;
654
655         /* Stop the E-MAC's RX/TX processes. */
656         ravb_rcv_snd_disable(ndev);
657
658         /* Wait for stopping the RX DMA process */
659         error = ravb_wait(ndev, CSR, CSR_RPO, 0);
660         if (error)
661                 return error;
662
663         /* Stop AVB-DMAC process */
664         return ravb_config(ndev);
665 }
666
667 /* E-MAC interrupt handler */
668 static void ravb_emac_interrupt(struct net_device *ndev)
669 {
670         struct ravb_private *priv = netdev_priv(ndev);
671         u32 ecsr, psr;
672
673         ecsr = ravb_read(ndev, ECSR);
674         ravb_write(ndev, ecsr, ECSR);   /* clear interrupt */
675         if (ecsr & ECSR_ICD)
676                 ndev->stats.tx_carrier_errors++;
677         if (ecsr & ECSR_LCHNG) {
678                 /* Link changed */
679                 if (priv->no_avb_link)
680                         return;
681                 psr = ravb_read(ndev, PSR);
682                 if (priv->avb_link_active_low)
683                         psr ^= PSR_LMON;
684                 if (!(psr & PSR_LMON)) {
685                         /* DIsable RX and TX */
686                         ravb_rcv_snd_disable(ndev);
687                 } else {
688                         /* Enable RX and TX */
689                         ravb_rcv_snd_enable(ndev);
690                 }
691         }
692 }
693
694 /* Error interrupt handler */
695 static void ravb_error_interrupt(struct net_device *ndev)
696 {
697         struct ravb_private *priv = netdev_priv(ndev);
698         u32 eis, ris2;
699
700         eis = ravb_read(ndev, EIS);
701         ravb_write(ndev, ~EIS_QFS, EIS);
702         if (eis & EIS_QFS) {
703                 ris2 = ravb_read(ndev, RIS2);
704                 ravb_write(ndev, ~(RIS2_QFF0 | RIS2_RFFF), RIS2);
705
706                 /* Receive Descriptor Empty int */
707                 if (ris2 & RIS2_QFF0)
708                         priv->stats[RAVB_BE].rx_over_errors++;
709
710                     /* Receive Descriptor Empty int */
711                 if (ris2 & RIS2_QFF1)
712                         priv->stats[RAVB_NC].rx_over_errors++;
713
714                 /* Receive FIFO Overflow int */
715                 if (ris2 & RIS2_RFFF)
716                         priv->rx_fifo_errors++;
717         }
718 }
719
720 static irqreturn_t ravb_interrupt(int irq, void *dev_id)
721 {
722         struct net_device *ndev = dev_id;
723         struct ravb_private *priv = netdev_priv(ndev);
724         irqreturn_t result = IRQ_NONE;
725         u32 iss;
726
727         spin_lock(&priv->lock);
728         /* Get interrupt status */
729         iss = ravb_read(ndev, ISS);
730
731         /* Received and transmitted interrupts */
732         if (iss & (ISS_FRS | ISS_FTS | ISS_TFUS)) {
733                 u32 ris0 = ravb_read(ndev, RIS0);
734                 u32 ric0 = ravb_read(ndev, RIC0);
735                 u32 tis  = ravb_read(ndev, TIS);
736                 u32 tic  = ravb_read(ndev, TIC);
737                 int q;
738
739                 /* Timestamp updated */
740                 if (tis & TIS_TFUF) {
741                         ravb_write(ndev, ~TIS_TFUF, TIS);
742                         ravb_get_tx_tstamp(ndev);
743                         result = IRQ_HANDLED;
744                 }
745
746                 /* Network control and best effort queue RX/TX */
747                 for (q = RAVB_NC; q >= RAVB_BE; q--) {
748                         if (((ris0 & ric0) & BIT(q)) ||
749                             ((tis  & tic)  & BIT(q))) {
750                                 if (napi_schedule_prep(&priv->napi[q])) {
751                                         /* Mask RX and TX interrupts */
752                                         ric0 &= ~BIT(q);
753                                         tic &= ~BIT(q);
754                                         ravb_write(ndev, ric0, RIC0);
755                                         ravb_write(ndev, tic, TIC);
756                                         __napi_schedule(&priv->napi[q]);
757                                 } else {
758                                         netdev_warn(ndev,
759                                                     "ignoring interrupt, rx status 0x%08x, rx mask 0x%08x,\n",
760                                                     ris0, ric0);
761                                         netdev_warn(ndev,
762                                                     "                    tx status 0x%08x, tx mask 0x%08x.\n",
763                                                     tis, tic);
764                                 }
765                                 result = IRQ_HANDLED;
766                         }
767                 }
768         }
769
770         /* E-MAC status summary */
771         if (iss & ISS_MS) {
772                 ravb_emac_interrupt(ndev);
773                 result = IRQ_HANDLED;
774         }
775
776         /* Error status summary */
777         if (iss & ISS_ES) {
778                 ravb_error_interrupt(ndev);
779                 result = IRQ_HANDLED;
780         }
781
782         if (iss & ISS_CGIS)
783                 result = ravb_ptp_interrupt(ndev);
784
785         mmiowb();
786         spin_unlock(&priv->lock);
787         return result;
788 }
789
790 static int ravb_poll(struct napi_struct *napi, int budget)
791 {
792         struct net_device *ndev = napi->dev;
793         struct ravb_private *priv = netdev_priv(ndev);
794         unsigned long flags;
795         int q = napi - priv->napi;
796         int mask = BIT(q);
797         int quota = budget;
798         u32 ris0, tis;
799
800         for (;;) {
801                 tis = ravb_read(ndev, TIS);
802                 ris0 = ravb_read(ndev, RIS0);
803                 if (!((ris0 & mask) || (tis & mask)))
804                         break;
805
806                 /* Processing RX Descriptor Ring */
807                 if (ris0 & mask) {
808                         /* Clear RX interrupt */
809                         ravb_write(ndev, ~mask, RIS0);
810                         if (ravb_rx(ndev, &quota, q))
811                                 goto out;
812                 }
813                 /* Processing TX Descriptor Ring */
814                 if (tis & mask) {
815                         spin_lock_irqsave(&priv->lock, flags);
816                         /* Clear TX interrupt */
817                         ravb_write(ndev, ~mask, TIS);
818                         ravb_tx_free(ndev, q, true);
819                         netif_wake_subqueue(ndev, q);
820                         mmiowb();
821                         spin_unlock_irqrestore(&priv->lock, flags);
822                 }
823         }
824
825         napi_complete(napi);
826
827         /* Re-enable RX/TX interrupts */
828         spin_lock_irqsave(&priv->lock, flags);
829         ravb_write(ndev, ravb_read(ndev, RIC0) | mask, RIC0);
830         ravb_write(ndev, ravb_read(ndev, TIC)  | mask,  TIC);
831         mmiowb();
832         spin_unlock_irqrestore(&priv->lock, flags);
833
834         /* Receive error message handling */
835         priv->rx_over_errors =  priv->stats[RAVB_BE].rx_over_errors;
836         priv->rx_over_errors += priv->stats[RAVB_NC].rx_over_errors;
837         if (priv->rx_over_errors != ndev->stats.rx_over_errors)
838                 ndev->stats.rx_over_errors = priv->rx_over_errors;
839         if (priv->rx_fifo_errors != ndev->stats.rx_fifo_errors)
840                 ndev->stats.rx_fifo_errors = priv->rx_fifo_errors;
841 out:
842         return budget - quota;
843 }
844
845 /* PHY state control function */
846 static void ravb_adjust_link(struct net_device *ndev)
847 {
848         struct ravb_private *priv = netdev_priv(ndev);
849         struct phy_device *phydev = priv->phydev;
850         bool new_state = false;
851
852         if (phydev->link) {
853                 if (phydev->duplex != priv->duplex) {
854                         new_state = true;
855                         priv->duplex = phydev->duplex;
856                         ravb_set_duplex(ndev);
857                 }
858
859                 if (phydev->speed != priv->speed) {
860                         new_state = true;
861                         priv->speed = phydev->speed;
862                         ravb_set_rate(ndev);
863                 }
864                 if (!priv->link) {
865                         ravb_write(ndev, ravb_read(ndev, ECMR) & ~ECMR_TXF,
866                                    ECMR);
867                         new_state = true;
868                         priv->link = phydev->link;
869                         if (priv->no_avb_link)
870                                 ravb_rcv_snd_enable(ndev);
871                 }
872         } else if (priv->link) {
873                 new_state = true;
874                 priv->link = 0;
875                 priv->speed = 0;
876                 priv->duplex = -1;
877                 if (priv->no_avb_link)
878                         ravb_rcv_snd_disable(ndev);
879         }
880
881         if (new_state && netif_msg_link(priv))
882                 phy_print_status(phydev);
883 }
884
885 /* PHY init function */
886 static int ravb_phy_init(struct net_device *ndev)
887 {
888         struct device_node *np = ndev->dev.parent->of_node;
889         struct ravb_private *priv = netdev_priv(ndev);
890         struct phy_device *phydev;
891         struct device_node *pn;
892
893         priv->link = 0;
894         priv->speed = 0;
895         priv->duplex = -1;
896
897         /* Try connecting to PHY */
898         pn = of_parse_phandle(np, "phy-handle", 0);
899         phydev = of_phy_connect(ndev, pn, ravb_adjust_link, 0,
900                                 priv->phy_interface);
901         if (!phydev) {
902                 netdev_err(ndev, "failed to connect PHY\n");
903                 return -ENOENT;
904         }
905
906         /* This driver only support 10/100Mbit speeds on Gen3
907          * at this time.
908          */
909         if (priv->chip_id == RCAR_GEN3) {
910                 int err;
911
912                 err = phy_set_max_speed(phydev, SPEED_100);
913                 if (err) {
914                         netdev_err(ndev, "failed to limit PHY to 100Mbit/s\n");
915                         phy_disconnect(phydev);
916                         return err;
917                 }
918
919                 netdev_info(ndev, "limited PHY to 100Mbit/s\n");
920         }
921
922         /* 10BASE is not supported */
923         phydev->supported &= ~PHY_10BT_FEATURES;
924
925         netdev_info(ndev, "attached PHY %d (IRQ %d) to driver %s\n",
926                     phydev->addr, phydev->irq, phydev->drv->name);
927
928         priv->phydev = phydev;
929
930         return 0;
931 }
932
933 /* PHY control start function */
934 static int ravb_phy_start(struct net_device *ndev)
935 {
936         struct ravb_private *priv = netdev_priv(ndev);
937         int error;
938
939         error = ravb_phy_init(ndev);
940         if (error)
941                 return error;
942
943         phy_start(priv->phydev);
944
945         return 0;
946 }
947
948 static int ravb_get_settings(struct net_device *ndev, struct ethtool_cmd *ecmd)
949 {
950         struct ravb_private *priv = netdev_priv(ndev);
951         int error = -ENODEV;
952         unsigned long flags;
953
954         if (priv->phydev) {
955                 spin_lock_irqsave(&priv->lock, flags);
956                 error = phy_ethtool_gset(priv->phydev, ecmd);
957                 spin_unlock_irqrestore(&priv->lock, flags);
958         }
959
960         return error;
961 }
962
963 static int ravb_set_settings(struct net_device *ndev, struct ethtool_cmd *ecmd)
964 {
965         struct ravb_private *priv = netdev_priv(ndev);
966         unsigned long flags;
967         int error;
968
969         if (!priv->phydev)
970                 return -ENODEV;
971
972         spin_lock_irqsave(&priv->lock, flags);
973
974         /* Disable TX and RX */
975         ravb_rcv_snd_disable(ndev);
976
977         error = phy_ethtool_sset(priv->phydev, ecmd);
978         if (error)
979                 goto error_exit;
980
981         if (ecmd->duplex == DUPLEX_FULL)
982                 priv->duplex = 1;
983         else
984                 priv->duplex = 0;
985
986         ravb_set_duplex(ndev);
987
988 error_exit:
989         mdelay(1);
990
991         /* Enable TX and RX */
992         ravb_rcv_snd_enable(ndev);
993
994         mmiowb();
995         spin_unlock_irqrestore(&priv->lock, flags);
996
997         return error;
998 }
999
1000 static int ravb_nway_reset(struct net_device *ndev)
1001 {
1002         struct ravb_private *priv = netdev_priv(ndev);
1003         int error = -ENODEV;
1004         unsigned long flags;
1005
1006         if (priv->phydev) {
1007                 spin_lock_irqsave(&priv->lock, flags);
1008                 error = phy_start_aneg(priv->phydev);
1009                 spin_unlock_irqrestore(&priv->lock, flags);
1010         }
1011
1012         return error;
1013 }
1014
1015 static u32 ravb_get_msglevel(struct net_device *ndev)
1016 {
1017         struct ravb_private *priv = netdev_priv(ndev);
1018
1019         return priv->msg_enable;
1020 }
1021
1022 static void ravb_set_msglevel(struct net_device *ndev, u32 value)
1023 {
1024         struct ravb_private *priv = netdev_priv(ndev);
1025
1026         priv->msg_enable = value;
1027 }
1028
1029 static const char ravb_gstrings_stats[][ETH_GSTRING_LEN] = {
1030         "rx_queue_0_current",
1031         "tx_queue_0_current",
1032         "rx_queue_0_dirty",
1033         "tx_queue_0_dirty",
1034         "rx_queue_0_packets",
1035         "tx_queue_0_packets",
1036         "rx_queue_0_bytes",
1037         "tx_queue_0_bytes",
1038         "rx_queue_0_mcast_packets",
1039         "rx_queue_0_errors",
1040         "rx_queue_0_crc_errors",
1041         "rx_queue_0_frame_errors",
1042         "rx_queue_0_length_errors",
1043         "rx_queue_0_missed_errors",
1044         "rx_queue_0_over_errors",
1045
1046         "rx_queue_1_current",
1047         "tx_queue_1_current",
1048         "rx_queue_1_dirty",
1049         "tx_queue_1_dirty",
1050         "rx_queue_1_packets",
1051         "tx_queue_1_packets",
1052         "rx_queue_1_bytes",
1053         "tx_queue_1_bytes",
1054         "rx_queue_1_mcast_packets",
1055         "rx_queue_1_errors",
1056         "rx_queue_1_crc_errors",
1057         "rx_queue_1_frame_errors",
1058         "rx_queue_1_length_errors",
1059         "rx_queue_1_missed_errors",
1060         "rx_queue_1_over_errors",
1061 };
1062
1063 #define RAVB_STATS_LEN  ARRAY_SIZE(ravb_gstrings_stats)
1064
1065 static int ravb_get_sset_count(struct net_device *netdev, int sset)
1066 {
1067         switch (sset) {
1068         case ETH_SS_STATS:
1069                 return RAVB_STATS_LEN;
1070         default:
1071                 return -EOPNOTSUPP;
1072         }
1073 }
1074
1075 static void ravb_get_ethtool_stats(struct net_device *ndev,
1076                                    struct ethtool_stats *stats, u64 *data)
1077 {
1078         struct ravb_private *priv = netdev_priv(ndev);
1079         int i = 0;
1080         int q;
1081
1082         /* Device-specific stats */
1083         for (q = RAVB_BE; q < NUM_RX_QUEUE; q++) {
1084                 struct net_device_stats *stats = &priv->stats[q];
1085
1086                 data[i++] = priv->cur_rx[q];
1087                 data[i++] = priv->cur_tx[q];
1088                 data[i++] = priv->dirty_rx[q];
1089                 data[i++] = priv->dirty_tx[q];
1090                 data[i++] = stats->rx_packets;
1091                 data[i++] = stats->tx_packets;
1092                 data[i++] = stats->rx_bytes;
1093                 data[i++] = stats->tx_bytes;
1094                 data[i++] = stats->multicast;
1095                 data[i++] = stats->rx_errors;
1096                 data[i++] = stats->rx_crc_errors;
1097                 data[i++] = stats->rx_frame_errors;
1098                 data[i++] = stats->rx_length_errors;
1099                 data[i++] = stats->rx_missed_errors;
1100                 data[i++] = stats->rx_over_errors;
1101         }
1102 }
1103
1104 static void ravb_get_strings(struct net_device *ndev, u32 stringset, u8 *data)
1105 {
1106         switch (stringset) {
1107         case ETH_SS_STATS:
1108                 memcpy(data, *ravb_gstrings_stats, sizeof(ravb_gstrings_stats));
1109                 break;
1110         }
1111 }
1112
1113 static void ravb_get_ringparam(struct net_device *ndev,
1114                                struct ethtool_ringparam *ring)
1115 {
1116         struct ravb_private *priv = netdev_priv(ndev);
1117
1118         ring->rx_max_pending = BE_RX_RING_MAX;
1119         ring->tx_max_pending = BE_TX_RING_MAX;
1120         ring->rx_pending = priv->num_rx_ring[RAVB_BE];
1121         ring->tx_pending = priv->num_tx_ring[RAVB_BE];
1122 }
1123
1124 static int ravb_set_ringparam(struct net_device *ndev,
1125                               struct ethtool_ringparam *ring)
1126 {
1127         struct ravb_private *priv = netdev_priv(ndev);
1128         int error;
1129
1130         if (ring->tx_pending > BE_TX_RING_MAX ||
1131             ring->rx_pending > BE_RX_RING_MAX ||
1132             ring->tx_pending < BE_TX_RING_MIN ||
1133             ring->rx_pending < BE_RX_RING_MIN)
1134                 return -EINVAL;
1135         if (ring->rx_mini_pending || ring->rx_jumbo_pending)
1136                 return -EINVAL;
1137
1138         if (netif_running(ndev)) {
1139                 netif_device_detach(ndev);
1140                 /* Stop PTP Clock driver */
1141                 ravb_ptp_stop(ndev);
1142                 /* Wait for DMA stopping */
1143                 error = ravb_stop_dma(ndev);
1144                 if (error) {
1145                         netdev_err(ndev,
1146                                    "cannot set ringparam! Any AVB processes are still running?\n");
1147                         return error;
1148                 }
1149                 synchronize_irq(ndev->irq);
1150
1151                 /* Free all the skb's in the RX queue and the DMA buffers. */
1152                 ravb_ring_free(ndev, RAVB_BE);
1153                 ravb_ring_free(ndev, RAVB_NC);
1154         }
1155
1156         /* Set new parameters */
1157         priv->num_rx_ring[RAVB_BE] = ring->rx_pending;
1158         priv->num_tx_ring[RAVB_BE] = ring->tx_pending;
1159
1160         if (netif_running(ndev)) {
1161                 error = ravb_dmac_init(ndev);
1162                 if (error) {
1163                         netdev_err(ndev,
1164                                    "%s: ravb_dmac_init() failed, error %d\n",
1165                                    __func__, error);
1166                         return error;
1167                 }
1168
1169                 ravb_emac_init(ndev);
1170
1171                 /* Initialise PTP Clock driver */
1172                 ravb_ptp_init(ndev, priv->pdev);
1173
1174                 netif_device_attach(ndev);
1175         }
1176
1177         return 0;
1178 }
1179
1180 static int ravb_get_ts_info(struct net_device *ndev,
1181                             struct ethtool_ts_info *info)
1182 {
1183         struct ravb_private *priv = netdev_priv(ndev);
1184
1185         info->so_timestamping =
1186                 SOF_TIMESTAMPING_TX_SOFTWARE |
1187                 SOF_TIMESTAMPING_RX_SOFTWARE |
1188                 SOF_TIMESTAMPING_SOFTWARE |
1189                 SOF_TIMESTAMPING_TX_HARDWARE |
1190                 SOF_TIMESTAMPING_RX_HARDWARE |
1191                 SOF_TIMESTAMPING_RAW_HARDWARE;
1192         info->tx_types = (1 << HWTSTAMP_TX_OFF) | (1 << HWTSTAMP_TX_ON);
1193         info->rx_filters =
1194                 (1 << HWTSTAMP_FILTER_NONE) |
1195                 (1 << HWTSTAMP_FILTER_PTP_V2_L2_EVENT) |
1196                 (1 << HWTSTAMP_FILTER_ALL);
1197         info->phc_index = ptp_clock_index(priv->ptp.clock);
1198
1199         return 0;
1200 }
1201
1202 static const struct ethtool_ops ravb_ethtool_ops = {
1203         .get_settings           = ravb_get_settings,
1204         .set_settings           = ravb_set_settings,
1205         .nway_reset             = ravb_nway_reset,
1206         .get_msglevel           = ravb_get_msglevel,
1207         .set_msglevel           = ravb_set_msglevel,
1208         .get_link               = ethtool_op_get_link,
1209         .get_strings            = ravb_get_strings,
1210         .get_ethtool_stats      = ravb_get_ethtool_stats,
1211         .get_sset_count         = ravb_get_sset_count,
1212         .get_ringparam          = ravb_get_ringparam,
1213         .set_ringparam          = ravb_set_ringparam,
1214         .get_ts_info            = ravb_get_ts_info,
1215 };
1216
1217 /* Network device open function for Ethernet AVB */
1218 static int ravb_open(struct net_device *ndev)
1219 {
1220         struct ravb_private *priv = netdev_priv(ndev);
1221         int error;
1222
1223         napi_enable(&priv->napi[RAVB_BE]);
1224         napi_enable(&priv->napi[RAVB_NC]);
1225
1226         error = request_irq(ndev->irq, ravb_interrupt, IRQF_SHARED, ndev->name,
1227                             ndev);
1228         if (error) {
1229                 netdev_err(ndev, "cannot request IRQ\n");
1230                 goto out_napi_off;
1231         }
1232
1233         if (priv->chip_id == RCAR_GEN3) {
1234                 error = request_irq(priv->emac_irq, ravb_interrupt,
1235                                     IRQF_SHARED, ndev->name, ndev);
1236                 if (error) {
1237                         netdev_err(ndev, "cannot request IRQ\n");
1238                         goto out_free_irq;
1239                 }
1240         }
1241
1242         /* Device init */
1243         error = ravb_dmac_init(ndev);
1244         if (error)
1245                 goto out_free_irq2;
1246         ravb_emac_init(ndev);
1247
1248         /* Initialise PTP Clock driver */
1249         ravb_ptp_init(ndev, priv->pdev);
1250
1251         netif_tx_start_all_queues(ndev);
1252
1253         /* PHY control start */
1254         error = ravb_phy_start(ndev);
1255         if (error)
1256                 goto out_ptp_stop;
1257
1258         return 0;
1259
1260 out_ptp_stop:
1261         /* Stop PTP Clock driver */
1262         ravb_ptp_stop(ndev);
1263 out_free_irq2:
1264         if (priv->chip_id == RCAR_GEN3)
1265                 free_irq(priv->emac_irq, ndev);
1266 out_free_irq:
1267         free_irq(ndev->irq, ndev);
1268 out_napi_off:
1269         napi_disable(&priv->napi[RAVB_NC]);
1270         napi_disable(&priv->napi[RAVB_BE]);
1271         return error;
1272 }
1273
1274 /* Timeout function for Ethernet AVB */
1275 static void ravb_tx_timeout(struct net_device *ndev)
1276 {
1277         struct ravb_private *priv = netdev_priv(ndev);
1278
1279         netif_err(priv, tx_err, ndev,
1280                   "transmit timed out, status %08x, resetting...\n",
1281                   ravb_read(ndev, ISS));
1282
1283         /* tx_errors count up */
1284         ndev->stats.tx_errors++;
1285
1286         schedule_work(&priv->work);
1287 }
1288
1289 static void ravb_tx_timeout_work(struct work_struct *work)
1290 {
1291         struct ravb_private *priv = container_of(work, struct ravb_private,
1292                                                  work);
1293         struct net_device *ndev = priv->ndev;
1294
1295         netif_tx_stop_all_queues(ndev);
1296
1297         /* Stop PTP Clock driver */
1298         ravb_ptp_stop(ndev);
1299
1300         /* Wait for DMA stopping */
1301         ravb_stop_dma(ndev);
1302
1303         ravb_ring_free(ndev, RAVB_BE);
1304         ravb_ring_free(ndev, RAVB_NC);
1305
1306         /* Device init */
1307         ravb_dmac_init(ndev);
1308         ravb_emac_init(ndev);
1309
1310         /* Initialise PTP Clock driver */
1311         ravb_ptp_init(ndev, priv->pdev);
1312
1313         netif_tx_start_all_queues(ndev);
1314 }
1315
1316 /* Packet transmit function for Ethernet AVB */
1317 static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev)
1318 {
1319         struct ravb_private *priv = netdev_priv(ndev);
1320         u16 q = skb_get_queue_mapping(skb);
1321         struct ravb_tstamp_skb *ts_skb;
1322         struct ravb_tx_desc *desc;
1323         unsigned long flags;
1324         u32 dma_addr;
1325         void *buffer;
1326         u32 entry;
1327         u32 len;
1328
1329         spin_lock_irqsave(&priv->lock, flags);
1330         if (priv->cur_tx[q] - priv->dirty_tx[q] > (priv->num_tx_ring[q] - 1) *
1331             NUM_TX_DESC) {
1332                 netif_err(priv, tx_queued, ndev,
1333                           "still transmitting with the full ring!\n");
1334                 netif_stop_subqueue(ndev, q);
1335                 spin_unlock_irqrestore(&priv->lock, flags);
1336                 return NETDEV_TX_BUSY;
1337         }
1338         entry = priv->cur_tx[q] % (priv->num_tx_ring[q] * NUM_TX_DESC);
1339         priv->tx_skb[q][entry / NUM_TX_DESC] = skb;
1340
1341         if (skb_put_padto(skb, ETH_ZLEN))
1342                 goto drop;
1343
1344         buffer = PTR_ALIGN(priv->tx_align[q], DPTR_ALIGN) +
1345                  entry / NUM_TX_DESC * DPTR_ALIGN;
1346         len = PTR_ALIGN(skb->data, DPTR_ALIGN) - skb->data;
1347         /* Zero length DMA descriptors are problematic as they seem to
1348          * terminate DMA transfers. Avoid them by simply using a length of
1349          * DPTR_ALIGN (4) when skb data is aligned to DPTR_ALIGN.
1350          *
1351          * As skb is guaranteed to have at least ETH_ZLEN (60) bytes of
1352          * data by the call to skb_put_padto() above this is safe with
1353          * respect to both the length of the first DMA descriptor (len)
1354          * overflowing the available data and the length of the second DMA
1355          * descriptor (skb->len - len) being negative.
1356          */
1357         if (len == 0)
1358                 len = DPTR_ALIGN;
1359
1360         memcpy(buffer, skb->data, len);
1361         dma_addr = dma_map_single(ndev->dev.parent, buffer, len, DMA_TO_DEVICE);
1362         if (dma_mapping_error(ndev->dev.parent, dma_addr))
1363                 goto drop;
1364
1365         desc = &priv->tx_ring[q][entry];
1366         desc->ds_tagl = cpu_to_le16(len);
1367         desc->dptr = cpu_to_le32(dma_addr);
1368
1369         buffer = skb->data + len;
1370         len = skb->len - len;
1371         dma_addr = dma_map_single(ndev->dev.parent, buffer, len, DMA_TO_DEVICE);
1372         if (dma_mapping_error(ndev->dev.parent, dma_addr))
1373                 goto unmap;
1374
1375         desc++;
1376         desc->ds_tagl = cpu_to_le16(len);
1377         desc->dptr = cpu_to_le32(dma_addr);
1378
1379         /* TX timestamp required */
1380         if (q == RAVB_NC) {
1381                 ts_skb = kmalloc(sizeof(*ts_skb), GFP_ATOMIC);
1382                 if (!ts_skb) {
1383                         desc--;
1384                         dma_unmap_single(ndev->dev.parent, dma_addr, len,
1385                                          DMA_TO_DEVICE);
1386                         goto unmap;
1387                 }
1388                 ts_skb->skb = skb_get(skb);
1389                 ts_skb->tag = priv->ts_skb_tag++;
1390                 priv->ts_skb_tag &= 0x3ff;
1391                 list_add_tail(&ts_skb->list, &priv->ts_skb_list);
1392
1393                 /* TAG and timestamp required flag */
1394                 skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
1395                 skb_tx_timestamp(skb);
1396                 desc->tagh_tsr = (ts_skb->tag >> 4) | TX_TSR;
1397                 desc->ds_tagl |= le16_to_cpu(ts_skb->tag << 12);
1398         }
1399
1400         /* Descriptor type must be set after all the above writes */
1401         dma_wmb();
1402         desc->die_dt = DT_FEND;
1403         desc--;
1404         desc->die_dt = DT_FSTART;
1405
1406         ravb_write(ndev, ravb_read(ndev, TCCR) | (TCCR_TSRQ0 << q), TCCR);
1407
1408         priv->cur_tx[q] += NUM_TX_DESC;
1409         if (priv->cur_tx[q] - priv->dirty_tx[q] >
1410             (priv->num_tx_ring[q] - 1) * NUM_TX_DESC &&
1411             !ravb_tx_free(ndev, q, true))
1412                 netif_stop_subqueue(ndev, q);
1413
1414 exit:
1415         mmiowb();
1416         spin_unlock_irqrestore(&priv->lock, flags);
1417         return NETDEV_TX_OK;
1418
1419 unmap:
1420         dma_unmap_single(ndev->dev.parent, le32_to_cpu(desc->dptr),
1421                          le16_to_cpu(desc->ds_tagl), DMA_TO_DEVICE);
1422 drop:
1423         dev_kfree_skb_any(skb);
1424         priv->tx_skb[q][entry / NUM_TX_DESC] = NULL;
1425         goto exit;
1426 }
1427
1428 static u16 ravb_select_queue(struct net_device *ndev, struct sk_buff *skb,
1429                              void *accel_priv, select_queue_fallback_t fallback)
1430 {
1431         /* If skb needs TX timestamp, it is handled in network control queue */
1432         return (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) ? RAVB_NC :
1433                                                                RAVB_BE;
1434
1435 }
1436
1437 static struct net_device_stats *ravb_get_stats(struct net_device *ndev)
1438 {
1439         struct ravb_private *priv = netdev_priv(ndev);
1440         struct net_device_stats *nstats, *stats0, *stats1;
1441
1442         nstats = &ndev->stats;
1443         stats0 = &priv->stats[RAVB_BE];
1444         stats1 = &priv->stats[RAVB_NC];
1445
1446         nstats->tx_dropped += ravb_read(ndev, TROCR);
1447         ravb_write(ndev, 0, TROCR);     /* (write clear) */
1448         nstats->collisions += ravb_read(ndev, CDCR);
1449         ravb_write(ndev, 0, CDCR);      /* (write clear) */
1450         nstats->tx_carrier_errors += ravb_read(ndev, LCCR);
1451         ravb_write(ndev, 0, LCCR);      /* (write clear) */
1452
1453         nstats->tx_carrier_errors += ravb_read(ndev, CERCR);
1454         ravb_write(ndev, 0, CERCR);     /* (write clear) */
1455         nstats->tx_carrier_errors += ravb_read(ndev, CEECR);
1456         ravb_write(ndev, 0, CEECR);     /* (write clear) */
1457
1458         nstats->rx_packets = stats0->rx_packets + stats1->rx_packets;
1459         nstats->tx_packets = stats0->tx_packets + stats1->tx_packets;
1460         nstats->rx_bytes = stats0->rx_bytes + stats1->rx_bytes;
1461         nstats->tx_bytes = stats0->tx_bytes + stats1->tx_bytes;
1462         nstats->multicast = stats0->multicast + stats1->multicast;
1463         nstats->rx_errors = stats0->rx_errors + stats1->rx_errors;
1464         nstats->rx_crc_errors = stats0->rx_crc_errors + stats1->rx_crc_errors;
1465         nstats->rx_frame_errors =
1466                 stats0->rx_frame_errors + stats1->rx_frame_errors;
1467         nstats->rx_length_errors =
1468                 stats0->rx_length_errors + stats1->rx_length_errors;
1469         nstats->rx_missed_errors =
1470                 stats0->rx_missed_errors + stats1->rx_missed_errors;
1471         nstats->rx_over_errors =
1472                 stats0->rx_over_errors + stats1->rx_over_errors;
1473
1474         return nstats;
1475 }
1476
1477 /* Update promiscuous bit */
1478 static void ravb_set_rx_mode(struct net_device *ndev)
1479 {
1480         struct ravb_private *priv = netdev_priv(ndev);
1481         unsigned long flags;
1482         u32 ecmr;
1483
1484         spin_lock_irqsave(&priv->lock, flags);
1485         ecmr = ravb_read(ndev, ECMR);
1486         if (ndev->flags & IFF_PROMISC)
1487                 ecmr |=  ECMR_PRM;
1488         else
1489                 ecmr &= ~ECMR_PRM;
1490         ravb_write(ndev, ecmr, ECMR);
1491         mmiowb();
1492         spin_unlock_irqrestore(&priv->lock, flags);
1493 }
1494
1495 /* Device close function for Ethernet AVB */
1496 static int ravb_close(struct net_device *ndev)
1497 {
1498         struct ravb_private *priv = netdev_priv(ndev);
1499         struct ravb_tstamp_skb *ts_skb, *ts_skb2;
1500
1501         netif_tx_stop_all_queues(ndev);
1502
1503         /* Disable interrupts by clearing the interrupt masks. */
1504         ravb_write(ndev, 0, RIC0);
1505         ravb_write(ndev, 0, RIC1);
1506         ravb_write(ndev, 0, RIC2);
1507         ravb_write(ndev, 0, TIC);
1508
1509         /* Stop PTP Clock driver */
1510         ravb_ptp_stop(ndev);
1511
1512         /* Set the config mode to stop the AVB-DMAC's processes */
1513         if (ravb_stop_dma(ndev) < 0)
1514                 netdev_err(ndev,
1515                            "device will be stopped after h/w processes are done.\n");
1516
1517         /* Clear the timestamp list */
1518         list_for_each_entry_safe(ts_skb, ts_skb2, &priv->ts_skb_list, list) {
1519                 list_del(&ts_skb->list);
1520                 kfree_skb(ts_skb->skb);
1521                 kfree(ts_skb);
1522         }
1523
1524         /* PHY disconnect */
1525         if (priv->phydev) {
1526                 phy_stop(priv->phydev);
1527                 phy_disconnect(priv->phydev);
1528                 priv->phydev = NULL;
1529         }
1530
1531         free_irq(ndev->irq, ndev);
1532
1533         napi_disable(&priv->napi[RAVB_NC]);
1534         napi_disable(&priv->napi[RAVB_BE]);
1535
1536         /* Free all the skb's in the RX queue and the DMA buffers. */
1537         ravb_ring_free(ndev, RAVB_BE);
1538         ravb_ring_free(ndev, RAVB_NC);
1539
1540         return 0;
1541 }
1542
1543 static int ravb_hwtstamp_get(struct net_device *ndev, struct ifreq *req)
1544 {
1545         struct ravb_private *priv = netdev_priv(ndev);
1546         struct hwtstamp_config config;
1547
1548         config.flags = 0;
1549         config.tx_type = priv->tstamp_tx_ctrl ? HWTSTAMP_TX_ON :
1550                                                 HWTSTAMP_TX_OFF;
1551         if (priv->tstamp_rx_ctrl & RAVB_RXTSTAMP_TYPE_V2_L2_EVENT)
1552                 config.rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
1553         else if (priv->tstamp_rx_ctrl & RAVB_RXTSTAMP_TYPE_ALL)
1554                 config.rx_filter = HWTSTAMP_FILTER_ALL;
1555         else
1556                 config.rx_filter = HWTSTAMP_FILTER_NONE;
1557
1558         return copy_to_user(req->ifr_data, &config, sizeof(config)) ?
1559                 -EFAULT : 0;
1560 }
1561
1562 /* Control hardware time stamping */
1563 static int ravb_hwtstamp_set(struct net_device *ndev, struct ifreq *req)
1564 {
1565         struct ravb_private *priv = netdev_priv(ndev);
1566         struct hwtstamp_config config;
1567         u32 tstamp_rx_ctrl = RAVB_RXTSTAMP_ENABLED;
1568         u32 tstamp_tx_ctrl;
1569
1570         if (copy_from_user(&config, req->ifr_data, sizeof(config)))
1571                 return -EFAULT;
1572
1573         /* Reserved for future extensions */
1574         if (config.flags)
1575                 return -EINVAL;
1576
1577         switch (config.tx_type) {
1578         case HWTSTAMP_TX_OFF:
1579                 tstamp_tx_ctrl = 0;
1580                 break;
1581         case HWTSTAMP_TX_ON:
1582                 tstamp_tx_ctrl = RAVB_TXTSTAMP_ENABLED;
1583                 break;
1584         default:
1585                 return -ERANGE;
1586         }
1587
1588         switch (config.rx_filter) {
1589         case HWTSTAMP_FILTER_NONE:
1590                 tstamp_rx_ctrl = 0;
1591                 break;
1592         case HWTSTAMP_FILTER_PTP_V2_L2_EVENT:
1593                 tstamp_rx_ctrl |= RAVB_RXTSTAMP_TYPE_V2_L2_EVENT;
1594                 break;
1595         default:
1596                 config.rx_filter = HWTSTAMP_FILTER_ALL;
1597                 tstamp_rx_ctrl |= RAVB_RXTSTAMP_TYPE_ALL;
1598         }
1599
1600         priv->tstamp_tx_ctrl = tstamp_tx_ctrl;
1601         priv->tstamp_rx_ctrl = tstamp_rx_ctrl;
1602
1603         return copy_to_user(req->ifr_data, &config, sizeof(config)) ?
1604                 -EFAULT : 0;
1605 }
1606
1607 /* ioctl to device function */
1608 static int ravb_do_ioctl(struct net_device *ndev, struct ifreq *req, int cmd)
1609 {
1610         struct ravb_private *priv = netdev_priv(ndev);
1611         struct phy_device *phydev = priv->phydev;
1612
1613         if (!netif_running(ndev))
1614                 return -EINVAL;
1615
1616         if (!phydev)
1617                 return -ENODEV;
1618
1619         switch (cmd) {
1620         case SIOCGHWTSTAMP:
1621                 return ravb_hwtstamp_get(ndev, req);
1622         case SIOCSHWTSTAMP:
1623                 return ravb_hwtstamp_set(ndev, req);
1624         }
1625
1626         return phy_mii_ioctl(phydev, req, cmd);
1627 }
1628
1629 static const struct net_device_ops ravb_netdev_ops = {
1630         .ndo_open               = ravb_open,
1631         .ndo_stop               = ravb_close,
1632         .ndo_start_xmit         = ravb_start_xmit,
1633         .ndo_select_queue       = ravb_select_queue,
1634         .ndo_get_stats          = ravb_get_stats,
1635         .ndo_set_rx_mode        = ravb_set_rx_mode,
1636         .ndo_tx_timeout         = ravb_tx_timeout,
1637         .ndo_do_ioctl           = ravb_do_ioctl,
1638         .ndo_validate_addr      = eth_validate_addr,
1639         .ndo_set_mac_address    = eth_mac_addr,
1640         .ndo_change_mtu         = eth_change_mtu,
1641 };
1642
1643 /* MDIO bus init function */
1644 static int ravb_mdio_init(struct ravb_private *priv)
1645 {
1646         struct platform_device *pdev = priv->pdev;
1647         struct device *dev = &pdev->dev;
1648         int error;
1649
1650         /* Bitbang init */
1651         priv->mdiobb.ops = &bb_ops;
1652
1653         /* MII controller setting */
1654         priv->mii_bus = alloc_mdio_bitbang(&priv->mdiobb);
1655         if (!priv->mii_bus)
1656                 return -ENOMEM;
1657
1658         /* Hook up MII support for ethtool */
1659         priv->mii_bus->name = "ravb_mii";
1660         priv->mii_bus->parent = dev;
1661         snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
1662                  pdev->name, pdev->id);
1663
1664         /* Register MDIO bus */
1665         error = of_mdiobus_register(priv->mii_bus, dev->of_node);
1666         if (error)
1667                 goto out_free_bus;
1668
1669         return 0;
1670
1671 out_free_bus:
1672         free_mdio_bitbang(priv->mii_bus);
1673         return error;
1674 }
1675
1676 /* MDIO bus release function */
1677 static int ravb_mdio_release(struct ravb_private *priv)
1678 {
1679         /* Unregister mdio bus */
1680         mdiobus_unregister(priv->mii_bus);
1681
1682         /* Free bitbang info */
1683         free_mdio_bitbang(priv->mii_bus);
1684
1685         return 0;
1686 }
1687
1688 static const struct of_device_id ravb_match_table[] = {
1689         { .compatible = "renesas,etheravb-r8a7790", .data = (void *)RCAR_GEN2 },
1690         { .compatible = "renesas,etheravb-r8a7794", .data = (void *)RCAR_GEN2 },
1691         { .compatible = "renesas,etheravb-r8a7795", .data = (void *)RCAR_GEN3 },
1692         { }
1693 };
1694 MODULE_DEVICE_TABLE(of, ravb_match_table);
1695
1696 static int ravb_probe(struct platform_device *pdev)
1697 {
1698         struct device_node *np = pdev->dev.of_node;
1699         const struct of_device_id *match;
1700         struct ravb_private *priv;
1701         enum ravb_chip_id chip_id;
1702         struct net_device *ndev;
1703         int error, irq, q;
1704         struct resource *res;
1705
1706         if (!np) {
1707                 dev_err(&pdev->dev,
1708                         "this driver is required to be instantiated from device tree\n");
1709                 return -EINVAL;
1710         }
1711
1712         /* Get base address */
1713         res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1714         if (!res) {
1715                 dev_err(&pdev->dev, "invalid resource\n");
1716                 return -EINVAL;
1717         }
1718
1719         ndev = alloc_etherdev_mqs(sizeof(struct ravb_private),
1720                                   NUM_TX_QUEUE, NUM_RX_QUEUE);
1721         if (!ndev)
1722                 return -ENOMEM;
1723
1724         pm_runtime_enable(&pdev->dev);
1725         pm_runtime_get_sync(&pdev->dev);
1726
1727         /* The Ether-specific entries in the device structure. */
1728         ndev->base_addr = res->start;
1729         ndev->dma = -1;
1730
1731         match = of_match_device(of_match_ptr(ravb_match_table), &pdev->dev);
1732         chip_id = (enum ravb_chip_id)match->data;
1733
1734         if (chip_id == RCAR_GEN3)
1735                 irq = platform_get_irq_byname(pdev, "ch22");
1736         else
1737                 irq = platform_get_irq(pdev, 0);
1738         if (irq < 0) {
1739                 error = irq;
1740                 goto out_release;
1741         }
1742         ndev->irq = irq;
1743
1744         SET_NETDEV_DEV(ndev, &pdev->dev);
1745
1746         priv = netdev_priv(ndev);
1747         priv->ndev = ndev;
1748         priv->pdev = pdev;
1749         priv->num_tx_ring[RAVB_BE] = BE_TX_RING_SIZE;
1750         priv->num_rx_ring[RAVB_BE] = BE_RX_RING_SIZE;
1751         priv->num_tx_ring[RAVB_NC] = NC_TX_RING_SIZE;
1752         priv->num_rx_ring[RAVB_NC] = NC_RX_RING_SIZE;
1753         priv->addr = devm_ioremap_resource(&pdev->dev, res);
1754         if (IS_ERR(priv->addr)) {
1755                 error = PTR_ERR(priv->addr);
1756                 goto out_release;
1757         }
1758
1759         spin_lock_init(&priv->lock);
1760         INIT_WORK(&priv->work, ravb_tx_timeout_work);
1761
1762         priv->phy_interface = of_get_phy_mode(np);
1763
1764         priv->no_avb_link = of_property_read_bool(np, "renesas,no-ether-link");
1765         priv->avb_link_active_low =
1766                 of_property_read_bool(np, "renesas,ether-link-active-low");
1767
1768         if (chip_id == RCAR_GEN3) {
1769                 irq = platform_get_irq_byname(pdev, "ch24");
1770                 if (irq < 0) {
1771                         error = irq;
1772                         goto out_release;
1773                 }
1774                 priv->emac_irq = irq;
1775         }
1776
1777         priv->chip_id = chip_id;
1778
1779         /* Set function */
1780         ndev->netdev_ops = &ravb_netdev_ops;
1781         ndev->ethtool_ops = &ravb_ethtool_ops;
1782
1783         /* Set AVB config mode */
1784         ravb_write(ndev, (ravb_read(ndev, CCC) & ~CCC_OPC) | CCC_OPC_CONFIG,
1785                    CCC);
1786
1787         /* Set CSEL value */
1788         ravb_write(ndev, (ravb_read(ndev, CCC) & ~CCC_CSEL) | CCC_CSEL_HPB,
1789                    CCC);
1790
1791         /* Set GTI value */
1792         ravb_write(ndev, ((1000 << 20) / 130) & GTI_TIV, GTI);
1793
1794         /* Request GTI loading */
1795         ravb_write(ndev, ravb_read(ndev, GCCR) | GCCR_LTI, GCCR);
1796
1797         /* Allocate descriptor base address table */
1798         priv->desc_bat_size = sizeof(struct ravb_desc) * DBAT_ENTRY_NUM;
1799         priv->desc_bat = dma_alloc_coherent(ndev->dev.parent, priv->desc_bat_size,
1800                                             &priv->desc_bat_dma, GFP_KERNEL);
1801         if (!priv->desc_bat) {
1802                 dev_err(&pdev->dev,
1803                         "Cannot allocate desc base address table (size %d bytes)\n",
1804                         priv->desc_bat_size);
1805                 error = -ENOMEM;
1806                 goto out_release;
1807         }
1808         for (q = RAVB_BE; q < DBAT_ENTRY_NUM; q++)
1809                 priv->desc_bat[q].die_dt = DT_EOS;
1810         ravb_write(ndev, priv->desc_bat_dma, DBAT);
1811
1812         /* Initialise HW timestamp list */
1813         INIT_LIST_HEAD(&priv->ts_skb_list);
1814
1815         /* Debug message level */
1816         priv->msg_enable = RAVB_DEF_MSG_ENABLE;
1817
1818         /* Read and set MAC address */
1819         ravb_read_mac_address(ndev, of_get_mac_address(np));
1820         if (!is_valid_ether_addr(ndev->dev_addr)) {
1821                 dev_warn(&pdev->dev,
1822                          "no valid MAC address supplied, using a random one\n");
1823                 eth_hw_addr_random(ndev);
1824         }
1825
1826         /* MDIO bus init */
1827         error = ravb_mdio_init(priv);
1828         if (error) {
1829                 dev_err(&pdev->dev, "failed to initialize MDIO\n");
1830                 goto out_dma_free;
1831         }
1832
1833         netif_napi_add(ndev, &priv->napi[RAVB_BE], ravb_poll, 64);
1834         netif_napi_add(ndev, &priv->napi[RAVB_NC], ravb_poll, 64);
1835
1836         /* Network device register */
1837         error = register_netdev(ndev);
1838         if (error)
1839                 goto out_napi_del;
1840
1841         /* Print device information */
1842         netdev_info(ndev, "Base address at %#x, %pM, IRQ %d.\n",
1843                     (u32)ndev->base_addr, ndev->dev_addr, ndev->irq);
1844
1845         platform_set_drvdata(pdev, ndev);
1846
1847         return 0;
1848
1849 out_napi_del:
1850         netif_napi_del(&priv->napi[RAVB_NC]);
1851         netif_napi_del(&priv->napi[RAVB_BE]);
1852         ravb_mdio_release(priv);
1853 out_dma_free:
1854         dma_free_coherent(ndev->dev.parent, priv->desc_bat_size, priv->desc_bat,
1855                           priv->desc_bat_dma);
1856 out_release:
1857         if (ndev)
1858                 free_netdev(ndev);
1859
1860         pm_runtime_put(&pdev->dev);
1861         pm_runtime_disable(&pdev->dev);
1862         return error;
1863 }
1864
1865 static int ravb_remove(struct platform_device *pdev)
1866 {
1867         struct net_device *ndev = platform_get_drvdata(pdev);
1868         struct ravb_private *priv = netdev_priv(ndev);
1869
1870         dma_free_coherent(ndev->dev.parent, priv->desc_bat_size, priv->desc_bat,
1871                           priv->desc_bat_dma);
1872         /* Set reset mode */
1873         ravb_write(ndev, CCC_OPC_RESET, CCC);
1874         pm_runtime_put_sync(&pdev->dev);
1875         unregister_netdev(ndev);
1876         netif_napi_del(&priv->napi[RAVB_NC]);
1877         netif_napi_del(&priv->napi[RAVB_BE]);
1878         ravb_mdio_release(priv);
1879         pm_runtime_disable(&pdev->dev);
1880         free_netdev(ndev);
1881         platform_set_drvdata(pdev, NULL);
1882
1883         return 0;
1884 }
1885
1886 #ifdef CONFIG_PM
1887 static int ravb_runtime_nop(struct device *dev)
1888 {
1889         /* Runtime PM callback shared between ->runtime_suspend()
1890          * and ->runtime_resume(). Simply returns success.
1891          *
1892          * This driver re-initializes all registers after
1893          * pm_runtime_get_sync() anyway so there is no need
1894          * to save and restore registers here.
1895          */
1896         return 0;
1897 }
1898
1899 static const struct dev_pm_ops ravb_dev_pm_ops = {
1900         .runtime_suspend = ravb_runtime_nop,
1901         .runtime_resume = ravb_runtime_nop,
1902 };
1903
1904 #define RAVB_PM_OPS (&ravb_dev_pm_ops)
1905 #else
1906 #define RAVB_PM_OPS NULL
1907 #endif
1908
1909 static struct platform_driver ravb_driver = {
1910         .probe          = ravb_probe,
1911         .remove         = ravb_remove,
1912         .driver = {
1913                 .name   = "ravb",
1914                 .pm     = RAVB_PM_OPS,
1915                 .of_match_table = ravb_match_table,
1916         },
1917 };
1918
1919 module_platform_driver(ravb_driver);
1920
1921 MODULE_AUTHOR("Mitsuhiro Kimura, Masaru Nagai");
1922 MODULE_DESCRIPTION("Renesas Ethernet AVB driver");
1923 MODULE_LICENSE("GPL v2");