Lines Matching refs:pi
262 #define PLCOM_BARRIER(pi, f) \
263 bus_space_barrier((pi)->pi_iot, (pi)->pi_ioh, 0, (pi)->pi_size, (f))
266 pread1(struct plcom_instance *pi, bus_size_t reg)
268 if (!ISSET(pi->pi_flags, PLC_FLAG_32BIT_ACCESS))
269 return bus_space_read_1(pi->pi_iot, pi->pi_ioh, reg);
271 return bus_space_read_4(pi->pi_iot, pi->pi_ioh, reg & -4) >>
276 pread2(struct plcom_instance *pi, bus_size_t reg)
278 if (!ISSET(pi->pi_flags, PLC_FLAG_32BIT_ACCESS))
279 return bus_space_read_2(pi->pi_iot, pi->pi_ioh, reg);
281 return bus_space_read_4(pi->pi_iot, pi->pi_ioh, reg & -4) >>
286 pwrite1(struct plcom_instance *pi, bus_size_t o, uint8_t val)
288 if (!ISSET(pi->pi_flags, PLC_FLAG_32BIT_ACCESS)) {
289 bus_space_write_1(pi->pi_iot, pi->pi_ioh, o, val);
293 uint32_t tmp = bus_space_read_4(pi->pi_iot, pi->pi_ioh, o);
295 bus_space_write_4(pi->pi_iot, pi->pi_ioh, o, tmp);
300 pwrite2(struct plcom_instance *pi, bus_size_t o, uint16_t val)
302 if (!ISSET(pi->pi_flags, PLC_FLAG_32BIT_ACCESS)) {
303 bus_space_write_2(pi->pi_iot, pi->pi_ioh, o, val);
307 uint32_t tmp = bus_space_read_4(pi->pi_iot, pi->pi_ioh, o);
309 bus_space_write_4(pi->pi_iot, pi->pi_ioh, o, tmp);
314 pwritem1(struct plcom_instance *pi, bus_size_t o, const uint8_t *datap,
317 if (!ISSET(pi->pi_flags, PLC_FLAG_32BIT_ACCESS)) {
318 bus_space_write_multi_1(pi->pi_iot, pi->pi_ioh, o, datap, count);
322 bus_space_write_4(pi->pi_iot, pi->pi_ioh, o, *datap++);
327 #define PREAD1(pi, reg) pread1(pi, reg)
328 #define PREAD2(pi, reg) pread2(pi, reg)
329 #define PREAD4(pi, reg) \
330 bus_space_read_4((pi)->pi_iot, (pi)->pi_ioh, (reg))
332 #define PWRITE1(pi, reg, val) pwrite1(pi, reg, val)
333 #define PWRITEM1(pi, reg, d, c) pwritem1(pi, reg, d, c)
334 #define PWRITE2(pi, reg, val) pwrite2(pi, reg, val)
335 #define PWRITE4(pi, reg, val) \
336 bus_space_write_4((pi)->pi_iot, (pi)->pi_ioh, (reg), (val))
440 struct plcom_instance *pi = &sc->sc_pi;
446 switch (pi->pi_type) {
449 PWRITE1(pi, PL010COM_CR, sc->sc_cr);
461 PWRITE2(pi, PL011COM_CR, sc->sc_cr);
462 PWRITE4(pi, PL011COM_IMSC, sc->sc_imsc);
471 struct plcom_instance *pi = &sc->sc_pi;
477 switch (pi->pi_type) {
484 "Unknown plcom type: %d\n", pi->pi_type);
492 if (bus_space_is_equal(pi->pi_iot, plcomcons_info.pi_iot) &&
493 pi->pi_iobase == plcomcons_info.pi_iobase) {
505 switch (pi->pi_type) {
513 switch (pi->pi_type) {
515 if (pi->pi_periphid == 0) {
516 pi->pi_periphid = PREAD1(pi, PL011COM_PID0) << 0
517 | PREAD1(pi, PL011COM_PID1) << 8
518 | PREAD1(pi, PL011COM_PID2) << 16
519 | PREAD1(pi, PL011COM_PID3) << 24;
521 aprint_debug_dev(sc->sc_dev, "PID %08x\n", pi->pi_periphid);
525 switch (pi->pi_type) {
527 PWRITE1(pi, PL010COM_CR, sc->sc_cr);
532 PWRITE2(pi, PL011COM_CR, sc->sc_cr);
533 PWRITE4(pi, PL011COM_IMSC, sc->sc_imsc);
538 switch (pi->pi_type) {
548 switch (pi->pi_periphid & (PL011_DESIGNER_MASK | PL011_HWREV_MASK)) {
608 if (bus_space_is_equal(pi->pi_iot, plcomkgdb_info.pi_iot) &&
609 pi->pi_iobase == plcomkgdb_info.pi_iobase) {
641 struct plcom_instance *pi = &sc->sc_pi;
646 switch (pi->pi_type) {
648 PWRITE1(pi, PL010COM_CR, sc->sc_cr);
653 PWRITE2(pi, PL011COM_CR, sc->sc_cr);
654 PWRITE4(pi, PL011COM_IMSC, sc->sc_imsc);
734 struct plcom_instance *pi = &sc->sc_pi;
770 switch (pi->pi_type) {
781 switch (pi->pi_type) {
784 PWRITE1(pi, PL010COM_CR, sc->sc_cr);
790 PWRITE2(pi, PL011COM_CR, sc->sc_cr);
791 PWRITE4(pi, PL011COM_IMSC, sc->sc_imsc);
810 struct plcom_instance *pi;
823 pi = &sc->sc_pi;
880 switch (pi->pi_type) {
884 PWRITE1(pi, PL010COM_CR, sc->sc_cr);
885 sc->sc_msr = PREAD1(pi, PL01XCOM_FR);
892 PWRITE4(pi, PL011COM_IMSC, sc->sc_imsc);
893 sc->sc_msr = PREAD4(pi, PL01XCOM_FR);
1211 pps_info_t *pi;
1212 pi = (pps_info_t *)data;
1214 *pi = sc->ppsinfo;
1406 struct plcom_instance *pi = &sc->sc_pi;
1413 switch (pi->pi_type) {
1465 switch (pi->pi_type) {
1497 switch (pi->pi_type) {
1518 switch (pi->pi_type) {
1536 switch (pi->pi_type) {
1552 switch (pi->pi_type) {
1622 struct plcom_instance *pi = &sc->sc_pi;
1633 while (! ISSET(PREAD1(pi, PL01XCOM_FR), PL01X_FR_RXFE)
1640 PREAD1(pi, PL01XCOM_DR);
1651 struct plcom_instance *pi = &sc->sc_pi;
1657 switch (pi->pi_type) {
1659 PWRITE1(pi, PL010COM_CR, 0);
1661 PWRITE1(pi, PL010COM_DLBL, sc->sc_ratel);
1662 PWRITE1(pi, PL010COM_DLBH, sc->sc_rateh);
1664 PWRITE1(pi, PL010COM_LCR, sc->sc_lcr);
1672 PWRITE1(pi, PL010COM_CR, sc->sc_cr);
1677 PWRITE2(pi, PL011COM_CR, 0);
1679 PWRITE1(pi, PL011COM_FBRD, sc->sc_ratel);
1680 PWRITE4(pi, PL011COM_IBRD, sc->sc_rateh);
1684 ifls = PREAD2(pi, PL011COM_IFLS) & ~PL011_IFLS_MASK;
1686 PWRITE2(pi, PL011COM_IFLS, ifls);
1688 PWRITE1(pi, PL011COM_LCRH, sc->sc_lcr);
1692 PWRITE2(pi, PL011COM_CR, sc->sc_cr);
1737 struct plcom_instance *pi = &sc->sc_pi;
1749 switch (pi->pi_type) {
1760 PWRITE2(pi, PL011COM_CR, sc->sc_cr);
1771 struct plcom_instance *pi = &sc->sc_pi;
1802 switch (pi->pi_type) {
1806 PWRITE1(pi, PL010COM_CR, sc->sc_cr);
1813 PWRITE4(pi, PL011COM_IMSC, sc->sc_imsc);
1825 PWRITEM1(pi, PL01XCOM_DR, sc->sc_tba, n);
1876 struct plcom_instance *pi = &sc->sc_pi;
1950 switch (pi->pi_type) {
1954 PWRITE1(pi, PL010COM_CR, sc->sc_cr);
1960 PWRITE4(pi, PL011COM_IMSC, sc->sc_imsc);
2047 plcom_intstatus(struct plcom_instance *pi, u_int *istatus)
2052 switch (pi->pi_type) {
2054 stat = PREAD1(pi, PL010COM_IIR);
2059 stat = PREAD4(pi, PL011COM_MIS);
2072 struct plcom_instance *pi = &sc->sc_pi;
2079 PLCOM_BARRIER(pi, BR | BW);
2085 intr = plcom_intstatus(pi, &istatus);
2100 fr = PREAD1(pi, PL01XCOM_FR);
2106 put[0] = PREAD1(pi, PL01XCOM_DR);
2107 rsr = PREAD1(pi, PL01XCOM_RSR);
2110 PWRITE1(pi, PL01XCOM_ECR, 0);
2132 fr = PREAD1(pi, PL01XCOM_FR);
2144 fr = PREAD1(pi, PL01XCOM_FR);
2176 switch (pi->pi_type) {
2180 PWRITE1(pi, PL010COM_CR, sc->sc_cr);
2186 PWRITE4(pi, PL011COM_IMSC, sc->sc_imsc);
2191 switch (pi->pi_type) {
2195 PWRITE1(pi, PL010COM_CR, 0);
2197 PWRITE1(pi, PL010COM_CR, sc->sc_cr);
2205 PWRITE2(pi, PL011COM_CR, 0);
2207 PWRITE2(pi, PL011COM_CR, sc->sc_cr);
2214 switch (pi->pi_type) {
2216 msr = PREAD1(pi, PL01XCOM_FR);
2220 msr = PREAD4(pi, PL01XCOM_FR);
2227 switch (pi->pi_type) {
2231 PWRITE1(pi, PL010COM_ICR, 0);
2238 PWRITE4(pi, PL011COM_ICR, PL011_INT_MSMASK);
2316 switch (pi->pi_type) {
2329 // PWRITE4(pi, PL011COM_ICR, PL011_INT_TX);
2347 PWRITEM1(pi, PL01XCOM_DR, sc->sc_tba, n);
2355 switch (pi->pi_type) {
2359 PWRITE1(pi, PL010COM_CR,
2367 PWRITE4(pi, PL011COM_IMSC,
2379 } while (plcom_intstatus(pi, &istatus));
2391 PLCOM_BARRIER(pi, BR | BW);
2410 plcom_common_getc(dev_t dev, struct plcom_instance *pi)
2428 if (ISSET(PREAD1(pi, PL01XCOM_FR), PL01X_FR_RXFE)) {
2433 c = PREAD1(pi, PL01XCOM_DR);
2445 plcom_common_putc(dev_t dev, struct plcom_instance *pi, int c)
2452 && !ISSET(stat = PREAD1(pi, PL01XCOM_FR), PL01X_FR_RXFE)) {
2454 cin = PREAD1(pi, PL01XCOM_DR);
2461 while (ISSET(PREAD1(pi, PL01XCOM_FR), PL01X_FR_TXFF) && --timo)
2464 PWRITE1(pi, PL01XCOM_DR, c);
2465 PLCOM_BARRIER(pi, BR | BW);
2474 plcominit(struct plcom_instance *pi, int rate, int frequency, tcflag_t cflag)
2478 switch (pi->pi_type) {
2480 if (pi->pi_size == 0)
2481 pi->pi_size = PL010COM_UART_SIZE;
2485 if (pi->pi_size == 0)
2486 pi->pi_size = PL011COM_UART_SIZE;
2492 if (bus_space_map(pi->pi_iot, pi->pi_iobase, pi->pi_size, 0,
2493 &pi->pi_ioh))
2497 switch (pi->pi_type) {
2499 PWRITE1(pi, PL010COM_CR, 0);
2503 PWRITE1(pi, PL010COM_DLBL, (rate & 0xff));
2504 PWRITE1(pi, PL010COM_DLBH, ((rate >> 8) & 0xff));
2506 PWRITE1(pi, PL010COM_LCR, lcr);
2507 PWRITE1(pi, PL010COM_CR, PL01X_CR_UARTEN);
2511 PWRITE2(pi, PL011COM_CR, 0);
2515 PWRITE1(pi, PL011COM_FBRD, rate & ((1 << 6) - 1));
2516 PWRITE4(pi, PL011COM_IBRD, rate >> 6);
2518 PWRITE1(pi, PL011COM_LCRH, lcr);
2519 PWRITE2(pi, PL011COM_CR,
2544 plcomcnattach(struct plcom_instance *pi, int rate, int frequency,
2549 plcomcons_info = *pi;
2602 struct plcom_instance *pi = &plcomcons_info;
2604 switch (pi->pi_type) {
2606 PWRITE1(pi, PL010COM_CR, PL01X_CR_UARTEN);
2610 PWRITE2(pi, PL011COM_CR,
2612 PWRITE4(pi, PL011COM_IMSC, 0);
2619 plcom_kgdb_attach(struct plcom_instance *pi, int rate, int frequency,
2624 if (pi->pi_iot == plcomcons_info.pi_iot &&
2625 pi->pi_iobase == plcomcons_info.pi_iobase)
2628 res = plcominit(pi, rate, frequency, cflag);
2635 plcomkgdb_info.pi_iot = pi->pi_iot;
2636 plcomkgdb_info.pi_ioh = pi->pi_ioh;
2637 plcomkgdb_info.pi_iobase = pi->pi_iobase;