Commit 91528821d9c8eecd8a0e73dc0a0bacbb3e6c9054
Exists in
v2017.01-smarct4x
and in
34 other branches
Merge branch 'master' of git://git.denx.de/u-boot-net
Showing 10 changed files Side-by-side Diff
MAINTAINERS
... | ... | @@ -328,10 +328,11 @@ |
328 | 328 | F: arch/powerpc/cpu/ppc4xx/ |
329 | 329 | |
330 | 330 | NETWORK |
331 | -M: Joe Hershberger <joe.hershberger@gmail.com> | |
331 | +M: Joe Hershberger <joe.hershberger@ni.com> | |
332 | 332 | S: Maintained |
333 | 333 | T: git git://git.denx.de/u-boot-net.git |
334 | 334 | F: drivers/net/ |
335 | +F: net/ | |
335 | 336 | |
336 | 337 | NAND FLASH |
337 | 338 | M: Scott Wood <scottwood@freescale.com> |
common/cmd_mii.c
... | ... | @@ -249,6 +249,7 @@ |
249 | 249 | static uint last_addr_hi; |
250 | 250 | static uint last_reg_lo; |
251 | 251 | static uint last_reg_hi; |
252 | +static uint last_mask; | |
252 | 253 | |
253 | 254 | static void extract_range( |
254 | 255 | char * input, |
... | ... | @@ -272,7 +273,7 @@ |
272 | 273 | char op[2]; |
273 | 274 | unsigned char addrlo, addrhi, reglo, reghi; |
274 | 275 | unsigned char addr, reg; |
275 | - unsigned short data; | |
276 | + unsigned short data, mask; | |
276 | 277 | int rcode = 0; |
277 | 278 | const char *devname; |
278 | 279 | |
... | ... | @@ -294,6 +295,7 @@ |
294 | 295 | reglo = last_reg_lo; |
295 | 296 | reghi = last_reg_hi; |
296 | 297 | data = last_data; |
298 | + mask = last_mask; | |
297 | 299 | |
298 | 300 | if ((flag & CMD_FLAG_REPEAT) == 0) { |
299 | 301 | op[0] = argv[1][0]; |
... | ... | @@ -307,7 +309,9 @@ |
307 | 309 | if (argc >= 4) |
308 | 310 | extract_range(argv[3], ®lo, ®hi); |
309 | 311 | if (argc >= 5) |
310 | - data = simple_strtoul (argv[4], NULL, 16); | |
312 | + data = simple_strtoul(argv[4], NULL, 16); | |
313 | + if (argc >= 6) | |
314 | + mask = simple_strtoul(argv[5], NULL, 16); | |
311 | 315 | } |
312 | 316 | |
313 | 317 | /* use current device */ |
... | ... | @@ -375,6 +379,28 @@ |
375 | 379 | } |
376 | 380 | } |
377 | 381 | } |
382 | + } else if (op[0] == 'm') { | |
383 | + for (addr = addrlo; addr <= addrhi; addr++) { | |
384 | + for (reg = reglo; reg <= reghi; reg++) { | |
385 | + unsigned short val = 0; | |
386 | + if (miiphy_read(devname, addr, | |
387 | + reg, &val)) { | |
388 | + printf("Error reading from the PHY"); | |
389 | + printf(" addr=%02x", addr); | |
390 | + printf(" reg=%02x\n", reg); | |
391 | + rcode = 1; | |
392 | + } else { | |
393 | + val = (val & ~mask) | (data & mask); | |
394 | + if (miiphy_write(devname, addr, | |
395 | + reg, val)) { | |
396 | + printf("Error writing to the PHY"); | |
397 | + printf(" addr=%02x", addr); | |
398 | + printf(" reg=%02x\n", reg); | |
399 | + rcode = 1; | |
400 | + } | |
401 | + } | |
402 | + } | |
403 | + } | |
378 | 404 | } else if (strncmp(op, "du", 2) == 0) { |
379 | 405 | ushort regs[6]; |
380 | 406 | int ok = 1; |
... | ... | @@ -417,6 +443,7 @@ |
417 | 443 | last_reg_lo = reglo; |
418 | 444 | last_reg_hi = reghi; |
419 | 445 | last_data = data; |
446 | + last_mask = mask; | |
420 | 447 | |
421 | 448 | return rcode; |
422 | 449 | } |
423 | 450 | |
... | ... | @@ -424,14 +451,16 @@ |
424 | 451 | /***************************************************/ |
425 | 452 | |
426 | 453 | U_BOOT_CMD( |
427 | - mii, 5, 1, do_mii, | |
454 | + mii, 6, 1, do_mii, | |
428 | 455 | "MII utility commands", |
429 | - "device - list available devices\n" | |
430 | - "mii device <devname> - set current device\n" | |
431 | - "mii info <addr> - display MII PHY info\n" | |
432 | - "mii read <addr> <reg> - read MII PHY <addr> register <reg>\n" | |
433 | - "mii write <addr> <reg> <data> - write MII PHY <addr> register <reg>\n" | |
434 | - "mii dump <addr> <reg> - pretty-print <addr> <reg> (0-5 only)\n" | |
456 | + "device - list available devices\n" | |
457 | + "mii device <devname> - set current device\n" | |
458 | + "mii info <addr> - display MII PHY info\n" | |
459 | + "mii read <addr> <reg> - read MII PHY <addr> register <reg>\n" | |
460 | + "mii write <addr> <reg> <data> - write MII PHY <addr> register <reg>\n" | |
461 | + "mii modify <addr> <reg> <data> <mask> - modify MII PHY <addr> register <reg>\n" | |
462 | + " updating bits identified in <mask>\n" | |
463 | + "mii dump <addr> <reg> - pretty-print <addr> <reg> (0-5 only)\n" | |
435 | 464 | "Addr and/or reg may be ranges, e.g. 2-7." |
436 | 465 | ); |
doc/git-mailrc
... | ... | @@ -24,7 +24,7 @@ |
24 | 24 | alias iwamatsu Nobuhiro Iwamatsu <iwamatsu@nigauri.org> |
25 | 25 | alias jagan Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com> |
26 | 26 | alias jasonjin Jason Jin <jason.jin@freescale.com> |
27 | -alias jhersh Joe Hershberger <joe.hershberger@gmail.com> | |
27 | +alias jhersh Joe Hershberger <joe.hershberger@ni.com> | |
28 | 28 | alias jwrdegoede Hans de Goede <hdegoede@redhat.com> |
29 | 29 | alias kimphill Kim Phillips <kim.phillips@freescale.com> |
30 | 30 | alias luka Luka Perkov <luka.perkov@sartura.hr> |
... | ... | @@ -113,6 +113,7 @@ |
113 | 113 | alias dm uboot, sjg |
114 | 114 | alias cfi uboot, stroese |
115 | 115 | alias dfu uboot, lukma |
116 | +alias eth uboot, jhersh | |
116 | 117 | alias kerneldoc uboot, marex |
117 | 118 | alias fdt uboot, sjg |
118 | 119 | alias i2c uboot, hs |
... | ... | @@ -120,6 +121,7 @@ |
120 | 121 | alias mmc uboot, panto |
121 | 122 | alias nand uboot, scottwood |
122 | 123 | alias net uboot, jhersh |
124 | +alias phy uboot, jhersh | |
123 | 125 | alias spi uboot, jagan |
124 | 126 | alias ubi uboot, hs |
125 | 127 | alias usb uboot, marex |
drivers/net/pch_gbe.c
... | ... | @@ -446,7 +446,7 @@ |
446 | 446 | dev->iobase = iobase; |
447 | 447 | priv->mac_regs = (struct pch_gbe_regs *)iobase; |
448 | 448 | |
449 | - sprintf(dev->name, "pch_gbe.%x", iobase); | |
449 | + sprintf(dev->name, "pch_gbe"); | |
450 | 450 | |
451 | 451 | /* Read MAC address from SROM and initialize dev->enetaddr with it */ |
452 | 452 | pch_gbe_mac_read(priv->mac_regs, dev->enetaddr); |
drivers/net/phy/micrel.c
... | ... | @@ -22,6 +22,16 @@ |
22 | 22 | .shutdown = &genphy_shutdown, |
23 | 23 | }; |
24 | 24 | |
25 | +static struct phy_driver KSZ8081_driver = { | |
26 | + .name = "Micrel KSZ8081", | |
27 | + .uid = 0x221560, | |
28 | + .mask = 0xfffff0, | |
29 | + .features = PHY_BASIC_FEATURES, | |
30 | + .config = &genphy_config, | |
31 | + .startup = &genphy_startup, | |
32 | + .shutdown = &genphy_shutdown, | |
33 | +}; | |
34 | + | |
25 | 35 | /** |
26 | 36 | * KSZ8895 |
27 | 37 | */ |
... | ... | @@ -272,6 +282,7 @@ |
272 | 282 | int phy_micrel_init(void) |
273 | 283 | { |
274 | 284 | phy_register(&KSZ804_driver); |
285 | + phy_register(&KSZ8081_driver); | |
275 | 286 | #ifdef CONFIG_PHY_MICREL_KSZ9021 |
276 | 287 | phy_register(&ksz9021_driver); |
277 | 288 | #else |
drivers/net/phy/phy.c
... | ... | @@ -582,7 +582,7 @@ |
582 | 582 | * Description: Reads the ID registers of the PHY at @addr on the |
583 | 583 | * @bus, stores it in @phy_id and returns zero on success. |
584 | 584 | */ |
585 | -static int get_phy_id(struct mii_dev *bus, int addr, int devad, u32 *phy_id) | |
585 | +int __weak get_phy_id(struct mii_dev *bus, int addr, int devad, u32 *phy_id) | |
586 | 586 | { |
587 | 587 | int phy_reg; |
588 | 588 |
drivers/net/phy/realtek.c
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 | * |
4 | 4 | * SPDX-License-Identifier: GPL-2.0+ |
5 | 5 | * |
6 | - * Copyright 2010-2011 Freescale Semiconductor, Inc. | |
6 | + * Copyright 2010-2011, 2015 Freescale Semiconductor, Inc. | |
7 | 7 | * author Andy Fleming |
8 | 8 | */ |
9 | 9 | #include <config.h> |
10 | 10 | |
11 | 11 | |
... | ... | @@ -21,11 +21,27 @@ |
21 | 21 | #define MIIM_RTL8211x_PHYSTAT_SPDDONE 0x0800 |
22 | 22 | #define MIIM_RTL8211x_PHYSTAT_LINK 0x0400 |
23 | 23 | |
24 | +/* RTL8211x PHY Interrupt Enable Register */ | |
25 | +#define MIIM_RTL8211x_PHY_INER 0x12 | |
26 | +#define MIIM_RTL8211x_PHY_INTR_ENA 0x9f01 | |
27 | +#define MIIM_RTL8211x_PHY_INTR_DIS 0x0000 | |
24 | 28 | |
29 | +/* RTL8211x PHY Interrupt Status Register */ | |
30 | +#define MIIM_RTL8211x_PHY_INSR 0x13 | |
31 | + | |
25 | 32 | /* RealTek RTL8211x */ |
26 | 33 | static int rtl8211x_config(struct phy_device *phydev) |
27 | 34 | { |
28 | 35 | phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET); |
36 | + | |
37 | + /* mask interrupt at init; if the interrupt is | |
38 | + * needed indeed, it should be explicitly enabled | |
39 | + */ | |
40 | + phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211x_PHY_INER, | |
41 | + MIIM_RTL8211x_PHY_INTR_DIS); | |
42 | + | |
43 | + /* read interrupt status just to clear it */ | |
44 | + phy_read(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211x_PHY_INER); | |
29 | 45 | |
30 | 46 | genphy_config_aneg(phydev); |
31 | 47 |
drivers/net/rtl8169.c
... | ... | @@ -55,7 +55,7 @@ |
55 | 55 | #define drv_version "v1.5" |
56 | 56 | #define drv_date "01-17-2004" |
57 | 57 | |
58 | -static u32 ioaddr; | |
58 | +static unsigned long ioaddr; | |
59 | 59 | |
60 | 60 | /* Condensed operations for readability. */ |
61 | 61 | #define currticks() get_timer(0) |
62 | 62 | |
... | ... | @@ -92,19 +92,21 @@ |
92 | 92 | #define TX_TIMEOUT (6*HZ) |
93 | 93 | |
94 | 94 | /* write/read MMIO register. Notice: {read,write}[wl] do the necessary swapping */ |
95 | -#define RTL_W8(reg, val8) writeb ((val8), ioaddr + (reg)) | |
96 | -#define RTL_W16(reg, val16) writew ((val16), ioaddr + (reg)) | |
97 | -#define RTL_W32(reg, val32) writel ((val32), ioaddr + (reg)) | |
98 | -#define RTL_R8(reg) readb (ioaddr + (reg)) | |
99 | -#define RTL_R16(reg) readw (ioaddr + (reg)) | |
100 | -#define RTL_R32(reg) ((unsigned long) readl (ioaddr + (reg))) | |
95 | +#define RTL_W8(reg, val8) writeb((val8), ioaddr + (reg)) | |
96 | +#define RTL_W16(reg, val16) writew((val16), ioaddr + (reg)) | |
97 | +#define RTL_W32(reg, val32) writel((val32), ioaddr + (reg)) | |
98 | +#define RTL_R8(reg) readb(ioaddr + (reg)) | |
99 | +#define RTL_R16(reg) readw(ioaddr + (reg)) | |
100 | +#define RTL_R32(reg) readl(ioaddr + (reg)) | |
101 | 101 | |
102 | 102 | #define ETH_FRAME_LEN MAX_ETH_FRAME_SIZE |
103 | 103 | #define ETH_ALEN MAC_ADDR_LEN |
104 | 104 | #define ETH_ZLEN 60 |
105 | 105 | |
106 | -#define bus_to_phys(a) pci_mem_to_phys((pci_dev_t)dev->priv, (pci_addr_t)a) | |
107 | -#define phys_to_bus(a) pci_phys_to_mem((pci_dev_t)dev->priv, (phys_addr_t)a) | |
106 | +#define bus_to_phys(a) pci_mem_to_phys((pci_dev_t)(unsigned long)dev->priv, \ | |
107 | + (pci_addr_t)(unsigned long)a) | |
108 | +#define phys_to_bus(a) pci_phys_to_mem((pci_dev_t)(unsigned long)dev->priv, \ | |
109 | + (phys_addr_t)a) | |
108 | 110 | |
109 | 111 | enum RTL8169_registers { |
110 | 112 | MAC0 = 0, /* Ethernet hardware address. */ |
... | ... | @@ -852,7 +854,7 @@ |
852 | 854 | |
853 | 855 | #ifdef DEBUG_RTL8169 |
854 | 856 | /* Print out some hardware info */ |
855 | - printf("%s: at ioaddr 0x%x\n", dev->name, ioaddr); | |
857 | + printf("%s: at ioaddr 0x%lx\n", dev->name, ioaddr); | |
856 | 858 | #endif |
857 | 859 | |
858 | 860 | /* if TBI is not endbled */ |
... | ... | @@ -1004,7 +1006,7 @@ |
1004 | 1006 | memset(dev, 0, sizeof(*dev)); |
1005 | 1007 | sprintf (dev->name, "RTL8169#%d", card_number); |
1006 | 1008 | |
1007 | - dev->priv = (void *) devno; | |
1009 | + dev->priv = (void *)(unsigned long)devno; | |
1008 | 1010 | dev->iobase = (int)pci_mem_to_phys(devno, iobase); |
1009 | 1011 | |
1010 | 1012 | dev->init = rtl_reset; |
drivers/net/zynq_gem.c
... | ... | @@ -513,7 +513,8 @@ |
513 | 513 | |
514 | 514 | /* Align bd_space to 1MB */ |
515 | 515 | bd_space = memalign(1 << MMU_SECTION_SHIFT, BD_SPACE); |
516 | - mmu_set_region_dcache_behaviour((u32)bd_space, BD_SPACE, DCACHE_OFF); | |
516 | + mmu_set_region_dcache_behaviour((phys_addr_t)bd_space, | |
517 | + BD_SPACE, DCACHE_OFF); | |
517 | 518 | |
518 | 519 | /* Initialize the bd spaces for tx and rx bd's */ |
519 | 520 | priv->tx_bd = (struct emac_bd *)bd_space; |
include/phy.h