Lines Matching defs:icom_adapter
52 #define to_icom_adapter(d) container_of(d, struct icom_adapter, kref)
858 struct icom_adapter *icom_adapter;
862 icom_adapter = (struct icom_adapter *) dev_id;
864 if (icom_adapter->version == ADAPTER_V2) {
865 int_reg = icom_adapter->base_addr + 0x8024;
871 icom_port = &icom_adapter->port_info[2];
878 icom_port = &icom_adapter->port_info[3];
890 int_reg = icom_adapter->base_addr + 0x8004;
892 int_reg = icom_adapter->base_addr + 0x4004;
899 icom_port = &icom_adapter->port_info[0];
906 icom_port = &icom_adapter->port_info[1];
1307 static int icom_init_ports(struct icom_adapter *icom_adapter)
1309 u32 subsystem_id = icom_adapter->subsystem_id;
1313 if (icom_adapter->version == ADAPTER_V1) {
1314 icom_adapter->numb_ports = 2;
1317 icom_port = &icom_adapter->port_info[i];
1324 icom_adapter->numb_ports = 4;
1327 icom_port = &icom_adapter->port_info[i];
1334 icom_adapter->numb_ports = 4;
1336 icom_adapter->port_info[0].port = 0;
1337 icom_adapter->port_info[0].status = ICOM_PORT_ACTIVE;
1341 icom_adapter->port_info[0].imbed_modem = ICOM_IMBED_MODEM;
1343 icom_adapter->port_info[0].imbed_modem = ICOM_RVX;
1346 icom_adapter->port_info[1].status = ICOM_PORT_OFF;
1348 icom_adapter->port_info[2].port = 2;
1349 icom_adapter->port_info[2].status = ICOM_PORT_ACTIVE;
1350 icom_adapter->port_info[2].imbed_modem = ICOM_RVX;
1351 icom_adapter->port_info[3].status = ICOM_PORT_OFF;
1358 static void icom_port_active(struct icom_port *icom_port, struct icom_adapter *icom_adapter, int port_num)
1360 if (icom_adapter->version == ADAPTER_V1) {
1361 icom_port->global_reg = icom_adapter->base_addr + 0x4000;
1362 icom_port->int_reg = icom_adapter->base_addr +
1365 icom_port->global_reg = icom_adapter->base_addr + 0x8000;
1367 icom_port->int_reg = icom_adapter->base_addr +
1370 icom_port->int_reg = icom_adapter->base_addr +
1374 static int icom_load_ports(struct icom_adapter *icom_adapter)
1379 for (port_num = 0; port_num < icom_adapter->numb_ports; port_num++) {
1381 icom_port = &icom_adapter->port_info[port_num];
1384 icom_port_active(icom_port, icom_adapter, port_num);
1385 icom_port->dram = icom_adapter->base_addr +
1388 icom_port->adapter = icom_adapter;
1400 static int icom_alloc_adapter(struct icom_adapter
1404 struct icom_adapter *icom_adapter;
1405 struct icom_adapter *cur_adapter_entry;
1408 icom_adapter = kzalloc(sizeof(struct icom_adapter), GFP_KERNEL);
1410 if (!icom_adapter) {
1416 list_entry(tmp, struct icom_adapter,
1424 icom_adapter->index = adapter_count;
1425 list_add_tail(&icom_adapter->icom_adapter_entry, tmp);
1427 *icom_adapter_ref = icom_adapter;
1431 static void icom_free_adapter(struct icom_adapter *icom_adapter)
1433 list_del(&icom_adapter->icom_adapter_entry);
1434 kfree(icom_adapter);
1437 static void icom_remove_adapter(struct icom_adapter *icom_adapter)
1442 for (index = 0; index < icom_adapter->numb_ports; index++) {
1443 icom_port = &icom_adapter->port_info[index];
1446 dev_info(&icom_adapter->pci_dev->dev,
1465 free_irq(icom_adapter->pci_dev->irq, (void *) icom_adapter);
1466 iounmap(icom_adapter->base_addr);
1467 pci_release_regions(icom_adapter->pci_dev);
1468 icom_free_adapter(icom_adapter);
1473 struct icom_adapter *icom_adapter;
1475 icom_adapter = to_icom_adapter(kref);
1476 icom_remove_adapter(icom_adapter);
1485 struct icom_adapter *icom_adapter;
1521 retval = icom_alloc_adapter(&icom_adapter);
1528 icom_adapter->base_addr_pci = pci_resource_start(dev, 0);
1529 icom_adapter->pci_dev = dev;
1530 icom_adapter->version = ent->driver_data;
1531 icom_adapter->subsystem_id = ent->subdevice;
1534 retval = icom_init_ports(icom_adapter);
1540 icom_adapter->base_addr = pci_ioremap_bar(dev, 0);
1542 if (!icom_adapter->base_addr) {
1548 retval = request_irq(dev->irq, icom_interrupt, IRQF_SHARED, ICOM_DRIVER_NAME, (void *)icom_adapter);
1553 retval = icom_load_ports(icom_adapter);
1555 for (index = 0; index < icom_adapter->numb_ports; index++) {
1556 icom_port = &icom_adapter->port_info[index];
1563 (unsigned char __iomem *)icom_adapter->base_addr_pci;
1567 icom_port->port + icom_adapter->index * 4;
1576 kref_init(&icom_adapter->kref);
1580 iounmap(icom_adapter->base_addr);
1582 icom_free_adapter(icom_adapter);
1593 struct icom_adapter *icom_adapter;
1597 icom_adapter = list_entry(tmp, struct icom_adapter,
1599 if (icom_adapter->pci_dev == dev) {
1600 kref_put(&icom_adapter->kref, icom_kref_release);