Lines Matching refs:tregs

261 static void BB_PUT_BIT(struct happy_meal *hp, void __iomem *tregs, int bit)
263 hme_write32(hp, tregs + TCVR_BBDATA, bit);
264 hme_write32(hp, tregs + TCVR_BBCLOCK, 0);
265 hme_write32(hp, tregs + TCVR_BBCLOCK, 1);
269 static u32 BB_GET_BIT(struct happy_meal *hp, void __iomem *tregs, int internal)
273 hme_write32(hp, tregs + TCVR_BBCLOCK, 0);
274 hme_write32(hp, tregs + TCVR_BBCLOCK, 1);
275 ret = hme_read32(hp, tregs + TCVR_CFG);
285 static u32 BB_GET_BIT2(struct happy_meal *hp, void __iomem *tregs, int internal)
289 hme_write32(hp, tregs + TCVR_BBCLOCK, 0);
291 retval = hme_read32(hp, tregs + TCVR_CFG);
296 hme_write32(hp, tregs + TCVR_BBCLOCK, 1);
304 void __iomem *tregs, int reg)
311 hme_write32(hp, tregs + TCVR_BBOENAB, 1);
315 BB_PUT_BIT(hp, tregs, 1);
318 BB_PUT_BIT(hp, tregs, 0);
319 BB_PUT_BIT(hp, tregs, 1);
320 BB_PUT_BIT(hp, tregs, 1);
321 BB_PUT_BIT(hp, tregs, 0);
326 BB_PUT_BIT(hp, tregs, ((tmp >> i) & 1));
331 BB_PUT_BIT(hp, tregs, ((tmp >> i) & 1));
334 hme_write32(hp, tregs + TCVR_BBOENAB, 0);
337 (void) BB_GET_BIT2(hp, tregs, (hp->tcvr_type == internal));
339 retval |= BB_GET_BIT2(hp, tregs, (hp->tcvr_type == internal));
340 (void) BB_GET_BIT2(hp, tregs, (hp->tcvr_type == internal));
341 (void) BB_GET_BIT2(hp, tregs, (hp->tcvr_type == internal));
342 (void) BB_GET_BIT2(hp, tregs, (hp->tcvr_type == internal));
348 void __iomem *tregs, int reg,
357 hme_write32(hp, tregs + TCVR_BBOENAB, 1);
361 BB_PUT_BIT(hp, tregs, 1);
364 BB_PUT_BIT(hp, tregs, 0);
365 BB_PUT_BIT(hp, tregs, 1);
366 BB_PUT_BIT(hp, tregs, 0);
367 BB_PUT_BIT(hp, tregs, 1);
372 BB_PUT_BIT(hp, tregs, ((tmp >> i) & 1));
377 BB_PUT_BIT(hp, tregs, ((tmp >> i) & 1));
380 BB_PUT_BIT(hp, tregs, 1);
381 BB_PUT_BIT(hp, tregs, 0);
384 BB_PUT_BIT(hp, tregs, ((value >> i) & 1));
387 hme_write32(hp, tregs + TCVR_BBOENAB, 0);
393 void __iomem *tregs, int reg)
405 return happy_meal_bb_read(hp, tregs, reg);
408 hme_write32(hp, tregs + TCVR_FRAME,
410 while (!(hme_read32(hp, tregs + TCVR_FRAME) & 0x10000) && --tries)
416 retval = hme_read32(hp, tregs + TCVR_FRAME) & 0xffff;
424 void __iomem *tregs, int reg,
433 happy_meal_bb_write(hp, tregs, reg, value);
438 hme_write32(hp, tregs + TCVR_FRAME,
441 while (!(hme_read32(hp, tregs + TCVR_FRAME) & 0x10000) && --tries)
483 static int try_next_permutation(struct happy_meal *hp, void __iomem *tregs)
485 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
492 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
499 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
507 static void display_link_mode(struct happy_meal *hp, void __iomem *tregs)
509 hp->sw_lpa = happy_meal_tcvr_read(hp, tregs, MII_LPA);
518 static void display_forced_link_mode(struct happy_meal *hp, void __iomem *tregs)
520 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
529 static int set_happy_link_modes(struct happy_meal *hp, void __iomem *tregs)
537 hp->sw_lpa = happy_meal_tcvr_read(hp, tregs, MII_LPA);
550 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
591 void __iomem *tregs = hp->tcvregs;
595 mr2 = happy_meal_tcvr_read(hp, tregs, 2);
596 mr3 = happy_meal_tcvr_read(hp, tregs, 3);
607 void __iomem *tregs,
613 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
614 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
615 hp->sw_physid1 = happy_meal_tcvr_read(hp, tregs, MII_PHYSID1);
616 hp->sw_physid2 = happy_meal_tcvr_read(hp, tregs, MII_PHYSID2);
620 hp->sw_advertise = happy_meal_tcvr_read(hp, tregs, MII_ADVERTISE);
640 happy_meal_tcvr_write(hp, tregs, MII_ADVERTISE, hp->sw_advertise);
656 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
660 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
666 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
701 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
708 hp->sw_csconfig = happy_meal_tcvr_read(hp, tregs,
711 happy_meal_tcvr_write(hp, tregs, DP83840_CSCONFIG,
725 void __iomem *tregs = hp->tcvregs;
739 hp->sw_bmcr = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
743 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
750 hp->sw_csconfig = happy_meal_tcvr_read(hp, tregs, DP83840_CSCONFIG);
752 happy_meal_tcvr_write(hp, tregs, DP83840_CSCONFIG, hp->sw_csconfig);
759 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
764 ret = set_happy_link_modes(hp, tregs);
790 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
795 display_link_mode(hp, tregs);
816 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
817 hp->sw_csconfig = happy_meal_tcvr_read(hp, tregs, DP83840_CSCONFIG);
824 happy_meal_tcvr_write(hp, tregs,
833 happy_meal_tcvr_write(hp, tregs,
841 display_forced_link_mode(hp, tregs);
842 set_happy_link_modes(hp, tregs); /* XXX error? then what? */
849 ret = try_next_permutation(hp, tregs);
859 happy_meal_begin_auto_negotiation(hp, tregs, NULL);
863 hp->sw_csconfig = happy_meal_tcvr_read(hp, tregs,
866 happy_meal_tcvr_write(hp, tregs,
992 static int happy_meal_tcvr_reset(struct happy_meal *hp, void __iomem *tregs)
997 tconfig = hme_read32(hp, tregs + TCVR_CFG);
1000 hme_write32(hp, tregs + TCVR_CFG, tconfig & ~(TCV_CFG_PSELECT));
1003 happy_meal_tcvr_write(hp, tregs, MII_BMCR,
1005 result = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1011 hme_write32(hp, tregs + TCVR_CFG, tconfig | TCV_CFG_PSELECT);
1016 hme_write32(hp, tregs + TCVR_CFG, (tconfig | TCV_CFG_PSELECT));
1017 happy_meal_tcvr_write(hp, tregs, MII_BMCR,
1019 result = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1025 hme_write32(hp, tregs + TCVR_CFG, (tconfig & ~(TCV_CFG_PSELECT)));
1032 happy_meal_tcvr_write(hp, tregs, MII_BMCR, BMCR_RESET);
1035 result = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1050 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
1051 hp->sw_physid1 = happy_meal_tcvr_read(hp, tregs, MII_PHYSID1);
1052 hp->sw_physid2 = happy_meal_tcvr_read(hp, tregs, MII_PHYSID2);
1053 hp->sw_advertise = happy_meal_tcvr_read(hp, tregs, MII_ADVERTISE);
1057 happy_meal_tcvr_write(hp, tregs, MII_BMCR, hp->sw_bmcr);
1061 result = happy_meal_tcvr_read(hp, tregs, MII_BMCR);
1074 result = happy_meal_tcvr_read(hp, tregs,
1076 happy_meal_tcvr_write(hp, tregs,
1086 static void happy_meal_transceiver_check(struct happy_meal *hp, void __iomem *tregs)
1088 unsigned long tconfig = hme_read32(hp, tregs + TCVR_CFG);
1089 u32 reread = hme_read32(hp, tregs + TCVR_CFG);
1093 hme_write32(hp, tregs + TCVR_CFG, tconfig | TCV_CFG_PSELECT);
1099 hme_write32(hp, tregs + TCVR_CFG,
1263 void __iomem *tregs = hp->tcvregs;
1288 hme_read32(hp, tregs + TCVR_CFG));
1289 hme_write32(hp, tregs + TCVR_CFG,
1290 hme_read32(hp, tregs + TCVR_CFG) & ~(TCV_CFG_BENABLE));
1293 hme_read32(hp, tregs + TCVR_CFG));
1294 hme_write32(hp, tregs + TCVR_CFG,
1295 hme_read32(hp, tregs + TCVR_CFG) | TCV_CFG_BENABLE);
1300 happy_meal_transceiver_check(hp, tregs);
1322 if (happy_meal_tcvr_reset(hp, tregs))
1525 happy_meal_begin_auto_negotiation(hp, tregs, NULL);
1534 void __iomem *tregs = hp->tcvregs;
1540 hme_write32(hp, tregs + TCVR_CFG,
1541 hme_read32(hp, tregs + TCVR_CFG) & ~(TCV_CFG_BENABLE));
1543 hme_write32(hp, tregs + TCVR_CFG,
1544 hme_read32(hp, tregs + TCVR_CFG) | TCV_CFG_BENABLE);
1545 happy_meal_transceiver_check(hp, tregs);
1556 if (happy_meal_tcvr_reset(hp, tregs))
1560 hp->sw_bmsr = happy_meal_tcvr_read(hp, tregs, MII_BMSR);
1561 hp->sw_advertise = happy_meal_tcvr_read(hp, tregs, MII_ADVERTISE);
1583 happy_meal_tcvr_write(hp, tregs, MII_ADVERTISE, hp->sw_advertise);