Lines Matching refs:brd

360 #define MOXA_IS_320(brd) ((brd)->boardType == MOXA_BOARD_C320_ISA || \
361 (brd)->boardType == MOXA_BOARD_C320_PCI)
725 static int moxa_check_fw_model(struct moxa_board_conf *brd, u8 model)
727 switch (brd->boardType) {
757 static int moxa_load_bios(struct moxa_board_conf *brd, const u8 *buf,
760 void __iomem *baseAddr = brd->basemem;
771 switch (brd->boardType) {
802 static int moxa_load_320b(struct moxa_board_conf *brd, const u8 *ptr,
805 void __iomem *baseAddr = brd->basemem;
821 static int moxa_real_load_code(struct moxa_board_conf *brd, const void *ptr,
824 void __iomem *baseAddr = brd->basemem;
831 keycode = (brd->boardType == MOXA_BOARD_CP204J) ? CP204J_KeyCode :
834 switch (brd->boardType) {
900 if (MOXA_IS_320(brd)) {
901 if (brd->busType == MOXA_BUS_TYPE_PCI) { /* ASIC board */
921 if (MOXA_IS_320(brd)) {
925 brd->numPorts = j * 8;
936 brd->intNdx = baseAddr + IRQindex;
937 brd->intPend = baseAddr + IRQpending;
938 brd->intTable = baseAddr + IRQtable;
943 static int moxa_load_code(struct moxa_board_conf *brd, const void *ptr,
946 void __iomem *ofsAddr, *baseAddr = brd->basemem;
955 retval = moxa_real_load_code(brd, ptr, len); /* may change numPorts */
959 switch (brd->boardType) {
963 port = brd->ports;
964 for (i = 0; i < brd->numPorts; i++, port++) {
965 port->board = brd;
981 port = brd->ports;
982 for (i = 0; i < brd->numPorts; i++, port++) {
983 port->board = brd;
988 switch (brd->numPorts) {
1031 static int moxa_load_fw(struct moxa_board_conf *brd, const struct firmware *fw)
1062 if (moxa_check_fw_model(brd, hdr->model)) {
1093 ret = moxa_load_bios(brd, ptr, lens[lenp]);
1102 ret = moxa_load_320b(brd, ptr, lens[lenp]);
1110 ret = moxa_load_code(brd, ptr, lens[lenp]);
1120 static int moxa_init_board(struct moxa_board_conf *brd, struct device *dev)
1128 brd->ports = kcalloc(MAX_PORTS_PER_BOARD, sizeof(*brd->ports),
1130 if (brd->ports == NULL) {
1136 for (i = 0, p = brd->ports; i < MAX_PORTS_PER_BOARD; i++, p++) {
1143 switch (brd->boardType) {
1165 ret = moxa_load_fw(brd, fw);
1173 brd->ready = 1;
1178 first_idx = (brd - moxa_boards) * MAX_PORTS_PER_BOARD;
1179 for (i = 0; i < brd->numPorts; i++)
1180 tty_port_register_device(&brd->ports[i].port, moxaDriver,
1186 tty_port_destroy(&brd->ports[i].port);
1187 kfree(brd->ports);
1192 static void moxa_board_deinit(struct moxa_board_conf *brd)
1198 brd->ready = 0;
1202 for (a = 0; a < brd->numPorts; a++)
1203 if (tty_port_initialized(&brd->ports[a].port))
1204 tty_port_tty_hangup(&brd->ports[a].port, false);
1207 tty_port_destroy(&brd->ports[a].port);
1211 for (a = 0; a < brd->numPorts; a++)
1212 if (tty_port_initialized(&brd->ports[a].port))
1221 first_idx = (brd - moxa_boards) * MAX_PORTS_PER_BOARD;
1222 for (a = 0; a < brd->numPorts; a++)
1225 iounmap(brd->basemem);
1226 brd->basemem = NULL;
1227 kfree(brd->ports);
1308 struct moxa_board_conf *brd = pci_get_drvdata(pdev);
1310 moxa_board_deinit(brd);
1327 struct moxa_board_conf *brd = moxa_boards;
1370 brd->boardType = type[i];
1371 brd->numPorts = type[i] == MOXA_BOARD_C218_ISA ? 8 :
1373 brd->busType = MOXA_BUS_TYPE_ISA;
1374 brd->basemem = ioremap(baseaddr[i], 0x4000);
1375 if (!brd->basemem) {
1380 if (moxa_init_board(brd, NULL)) {
1381 iounmap(brd->basemem);
1382 brd->basemem = NULL;
1388 baseaddr[i], brd->numPorts);
1390 brd++;
1455 struct moxa_board_conf *brd;
1465 brd = &moxa_boards[port / MAX_PORTS_PER_BOARD];
1466 if (!brd->ready) {
1471 if (port % MAX_PORTS_PER_BOARD >= brd->numPorts) {
1476 ch = &brd->ports[port % MAX_PORTS_PER_BOARD];
1725 struct moxa_board_conf *brd;
1731 brd = &moxa_boards[card];
1732 if (!brd->ready)
1738 if (readb(brd->intPend) == 0xff)
1739 ip = brd->intTable + readb(brd->intNdx);
1741 for (port = 0; port < brd->numPorts; port++)
1742 moxa_poll_port(&brd->ports[port], !!ip, ip + port);
1745 writeb(0, brd->intPend); /* ACK */
1748 struct moxa_port *p = brd->ports;
1749 for (port = 0; port < brd->numPorts; port++, p++)