• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src/router/utils_arm/

Lines Matching refs:robo

43 #define ROBO_PHY_ADDR	0x1E	/* robo switch phy address */
72 static u16 __mdio_access(robo_t *robo, u16 phy_id, u8 reg, u16 val, u16 wr)
77 if (robo->et) {
85 robo->ifr.ifr_data = (caddr_t) args;
86 if (ioctl(robo->fd, __ioctl_args[wr][cmd], (caddr_t)&robo->ifr) < 0) {
98 struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&robo->ifr.ifr_data;
102 if (ioctl(robo->fd, __ioctl_args[wr][2], &robo->ifr) < 0) {
110 static inline u16 mdio_read(robo_t *robo, u16 phy_id, u8 reg)
112 return __mdio_access(robo, phy_id, reg, 0, 0);
115 static inline void mdio_write(robo_t *robo, u16 phy_id, u8 reg, u16 val)
117 __mdio_access(robo, phy_id, reg, val, 1);
120 static int _robo_reg(robo_t *robo, u8 page, u8 reg, u8 op)
125 mdio_write(robo, ROBO_PHY_ADDR, REG_MII_PAGE,
129 mdio_write(robo, ROBO_PHY_ADDR, REG_MII_ADDR,
134 if ((mdio_read(robo, ROBO_PHY_ADDR, REG_MII_ADDR) & 3) == 0)
141 static int robo_reg(robo_t *robo, u8 page, u8 reg, u8 op)
143 if (_robo_reg(robo, page, reg, op))
153 static u16 robo_read16(robo_t *robo, u8 page, u8 reg);
154 static u32 robo_read32(robo_t *robo, u8 page, u8 reg);
155 static void robo_write16(robo_t *robo, u8 page, u8 reg, u16 val16);
156 static void robo_write32(robo_t *robo, u8 page, u8 reg, u32 val32);
158 static inline u16 mdio_read(robo_t *robo, u16 phy_id, u8 reg)
160 return robo_read16(robo, 0x10 + phy_id, reg);
163 static inline void mdio_write(robo_t *robo, u16 phy_id, u8 reg, u16 val)
165 robo_write16(robo, 0x10 + phy_id, reg, val);
168 static int _robo_reg(robo_t *robo, u8 page, u8 reg, u8 op)
174 static void robo_read(robo_t *robo, u8 page, u8 reg, u16 *val, int count)
183 robo->ifr.ifr_data = (caddr_t) args;
185 if (ioctl(robo->fd, SIOCGETCROBORD, (caddr_t)&robo->ifr) < 0)
192 robo_reg(robo, page, reg, REG_MII_ADDR_READ);
195 val[i] = mdio_read(robo, ROBO_PHY_ADDR, REG_MII_DATA0 + i);
199 static u16 robo_read16(robo_t *robo, u8 page, u8 reg)
204 robo_read(robo, page, reg, &val16, 1);
207 robo_reg(robo, page, reg, REG_MII_ADDR_READ);
209 return mdio_read(robo, ROBO_PHY_ADDR, REG_MII_DATA0);
213 static u32 robo_read32(robo_t *robo, u8 page, u8 reg)
218 robo_read(robo, page, reg, (u16 *) &val32, 2);
221 robo_reg(robo, page, reg, REG_MII_ADDR_READ);
223 return ((u32 )mdio_read(robo, ROBO_PHY_ADDR, REG_MII_DATA0)) |
224 ((u32 )mdio_read(robo, ROBO_PHY_ADDR, REG_MII_DATA0 + 1) << 16);
228 static void robo_write(robo_t *robo, u8 page, u8 reg, u16 *val, int count)
237 robo->ifr.ifr_data = (caddr_t) args;
239 ioctl(robo->fd, SIOCSETCROBOWR, (caddr_t)&robo->ifr);
244 mdio_write(robo, ROBO_PHY_ADDR, REG_MII_DATA0 + i, val[i]);
246 robo_reg(robo, page, reg, REG_MII_ADDR_WRITE);
250 static void robo_write16(robo_t *robo, u8 page, u8 reg, u16 val16)
253 robo_write(robo, page, reg, &val16, 1);
256 mdio_write(robo, ROBO_PHY_ADDR, REG_MII_DATA0, val16);
258 robo_reg(robo, page, reg, REG_MII_ADDR_WRITE);
262 static void robo_write32(robo_t *robo, u8 page, u8 reg, u32 val32)
265 robo_write(robo, page, reg, (u16 *) &val32, 2);
268 mdio_write(robo, ROBO_PHY_ADDR, REG_MII_DATA0, (u16 )(val32 & 0xFFFF));
269 mdio_write(robo, ROBO_PHY_ADDR, REG_MII_DATA0 + 1, (u16 )(val32 >> 16));
271 robo_reg(robo, page, reg, REG_MII_ADDR_WRITE);
276 static int robo_vlan535x(robo_t *robo, u32 phyid)
279 if ((robo_read32(robo, ROBO_MGMT_PAGE, ROBO_DEVICE_ID) & 0xfffffff0) == 0x53010)
284 robo_write16(robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS_5350, val16);
287 if (robo_read16(robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS_5350) != val16)
290 if (robo->et != 1 && (mdio_read(robo, 0, ROBO_MII_STAT) & 0x0100))
291 robo->gmii = ((mdio_read(robo, 0, 0x0f) & 0xf000) != 0);
293 if (robo->gmii && robo_read32(robo, ROBO_STAT_PAGE, ROBO_LSA_IM_PORT) != 0) {
294 robo_write16(robo, ROBO_ARLIO_PAGE, ROBO_VTBL_INDX_5395, val16);
295 robo_write16(robo, ROBO_ARLIO_PAGE, ROBO_VTBL_ACCESS_5395,
297 if (robo_read16(robo, ROBO_ARLIO_PAGE, ROBO_VTBL_ACCESS_5395) == 1
298 && robo_read16(robo, ROBO_ARLIO_PAGE, ROBO_VTBL_INDX_5395) == val16)
390 static robo_t robo;
393 if ((robo.fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
399 strcpy(robo.ifr.ifr_name, "eth0");
403 robo.ifr.ifr_data = (caddr_t)&info;
404 if (ioctl(robo.fd, SIOCETHTOOL, (caddr_t)&robo.ifr) < 0) {
411 robo.ifr.ifr_name, info.driver);
416 if (ioctl(robo.fd, SIOCGMIIPHY, &robo.ifr) < 0) {
419 robo.ifr.ifr_data = (caddr_t) args;
420 if (ioctl(robo.fd, SIOCGETCPHYRD2, &robo.ifr) < 0)
421 robo.et = 1;
422 else robo.et = 2;
424 /* got phy address check for robo address */
425 struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&robo.ifr.ifr_data;
432 phyid = mdio_read(&robo, ROBO_PHY_ADDR, 0x2) |
433 (mdio_read(&robo, ROBO_PHY_ADDR, 0x3) << 16);
434 if (phyid == 0 && robo.et != 1)
435 phyid = mdio_read(&robo, 0, 0x2) |
436 (mdio_read(&robo, 0, 0x3) << 16);
443 robo535x = robo_vlan535x(&robo, phyid);
453 base_vlan = 0; /*get_vid_by_idx(&robo, 0);*/
459 robo_write16(&robo, ROBO_ARLIO_PAGE, ROBO_ARL_RW_CTRL, 0x81);
460 robo_write16(&robo, ROBO_ARLIO_PAGE, (robo535x >= 4) ?
469 if (!off && (robo_read16(&robo, ROBO_ARLIO_PAGE,
471 robo_read(&robo, ROBO_ARLIO_PAGE,
473 robo_read(&robo, ROBO_ARLIO_PAGE,
476 robo_read(&robo, ROBO_ARLIO_PAGE, ROBO_ARL_SEARCH_RESULT,
506 robo_write16(&robo,ROBO_CTRL_PAGE, port[index],
507 (robo_read16(&robo, ROBO_CTRL_PAGE, port[index]) & ~(3 << 0)) | (j << 0));
517 robo_write16(&robo,ROBO_CTRL_PAGE, port[index],
518 (robo_read16(&robo, ROBO_CTRL_PAGE, port[index]) & ~(7 << 5)) | (j << 5));
528 mdio_write(&robo, port[index], MII_BMCR, media[j].bmcr);
539 mdio_write(&robo, port[index], 0x10, mdix[j].value1 |
540 (mdio_read(&robo, port[index], 0x10) & ~0x4000));
541 mdio_write(&robo, port[index], 0x18, 0x7007);
542 mdio_write(&robo, port[index], 0x18, mdix[j].value2 |
543 (mdio_read(&robo, port[index], 0x18) & ~0x8207));
544 mdio_write(&robo, port[index], 0x1e, mdix[j].value3 |
545 (mdio_read(&robo, port[index], 0x1e) & ~0x0080));
547 mdio_write(&robo, port[index], 0x1c, mdix[j].value |
548 (mdio_read(&robo, port[index], 0x1c) & ~0x1800));
557 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_PORT0_DEF_TAG + (index << 1), j);
563 robo_write32(&robo, ROBO_JUMBO_PAGE, ROBO_JUMBO_CTRL,
564 (robo_read32(&robo, ROBO_JUMBO_PAGE, ROBO_JUMBO_CTRL) &
592 robo_write16(&robo, ROBO_VLAN_PAGE,
610 robo_write32(&robo, ROBO_ARLIO_PAGE, ROBO_VTBL_ENTRY_5395, val32);
612 robo_write16(&robo, ROBO_ARLIO_PAGE, ROBO_VTBL_INDX_5395, vid);
614 robo_write16(&robo, ROBO_ARLIO_PAGE, ROBO_VTBL_ACCESS_5395,
621 robo_write32(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_WRITE_5350, val32);
622 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS_5350, val16);
624 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_WRITE,
626 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS, val16);
635 robo_write16(&robo, ROBO_CTRL_PAGE, ROBO_SWITCH_MODE,
636 (robo_read16(&robo, ROBO_CTRL_PAGE, ROBO_SWITCH_MODE) & ~2) |
645 robo_write16(&robo, ROBO_ARLIO_PAGE, ROBO_VTBL_ACCESS_5395,
654 robo_write32(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_WRITE_5350, 0);
655 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS_5350, val16);
657 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_WRITE, 0);
658 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS, val16);
666 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_CTRL0, disable ? 0 :
669 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_CTRL1, disable ? 0 :
672 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_CTRL4, disable ? 0 :
675 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_CTRL5, disable ? 0 :
701 robo_write(&robo, pagereg >> 8, pagereg & 255, buf, size);
705 robo_read(&robo, pagereg >> 8, pagereg & 255, buf, size);
723 robo_read(&robo, pagereg >> 8, pagereg & 255, buf, size);
734 if (_robo_reg(&robo, i, 0, REG_MII_ADDR_READ))
741 robo_read16(&robo, i, j), (j % 16) == 15 ? "\n" : "");
760 printf("Switch: %sabled %s\n", robo_read16(&robo, ROBO_CTRL_PAGE, ROBO_SWITCH_MODE) & 2 ? "en" : "dis",
761 robo.gmii ? "gigabit" : "");
764 printf(robo_read16(&robo, ROBO_STAT_PAGE, ROBO_LINK_STAT_SUMMARY) & (1 << port[i]) ?
768 (robo_read32(&robo, ROBO_STAT_PAGE, ROBO_SPEED_STAT_SUMMARY) >> port[i] * 2) & 3 :
769 (robo_read16(&robo, ROBO_STAT_PAGE, ROBO_SPEED_STAT_SUMMARY) >> port[i]) & 1],
770 robo_read16(&robo, ROBO_STAT_PAGE, (robo535x >= 4) ?
773 val16 = robo_read16(&robo, ROBO_CTRL_PAGE, port[i]);
776 robo_read16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_PORT0_DEF_TAG + (i << 1)));
779 printf("jumbo: %s ", jumbo[(robo_read32(&robo, ROBO_JUMBO_PAGE, ROBO_JUMBO_CTRL) >> port[i]) & 1]);
781 robo_read(&robo, ROBO_STAT_PAGE, ROBO_LSA_PORT0 + port[i] * 6, mac, 3);
787 val16 = robo_read16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_CTRL0);
805 robo_write16(&robo, ROBO_ARLIO_PAGE, ROBO_VTBL_INDX_5395, i);
807 robo_write16(&robo, ROBO_ARLIO_PAGE, ROBO_VTBL_ACCESS_5395,
810 val32 = robo_read32(&robo, ROBO_ARLIO_PAGE, ROBO_VTBL_ENTRY_5395);
822 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS_5350, val16);
824 val32 = robo_read32(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_READ);
839 robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS, val16);
841 val16 = robo_read16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_READ);