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,
1293 void __iomem *tregs,
1299 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
1300 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1301 hp->sw_physid1 = happy_meal_tcvr_read(hp, tregs, MII_PHYSID1);
1302 hp->sw_physid2 = happy_meal_tcvr_read(hp, tregs, MII_PHYSID2);
1306 hp->sw_advertise = happy_meal_tcvr_read(hp, tregs, MII_ADVERTISE);
1326 happy_meal_tcvr_write(hp, tregs, MII_ADVERTISE, hp->sw_advertise);
1348 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
1352 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
1358 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1392 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
1399 hp->sw_csconfig = happy_meal_tcvr_read(hp, tregs,
1402 happy_meal_tcvr_write(hp, tregs, DP83840_CSCONFIG,
1422 void __iomem *tregs = hp->tcvregs;
1439 happy_meal_poll_stop(hp, tregs);
1451 hme_read32(hp, tregs + TCVR_IMASK)));
1452 hme_write32(hp, tregs + TCVR_IMASK, 0xffff);
1457 hme_read32(hp, tregs + TCVR_CFG)));
1458 hme_write32(hp, tregs + TCVR_CFG,
1459 hme_read32(hp, tregs + TCVR_CFG) & ~(TCV_CFG_BENABLE));
1462 hme_read32(hp, tregs + TCVR_CFG)));
1463 hme_write32(hp, tregs + TCVR_CFG,
1464 hme_read32(hp, tregs + TCVR_CFG) | TCV_CFG_BENABLE);
1469 happy_meal_transceiver_check(hp, tregs);
1492 if (happy_meal_tcvr_reset(hp, tregs))
1699 happy_meal_begin_auto_negotiation(hp, tregs, NULL);
1708 void __iomem *tregs = hp->tcvregs;
1713 hme_write32(hp, tregs + TCVR_IMASK, 0xffff);
1715 hme_write32(hp, tregs + TCVR_CFG,
1716 hme_read32(hp, tregs + TCVR_CFG) & ~(TCV_CFG_BENABLE));
1718 hme_write32(hp, tregs + TCVR_CFG,
1719 hme_read32(hp, tregs + TCVR_CFG) | TCV_CFG_BENABLE);
1720 happy_meal_transceiver_check(hp, tregs);
1731 if (happy_meal_tcvr_reset(hp, tregs))
1735 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
1736 hp->sw_advertise = happy_meal_tcvr_read(hp, tregs, MII_ADVERTISE);
1758 happy_meal_tcvr_write(hp, tregs, MII_ADVERTISE, hp->sw_advertise);
1882 void __iomem *tregs = hp->tcvregs;
1885 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1886 hp->sw_lpa = happy_meal_tcvr_read(hp, tregs, MII_LPA);
1901 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
1904 happy_meal_poll_stop(hp, tregs);