Lines Matching refs:p

298 #define __pr_trace(pr, p, fmt, ...)					\  argument
300 ({ const struct parport *__p = (p); \
303 #define pr_trace(p, fmt, ...) __pr_trace(pr_debug, p, fmt , ##__VA_ARGS__) argument
304 #define pr_trace1(p, fmt, ...) __pr_trace(pr_debug1, p, fmt , ##__VA_ARGS__) argument
316 #define pr_probe(p, fmt, ...) \ argument
317 __pr_probe(KERN_INFO PPIP32 "0x%lx: " fmt, (p)->base , ##__VA_ARGS__)
331 static void parport_ip32_dump_state(struct parport *p, char *str, in parport_ip32_dump_state() argument
334 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_dump_state()
337 printk(KERN_DEBUG PPIP32 "%s: state (%s):\n", p->name, str); in parport_ip32_dump_state()
453 #define CHECK_EXTRA_BITS(p, b, m) \ argument
459 (p)->name, __func__, #b, __b, __m); \
763 static inline void parport_ip32_wakeup(struct parport *p) in parport_ip32_wakeup() argument
765 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_wakeup()
779 struct parport * const p = dev_id; in parport_ip32_interrupt() local
780 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_interrupt()
788 parport_ip32_wakeup(p); in parport_ip32_interrupt()
801 static inline unsigned int parport_ip32_read_econtrol(struct parport *p) in parport_ip32_read_econtrol() argument
803 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_read_econtrol()
812 static inline void parport_ip32_write_econtrol(struct parport *p, in parport_ip32_write_econtrol() argument
815 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_write_econtrol()
828 static inline void parport_ip32_frob_econtrol(struct parport *p, in parport_ip32_frob_econtrol() argument
833 c = (parport_ip32_read_econtrol(p) & ~mask) ^ val; in parport_ip32_frob_econtrol()
834 parport_ip32_write_econtrol(p, c); in parport_ip32_frob_econtrol()
845 static void parport_ip32_set_mode(struct parport *p, unsigned int mode) in parport_ip32_set_mode() argument
850 omode = parport_ip32_read_econtrol(p) & ECR_MODE_MASK; in parport_ip32_set_mode()
856 parport_ip32_write_econtrol(p, ecr); in parport_ip32_set_mode()
858 parport_ip32_write_econtrol(p, mode | ECR_nERRINTR | ECR_SERVINTR); in parport_ip32_set_mode()
867 static inline unsigned char parport_ip32_read_data(struct parport *p) in parport_ip32_read_data() argument
869 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_read_data()
878 static inline void parport_ip32_write_data(struct parport *p, unsigned char d) in parport_ip32_write_data() argument
880 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_write_data()
888 static inline unsigned char parport_ip32_read_status(struct parport *p) in parport_ip32_read_status() argument
890 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_read_status()
898 static inline unsigned int __parport_ip32_read_control(struct parport *p) in __parport_ip32_read_control() argument
900 struct parport_ip32_private * const priv = p->physport->private_data; in __parport_ip32_read_control()
909 static inline void __parport_ip32_write_control(struct parport *p, in __parport_ip32_write_control() argument
912 struct parport_ip32_private * const priv = p->physport->private_data; in __parport_ip32_write_control()
913 CHECK_EXTRA_BITS(p, c, priv->dcr_writable); in __parport_ip32_write_control()
929 static inline void __parport_ip32_frob_control(struct parport *p, in __parport_ip32_frob_control() argument
934 c = (__parport_ip32_read_control(p) & ~mask) ^ val; in __parport_ip32_frob_control()
935 __parport_ip32_write_control(p, c); in __parport_ip32_frob_control()
945 static inline unsigned char parport_ip32_read_control(struct parport *p) in parport_ip32_read_control() argument
949 return __parport_ip32_read_control(p) & rm; in parport_ip32_read_control()
960 static inline void parport_ip32_write_control(struct parport *p, in parport_ip32_write_control() argument
965 CHECK_EXTRA_BITS(p, c, wm); in parport_ip32_write_control()
966 __parport_ip32_frob_control(p, wm, c & wm); in parport_ip32_write_control()
978 static inline unsigned char parport_ip32_frob_control(struct parport *p, in parport_ip32_frob_control() argument
984 CHECK_EXTRA_BITS(p, mask, wm); in parport_ip32_frob_control()
985 CHECK_EXTRA_BITS(p, val, wm); in parport_ip32_frob_control()
986 __parport_ip32_frob_control(p, mask & wm, val & wm); in parport_ip32_frob_control()
987 return parport_ip32_read_control(p); in parport_ip32_frob_control()
994 static inline void parport_ip32_disable_irq(struct parport *p) in parport_ip32_disable_irq() argument
996 __parport_ip32_frob_control(p, DCR_IRQ, 0); in parport_ip32_disable_irq()
1003 static inline void parport_ip32_enable_irq(struct parport *p) in parport_ip32_enable_irq() argument
1005 __parport_ip32_frob_control(p, DCR_IRQ, DCR_IRQ); in parport_ip32_enable_irq()
1014 static inline void parport_ip32_data_forward(struct parport *p) in parport_ip32_data_forward() argument
1016 __parport_ip32_frob_control(p, DCR_DIR, 0); in parport_ip32_data_forward()
1026 static inline void parport_ip32_data_reverse(struct parport *p) in parport_ip32_data_reverse() argument
1028 __parport_ip32_frob_control(p, DCR_DIR, DCR_DIR); in parport_ip32_data_reverse()
1048 static void parport_ip32_save_state(struct parport *p, in parport_ip32_save_state() argument
1051 s->u.ip32.dcr = __parport_ip32_read_control(p); in parport_ip32_save_state()
1052 s->u.ip32.ecr = parport_ip32_read_econtrol(p); in parport_ip32_save_state()
1060 static void parport_ip32_restore_state(struct parport *p, in parport_ip32_restore_state() argument
1063 parport_ip32_set_mode(p, s->u.ip32.ecr & ECR_MODE_MASK); in parport_ip32_restore_state()
1064 parport_ip32_write_econtrol(p, s->u.ip32.ecr); in parport_ip32_restore_state()
1065 __parport_ip32_write_control(p, s->u.ip32.dcr); in parport_ip32_restore_state()
1076 static unsigned int parport_ip32_clear_epp_timeout(struct parport *p) in parport_ip32_clear_epp_timeout() argument
1078 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_clear_epp_timeout()
1081 if (!(parport_ip32_read_status(p) & DSR_TIMEOUT)) in parport_ip32_clear_epp_timeout()
1086 parport_ip32_read_status(p); in parport_ip32_clear_epp_timeout()
1087 r = parport_ip32_read_status(p); in parport_ip32_clear_epp_timeout()
1093 r = parport_ip32_read_status(p); in parport_ip32_clear_epp_timeout()
1097 pr_trace(p, "(): %s", cleared ? "cleared" : "failed"); in parport_ip32_clear_epp_timeout()
1110 struct parport *p, void *buf, in parport_ip32_epp_read() argument
1113 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_epp_read()
1115 parport_ip32_set_mode(p, ECR_MODE_EPP); in parport_ip32_epp_read()
1116 parport_ip32_data_reverse(p); in parport_ip32_epp_read()
1117 parport_ip32_write_control(p, DCR_nINIT); in parport_ip32_epp_read()
1121 parport_ip32_clear_epp_timeout(p); in parport_ip32_epp_read()
1130 parport_ip32_clear_epp_timeout(p); in parport_ip32_epp_read()
1135 parport_ip32_data_forward(p); in parport_ip32_epp_read()
1136 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_epp_read()
1149 struct parport *p, const void *buf, in parport_ip32_epp_write() argument
1152 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_epp_write()
1154 parport_ip32_set_mode(p, ECR_MODE_EPP); in parport_ip32_epp_write()
1155 parport_ip32_data_forward(p); in parport_ip32_epp_write()
1156 parport_ip32_write_control(p, DCR_nINIT); in parport_ip32_epp_write()
1160 parport_ip32_clear_epp_timeout(p); in parport_ip32_epp_write()
1169 parport_ip32_clear_epp_timeout(p); in parport_ip32_epp_write()
1174 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_epp_write()
1185 static size_t parport_ip32_epp_read_data(struct parport *p, void *buf, in parport_ip32_epp_read_data() argument
1188 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_epp_read_data()
1189 return parport_ip32_epp_read(priv->regs.eppData0, p, buf, len, flags); in parport_ip32_epp_read_data()
1199 static size_t parport_ip32_epp_write_data(struct parport *p, const void *buf, in parport_ip32_epp_write_data() argument
1202 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_epp_write_data()
1203 return parport_ip32_epp_write(priv->regs.eppData0, p, buf, len, flags); in parport_ip32_epp_write_data()
1213 static size_t parport_ip32_epp_read_addr(struct parport *p, void *buf, in parport_ip32_epp_read_addr() argument
1216 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_epp_read_addr()
1217 return parport_ip32_epp_read(priv->regs.eppAddr, p, buf, len, flags); in parport_ip32_epp_read_addr()
1227 static size_t parport_ip32_epp_write_addr(struct parport *p, const void *buf, in parport_ip32_epp_write_addr() argument
1230 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_epp_write_addr()
1231 return parport_ip32_epp_write(priv->regs.eppAddr, p, buf, len, flags); in parport_ip32_epp_write_addr()
1248 static unsigned int parport_ip32_fifo_wait_break(struct parport *p, in parport_ip32_fifo_wait_break() argument
1253 pr_debug1(PPIP32 "%s: FIFO write timed out\n", p->name); in parport_ip32_fifo_wait_break()
1257 pr_debug1(PPIP32 "%s: Signal pending\n", p->name); in parport_ip32_fifo_wait_break()
1260 if (!(parport_ip32_read_status(p) & DSR_nFAULT)) { in parport_ip32_fifo_wait_break()
1261 pr_debug1(PPIP32 "%s: nFault asserted low\n", p->name); in parport_ip32_fifo_wait_break()
1275 static unsigned int parport_ip32_fwp_wait_polling(struct parport *p) in parport_ip32_fwp_wait_polling() argument
1277 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_fwp_wait_polling()
1278 struct parport * const physport = p->physport; in parport_ip32_fwp_wait_polling()
1286 if (parport_ip32_fifo_wait_break(p, expire)) in parport_ip32_fwp_wait_polling()
1293 ecr = parport_ip32_read_econtrol(p); in parport_ip32_fwp_wait_polling()
1315 static unsigned int parport_ip32_fwp_wait_interrupt(struct parport *p) in parport_ip32_fwp_wait_interrupt() argument
1318 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_fwp_wait_interrupt()
1319 struct parport * const physport = p->physport; in parport_ip32_fwp_wait_interrupt()
1330 if (parport_ip32_fifo_wait_break(p, expire)) in parport_ip32_fwp_wait_interrupt()
1337 parport_ip32_frob_econtrol(p, ECR_SERVINTR, 0); in parport_ip32_fwp_wait_interrupt()
1342 ecr = parport_ip32_read_econtrol(p); in parport_ip32_fwp_wait_interrupt()
1348 ecr = parport_ip32_read_econtrol(p); in parport_ip32_fwp_wait_interrupt()
1353 p->name, __func__); in parport_ip32_fwp_wait_interrupt()
1359 parport_ip32_frob_econtrol(p, ECR_SERVINTR, ECR_SERVINTR); in parport_ip32_fwp_wait_interrupt()
1392 static size_t parport_ip32_fifo_write_block_pio(struct parport *p, in parport_ip32_fifo_write_block_pio() argument
1395 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_fifo_write_block_pio()
1404 count = (p->irq == PARPORT_IRQ_NONE) ? in parport_ip32_fifo_write_block_pio()
1405 parport_ip32_fwp_wait_polling(p) : in parport_ip32_fifo_write_block_pio()
1406 parport_ip32_fwp_wait_interrupt(p); in parport_ip32_fifo_write_block_pio()
1436 static size_t parport_ip32_fifo_write_block_dma(struct parport *p, in parport_ip32_fifo_write_block_dma() argument
1439 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_fifo_write_block_dma()
1440 struct parport * const physport = p->physport; in parport_ip32_fifo_write_block_dma()
1450 parport_ip32_frob_econtrol(p, ECR_DMAEN | ECR_SERVINTR, ECR_DMAEN); in parport_ip32_fifo_write_block_dma()
1456 if (parport_ip32_fifo_wait_break(p, expire)) in parport_ip32_fifo_write_block_dma()
1460 ecr = parport_ip32_read_econtrol(p); in parport_ip32_fifo_write_block_dma()
1481 static size_t parport_ip32_fifo_write_block(struct parport *p, in parport_ip32_fifo_write_block() argument
1488 written = (p->modes & PARPORT_MODE_DMA) ? in parport_ip32_fifo_write_block()
1489 parport_ip32_fifo_write_block_dma(p, buf, len) : in parport_ip32_fifo_write_block()
1490 parport_ip32_fifo_write_block_pio(p, buf, len); in parport_ip32_fifo_write_block()
1502 static unsigned int parport_ip32_drain_fifo(struct parport *p, in parport_ip32_drain_fifo() argument
1511 if (parport_ip32_read_econtrol(p) & ECR_F_EMPTY) in parport_ip32_drain_fifo()
1522 while (!(parport_ip32_read_econtrol(p) & ECR_F_EMPTY)) { in parport_ip32_drain_fifo()
1532 return !!(parport_ip32_read_econtrol(p) & ECR_F_EMPTY); in parport_ip32_drain_fifo()
1542 static unsigned int parport_ip32_get_fifo_residue(struct parport *p, in parport_ip32_get_fifo_residue() argument
1545 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_get_fifo_residue()
1554 if (parport_ip32_read_econtrol(p) & ECR_F_EMPTY) in parport_ip32_get_fifo_residue()
1557 pr_debug1(PPIP32 "%s: FIFO is stuck\n", p->name); in parport_ip32_get_fifo_residue()
1571 parport_ip32_frob_control(p, DCR_STROBE, 0); in parport_ip32_get_fifo_residue()
1575 if (parport_ip32_read_econtrol(p) & ECR_F_FULL) in parport_ip32_get_fifo_residue()
1582 p->name, residue, in parport_ip32_get_fifo_residue()
1586 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_get_fifo_residue()
1590 parport_ip32_data_reverse(p); in parport_ip32_get_fifo_residue()
1591 parport_ip32_frob_control(p, DCR_nINIT, 0); in parport_ip32_get_fifo_residue()
1592 if (parport_wait_peripheral(p, DSR_PERROR, 0)) in parport_ip32_get_fifo_residue()
1594 p->name, __func__); in parport_ip32_get_fifo_residue()
1595 parport_ip32_frob_control(p, DCR_STROBE, DCR_STROBE); in parport_ip32_get_fifo_residue()
1596 parport_ip32_frob_control(p, DCR_nINIT, DCR_nINIT); in parport_ip32_get_fifo_residue()
1597 if (parport_wait_peripheral(p, DSR_PERROR, DSR_PERROR)) in parport_ip32_get_fifo_residue()
1599 p->name, __func__); in parport_ip32_get_fifo_residue()
1603 parport_ip32_set_mode(p, ECR_MODE_CFG); in parport_ip32_get_fifo_residue()
1607 p->name, cnfga); in parport_ip32_get_fifo_residue()
1609 p->name); in parport_ip32_get_fifo_residue()
1617 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_get_fifo_residue()
1618 parport_ip32_data_forward(p); in parport_ip32_get_fifo_residue()
1630 static size_t parport_ip32_compat_write_data(struct parport *p, in parport_ip32_compat_write_data() argument
1635 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_compat_write_data()
1636 struct parport * const physport = p->physport; in parport_ip32_compat_write_data()
1642 return parport_ieee1284_write_compat(p, buf, len, flags); in parport_ip32_compat_write_data()
1645 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_compat_write_data()
1646 parport_ip32_write_control(p, DCR_SELECT | DCR_nINIT); in parport_ip32_compat_write_data()
1647 parport_ip32_data_forward(p); in parport_ip32_compat_write_data()
1648 parport_ip32_disable_irq(p); in parport_ip32_compat_write_data()
1649 parport_ip32_set_mode(p, ECR_MODE_PPF); in parport_ip32_compat_write_data()
1653 if (parport_wait_peripheral(p, DSR_nBUSY | DSR_nFAULT, in parport_ip32_compat_write_data()
1658 p->name, __func__); in parport_ip32_compat_write_data()
1664 written = parport_ip32_fifo_write_block(p, buf, len); in parport_ip32_compat_write_data()
1667 parport_ip32_drain_fifo(p, physport->cad->timeout * priv->fifo_depth); in parport_ip32_compat_write_data()
1670 written -= parport_ip32_get_fifo_residue(p, ECR_MODE_PPF); in parport_ip32_compat_write_data()
1673 if (parport_wait_peripheral(p, DSR_nBUSY, DSR_nBUSY)) in parport_ip32_compat_write_data()
1675 p->name, __func__); in parport_ip32_compat_write_data()
1679 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_compat_write_data()
1696 static size_t parport_ip32_ecp_write_data(struct parport *p, in parport_ip32_ecp_write_data() argument
1701 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_ecp_write_data()
1702 struct parport * const physport = p->physport; in parport_ip32_ecp_write_data()
1708 return parport_ieee1284_ecp_write_data(p, buf, len, flags); in parport_ip32_ecp_write_data()
1713 parport_ip32_frob_control(p, DCR_nINIT | DCR_AUTOFD, in parport_ip32_ecp_write_data()
1717 if (parport_wait_peripheral(p, DSR_PERROR, DSR_PERROR)) { in parport_ip32_ecp_write_data()
1719 p->name, __func__); in parport_ip32_ecp_write_data()
1726 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_ecp_write_data()
1727 parport_ip32_write_control(p, DCR_SELECT | DCR_nINIT); in parport_ip32_ecp_write_data()
1728 parport_ip32_data_forward(p); in parport_ip32_ecp_write_data()
1729 parport_ip32_disable_irq(p); in parport_ip32_ecp_write_data()
1730 parport_ip32_set_mode(p, ECR_MODE_ECP); in parport_ip32_ecp_write_data()
1734 if (parport_wait_peripheral(p, DSR_nBUSY | DSR_nFAULT, in parport_ip32_ecp_write_data()
1739 p->name, __func__); in parport_ip32_ecp_write_data()
1745 written = parport_ip32_fifo_write_block(p, buf, len); in parport_ip32_ecp_write_data()
1748 parport_ip32_drain_fifo(p, physport->cad->timeout * priv->fifo_depth); in parport_ip32_ecp_write_data()
1751 written -= parport_ip32_get_fifo_residue(p, ECR_MODE_ECP); in parport_ip32_ecp_write_data()
1754 if (parport_wait_peripheral(p, DSR_nBUSY, DSR_nBUSY)) in parport_ip32_ecp_write_data()
1756 p->name, __func__); in parport_ip32_ecp_write_data()
1760 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_ecp_write_data()
1818 static __init unsigned int parport_ip32_ecp_supported(struct parport *p) in parport_ip32_ecp_supported() argument
1820 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_ecp_supported()
1828 pr_probe(p, "Found working ECR register\n"); in parport_ip32_ecp_supported()
1829 parport_ip32_set_mode(p, ECR_MODE_SPP); in parport_ip32_ecp_supported()
1830 parport_ip32_write_control(p, DCR_SELECT | DCR_nINIT); in parport_ip32_ecp_supported()
1834 pr_probe(p, "ECR register not found\n"); in parport_ip32_ecp_supported()
1846 static __init unsigned int parport_ip32_fifo_supported(struct parport *p) in parport_ip32_fifo_supported() argument
1848 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_fifo_supported()
1854 parport_ip32_set_mode(p, ECR_MODE_CFG); in parport_ip32_fifo_supported()
1870 pr_probe(p, "Unknown implementation ID: 0x%0x\n", in parport_ip32_fifo_supported()
1876 pr_probe(p, "Unsupported PWord size: %u\n", pword); in parport_ip32_fifo_supported()
1880 pr_probe(p, "PWord is %u bits\n", 8 * priv->pword); in parport_ip32_fifo_supported()
1885 pr_probe(p, "Hardware compression detected (unsupported)\n"); in parport_ip32_fifo_supported()
1889 parport_ip32_set_mode(p, ECR_MODE_TST); in parport_ip32_fifo_supported()
1893 pr_probe(p, "FIFO not reset\n"); in parport_ip32_fifo_supported()
1908 pr_probe(p, "Can't fill FIFO\n"); in parport_ip32_fifo_supported()
1912 pr_probe(p, "Can't get FIFO depth\n"); in parport_ip32_fifo_supported()
1915 pr_probe(p, "FIFO is %u PWords deep\n", priv->fifo_depth); in parport_ip32_fifo_supported()
1918 parport_ip32_frob_econtrol(p, ECR_SERVINTR, 0); in parport_ip32_fifo_supported()
1925 pr_probe(p, "Invalid data in FIFO\n"); in parport_ip32_fifo_supported()
1935 pr_probe(p, "Data lost in FIFO\n"); in parport_ip32_fifo_supported()
1940 pr_probe(p, "Can't get writeIntrThreshold\n"); in parport_ip32_fifo_supported()
1943 pr_probe(p, "writeIntrThreshold is %u\n", priv->writeIntrThreshold); in parport_ip32_fifo_supported()
1947 pr_probe(p, "Can't empty FIFO\n"); in parport_ip32_fifo_supported()
1952 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_fifo_supported()
1954 parport_ip32_data_reverse(p); in parport_ip32_fifo_supported()
1956 parport_ip32_set_mode(p, ECR_MODE_TST); in parport_ip32_fifo_supported()
1958 parport_ip32_frob_econtrol(p, ECR_SERVINTR, 0); in parport_ip32_fifo_supported()
1972 pr_probe(p, "Can't get readIntrThreshold\n"); in parport_ip32_fifo_supported()
1975 pr_probe(p, "readIntrThreshold is %u\n", priv->readIntrThreshold); in parport_ip32_fifo_supported()
1978 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_fifo_supported()
1979 parport_ip32_data_forward(p); in parport_ip32_fifo_supported()
1980 parport_ip32_set_mode(p, ECR_MODE_SPP); in parport_ip32_fifo_supported()
1985 parport_ip32_set_mode(p, ECR_MODE_SPP); in parport_ip32_fifo_supported()
2039 struct parport *p = NULL; in parport_ip32_probe_port() local
2047 p = parport_register_port(0, PARPORT_IRQ_NONE, PARPORT_DMA_NONE, ops); in parport_ip32_probe_port()
2048 if (ops == NULL || priv == NULL || p == NULL) { in parport_ip32_probe_port()
2052 p->base = MACE_BASE + offsetof(struct sgi_mace, isa.parallel); in parport_ip32_probe_port()
2053 p->base_hi = MACE_BASE + offsetof(struct sgi_mace, isa.ecp1284); in parport_ip32_probe_port()
2054 p->private_data = priv; in parport_ip32_probe_port()
2066 if (!parport_ip32_ecp_supported(p)) { in parport_ip32_probe_port()
2070 parport_ip32_dump_state(p, "begin init", 0); in parport_ip32_probe_port()
2074 p->modes = PARPORT_MODE_PCSPP | PARPORT_MODE_SAFEININT; in parport_ip32_probe_port()
2075 p->modes |= PARPORT_MODE_TRISTATE; in parport_ip32_probe_port()
2077 if (!parport_ip32_fifo_supported(p)) { in parport_ip32_probe_port()
2079 "%s: error: FIFO disabled\n", p->name); in parport_ip32_probe_port()
2090 if (request_irq(irq, parport_ip32_interrupt, 0, p->name, p)) { in parport_ip32_probe_port()
2092 "%s: error: IRQ disabled\n", p->name); in parport_ip32_probe_port()
2096 pr_probe(p, "Interrupt support enabled\n"); in parport_ip32_probe_port()
2097 p->irq = irq; in parport_ip32_probe_port()
2106 "%s: error: DMA disabled\n", p->name); in parport_ip32_probe_port()
2108 pr_probe(p, "DMA support enabled\n"); in parport_ip32_probe_port()
2109 p->dma = 0; /* arbitrary value != PARPORT_DMA_NONE */ in parport_ip32_probe_port()
2110 p->modes |= PARPORT_MODE_DMA; in parport_ip32_probe_port()
2116 p->ops->compat_write_data = parport_ip32_compat_write_data; in parport_ip32_probe_port()
2117 p->modes |= PARPORT_MODE_COMPAT; in parport_ip32_probe_port()
2118 pr_probe(p, "Hardware support for SPP mode enabled\n"); in parport_ip32_probe_port()
2122 p->ops->epp_read_data = parport_ip32_epp_read_data; in parport_ip32_probe_port()
2123 p->ops->epp_write_data = parport_ip32_epp_write_data; in parport_ip32_probe_port()
2124 p->ops->epp_read_addr = parport_ip32_epp_read_addr; in parport_ip32_probe_port()
2125 p->ops->epp_write_addr = parport_ip32_epp_write_addr; in parport_ip32_probe_port()
2126 p->modes |= PARPORT_MODE_EPP; in parport_ip32_probe_port()
2127 pr_probe(p, "Hardware support for EPP mode enabled\n"); in parport_ip32_probe_port()
2131 p->ops->ecp_write_data = parport_ip32_ecp_write_data; in parport_ip32_probe_port()
2135 p->modes |= PARPORT_MODE_ECP; in parport_ip32_probe_port()
2136 pr_probe(p, "Hardware support for ECP mode enabled\n"); in parport_ip32_probe_port()
2140 parport_ip32_set_mode(p, ECR_MODE_PS2); in parport_ip32_probe_port()
2141 parport_ip32_write_control(p, DCR_SELECT | DCR_nINIT); in parport_ip32_probe_port()
2142 parport_ip32_data_forward(p); in parport_ip32_probe_port()
2143 parport_ip32_disable_irq(p); in parport_ip32_probe_port()
2144 parport_ip32_write_data(p, 0x00); in parport_ip32_probe_port()
2145 parport_ip32_dump_state(p, "end init", 0); in parport_ip32_probe_port()
2149 p->name, p->base, p->base_hi); in parport_ip32_probe_port()
2150 if (p->irq != PARPORT_IRQ_NONE) in parport_ip32_probe_port()
2151 printk(", irq %d", p->irq); in parport_ip32_probe_port()
2153 #define printmode(x) if (p->modes & PARPORT_MODE_##x) \ in parport_ip32_probe_port()
2167 parport_announce_port(p); in parport_ip32_probe_port()
2168 return p; in parport_ip32_probe_port()
2171 if (p) in parport_ip32_probe_port()
2172 parport_put_port(p); in parport_ip32_probe_port()
2185 static __exit void parport_ip32_unregister_port(struct parport *p) in parport_ip32_unregister_port() argument
2187 struct parport_ip32_private * const priv = p->physport->private_data; in parport_ip32_unregister_port()
2188 struct parport_operations *ops = p->ops; in parport_ip32_unregister_port()
2190 parport_remove_port(p); in parport_ip32_unregister_port()
2191 if (p->modes & PARPORT_MODE_DMA) in parport_ip32_unregister_port()
2193 if (p->irq != PARPORT_IRQ_NONE) in parport_ip32_unregister_port()
2194 free_irq(p->irq, p); in parport_ip32_unregister_port()
2195 parport_put_port(p); in parport_ip32_unregister_port()