Lines Matching refs:ohci

57 #define ohci_info(ohci, f, args...)	dev_info(ohci->card.device, f, ##args)  argument
58 #define ohci_notice(ohci, f, args...) dev_notice(ohci->card.device, f, ##args) argument
59 #define ohci_err(ohci, f, args...) dev_err(ohci->card.device, f, ##args) argument
101 struct fw_ohci *ohci; member
131 struct fw_ohci *ohci; member
379 static void log_irqs(struct fw_ohci *ohci, u32 evt) in log_irqs() argument
389 ohci_notice(ohci, "IRQ %08x%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", evt, in log_irqs()
428 static void log_selfids(struct fw_ohci *ohci, int generation, int self_id_count) in log_selfids() argument
435 ohci_notice(ohci, "%d selfIDs, generation %d, local node ID %04x\n", in log_selfids()
436 self_id_count, generation, ohci->node_id); in log_selfids()
438 for (s = ohci->self_id_buffer; self_id_count--; ++s) in log_selfids()
440 ohci_notice(ohci, in log_selfids()
447 ohci_notice(ohci, in log_selfids()
484 static void log_ar_at_event(struct fw_ohci *ohci, in log_ar_at_event() argument
497 ohci_notice(ohci, "A%c evt_bus_reset, generation %d\n", in log_ar_at_event()
517 ohci_notice(ohci, "A%c %s, %s\n", in log_ar_at_event()
521 ohci_notice(ohci, "A%c %s, PHY %08x %08x\n", in log_ar_at_event()
525 ohci_notice(ohci, in log_ar_at_event()
532 ohci_notice(ohci, in log_ar_at_event()
540 static inline void reg_write(const struct fw_ohci *ohci, int offset, u32 data) in reg_write() argument
542 writel(data, ohci->registers + offset); in reg_write()
545 static inline u32 reg_read(const struct fw_ohci *ohci, int offset) in reg_read() argument
547 return readl(ohci->registers + offset); in reg_read()
550 static inline void flush_writes(const struct fw_ohci *ohci) in flush_writes() argument
553 reg_read(ohci, OHCI1394_Version); in flush_writes()
562 static int read_phy_reg(struct fw_ohci *ohci, int addr) in read_phy_reg() argument
567 reg_write(ohci, OHCI1394_PhyControl, OHCI1394_PhyControl_Read(addr)); in read_phy_reg()
569 val = reg_read(ohci, OHCI1394_PhyControl); in read_phy_reg()
583 ohci_err(ohci, "failed to read phy reg %d\n", addr); in read_phy_reg()
589 static int write_phy_reg(const struct fw_ohci *ohci, int addr, u32 val) in write_phy_reg() argument
593 reg_write(ohci, OHCI1394_PhyControl, in write_phy_reg()
596 val = reg_read(ohci, OHCI1394_PhyControl); in write_phy_reg()
606 ohci_err(ohci, "failed to write phy reg %d, val %u\n", addr, val); in write_phy_reg()
612 static int update_phy_reg(struct fw_ohci *ohci, int addr, in update_phy_reg() argument
615 int ret = read_phy_reg(ohci, addr); in update_phy_reg()
626 return write_phy_reg(ohci, addr, (ret & ~clear_bits) | set_bits); in update_phy_reg()
629 static int read_paged_phy_reg(struct fw_ohci *ohci, int page, int addr) in read_paged_phy_reg() argument
633 ret = update_phy_reg(ohci, 7, PHY_PAGE_SELECT, page << 5); in read_paged_phy_reg()
637 return read_phy_reg(ohci, addr); in read_paged_phy_reg()
642 struct fw_ohci *ohci = fw_ohci(card); in ohci_read_phy_reg() local
645 mutex_lock(&ohci->phy_reg_mutex); in ohci_read_phy_reg()
646 ret = read_phy_reg(ohci, addr); in ohci_read_phy_reg()
647 mutex_unlock(&ohci->phy_reg_mutex); in ohci_read_phy_reg()
655 struct fw_ohci *ohci = fw_ohci(card); in ohci_update_phy_reg() local
658 mutex_lock(&ohci->phy_reg_mutex); in ohci_update_phy_reg()
659 ret = update_phy_reg(ohci, addr, clear_bits, set_bits); in ohci_update_phy_reg()
660 mutex_unlock(&ohci->phy_reg_mutex); in ohci_update_phy_reg()
685 reg_write(ctx->ohci, CONTROL_SET(ctx->regs), CONTEXT_WAKE); in ar_context_link_page()
696 dma_unmap_page(ctx->ohci->card.device, in ar_context_release()
705 struct fw_ohci *ohci = ctx->ohci; in ar_context_abort() local
707 if (reg_read(ohci, CONTROL_CLEAR(ctx->regs)) & CONTEXT_RUN) { in ar_context_abort()
708 reg_write(ohci, CONTROL_CLEAR(ctx->regs), CONTEXT_RUN); in ar_context_abort()
709 flush_writes(ohci); in ar_context_abort()
711 ohci_err(ohci, "AR error: %s; DMA stopped\n", error_msg); in ar_context_abort()
795 dma_sync_single_for_cpu(ctx->ohci->card.device, in ar_sync_buffers_for_cpu()
801 dma_sync_single_for_cpu(ctx->ohci->card.device, in ar_sync_buffers_for_cpu()
808 (ohci->quirks & QUIRK_BE_HEADERS ? (__force __u32)(v) : le32_to_cpu(v))
815 struct fw_ohci *ohci = ctx->ohci; in handle_ar_packet() local
874 p.generation = ohci->request_generation; in handle_ar_packet()
876 log_ar_at_event(ohci, 'R', p.speed, p.header, evt); in handle_ar_packet()
900 if (!(ohci->quirks & QUIRK_RESET_PACKET)) in handle_ar_packet()
901 ohci->request_generation = (p.header[2] >> 16) & 0xff; in handle_ar_packet()
902 } else if (ctx == &ohci->ar_request_ctx) { in handle_ar_packet()
903 fw_core_handle_request(&ohci->card, &p); in handle_ar_packet()
905 fw_core_handle_response(&ohci->card, &p); in handle_ar_packet()
931 dma_sync_single_for_device(ctx->ohci->card.device, in ar_recycle_buffers()
985 static int ar_context_init(struct ar_context *ctx, struct fw_ohci *ohci, in ar_context_init() argument
994 ctx->ohci = ohci; in ar_context_init()
1001 dma_addr = dma_map_page(ohci->card.device, ctx->pages[i], in ar_context_init()
1003 if (dma_mapping_error(ohci->card.device, dma_addr)) { in ar_context_init()
1019 ctx->descriptors = ohci->misc_buffer + descriptors_offset; in ar_context_init()
1020 ctx->descriptors_bus = ohci->misc_buffer_bus + descriptors_offset; in ar_context_init()
1050 reg_write(ctx->ohci, COMMAND_PTR(ctx->regs), ctx->descriptors_bus | 1); in ar_context_run()
1051 reg_write(ctx->ohci, CONTROL_SET(ctx->regs), CONTEXT_RUN); in ar_context_run()
1102 spin_lock_irqsave(&ctx->ohci->lock, flags); in context_tasklet()
1104 spin_unlock_irqrestore(&ctx->ohci->lock, flags); in context_tasklet()
1127 desc = dma_alloc_coherent(ctx->ohci->card.device, PAGE_SIZE, in context_add_buffer()
1143 static int context_init(struct context *ctx, struct fw_ohci *ohci, in context_init() argument
1146 ctx->ohci = ohci; in context_init()
1178 struct fw_card *card = &ctx->ohci->card; in context_release()
1221 struct fw_ohci *ohci = ctx->ohci; in context_run() local
1223 reg_write(ohci, COMMAND_PTR(ctx->regs), in context_run()
1225 reg_write(ohci, CONTROL_CLEAR(ctx->regs), ~0); in context_run()
1226 reg_write(ohci, CONTROL_SET(ctx->regs), CONTEXT_RUN | extra); in context_run()
1228 flush_writes(ohci); in context_run()
1256 if (unlikely(ctx->ohci->quirks & QUIRK_IR_WAKE) && in context_append()
1269 struct fw_ohci *ohci = ctx->ohci; in context_stop() local
1273 reg_write(ohci, CONTROL_CLEAR(ctx->regs), CONTEXT_RUN); in context_stop()
1277 reg = reg_read(ohci, CONTROL_SET(ctx->regs)); in context_stop()
1284 ohci_err(ohci, "DMA context still active (0x%08x)\n", reg); in context_stop()
1300 struct fw_ohci *ohci = ctx->ohci; in at_context_queue_packet() local
1379 payload_bus = dma_map_single(ohci->card.device, in at_context_queue_packet()
1383 if (dma_mapping_error(ohci->card.device, payload_bus)) { in at_context_queue_packet()
1409 if (ohci->generation != packet->generation) { in at_context_queue_packet()
1411 dma_unmap_single(ohci->card.device, payload_bus, in at_context_queue_packet()
1420 reg_write(ohci, CONTROL_SET(ctx->regs), CONTEXT_WAKE); in at_context_queue_packet()
1444 struct fw_ohci *ohci = context->ohci; in handle_at_packet() local
1458 dma_unmap_single(ohci->card.device, packet->payload_bus, in handle_at_packet()
1464 log_ar_at_event(ohci, 'T', packet->speed, packet->header, evt); in handle_at_packet()
1514 packet->callback(packet, &ohci->card, packet->ack); in handle_at_packet()
1525 static void handle_local_rom(struct fw_ohci *ohci, in handle_local_rom() argument
1546 (void *) ohci->config_rom + i, length); in handle_local_rom()
1549 fw_core_handle_response(&ohci->card, &response); in handle_local_rom()
1552 static void handle_local_lock(struct fw_ohci *ohci, in handle_local_lock() argument
1579 reg_write(ohci, OHCI1394_CSRData, lock_data); in handle_local_lock()
1580 reg_write(ohci, OHCI1394_CSRCompareData, lock_arg); in handle_local_lock()
1581 reg_write(ohci, OHCI1394_CSRControl, sel); in handle_local_lock()
1584 if (reg_read(ohci, OHCI1394_CSRControl) & 0x80000000) { in handle_local_lock()
1585 lock_old = cpu_to_be32(reg_read(ohci, in handle_local_lock()
1593 ohci_err(ohci, "swap not done (CSR lock timeout)\n"); in handle_local_lock()
1597 fw_core_handle_response(&ohci->card, &response); in handle_local_lock()
1604 if (ctx == &ctx->ohci->at_request_ctx) { in handle_local_request()
1606 packet->callback(packet, &ctx->ohci->card, packet->ack); in handle_local_request()
1617 handle_local_rom(ctx->ohci, packet, csr); in handle_local_request()
1623 handle_local_lock(ctx->ohci, packet, csr); in handle_local_request()
1626 if (ctx == &ctx->ohci->at_request_ctx) in handle_local_request()
1627 fw_core_handle_request(&ctx->ohci->card, packet); in handle_local_request()
1629 fw_core_handle_response(&ctx->ohci->card, packet); in handle_local_request()
1633 if (ctx == &ctx->ohci->at_response_ctx) { in handle_local_request()
1635 packet->callback(packet, &ctx->ohci->card, packet->ack); in handle_local_request()
1644 spin_lock_irqsave(&ctx->ohci->lock, flags); in at_context_transmit()
1646 if (HEADER_GET_DESTINATION(packet->header[0]) == ctx->ohci->node_id && in at_context_transmit()
1647 ctx->ohci->generation == packet->generation) { in at_context_transmit()
1648 spin_unlock_irqrestore(&ctx->ohci->lock, flags); in at_context_transmit()
1654 spin_unlock_irqrestore(&ctx->ohci->lock, flags); in at_context_transmit()
1657 packet->callback(packet, &ctx->ohci->card, packet->ack); in at_context_transmit()
1661 static void detect_dead_context(struct fw_ohci *ohci, in detect_dead_context() argument
1666 ctl = reg_read(ohci, CONTROL_SET(regs)); in detect_dead_context()
1668 ohci_err(ohci, "DMA context %s has stopped, error code: %s\n", in detect_dead_context()
1672 static void handle_dead_contexts(struct fw_ohci *ohci) in handle_dead_contexts() argument
1677 detect_dead_context(ohci, "ATReq", OHCI1394_AsReqTrContextBase); in handle_dead_contexts()
1678 detect_dead_context(ohci, "ATRsp", OHCI1394_AsRspTrContextBase); in handle_dead_contexts()
1679 detect_dead_context(ohci, "ARReq", OHCI1394_AsReqRcvContextBase); in handle_dead_contexts()
1680 detect_dead_context(ohci, "ARRsp", OHCI1394_AsRspRcvContextBase); in handle_dead_contexts()
1682 if (!(ohci->it_context_support & (1 << i))) in handle_dead_contexts()
1685 detect_dead_context(ohci, name, OHCI1394_IsoXmitContextBase(i)); in handle_dead_contexts()
1688 if (!(ohci->ir_context_support & (1 << i))) in handle_dead_contexts()
1691 detect_dead_context(ohci, name, OHCI1394_IsoRcvContextBase(i)); in handle_dead_contexts()
1722 static u32 get_cycle_time(struct fw_ohci *ohci) in get_cycle_time() argument
1729 c2 = reg_read(ohci, OHCI1394_IsochronousCycleTimer); in get_cycle_time()
1731 if (ohci->quirks & QUIRK_CYCLE_TIMER) { in get_cycle_time()
1734 c2 = reg_read(ohci, OHCI1394_IsochronousCycleTimer); in get_cycle_time()
1738 c2 = reg_read(ohci, OHCI1394_IsochronousCycleTimer); in get_cycle_time()
1758 static u32 update_bus_time(struct fw_ohci *ohci) in update_bus_time() argument
1760 u32 cycle_time_seconds = get_cycle_time(ohci) >> 25; in update_bus_time()
1762 if (unlikely(!ohci->bus_time_running)) { in update_bus_time()
1763 reg_write(ohci, OHCI1394_IntMaskSet, OHCI1394_cycle64Seconds); in update_bus_time()
1764 ohci->bus_time = (lower_32_bits(get_seconds()) & ~0x7f) | in update_bus_time()
1766 ohci->bus_time_running = true; in update_bus_time()
1769 if ((ohci->bus_time & 0x40) != (cycle_time_seconds & 0x40)) in update_bus_time()
1770 ohci->bus_time += 0x40; in update_bus_time()
1772 return ohci->bus_time | cycle_time_seconds; in update_bus_time()
1775 static int get_status_for_port(struct fw_ohci *ohci, int port_index) in get_status_for_port() argument
1779 mutex_lock(&ohci->phy_reg_mutex); in get_status_for_port()
1780 reg = write_phy_reg(ohci, 7, port_index); in get_status_for_port()
1782 reg = read_phy_reg(ohci, 8); in get_status_for_port()
1783 mutex_unlock(&ohci->phy_reg_mutex); in get_status_for_port()
1796 static int get_self_id_pos(struct fw_ohci *ohci, u32 self_id, in get_self_id_pos() argument
1803 entry = ohci->self_id_buffer[i]; in get_self_id_pos()
1812 static int initiated_reset(struct fw_ohci *ohci) in initiated_reset() argument
1817 mutex_lock(&ohci->phy_reg_mutex); in initiated_reset()
1818 reg = write_phy_reg(ohci, 7, 0xe0); /* Select page 7 */ in initiated_reset()
1820 reg = read_phy_reg(ohci, 8); in initiated_reset()
1822 reg = write_phy_reg(ohci, 8, reg); /* set PMODE bit */ in initiated_reset()
1824 reg = read_phy_reg(ohci, 12); /* read register 12 */ in initiated_reset()
1833 mutex_unlock(&ohci->phy_reg_mutex); in initiated_reset()
1842 static int find_and_insert_self_id(struct fw_ohci *ohci, int self_id_count) in find_and_insert_self_id() argument
1848 reg = reg_read(ohci, OHCI1394_NodeID); in find_and_insert_self_id()
1850 ohci_notice(ohci, in find_and_insert_self_id()
1856 reg = ohci_read_phy_reg(&ohci->card, 4); in find_and_insert_self_id()
1861 reg = ohci_read_phy_reg(&ohci->card, 1); in find_and_insert_self_id()
1867 status = get_status_for_port(ohci, i); in find_and_insert_self_id()
1873 self_id |= initiated_reset(ohci); in find_and_insert_self_id()
1875 pos = get_self_id_pos(ohci, self_id, self_id_count); in find_and_insert_self_id()
1877 memmove(&(ohci->self_id_buffer[pos+1]), in find_and_insert_self_id()
1878 &(ohci->self_id_buffer[pos]), in find_and_insert_self_id()
1879 (self_id_count - pos) * sizeof(*ohci->self_id_buffer)); in find_and_insert_self_id()
1880 ohci->self_id_buffer[pos] = self_id; in find_and_insert_self_id()
1888 struct fw_ohci *ohci = in bus_reset_work() local
1896 reg = reg_read(ohci, OHCI1394_NodeID); in bus_reset_work()
1898 ohci_notice(ohci, in bus_reset_work()
1903 ohci_notice(ohci, "malconfigured bus\n"); in bus_reset_work()
1906 ohci->node_id = reg & (OHCI1394_NodeID_busNumber | in bus_reset_work()
1910 if (!(ohci->is_root && is_new_root)) in bus_reset_work()
1911 reg_write(ohci, OHCI1394_LinkControlSet, in bus_reset_work()
1913 ohci->is_root = is_new_root; in bus_reset_work()
1915 reg = reg_read(ohci, OHCI1394_SelfIDCount); in bus_reset_work()
1917 ohci_notice(ohci, "self ID receive error\n"); in bus_reset_work()
1929 ohci_notice(ohci, "bad selfIDSize (%08x)\n", reg); in bus_reset_work()
1933 generation = (cond_le32_to_cpu(ohci->self_id[0]) >> 16) & 0xff; in bus_reset_work()
1937 u32 id = cond_le32_to_cpu(ohci->self_id[i]); in bus_reset_work()
1938 u32 id2 = cond_le32_to_cpu(ohci->self_id[i + 1]); in bus_reset_work()
1949 ohci_notice(ohci, "ignoring spurious self IDs\n"); in bus_reset_work()
1954 ohci_notice(ohci, "bad self ID %d/%d (%08x != ~%08x)\n", in bus_reset_work()
1958 ohci->self_id_buffer[j] = id; in bus_reset_work()
1961 if (ohci->quirks & QUIRK_TI_SLLZ059) { in bus_reset_work()
1962 self_id_count = find_and_insert_self_id(ohci, self_id_count); in bus_reset_work()
1964 ohci_notice(ohci, in bus_reset_work()
1971 ohci_notice(ohci, "no self IDs\n"); in bus_reset_work()
1990 new_generation = (reg_read(ohci, OHCI1394_SelfIDCount) >> 16) & 0xff; in bus_reset_work()
1992 ohci_notice(ohci, "new bus reset, discarding self ids\n"); in bus_reset_work()
1997 spin_lock_irq(&ohci->lock); in bus_reset_work()
1999 ohci->generation = -1; /* prevent AT packet queueing */ in bus_reset_work()
2000 context_stop(&ohci->at_request_ctx); in bus_reset_work()
2001 context_stop(&ohci->at_response_ctx); in bus_reset_work()
2003 spin_unlock_irq(&ohci->lock); in bus_reset_work()
2010 at_context_flush(&ohci->at_request_ctx); in bus_reset_work()
2011 at_context_flush(&ohci->at_response_ctx); in bus_reset_work()
2013 spin_lock_irq(&ohci->lock); in bus_reset_work()
2015 ohci->generation = generation; in bus_reset_work()
2016 reg_write(ohci, OHCI1394_IntEventClear, OHCI1394_busReset); in bus_reset_work()
2018 if (ohci->quirks & QUIRK_RESET_PACKET) in bus_reset_work()
2019 ohci->request_generation = generation; in bus_reset_work()
2030 if (ohci->next_config_rom != NULL) { in bus_reset_work()
2031 if (ohci->next_config_rom != ohci->config_rom) { in bus_reset_work()
2032 free_rom = ohci->config_rom; in bus_reset_work()
2033 free_rom_bus = ohci->config_rom_bus; in bus_reset_work()
2035 ohci->config_rom = ohci->next_config_rom; in bus_reset_work()
2036 ohci->config_rom_bus = ohci->next_config_rom_bus; in bus_reset_work()
2037 ohci->next_config_rom = NULL; in bus_reset_work()
2045 reg_write(ohci, OHCI1394_BusOptions, in bus_reset_work()
2046 be32_to_cpu(ohci->config_rom[2])); in bus_reset_work()
2047 ohci->config_rom[0] = ohci->next_header; in bus_reset_work()
2048 reg_write(ohci, OHCI1394_ConfigROMhdr, in bus_reset_work()
2049 be32_to_cpu(ohci->next_header)); in bus_reset_work()
2053 reg_write(ohci, OHCI1394_PhyReqFilterHiSet, ~0); in bus_reset_work()
2054 reg_write(ohci, OHCI1394_PhyReqFilterLoSet, ~0); in bus_reset_work()
2057 spin_unlock_irq(&ohci->lock); in bus_reset_work()
2060 dma_free_coherent(ohci->card.device, CONFIG_ROM_SIZE, in bus_reset_work()
2063 log_selfids(ohci, generation, self_id_count); in bus_reset_work()
2065 fw_core_handle_bus_reset(&ohci->card, ohci->node_id, generation, in bus_reset_work()
2066 self_id_count, ohci->self_id_buffer, in bus_reset_work()
2067 ohci->csr_state_setclear_abdicate); in bus_reset_work()
2068 ohci->csr_state_setclear_abdicate = false; in bus_reset_work()
2073 struct fw_ohci *ohci = data; in irq_handler() local
2077 event = reg_read(ohci, OHCI1394_IntEventClear); in irq_handler()
2086 reg_write(ohci, OHCI1394_IntEventClear, in irq_handler()
2088 log_irqs(ohci, event); in irq_handler()
2091 queue_work(selfid_workqueue, &ohci->bus_reset_work); in irq_handler()
2094 tasklet_schedule(&ohci->ar_request_ctx.tasklet); in irq_handler()
2097 tasklet_schedule(&ohci->ar_response_ctx.tasklet); in irq_handler()
2100 tasklet_schedule(&ohci->at_request_ctx.tasklet); in irq_handler()
2103 tasklet_schedule(&ohci->at_response_ctx.tasklet); in irq_handler()
2106 iso_event = reg_read(ohci, OHCI1394_IsoRecvIntEventClear); in irq_handler()
2107 reg_write(ohci, OHCI1394_IsoRecvIntEventClear, iso_event); in irq_handler()
2112 &ohci->ir_context_list[i].context.tasklet); in irq_handler()
2118 iso_event = reg_read(ohci, OHCI1394_IsoXmitIntEventClear); in irq_handler()
2119 reg_write(ohci, OHCI1394_IsoXmitIntEventClear, iso_event); in irq_handler()
2124 &ohci->it_context_list[i].context.tasklet); in irq_handler()
2130 ohci_err(ohci, "register access failure\n"); in irq_handler()
2133 reg_read(ohci, OHCI1394_PostedWriteAddressHi); in irq_handler()
2134 reg_read(ohci, OHCI1394_PostedWriteAddressLo); in irq_handler()
2135 reg_write(ohci, OHCI1394_IntEventClear, in irq_handler()
2138 ohci_err(ohci, "PCI posted write error\n"); in irq_handler()
2143 ohci_notice(ohci, "isochronous cycle too long\n"); in irq_handler()
2144 reg_write(ohci, OHCI1394_LinkControlSet, in irq_handler()
2156 ohci_notice(ohci, "isochronous cycle inconsistent\n"); in irq_handler()
2160 handle_dead_contexts(ohci); in irq_handler()
2163 spin_lock(&ohci->lock); in irq_handler()
2164 update_bus_time(ohci); in irq_handler()
2165 spin_unlock(&ohci->lock); in irq_handler()
2167 flush_writes(ohci); in irq_handler()
2172 static int software_reset(struct fw_ohci *ohci) in software_reset() argument
2177 reg_write(ohci, OHCI1394_HCControlSet, OHCI1394_HCControl_softReset); in software_reset()
2179 val = reg_read(ohci, OHCI1394_HCControlSet); in software_reset()
2201 static int configure_1394a_enhancements(struct fw_ohci *ohci) in configure_1394a_enhancements() argument
2207 if (!(reg_read(ohci, OHCI1394_HCControlSet) & in configure_1394a_enhancements()
2213 ret = read_phy_reg(ohci, 2); in configure_1394a_enhancements()
2217 ret = read_paged_phy_reg(ohci, 1, 8); in configure_1394a_enhancements()
2224 if (ohci->quirks & QUIRK_NO_1394A) in configure_1394a_enhancements()
2235 ret = update_phy_reg(ohci, 5, clear, set); in configure_1394a_enhancements()
2243 reg_write(ohci, offset, OHCI1394_HCControl_aPhyEnhanceEnable); in configure_1394a_enhancements()
2246 reg_write(ohci, OHCI1394_HCControlClear, in configure_1394a_enhancements()
2252 static int probe_tsb41ba3d(struct fw_ohci *ohci) in probe_tsb41ba3d() argument
2258 reg = read_phy_reg(ohci, 2); in probe_tsb41ba3d()
2265 reg = read_paged_phy_reg(ohci, 1, i + 10); in probe_tsb41ba3d()
2277 struct fw_ohci *ohci = fw_ohci(card); in ohci_enable() local
2281 if (software_reset(ohci)) { in ohci_enable()
2282 ohci_err(ohci, "failed to reset ohci card\n"); in ohci_enable()
2299 reg_write(ohci, OHCI1394_HCControlSet, in ohci_enable()
2302 flush_writes(ohci); in ohci_enable()
2306 lps = reg_read(ohci, OHCI1394_HCControlSet) & in ohci_enable()
2311 ohci_err(ohci, "failed to set Link Power Status\n"); in ohci_enable()
2315 if (ohci->quirks & QUIRK_TI_SLLZ059) { in ohci_enable()
2316 ret = probe_tsb41ba3d(ohci); in ohci_enable()
2320 ohci_notice(ohci, "local TSB41BA3D phy\n"); in ohci_enable()
2322 ohci->quirks &= ~QUIRK_TI_SLLZ059; in ohci_enable()
2325 reg_write(ohci, OHCI1394_HCControlClear, in ohci_enable()
2328 reg_write(ohci, OHCI1394_SelfIDBuffer, ohci->self_id_bus); in ohci_enable()
2329 reg_write(ohci, OHCI1394_LinkControlSet, in ohci_enable()
2333 reg_write(ohci, OHCI1394_ATRetries, in ohci_enable()
2339 ohci->bus_time_running = false; in ohci_enable()
2342 if (ohci->ir_context_support & (1 << i)) in ohci_enable()
2343 reg_write(ohci, OHCI1394_IsoRcvContextControlClear(i), in ohci_enable()
2346 version = reg_read(ohci, OHCI1394_Version) & 0x00ff00ff; in ohci_enable()
2348 reg_write(ohci, OHCI1394_InitialChannelsAvailableHi, in ohci_enable()
2354 reg_write(ohci, OHCI1394_FairnessControl, 0x3f); in ohci_enable()
2355 ohci->pri_req_max = reg_read(ohci, OHCI1394_FairnessControl) & 0x3f; in ohci_enable()
2356 reg_write(ohci, OHCI1394_FairnessControl, 0); in ohci_enable()
2357 card->priority_budget_implemented = ohci->pri_req_max != 0; in ohci_enable()
2359 reg_write(ohci, OHCI1394_PhyUpperBound, FW_MAX_PHYSICAL_RANGE >> 16); in ohci_enable()
2360 reg_write(ohci, OHCI1394_IntEventClear, ~0); in ohci_enable()
2361 reg_write(ohci, OHCI1394_IntMaskClear, ~0); in ohci_enable()
2363 ret = configure_1394a_enhancements(ohci); in ohci_enable()
2392 ohci->next_config_rom = in ohci_enable()
2393 dma_alloc_coherent(ohci->card.device, CONFIG_ROM_SIZE, in ohci_enable()
2394 &ohci->next_config_rom_bus, in ohci_enable()
2396 if (ohci->next_config_rom == NULL) in ohci_enable()
2399 copy_config_rom(ohci->next_config_rom, config_rom, length); in ohci_enable()
2405 ohci->next_config_rom = ohci->config_rom; in ohci_enable()
2406 ohci->next_config_rom_bus = ohci->config_rom_bus; in ohci_enable()
2409 ohci->next_header = ohci->next_config_rom[0]; in ohci_enable()
2410 ohci->next_config_rom[0] = 0; in ohci_enable()
2411 reg_write(ohci, OHCI1394_ConfigROMhdr, 0); in ohci_enable()
2412 reg_write(ohci, OHCI1394_BusOptions, in ohci_enable()
2413 be32_to_cpu(ohci->next_config_rom[2])); in ohci_enable()
2414 reg_write(ohci, OHCI1394_ConfigROMmap, ohci->next_config_rom_bus); in ohci_enable()
2416 reg_write(ohci, OHCI1394_AsReqFilterHiSet, 0x80000000); in ohci_enable()
2430 reg_write(ohci, OHCI1394_IntMaskSet, irqs); in ohci_enable()
2432 reg_write(ohci, OHCI1394_HCControlSet, in ohci_enable()
2436 reg_write(ohci, OHCI1394_LinkControlSet, in ohci_enable()
2440 ar_context_run(&ohci->ar_request_ctx); in ohci_enable()
2441 ar_context_run(&ohci->ar_response_ctx); in ohci_enable()
2443 flush_writes(ohci); in ohci_enable()
2446 fw_schedule_bus_reset(&ohci->card, false, true); in ohci_enable()
2454 struct fw_ohci *ohci; in ohci_set_config_rom() local
2458 ohci = fw_ohci(card); in ohci_set_config_rom()
2488 dma_alloc_coherent(ohci->card.device, CONFIG_ROM_SIZE, in ohci_set_config_rom()
2493 spin_lock_irq(&ohci->lock); in ohci_set_config_rom()
2506 if (ohci->next_config_rom == NULL) { in ohci_set_config_rom()
2507 ohci->next_config_rom = next_config_rom; in ohci_set_config_rom()
2508 ohci->next_config_rom_bus = next_config_rom_bus; in ohci_set_config_rom()
2512 copy_config_rom(ohci->next_config_rom, config_rom, length); in ohci_set_config_rom()
2514 ohci->next_header = config_rom[0]; in ohci_set_config_rom()
2515 ohci->next_config_rom[0] = 0; in ohci_set_config_rom()
2517 reg_write(ohci, OHCI1394_ConfigROMmap, ohci->next_config_rom_bus); in ohci_set_config_rom()
2519 spin_unlock_irq(&ohci->lock); in ohci_set_config_rom()
2523 dma_free_coherent(ohci->card.device, CONFIG_ROM_SIZE, in ohci_set_config_rom()
2534 fw_schedule_bus_reset(&ohci->card, true, true); in ohci_set_config_rom()
2541 struct fw_ohci *ohci = fw_ohci(card); in ohci_send_request() local
2543 at_context_transmit(&ohci->at_request_ctx, packet); in ohci_send_request()
2548 struct fw_ohci *ohci = fw_ohci(card); in ohci_send_response() local
2550 at_context_transmit(&ohci->at_response_ctx, packet); in ohci_send_response()
2555 struct fw_ohci *ohci = fw_ohci(card); in ohci_cancel_packet() local
2556 struct context *ctx = &ohci->at_request_ctx; in ohci_cancel_packet()
2566 dma_unmap_single(ohci->card.device, packet->payload_bus, in ohci_cancel_packet()
2569 log_ar_at_event(ohci, 'T', packet->speed, packet->header, 0x20); in ohci_cancel_packet()
2572 packet->callback(packet, &ohci->card, packet->ack); in ohci_cancel_packet()
2583 struct fw_ohci *ohci = fw_ohci(card); in ohci_enable_phys_dma() local
2595 spin_lock_irqsave(&ohci->lock, flags); in ohci_enable_phys_dma()
2597 if (ohci->generation != generation) { in ohci_enable_phys_dma()
2609 reg_write(ohci, OHCI1394_PhyReqFilterLoSet, 1 << n); in ohci_enable_phys_dma()
2611 reg_write(ohci, OHCI1394_PhyReqFilterHiSet, 1 << (n - 32)); in ohci_enable_phys_dma()
2613 flush_writes(ohci); in ohci_enable_phys_dma()
2615 spin_unlock_irqrestore(&ohci->lock, flags); in ohci_enable_phys_dma()
2622 struct fw_ohci *ohci = fw_ohci(card); in ohci_read_csr() local
2629 if (ohci->is_root && in ohci_read_csr()
2630 (reg_read(ohci, OHCI1394_LinkControlSet) & in ohci_read_csr()
2635 if (ohci->csr_state_setclear_abdicate) in ohci_read_csr()
2641 return reg_read(ohci, OHCI1394_NodeID) << 16; in ohci_read_csr()
2644 return get_cycle_time(ohci); in ohci_read_csr()
2652 spin_lock_irqsave(&ohci->lock, flags); in ohci_read_csr()
2653 value = update_bus_time(ohci); in ohci_read_csr()
2654 spin_unlock_irqrestore(&ohci->lock, flags); in ohci_read_csr()
2658 value = reg_read(ohci, OHCI1394_ATRetries); in ohci_read_csr()
2662 return (reg_read(ohci, OHCI1394_FairnessControl) & 0x3f) | in ohci_read_csr()
2663 (ohci->pri_req_max << 8); in ohci_read_csr()
2673 struct fw_ohci *ohci = fw_ohci(card); in ohci_write_csr() local
2678 if ((value & CSR_STATE_BIT_CMSTR) && ohci->is_root) { in ohci_write_csr()
2679 reg_write(ohci, OHCI1394_LinkControlClear, in ohci_write_csr()
2681 flush_writes(ohci); in ohci_write_csr()
2684 ohci->csr_state_setclear_abdicate = false; in ohci_write_csr()
2688 if ((value & CSR_STATE_BIT_CMSTR) && ohci->is_root) { in ohci_write_csr()
2689 reg_write(ohci, OHCI1394_LinkControlSet, in ohci_write_csr()
2691 flush_writes(ohci); in ohci_write_csr()
2694 ohci->csr_state_setclear_abdicate = true; in ohci_write_csr()
2698 reg_write(ohci, OHCI1394_NodeID, value >> 16); in ohci_write_csr()
2699 flush_writes(ohci); in ohci_write_csr()
2703 reg_write(ohci, OHCI1394_IsochronousCycleTimer, value); in ohci_write_csr()
2704 reg_write(ohci, OHCI1394_IntEventSet, in ohci_write_csr()
2706 flush_writes(ohci); in ohci_write_csr()
2710 spin_lock_irqsave(&ohci->lock, flags); in ohci_write_csr()
2711 ohci->bus_time = (update_bus_time(ohci) & 0x40) | in ohci_write_csr()
2713 spin_unlock_irqrestore(&ohci->lock, flags); in ohci_write_csr()
2719 reg_write(ohci, OHCI1394_ATRetries, value); in ohci_write_csr()
2720 flush_writes(ohci); in ohci_write_csr()
2724 reg_write(ohci, OHCI1394_FairnessControl, value & 0x3f); in ohci_write_csr()
2725 flush_writes(ohci); in ohci_write_csr()
2788 dma_sync_single_range_for_cpu(context->ohci->card.device, in handle_ir_packet_per_buffer()
2827 dma_sync_single_range_for_cpu(context->ohci->card.device, in handle_ir_buffer_fill()
2844 dma_sync_single_range_for_cpu(ctx->context.ohci->card.device, in flush_ir_buffer_fill()
2882 dma_sync_single_range_for_cpu(context->ohci->card.device, in sync_it_packet_for_cpu()
2929 static void set_multichannel_mask(struct fw_ohci *ohci, u64 channels) in set_multichannel_mask() argument
2933 reg_write(ohci, OHCI1394_IRMultiChanMaskHiClear, ~hi); in set_multichannel_mask()
2934 reg_write(ohci, OHCI1394_IRMultiChanMaskLoClear, ~lo); in set_multichannel_mask()
2935 reg_write(ohci, OHCI1394_IRMultiChanMaskHiSet, hi); in set_multichannel_mask()
2936 reg_write(ohci, OHCI1394_IRMultiChanMaskLoSet, lo); in set_multichannel_mask()
2938 ohci->mc_channels = channels; in set_multichannel_mask()
2944 struct fw_ohci *ohci = fw_ohci(card); in ohci_allocate_iso_context() local
2951 spin_lock_irq(&ohci->lock); in ohci_allocate_iso_context()
2955 mask = &ohci->it_context_mask; in ohci_allocate_iso_context()
2961 ctx = &ohci->it_context_list[index]; in ohci_allocate_iso_context()
2966 channels = &ohci->ir_context_channels; in ohci_allocate_iso_context()
2967 mask = &ohci->ir_context_mask; in ohci_allocate_iso_context()
2974 ctx = &ohci->ir_context_list[index]; in ohci_allocate_iso_context()
2979 mask = &ohci->ir_context_mask; in ohci_allocate_iso_context()
2981 index = !ohci->mc_allocated ? ffs(*mask) - 1 : -1; in ohci_allocate_iso_context()
2983 ohci->mc_allocated = true; in ohci_allocate_iso_context()
2986 ctx = &ohci->ir_context_list[index]; in ohci_allocate_iso_context()
2995 spin_unlock_irq(&ohci->lock); in ohci_allocate_iso_context()
3007 ret = context_init(&ctx->context, ohci, regs, callback); in ohci_allocate_iso_context()
3012 set_multichannel_mask(ohci, 0); in ohci_allocate_iso_context()
3021 spin_lock_irq(&ohci->lock); in ohci_allocate_iso_context()
3029 ohci->mc_allocated = false; in ohci_allocate_iso_context()
3034 spin_unlock_irq(&ohci->lock); in ohci_allocate_iso_context()
3043 struct fw_ohci *ohci = ctx->context.ohci; in ohci_start_iso() local
3053 index = ctx - ohci->it_context_list; in ohci_start_iso()
3059 reg_write(ohci, OHCI1394_IsoXmitIntEventClear, 1 << index); in ohci_start_iso()
3060 reg_write(ohci, OHCI1394_IsoXmitIntMaskSet, 1 << index); in ohci_start_iso()
3068 index = ctx - ohci->ir_context_list; in ohci_start_iso()
3075 reg_write(ohci, OHCI1394_IsoRecvIntEventClear, 1 << index); in ohci_start_iso()
3076 reg_write(ohci, OHCI1394_IsoRecvIntMaskSet, 1 << index); in ohci_start_iso()
3077 reg_write(ohci, CONTEXT_MATCH(ctx->context.regs), match); in ohci_start_iso()
3091 struct fw_ohci *ohci = fw_ohci(base->card); in ohci_stop_iso() local
3097 index = ctx - ohci->it_context_list; in ohci_stop_iso()
3098 reg_write(ohci, OHCI1394_IsoXmitIntMaskClear, 1 << index); in ohci_stop_iso()
3103 index = ctx - ohci->ir_context_list; in ohci_stop_iso()
3104 reg_write(ohci, OHCI1394_IsoRecvIntMaskClear, 1 << index); in ohci_stop_iso()
3107 flush_writes(ohci); in ohci_stop_iso()
3116 struct fw_ohci *ohci = fw_ohci(base->card); in ohci_free_iso_context() local
3125 spin_lock_irqsave(&ohci->lock, flags); in ohci_free_iso_context()
3129 index = ctx - ohci->it_context_list; in ohci_free_iso_context()
3130 ohci->it_context_mask |= 1 << index; in ohci_free_iso_context()
3134 index = ctx - ohci->ir_context_list; in ohci_free_iso_context()
3135 ohci->ir_context_mask |= 1 << index; in ohci_free_iso_context()
3136 ohci->ir_context_channels |= 1ULL << base->channel; in ohci_free_iso_context()
3140 index = ctx - ohci->ir_context_list; in ohci_free_iso_context()
3141 ohci->ir_context_mask |= 1 << index; in ohci_free_iso_context()
3142 ohci->ir_context_channels |= ohci->mc_channels; in ohci_free_iso_context()
3143 ohci->mc_channels = 0; in ohci_free_iso_context()
3144 ohci->mc_allocated = false; in ohci_free_iso_context()
3148 spin_unlock_irqrestore(&ohci->lock, flags); in ohci_free_iso_context()
3153 struct fw_ohci *ohci = fw_ohci(base->card); in ohci_set_iso_channels() local
3160 spin_lock_irqsave(&ohci->lock, flags); in ohci_set_iso_channels()
3163 if (~ohci->ir_context_channels & ~ohci->mc_channels & *channels) { in ohci_set_iso_channels()
3164 *channels = ohci->ir_context_channels; in ohci_set_iso_channels()
3167 set_multichannel_mask(ohci, *channels); in ohci_set_iso_channels()
3171 spin_unlock_irqrestore(&ohci->lock, flags); in ohci_set_iso_channels()
3182 static void ohci_resume_iso_dma(struct fw_ohci *ohci) in ohci_resume_iso_dma() argument
3187 for (i = 0 ; i < ohci->n_ir ; i++) { in ohci_resume_iso_dma()
3188 ctx = &ohci->ir_context_list[i]; in ohci_resume_iso_dma()
3193 for (i = 0 ; i < ohci->n_it ; i++) { in ohci_resume_iso_dma()
3194 ctx = &ohci->it_context_list[i]; in ohci_resume_iso_dma()
3282 dma_sync_single_range_for_device(ctx->context.ohci->card.device, in queue_iso_transmit()
3310 struct device *device = ctx->context.ohci->card.device; in queue_iso_packet_per_buffer()
3428 dma_sync_single_range_for_device(ctx->context.ohci->card.device, in queue_iso_buffer_fill()
3451 spin_lock_irqsave(&ctx->context.ohci->lock, flags); in ohci_queue_iso()
3463 spin_unlock_irqrestore(&ctx->context.ohci->lock, flags); in ohci_queue_iso()
3473 reg_write(ctx->ohci, CONTROL_SET(ctx->regs), CONTEXT_WAKE); in ohci_flush_queue_iso()
3563 struct fw_ohci *ohci; in pci_probe() local
3574 ohci = kzalloc(sizeof(*ohci), GFP_KERNEL); in pci_probe()
3575 if (ohci == NULL) { in pci_probe()
3580 fw_card_initialize(&ohci->card, &ohci_driver, &dev->dev); in pci_probe()
3592 pci_set_drvdata(dev, ohci); in pci_probe()
3594 spin_lock_init(&ohci->lock); in pci_probe()
3595 mutex_init(&ohci->phy_reg_mutex); in pci_probe()
3597 INIT_WORK(&ohci->bus_reset_work, bus_reset_work); in pci_probe()
3601 ohci_err(ohci, "invalid MMIO resource\n"); in pci_probe()
3608 ohci_err(ohci, "MMIO resource unavailable\n"); in pci_probe()
3612 ohci->registers = pci_iomap(dev, 0, OHCI1394_REGISTER_SIZE); in pci_probe()
3613 if (ohci->registers == NULL) { in pci_probe()
3614 ohci_err(ohci, "failed to remap registers\n"); in pci_probe()
3625 ohci->quirks = ohci_quirks[i].flags; in pci_probe()
3629 ohci->quirks = param_quirks; in pci_probe()
3638 ohci->misc_buffer = dma_alloc_coherent(ohci->card.device, in pci_probe()
3640 &ohci->misc_buffer_bus, in pci_probe()
3642 if (!ohci->misc_buffer) { in pci_probe()
3647 err = ar_context_init(&ohci->ar_request_ctx, ohci, 0, in pci_probe()
3652 err = ar_context_init(&ohci->ar_response_ctx, ohci, PAGE_SIZE/4, in pci_probe()
3657 err = context_init(&ohci->at_request_ctx, ohci, in pci_probe()
3662 err = context_init(&ohci->at_response_ctx, ohci, in pci_probe()
3667 reg_write(ohci, OHCI1394_IsoRecvIntMaskSet, ~0); in pci_probe()
3668 ohci->ir_context_channels = ~0ULL; in pci_probe()
3669 ohci->ir_context_support = reg_read(ohci, OHCI1394_IsoRecvIntMaskSet); in pci_probe()
3670 reg_write(ohci, OHCI1394_IsoRecvIntMaskClear, ~0); in pci_probe()
3671 ohci->ir_context_mask = ohci->ir_context_support; in pci_probe()
3672 ohci->n_ir = hweight32(ohci->ir_context_mask); in pci_probe()
3673 size = sizeof(struct iso_context) * ohci->n_ir; in pci_probe()
3674 ohci->ir_context_list = kzalloc(size, GFP_KERNEL); in pci_probe()
3676 reg_write(ohci, OHCI1394_IsoXmitIntMaskSet, ~0); in pci_probe()
3677 ohci->it_context_support = reg_read(ohci, OHCI1394_IsoXmitIntMaskSet); in pci_probe()
3679 if (!ohci->it_context_support) { in pci_probe()
3680 ohci_notice(ohci, "overriding IsoXmitIntMask\n"); in pci_probe()
3681 ohci->it_context_support = 0xf; in pci_probe()
3683 reg_write(ohci, OHCI1394_IsoXmitIntMaskClear, ~0); in pci_probe()
3684 ohci->it_context_mask = ohci->it_context_support; in pci_probe()
3685 ohci->n_it = hweight32(ohci->it_context_mask); in pci_probe()
3686 size = sizeof(struct iso_context) * ohci->n_it; in pci_probe()
3687 ohci->it_context_list = kzalloc(size, GFP_KERNEL); in pci_probe()
3689 if (ohci->it_context_list == NULL || ohci->ir_context_list == NULL) { in pci_probe()
3694 ohci->self_id = ohci->misc_buffer + PAGE_SIZE/2; in pci_probe()
3695 ohci->self_id_bus = ohci->misc_buffer_bus + PAGE_SIZE/2; in pci_probe()
3697 bus_options = reg_read(ohci, OHCI1394_BusOptions); in pci_probe()
3700 guid = ((u64) reg_read(ohci, OHCI1394_GUIDHi) << 32) | in pci_probe()
3701 reg_read(ohci, OHCI1394_GUIDLo); in pci_probe()
3703 if (!(ohci->quirks & QUIRK_NO_MSI)) in pci_probe()
3707 ohci_driver_name, ohci)) { in pci_probe()
3708 ohci_err(ohci, "failed to allocate interrupt %d\n", dev->irq); in pci_probe()
3713 err = fw_card_add(&ohci->card, max_receive, link_speed, guid); in pci_probe()
3717 version = reg_read(ohci, OHCI1394_Version) & 0x00ff00ff; in pci_probe()
3718 ohci_notice(ohci, in pci_probe()
3721 version >> 16, version & 0xff, ohci->card.index, in pci_probe()
3722 ohci->n_ir, ohci->n_it, ohci->quirks, in pci_probe()
3723 reg_read(ohci, OHCI1394_PhyUpperBound) ? in pci_probe()
3729 free_irq(dev->irq, ohci); in pci_probe()
3733 kfree(ohci->ir_context_list); in pci_probe()
3734 kfree(ohci->it_context_list); in pci_probe()
3735 context_release(&ohci->at_response_ctx); in pci_probe()
3737 context_release(&ohci->at_request_ctx); in pci_probe()
3739 ar_context_release(&ohci->ar_response_ctx); in pci_probe()
3741 ar_context_release(&ohci->ar_request_ctx); in pci_probe()
3743 dma_free_coherent(ohci->card.device, PAGE_SIZE, in pci_probe()
3744 ohci->misc_buffer, ohci->misc_buffer_bus); in pci_probe()
3746 pci_iounmap(dev, ohci->registers); in pci_probe()
3752 kfree(ohci); in pci_probe()
3760 struct fw_ohci *ohci = pci_get_drvdata(dev); in pci_remove() local
3766 if (reg_read(ohci, OHCI1394_HCControlSet) & OHCI1394_HCControl_LPS) { in pci_remove()
3767 reg_write(ohci, OHCI1394_IntMaskClear, ~0); in pci_remove()
3768 flush_writes(ohci); in pci_remove()
3770 cancel_work_sync(&ohci->bus_reset_work); in pci_remove()
3771 fw_core_remove_card(&ohci->card); in pci_remove()
3778 software_reset(ohci); in pci_remove()
3779 free_irq(dev->irq, ohci); in pci_remove()
3781 if (ohci->next_config_rom && ohci->next_config_rom != ohci->config_rom) in pci_remove()
3782 dma_free_coherent(ohci->card.device, CONFIG_ROM_SIZE, in pci_remove()
3783 ohci->next_config_rom, ohci->next_config_rom_bus); in pci_remove()
3784 if (ohci->config_rom) in pci_remove()
3785 dma_free_coherent(ohci->card.device, CONFIG_ROM_SIZE, in pci_remove()
3786 ohci->config_rom, ohci->config_rom_bus); in pci_remove()
3787 ar_context_release(&ohci->ar_request_ctx); in pci_remove()
3788 ar_context_release(&ohci->ar_response_ctx); in pci_remove()
3789 dma_free_coherent(ohci->card.device, PAGE_SIZE, in pci_remove()
3790 ohci->misc_buffer, ohci->misc_buffer_bus); in pci_remove()
3791 context_release(&ohci->at_request_ctx); in pci_remove()
3792 context_release(&ohci->at_response_ctx); in pci_remove()
3793 kfree(ohci->it_context_list); in pci_remove()
3794 kfree(ohci->ir_context_list); in pci_remove()
3796 pci_iounmap(dev, ohci->registers); in pci_remove()
3799 kfree(ohci); in pci_remove()
3808 struct fw_ohci *ohci = pci_get_drvdata(dev); in pci_suspend() local
3811 software_reset(ohci); in pci_suspend()
3814 ohci_err(ohci, "pci_save_state failed\n"); in pci_suspend()
3819 ohci_err(ohci, "pci_set_power_state failed with %d\n", err); in pci_suspend()
3827 struct fw_ohci *ohci = pci_get_drvdata(dev); in pci_resume() local
3835 ohci_err(ohci, "pci_enable_device failed\n"); in pci_resume()
3840 if (!reg_read(ohci, OHCI1394_GUIDLo) && in pci_resume()
3841 !reg_read(ohci, OHCI1394_GUIDHi)) { in pci_resume()
3842 reg_write(ohci, OHCI1394_GUIDLo, (u32)ohci->card.guid); in pci_resume()
3843 reg_write(ohci, OHCI1394_GUIDHi, (u32)(ohci->card.guid >> 32)); in pci_resume()
3846 err = ohci_enable(&ohci->card, NULL, 0); in pci_resume()
3850 ohci_resume_iso_dma(ohci); in pci_resume()