Lines Matching refs:tregs

321 static void BB_PUT_BIT(struct happy_meal *hp, void __iomem *tregs, int bit)
323 hme_write32(hp, tregs + TCVR_BBDATA, bit);
324 hme_write32(hp, tregs + TCVR_BBCLOCK, 0);
325 hme_write32(hp, tregs + TCVR_BBCLOCK, 1);
329 static u32 BB_GET_BIT(struct happy_meal *hp, void __iomem *tregs, int internal)
333 hme_write32(hp, tregs + TCVR_BBCLOCK, 0);
334 hme_write32(hp, tregs + TCVR_BBCLOCK, 1);
335 ret = hme_read32(hp, tregs + TCVR_CFG);
345 static u32 BB_GET_BIT2(struct happy_meal *hp, void __iomem *tregs, int internal)
349 hme_write32(hp, tregs + TCVR_BBCLOCK, 0);
351 retval = hme_read32(hp, tregs + TCVR_CFG);
356 hme_write32(hp, tregs + TCVR_BBCLOCK, 1);
364 void __iomem *tregs, int reg)
373 hme_write32(hp, tregs + TCVR_BBOENAB, 1);
377 BB_PUT_BIT(hp, tregs, 1);
380 BB_PUT_BIT(hp, tregs, 0);
381 BB_PUT_BIT(hp, tregs, 1);
382 BB_PUT_BIT(hp, tregs, 1);
383 BB_PUT_BIT(hp, tregs, 0);
388 BB_PUT_BIT(hp, tregs, ((tmp >> i) & 1));
393 BB_PUT_BIT(hp, tregs, ((tmp >> i) & 1));
396 hme_write32(hp, tregs + TCVR_BBOENAB, 0);
399 (void) BB_GET_BIT2(hp, tregs, (hp->tcvr_type == internal));
401 retval |= BB_GET_BIT2(hp, tregs, (hp->tcvr_type == internal));
402 (void) BB_GET_BIT2(hp, tregs, (hp->tcvr_type == internal));
403 (void) BB_GET_BIT2(hp, tregs, (hp->tcvr_type == internal));
404 (void) BB_GET_BIT2(hp, tregs, (hp->tcvr_type == internal));
410 void __iomem *tregs, int reg,
419 hme_write32(hp, tregs + TCVR_BBOENAB, 1);
423 BB_PUT_BIT(hp, tregs, 1);
426 BB_PUT_BIT(hp, tregs, 0);
427 BB_PUT_BIT(hp, tregs, 1);
428 BB_PUT_BIT(hp, tregs, 0);
429 BB_PUT_BIT(hp, tregs, 1);
434 BB_PUT_BIT(hp, tregs, ((tmp >> i) & 1));
439 BB_PUT_BIT(hp, tregs, ((tmp >> i) & 1));
442 BB_PUT_BIT(hp, tregs, 1);
443 BB_PUT_BIT(hp, tregs, 0);
446 BB_PUT_BIT(hp, tregs, ((value >> i) & 1));
449 hme_write32(hp, tregs + TCVR_BBOENAB, 0);
455 void __iomem *tregs, int reg)
468 return happy_meal_bb_read(hp, tregs, reg);
471 hme_write32(hp, tregs + TCVR_FRAME,
473 while (!(hme_read32(hp, tregs + TCVR_FRAME) & 0x10000) && --tries)
479 retval = hme_read32(hp, tregs + TCVR_FRAME) & 0xffff;
487 void __iomem *tregs, int reg,
496 happy_meal_bb_write(hp, tregs, reg, value);
501 hme_write32(hp, tregs + TCVR_FRAME,
504 while (!(hme_read32(hp, tregs + TCVR_FRAME) & 0x10000) && --tries)
546 static int try_next_permutation(struct happy_meal *hp, void __iomem *tregs)
548 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
555 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
562 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
570 static void display_link_mode(struct happy_meal *hp, void __iomem *tregs)
578 hp->sw_lpa = happy_meal_tcvr_read(hp, tregs, MII_LPA);
592 static void display_forced_link_mode(struct happy_meal *hp, void __iomem *tregs)
600 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
611 static int set_happy_link_modes(struct happy_meal *hp, void __iomem *tregs)
619 hp->sw_lpa = happy_meal_tcvr_read(hp, tregs, MII_LPA);
632 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
675 void __iomem *tregs = hp->tcvregs;
679 mr2 = happy_meal_tcvr_read(hp, tregs, 2);
680 mr3 = happy_meal_tcvr_read(hp, tregs, 3);
691 void __iomem *tregs = hp->tcvregs;
705 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
709 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
716 hp->sw_csconfig = happy_meal_tcvr_read(hp, tregs, DP83840_CSCONFIG);
718 happy_meal_tcvr_write(hp, tregs, DP83840_CSCONFIG, hp->sw_csconfig);
725 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
730 ret = set_happy_link_modes(hp, tregs);
756 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
761 display_link_mode(hp, tregs);
782 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
783 hp->sw_csconfig = happy_meal_tcvr_read(hp, tregs, DP83840_CSCONFIG);
790 happy_meal_tcvr_write(hp, tregs,
799 happy_meal_tcvr_write(hp, tregs,
807 display_forced_link_mode(hp, tregs);
808 set_happy_link_modes(hp, tregs); /* XXX error? then what? */
815 ret = try_next_permutation(hp, tregs);
834 hp->sw_csconfig = happy_meal_tcvr_read(hp, tregs,
837 happy_meal_tcvr_write(hp, tregs,
957 static void happy_meal_poll_stop(struct happy_meal *hp, void __iomem *tregs)
970 hme_write32(hp, tregs + TCVR_IMASK, 0xffff);
974 hme_write32(hp, tregs + TCVR_CFG,
975 hme_read32(hp, tregs + TCVR_CFG) & ~(TCV_CFG_PENABLE));
992 static int happy_meal_tcvr_reset(struct happy_meal *hp, void __iomem *tregs)
997 tconfig = hme_read32(hp, tregs + TCVR_CFG);
1001 hme_write32(hp, tregs + TCVR_CFG, tconfig & ~(TCV_CFG_PSELECT));
1005 happy_meal_tcvr_write(hp, tregs, MII_BMCR,
1007 result = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1013 hme_write32(hp, tregs + TCVR_CFG, tconfig | TCV_CFG_PSELECT);
1019 hme_write32(hp, tregs + TCVR_CFG, (tconfig | TCV_CFG_PSELECT));
1021 happy_meal_tcvr_write(hp, tregs, MII_BMCR,
1023 result = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1029 hme_write32(hp, tregs + TCVR_CFG, (tconfig & ~(TCV_CFG_PSELECT)));
1036 happy_meal_tcvr_write(hp, tregs, MII_BMCR, BMCR_RESET);
1039 result = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1054 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
1055 hp->sw_physid1 = happy_meal_tcvr_read(hp, tregs, MII_PHYSID1);
1056 hp->sw_physid2 = happy_meal_tcvr_read(hp, tregs, MII_PHYSID2);
1057 hp->sw_advertise = happy_meal_tcvr_read(hp, tregs, MII_ADVERTISE);
1061 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
1065 result = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1078 result = happy_meal_tcvr_read(hp, tregs,
1080 happy_meal_tcvr_write(hp, tregs,
1090 static void happy_meal_transceiver_check(struct happy_meal *hp, void __iomem *tregs)
1092 unsigned long tconfig = hme_read32(hp, tregs + TCVR_CFG);
1101 happy_meal_poll_stop(hp, tregs);
1107 hme_write32(hp, tregs + TCVR_CFG, tconfig);
1112 if (!(hme_read32(hp, tregs + TCVR_STATUS) >> 16)) {
1114 happy_meal_poll_stop(hp, tregs);
1118 hme_write32(hp, tregs + TCVR_CFG,
1119 hme_read32(hp, tregs + TCVR_CFG) &
1128 u32 reread = hme_read32(hp, tregs + TCVR_CFG);
1133 hme_write32(hp, tregs + TCVR_CFG, tconfig | TCV_CFG_PSELECT);
1139 hme_write32(hp, tregs + TCVR_CFG,
1299 void __iomem *tregs,
1305 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
1306 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1307 hp->sw_physid1 = happy_meal_tcvr_read(hp, tregs, MII_PHYSID1);
1308 hp->sw_physid2 = happy_meal_tcvr_read(hp, tregs, MII_PHYSID2);
1312 hp->sw_advertise = happy_meal_tcvr_read(hp, tregs, MII_ADVERTISE);
1332 happy_meal_tcvr_write(hp, tregs, MII_ADVERTISE, hp->sw_advertise);
1354 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
1358 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
1364 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1398 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
1405 hp->sw_csconfig = happy_meal_tcvr_read(hp, tregs,
1408 happy_meal_tcvr_write(hp, tregs, DP83840_CSCONFIG,
1426 void __iomem *tregs = hp->tcvregs;
1443 happy_meal_poll_stop(hp, tregs);
1455 hme_read32(hp, tregs + TCVR_IMASK)));
1456 hme_write32(hp, tregs + TCVR_IMASK, 0xffff);
1461 hme_read32(hp, tregs + TCVR_CFG)));
1462 hme_write32(hp, tregs + TCVR_CFG,
1463 hme_read32(hp, tregs + TCVR_CFG) & ~(TCV_CFG_BENABLE));
1466 hme_read32(hp, tregs + TCVR_CFG)));
1467 hme_write32(hp, tregs + TCVR_CFG,
1468 hme_read32(hp, tregs + TCVR_CFG) | TCV_CFG_BENABLE);
1473 happy_meal_transceiver_check(hp, tregs);
1496 if (happy_meal_tcvr_reset(hp, tregs))
1703 happy_meal_begin_auto_negotiation(hp, tregs, NULL);
1712 void __iomem *tregs = hp->tcvregs;
1717 hme_write32(hp, tregs + TCVR_IMASK, 0xffff);
1719 hme_write32(hp, tregs + TCVR_CFG,
1720 hme_read32(hp, tregs + TCVR_CFG) & ~(TCV_CFG_BENABLE));
1722 hme_write32(hp, tregs + TCVR_CFG,
1723 hme_read32(hp, tregs + TCVR_CFG) | TCV_CFG_BENABLE);
1724 happy_meal_transceiver_check(hp, tregs);
1735 if (happy_meal_tcvr_reset(hp, tregs))
1739 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
1740 hp->sw_advertise = happy_meal_tcvr_read(hp, tregs, MII_ADVERTISE);
1762 happy_meal_tcvr_write(hp, tregs, MII_ADVERTISE, hp->sw_advertise);
1886 void __iomem *tregs = hp->tcvregs;
1889 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1890 hp->sw_lpa = happy_meal_tcvr_read(hp, tregs, MII_LPA);
1905 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
1908 happy_meal_poll_stop(hp, tregs);