--- a/Documentation/DMA-mapping.txt +++ b/Documentation/DMA-mapping.txt @@ -199,6 +199,8 @@ address during PCI bus mastering you mig "mydev: 24-bit DMA addressing not available.\n"); goto ignore_this_device; } +[Better use DMA_24BIT_MASK instead of 0x00ffffff. +See linux/include/dma-mapping.h for reference.] When pci_set_dma_mask() is successful, and returns zero, the PCI layer saves away this mask you have provided. The PCI layer will use this --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 16 -EXTRAVERSION =-rc1 +EXTRAVERSION =-rc1-kj1 NAME=Sliding Snow Leopard # *DOCUMENTATION* --- a/arch/alpha/kernel/core_apecs.c +++ b/arch/alpha/kernel/core_apecs.c @@ -182,7 +182,7 @@ conf_read(unsigned long addr, unsigned c if (stat0 & 0xffe0U) { /* If not NDEV, print status. */ if (!(stat0 & 0x0800)) { - printk("apecs.c:conf_read: got stat0=%x\n", stat0); + printk(KERN_INFO "apecs.c:conf_read: got stat0=%x\n", stat0); } /* Reset error status. */ @@ -251,7 +251,7 @@ conf_write(unsigned long addr, unsigned if (stat0 & 0xffe0U) { /* If not NDEV, print status. */ if (!(stat0 & 0x0800)) { - printk("apecs.c:conf_write: got stat0=%x\n", stat0); + printk(KERN_INFO "apecs.c:conf_write: got stat0=%x\n", stat0); } /* Reset error status. */ --- a/arch/alpha/kernel/core_cia.c +++ b/arch/alpha/kernel/core_cia.c @@ -428,7 +428,7 @@ verify_tb_operation(void) mcheck_expected(0) = 0; mb(); if (mcheck_taken(0)) { - printk("pci: failed sg loopback i/o read test (mcheck)\n"); + printk(KERN_WARNING "pci: failed sg loopback i/o read test (mcheck)\n"); goto failed; } if (temp != data0) { @@ -445,9 +445,9 @@ verify_tb_operation(void) temp = *(vip)CIA_IOC_TB_TAGn(0); if (temp & 1) { use_tbia_try2 = 1; - printk("pci: failed tbia test; workaround available\n"); + printk(KERN_WARNING "pci: failed tbia test; workaround available\n"); } else { - printk("pci: passed tbia test\n"); + printk(KERN_INFO "pci: passed tbia test\n"); } } @@ -465,7 +465,7 @@ verify_tb_operation(void) mcheck_expected(0) = 0; mb(); if (mcheck_taken(0)) { - printk("pci: failed pte write cache snoop test (mcheck)\n"); + printk(KERN_WARNING "pci: failed pte write cache snoop test (mcheck)\n"); goto failed; } if (temp != data0) { @@ -512,7 +512,7 @@ verify_tb_operation(void) mb(); mcheck_expected(0) = 0; mb(); - printk("pci: %s pci machine check test\n", + printk(KERN_INFO "pci: %s pci machine check test\n", mcheck_taken(0) ? "passed" : "failed"); /* Clean up after the tests. */ @@ -529,7 +529,7 @@ verify_tb_operation(void) *(vip)CIA_IOC_TB_TAGn(2) = 2; *(vip)CIA_IOC_TB_TAGn(3) = 2; - printk("pci: tbia workaround enabled\n"); + printk(KERN_INFO "pci: tbia workaround enabled\n"); } alpha_mv.mv_pci_tbi(arena->hose, 0, -1); @@ -546,7 +546,7 @@ exit: return; failed: - printk("pci: disabling sg translation window\n"); + printk(KERN_INFO "pci: disabling sg translation window\n"); *(vip)CIA_IOC_PCI_W0_BASE = 0; *(vip)CIA_IOC_PCI_W1_BASE = 0; pci_isa_hose->sg_isa = NULL; @@ -632,7 +632,7 @@ do_init_arch(int is_pyxis) int temp, cia_rev, tbia_window; cia_rev = *(vip)CIA_IOC_CIA_REV & CIA_REV_MASK; - printk("pci: cia revision %d%s\n", + printk(KERN_INFO "pci: cia revision %d%s\n", cia_rev, is_pyxis ? " (pyxis)" : ""); if (alpha_using_srm) --- a/arch/alpha/kernel/core_irongate.c +++ b/arch/alpha/kernel/core_irongate.c @@ -169,13 +169,13 @@ irongate_pci_clr_err(void) again: IRONGATE_jd = IRONGATE0->stat_cmd; - printk("Iron stat_cmd %x\n", IRONGATE_jd); + printk(KERN_INFO "Iron stat_cmd %x\n", IRONGATE_jd); IRONGATE0->stat_cmd = IRONGATE_jd; /* write again clears error bits */ mb(); IRONGATE_jd = IRONGATE0->stat_cmd; /* re-read to force write */ IRONGATE_jd = *IronECC; - printk("Iron ECC %x\n", IRONGATE_jd); + printk(KERN_INFO "Iron ECC %x\n", IRONGATE_jd); *IronECC = IRONGATE_jd; /* write again clears error bits */ mb(); IRONGATE_jd = *IronECC; /* re-read to force write */ @@ -351,7 +351,7 @@ irongate_ioremap(unsigned long addr, uns * Adjust the limits (mappings must be page aligned) */ if (addr & ~PAGE_MASK) { - printk("AGP ioremap failed... addr not page aligned (0x%lx)\n", + printk(KERN_WARNING "AGP ioremap failed... addr not page aligned (0x%lx)\n", addr); return (void __iomem *)(addr + IRONGATE_MEM); } @@ -359,17 +359,17 @@ irongate_ioremap(unsigned long addr, uns size = PAGE_ALIGN(last) - addr; #if 0 - printk("irongate_ioremap(0x%lx, 0x%lx)\n", addr, size); - printk("irongate_ioremap: gart_bus_addr 0x%lx\n", gart_bus_addr); - printk("irongate_ioremap: gart_aper_size 0x%lx\n", gart_aper_size); - printk("irongate_ioremap: mmio_regs %p\n", mmio_regs); - printk("irongate_ioremap: gatt_pages %p\n", gatt_pages); + printk(KERN_DEBUG "irongate_ioremap(0x%lx, 0x%lx)\n", addr, size); + printk(KERN_DEBUG "irongate_ioremap: gart_bus_addr 0x%lx\n", gart_bus_addr); + printk(KERN_DEBUG "irongate_ioremap: gart_aper_size 0x%lx\n", gart_aper_size); + printk(KERN_DEBUG "irongate_ioremap: mmio_regs %p\n", mmio_regs); + printk(KERN_DEBUG "irongate_ioremap: gatt_pages %p\n", gatt_pages); for(baddr = addr; baddr <= last; baddr += PAGE_SIZE) { cur_gatt = phys_to_virt(GET_GATT(baddr) & ~1); pte = cur_gatt[GET_GATT_OFF(baddr)] & ~1; - printk("irongate_ioremap: cur_gatt %p pte 0x%x\n", + printk(KERN_DEBUG "irongate_ioremap: cur_gatt %p pte 0x%x\n", cur_gatt, pte); } #endif @@ -389,7 +389,7 @@ irongate_ioremap(unsigned long addr, uns if (__alpha_remap_area_pages(vaddr, pte, PAGE_SIZE, 0)) { - printk("AGP ioremap: FAILED to map...\n"); + printk(KERN_WARNING "AGP ioremap: FAILED to map...\n"); vfree(area->addr); return NULL; } @@ -399,7 +399,7 @@ irongate_ioremap(unsigned long addr, uns vaddr = (unsigned long)area->addr + (addr & ~PAGE_MASK); #if 0 - printk("irongate_ioremap(0x%lx, 0x%lx) returning 0x%lx\n", + printk(KERN_DEBUG "irongate_ioremap(0x%lx, 0x%lx) returning 0x%lx\n", addr, size, vaddr); #endif return (void __iomem *)vaddr; --- a/arch/alpha/kernel/core_lca.c +++ b/arch/alpha/kernel/core_lca.c @@ -334,23 +334,23 @@ lca_init_arch(void) static void mem_error(unsigned long esr, unsigned long ear) { - printk(" %s %s error to %s occurred at address %x\n", + printk(KERN_ERR " %s %s error to %s occurred at address %x\n", ((esr & ESR_CEE) ? "Correctable" : (esr & ESR_UEE) ? "Uncorrectable" : "A"), (esr & ESR_WRE) ? "write" : "read", (esr & ESR_SOR) ? "memory" : "b-cache", (unsigned) (ear & 0x1ffffff8)); if (esr & ESR_CTE) { - printk(" A b-cache tag parity error was detected.\n"); + printk(KERN_ERR " A b-cache tag parity error was detected.\n"); } if (esr & ESR_MSE) { - printk(" Several other correctable errors occurred.\n"); + printk(KERN_ERR " Several other correctable errors occurred.\n"); } if (esr & ESR_MHE) { - printk(" Several other uncorrectable errors occurred.\n"); + printk(KERN_ERR " Several other uncorrectable errors occurred.\n"); } if (esr & ESR_NXM) { - printk(" Attempted to access non-existent memory.\n"); + printk(KERN_ERR " Attempted to access non-existent memory.\n"); } } @@ -372,16 +372,16 @@ ioc_error(__u32 stat0, __u32 stat1) unsigned code = (stat0 & IOC_CODE) >> IOC_CODE_SHIFT; unsigned cmd = (stat0 & IOC_CMD) >> IOC_CMD_SHIFT; - printk(" %s initiated PCI %s cycle to address %x" + printk(KERN_ERR " %s initiated PCI %s cycle to address %x" " failed due to %s.\n", code > 3 ? "PCI" : "CPU", pci_cmd[cmd], stat1, err_name[code]); if (code == 5 || code == 6) { - printk(" (Error occurred at PCI memory address %x.)\n", + printk(KERN_ERR " (Error occurred at PCI memory address %x.)\n", (stat0 & ~IOC_P_NBR)); } if (stat0 & IOC_LOST) { - printk(" Other PCI errors occurred simultaneously.\n"); + printk(KERN_ERR " Other PCI errors occurred simultaneously.\n"); } } @@ -482,12 +482,12 @@ lca_clock_print(void) pmr_reg = LCA_READ_PMR; - printk("Status of clock control:\n"); - printk("\tPrimary clock divisor\t0x%lx\n", LCA_GET_PRIMARY(pmr_reg)); - printk("\tOverride clock divisor\t0x%lx\n", LCA_GET_OVERRIDE(pmr_reg)); - printk("\tInterrupt override is %s\n", + printk(KERN_INFO "Status of clock control:\n"); + printk(KERN_INFO "\tPrimary clock divisor\t0x%lx\n", LCA_GET_PRIMARY(pmr_reg)); + printk(KERN_INFO "\tOverride clock divisor\t0x%lx\n", LCA_GET_OVERRIDE(pmr_reg)); + printk(KERN_INFO "\tInterrupt override is %s\n", (pmr_reg & LCA_PMR_INTO) ? "on" : "off"); - printk("\tDMA override is %s\n", + printk(KERN_INFO "\tDMA override is %s\n", (pmr_reg & LCA_PMR_DMAO) ? "on" : "off"); } --- a/arch/alpha/kernel/core_marvel.c +++ b/arch/alpha/kernel/core_marvel.c @@ -332,7 +332,7 @@ marvel_init_io7(struct io7 *io7) { int i; - printk("Initializing IO7 at PID %d\n", io7->pe); + printk(KERN_INFO "Initializing IO7 at PID %d\n", io7->pe); /* * Get the Port 7 CSR pointer. @@ -361,7 +361,7 @@ marvel_io7_present(gct6_node *node) return; pe = (node->id >> 8) & 0xff; - printk("Found an IO7 at PID %d\n", pe); + printk(KERN_INFO "Found an IO7 at PID %d\n", pe); alloc_io7(pe); } @@ -383,7 +383,7 @@ marvel_init_vga_hose(void) * need to fix this decode when the console * changes its encoding */ - printk("console graphics is on hose %d (console)\n", h); + printk(KERN_INFO "console graphics is on hose %d (console)\n", h); /* * The console's hose numbering is: @@ -399,7 +399,7 @@ marvel_init_vga_hose(void) hose = io7->ports[port].hose; if (hose) { - printk("Console graphics on hose %d\n", hose->index); + printk(KERN_INFO "Console graphics on hose %d\n", hose->index); pci_vga_hose = hose; } } @@ -426,7 +426,7 @@ marvel_specify_io7(char *str) do { pid = simple_strtoul(str, &pchar, 0); if (pchar != str) { - printk("User-specified IO7 at PID %lu\n", pid); + printk(KERN_INFO "User-specified IO7 at PID %lu\n", pid); io7 = alloc_io7(pid); if (io7) marvel_init_io7(io7); } @@ -759,7 +759,7 @@ marvel_ioremap(unsigned long addr, unsig baddr += PAGE_SIZE, vaddr += PAGE_SIZE) { pfn = ptes[baddr >> PAGE_SHIFT]; if (!(pfn & 1)) { - printk("ioremap failed... pte not valid...\n"); + printk(KERN_ERR "ioremap failed... pte not valid...\n"); vfree(area->addr); return NULL; } @@ -768,7 +768,7 @@ marvel_ioremap(unsigned long addr, unsig if (__alpha_remap_area_pages(vaddr, pfn << PAGE_SHIFT, PAGE_SIZE, 0)) { - printk("FAILED to map...\n"); + printk(KERN_ERR "FAILED to map...\n"); vfree(area->addr); return NULL; } @@ -1002,7 +1002,7 @@ marvel_agp_configure(alpha_agp_info *agp * Don't know what this PLL setting is, take the requested * rate, but warn the user. */ - printk("%s: unknown PLL setting RNGB=%lx (PLL6_CTL=%016lx)\n", + printk(KERN_INFO "%s: unknown PLL setting RNGB=%lx (PLL6_CTL=%016lx)\n", __FUNCTION__, IO7_PLL_RNGB(agp_pll), agp_pll); break; } @@ -1011,7 +1011,7 @@ marvel_agp_configure(alpha_agp_info *agp * Set the new rate, if necessary. */ if (new_rate) { - printk("Requested AGP Rate %dX not compatible " + printk(KERN_INFO "Requested AGP Rate %dX not compatible " "with PLL setting - using %dX\n", agp->mode.bits.rate, new_rate); @@ -1019,7 +1019,7 @@ marvel_agp_configure(alpha_agp_info *agp agp->mode.bits.rate = new_rate; } - printk("Enabling AGP on hose %d: %dX%s RQ %d\n", + printk(KERN_INFO "Enabling AGP on hose %d: %dX%s RQ %d\n", agp->hose->index, agp->mode.bits.rate, agp->mode.bits.sba ? " - SBA" : "", agp->mode.bits.rq); @@ -1053,13 +1053,13 @@ marvel_agp_translate(alpha_agp_info *agp if (addr < agp->aperture.bus_base || addr >= agp->aperture.bus_base + agp->aperture.size) { - printk("%s: addr out of range\n", __FUNCTION__); + printk(KERN_ERR "%s: addr out of range\n", __FUNCTION__); return -EINVAL; } pte = aper->arena->ptes[baddr >> PAGE_SHIFT]; if (!(pte & 1)) { - printk("%s: pte not valid\n", __FUNCTION__); + printk(KERN_ERR "%s: pte not valid\n", __FUNCTION__); return -EINVAL; } return (pte >> 1) << PAGE_SHIFT; @@ -1109,7 +1109,7 @@ marvel_agp_info(void) if (!hose || !hose->sg_pci) return NULL; - printk("MARVEL - using hose %d as AGP\n", hose->index); + printk(KERN_INFO "MARVEL - using hose %d as AGP\n", hose->index); /* * Get the csrs from the hose. --- a/arch/alpha/kernel/core_mcpcia.c +++ b/arch/alpha/kernel/core_mcpcia.c @@ -433,7 +433,7 @@ mcpcia_init_hoses(void) } } - printk("mcpcia_init_hoses: found %d hoses\n", hose_count); + printk(KERN_INFO "mcpcia_init_hoses: found %d hoses\n", hose_count); /* Now do init for each hose. */ for (hose = hose_head; hose; hose = hose->next) @@ -450,65 +450,65 @@ mcpcia_print_uncorrectable(struct el_MCP /* Print PAL fields */ for (i = 0; i < 24; i += 2) { - printk(" paltmp[%d-%d] = %16lx %16lx\n", + printk(KERN_INFO " paltmp[%d-%d] = %16lx %16lx\n", i, i+1, frame->paltemp[i], frame->paltemp[i+1]); } for (i = 0; i < 8; i += 2) { - printk(" shadow[%d-%d] = %16lx %16lx\n", + printk(KERN_INFO " shadow[%d-%d] = %16lx %16lx\n", i, i+1, frame->shadow[i], frame->shadow[i+1]); } - printk(" Addr of excepting instruction = %16lx\n", + printk(KERN_INFO " Addr of excepting instruction = %16lx\n", frame->exc_addr); - printk(" Summary of arithmetic traps = %16lx\n", + printk(KERN_INFO " Summary of arithmetic traps = %16lx\n", frame->exc_sum); - printk(" Exception mask = %16lx\n", + printk(KERN_INFO " Exception mask = %16lx\n", frame->exc_mask); - printk(" Base address for PALcode = %16lx\n", + printk(KERN_INFO " Base address for PALcode = %16lx\n", frame->pal_base); - printk(" Interrupt Status Reg = %16lx\n", + printk(KERN_INFO " Interrupt Status Reg = %16lx\n", frame->isr); - printk(" CURRENT SETUP OF EV5 IBOX = %16lx\n", + printk(KERN_INFO " CURRENT SETUP OF EV5 IBOX = %16lx\n", frame->icsr); - printk(" I-CACHE Reg %s parity error = %16lx\n", + printk(KERN_INFO " I-CACHE Reg %s parity error = %16lx\n", (frame->ic_perr_stat & 0x800L) ? "Data" : "Tag", frame->ic_perr_stat); - printk(" D-CACHE error Reg = %16lx\n", + printk(KERN_INFO " D-CACHE error Reg = %16lx\n", frame->dc_perr_stat); if (frame->dc_perr_stat & 0x2) { switch (frame->dc_perr_stat & 0x03c) { case 8: - printk(" Data error in bank 1\n"); + printk(KERN_INFO " Data error in bank 1\n"); break; case 4: - printk(" Data error in bank 0\n"); + printk(KERN_INFO " Data error in bank 0\n"); break; case 20: - printk(" Tag error in bank 1\n"); + printk(KERN_INFO " Tag error in bank 1\n"); break; case 10: - printk(" Tag error in bank 0\n"); + printk(KERN_INFO " Tag error in bank 0\n"); break; } } - printk(" Effective VA = %16lx\n", + printk(KERN_INFO " Effective VA = %16lx\n", frame->va); - printk(" Reason for D-stream = %16lx\n", + printk(KERN_INFO " Reason for D-stream = %16lx\n", frame->mm_stat); - printk(" EV5 SCache address = %16lx\n", + printk(KERN_INFO " EV5 SCache address = %16lx\n", frame->sc_addr); - printk(" EV5 SCache TAG/Data parity = %16lx\n", + printk(KERN_INFO " EV5 SCache TAG/Data parity = %16lx\n", frame->sc_stat); - printk(" EV5 BC_TAG_ADDR = %16lx\n", + printk(KERN_INFO " EV5 BC_TAG_ADDR = %16lx\n", frame->bc_tag_addr); - printk(" EV5 EI_ADDR: Phys addr of Xfer = %16lx\n", + printk(KERN_INFO " EV5 EI_ADDR: Phys addr of Xfer = %16lx\n", frame->ei_addr); - printk(" Fill Syndrome = %16lx\n", + printk(KERN_INFO " Fill Syndrome = %16lx\n", frame->fill_syndrome); - printk(" EI_STAT reg = %16lx\n", + printk(KERN_INFO " EI_STAT reg = %16lx\n", frame->ei_stat); - printk(" LD_LOCK = %16lx\n", + printk(KERN_INFO " LD_LOCK = %16lx\n", frame->ld_lock); } @@ -549,25 +549,25 @@ mcpcia_print_system_area(unsigned long l for (hose = hose_head; hose; hose = hose->next, iodpp++) { - printk("IOD %d Register Subpacket - Bridge Base Address %16lx\n", + printk(KERN_INFO "IOD %d Register Subpacket - Bridge Base Address %16lx\n", hose->index, iodpp->base); - printk(" WHOAMI = %8x\n", iodpp->whoami); - printk(" PCI_REV = %8x\n", iodpp->pci_rev); - printk(" CAP_CTRL = %8x\n", iodpp->cap_ctrl); - printk(" HAE_MEM = %8x\n", iodpp->hae_mem); - printk(" HAE_IO = %8x\n", iodpp->hae_io); - printk(" INT_CTL = %8x\n", iodpp->int_ctl); - printk(" INT_REG = %8x\n", iodpp->int_reg); - printk(" INT_MASK0 = %8x\n", iodpp->int_mask0); - printk(" INT_MASK1 = %8x\n", iodpp->int_mask1); - printk(" MC_ERR0 = %8x\n", iodpp->mc_err0); - printk(" MC_ERR1 = %8x\n", iodpp->mc_err1); - printk(" CAP_ERR = %8x\n", iodpp->cap_err); - printk(" PCI_ERR1 = %8x\n", iodpp->pci_err1); - printk(" MDPA_STAT = %8x\n", iodpp->mdpa_stat); - printk(" MDPA_SYN = %8x\n", iodpp->mdpa_syn); - printk(" MDPB_STAT = %8x\n", iodpp->mdpb_stat); - printk(" MDPB_SYN = %8x\n", iodpp->mdpb_syn); + printk(KERN_INFO " WHOAMI = %8x\n", iodpp->whoami); + printk(KERN_INFO " PCI_REV = %8x\n", iodpp->pci_rev); + printk(KERN_INFO " CAP_CTRL = %8x\n", iodpp->cap_ctrl); + printk(KERN_INFO " HAE_MEM = %8x\n", iodpp->hae_mem); + printk(KERN_INFO " HAE_IO = %8x\n", iodpp->hae_io); + printk(KERN_INFO " INT_CTL = %8x\n", iodpp->int_ctl); + printk(KERN_INFO " INT_REG = %8x\n", iodpp->int_reg); + printk(KERN_INFO " INT_MASK0 = %8x\n", iodpp->int_mask0); + printk(KERN_INFO " INT_MASK1 = %8x\n", iodpp->int_mask1); + printk(KERN_INFO " MC_ERR0 = %8x\n", iodpp->mc_err0); + printk(KERN_INFO " MC_ERR1 = %8x\n", iodpp->mc_err1); + printk(KERN_INFO " CAP_ERR = %8x\n", iodpp->cap_err); + printk(KERN_INFO " PCI_ERR1 = %8x\n", iodpp->pci_err1); + printk(KERN_INFO " MDPA_STAT = %8x\n", iodpp->mdpa_stat); + printk(KERN_INFO " MDPA_SYN = %8x\n", iodpp->mdpa_syn); + printk(KERN_INFO " MDPB_STAT = %8x\n", iodpp->mdpb_stat); + printk(KERN_INFO " MDPB_SYN = %8x\n", iodpp->mdpb_syn); } } --- a/arch/alpha/kernel/core_polaris.c +++ b/arch/alpha/kernel/core_polaris.c @@ -152,7 +152,7 @@ polaris_init_arch(void) * already. */ #if 0 - printk("polaris_init_arch(): trusting firmware for setup\n"); + printk(KERN_INFO "polaris_init_arch(): trusting firmware for setup\n"); #endif /* --- a/arch/alpha/kernel/core_t2.c +++ b/arch/alpha/kernel/core_t2.c @@ -335,7 +335,7 @@ t2_direct_map_window1(unsigned long base *(vulp)T2_TBASE1 = 0; #if DEBUG_PRINT_FINAL_SETTINGS - printk("%s: setting WBASE1=0x%lx WMASK1=0x%lx TBASE1=0x%lx\n", + printk(KERN_DEBUG "%s: setting WBASE1=0x%lx WMASK1=0x%lx TBASE1=0x%lx\n", __FUNCTION__, *(vulp)T2_WBASE1, *(vulp)T2_WMASK1, @@ -365,7 +365,7 @@ t2_sg_map_window2(struct pci_controller t2_pci_tbi(hose, 0, -1); /* flush TLB all */ #if DEBUG_PRINT_FINAL_SETTINGS - printk("%s: setting WBASE2=0x%lx WMASK2=0x%lx TBASE2=0x%lx\n", + printk(KERN_DEBUG "%s: setting WBASE2=0x%lx WMASK2=0x%lx TBASE2=0x%lx\n", __FUNCTION__, *(vulp)T2_WBASE2, *(vulp)T2_WMASK2, @@ -377,15 +377,15 @@ static void __init t2_save_configuration(void) { #if DEBUG_PRINT_INITIAL_SETTINGS - printk("%s: HAE_1 was 0x%lx\n", __FUNCTION__, srm_hae); /* HW is 0 */ - printk("%s: HAE_2 was 0x%lx\n", __FUNCTION__, *(vulp)T2_HAE_2); - printk("%s: HAE_3 was 0x%lx\n", __FUNCTION__, *(vulp)T2_HAE_3); - printk("%s: HAE_4 was 0x%lx\n", __FUNCTION__, *(vulp)T2_HAE_4); - printk("%s: HBASE was 0x%lx\n", __FUNCTION__, *(vulp)T2_HBASE); + printk(KERN_DEBUG "%s: HAE_1 was 0x%lx\n", __FUNCTION__, srm_hae); /* HW is 0 */ + printk(KERN_DEBUG "%s: HAE_2 was 0x%lx\n", __FUNCTION__, *(vulp)T2_HAE_2); + printk(KERN_DEBUG "%s: HAE_3 was 0x%lx\n", __FUNCTION__, *(vulp)T2_HAE_3); + printk(KERN_DEBUG "%s: HAE_4 was 0x%lx\n", __FUNCTION__, *(vulp)T2_HAE_4); + printk(KERN_DEBUG "%s: HBASE was 0x%lx\n", __FUNCTION__, *(vulp)T2_HBASE); - printk("%s: WBASE1=0x%lx WMASK1=0x%lx TBASE1=0x%lx\n", __FUNCTION__, + printk(KERN_DEBUG "%s: WBASE1=0x%lx WMASK1=0x%lx TBASE1=0x%lx\n", __FUNCTION__, *(vulp)T2_WBASE1, *(vulp)T2_WMASK1, *(vulp)T2_TBASE1); - printk("%s: WBASE2=0x%lx WMASK2=0x%lx TBASE2=0x%lx\n", __FUNCTION__, + printk(KERN_DEBUG "%s: WBASE2=0x%lx WMASK2=0x%lx TBASE2=0x%lx\n", __FUNCTION__, *(vulp)T2_WBASE2, *(vulp)T2_WMASK2, *(vulp)T2_TBASE2); #endif @@ -423,7 +423,7 @@ t2_init_arch(void) /* Enable scatter/gather TLB use. */ temp = *(vulp)T2_IOCSR; if (!(temp & (0x1UL << 26))) { - printk("t2_init_arch: enabling SG TLB, IOCSR was 0x%lx\n", + printk(KERN_INFO "t2_init_arch: enabling SG TLB, IOCSR was 0x%lx\n", temp); *(vulp)T2_IOCSR = temp | (0x1UL << 26); mb(); @@ -580,7 +580,7 @@ t2_machine_check(unsigned long vector, u */ #ifdef CONFIG_VERBOSE_MCHECK if (alpha_verbose_mcheck > 1) { - printk("t2_machine_check(cpu%d): any_expected 0x%x -" + printk(KERN_INFO "t2_machine_check(cpu%d): any_expected 0x%x -" " (assumed) spurious -" " code 0x%x\n", cpu, t2_mcheck_any_expected, (unsigned int)mchk_header->code); @@ -593,7 +593,7 @@ t2_machine_check(unsigned long vector, u if (t2_mcheck_last_taken & (1 << cpu)) { #ifdef CONFIG_VERBOSE_MCHECK if (alpha_verbose_mcheck > 1) { - printk("t2_machine_check(cpu%d): last_taken 0x%x - " + printk(KERN_INFO "t2_machine_check(cpu%d): last_taken 0x%x - " "unexpected mcheck - code 0x%x\n", cpu, t2_mcheck_last_taken, (unsigned int)mchk_header->code); @@ -610,7 +610,7 @@ t2_machine_check(unsigned long vector, u #ifdef CONFIG_VERBOSE_MCHECK if (alpha_verbose_mcheck > 1) { - printk("%s t2_mcheck(cpu%d): last_taken 0x%x - " + printk(KERN_INFO "%s t2_mcheck(cpu%d): last_taken 0x%x - " "any_expected 0x%x - code 0x%x\n", (mcheck_expected(cpu) ? "EX" : "UN"), cpu, t2_mcheck_last_taken, t2_mcheck_any_expected, --- a/arch/alpha/kernel/core_titan.c +++ b/arch/alpha/kernel/core_titan.c @@ -374,7 +374,7 @@ titan_init_vga_hose(void) } if (hose) { - printk("Console graphics on hose %d\n", hose->index); + printk(KERN_INFO "Console graphics on hose %d\n", hose->index); pci_vga_hose = hose; } } @@ -385,21 +385,21 @@ void __init titan_init_arch(void) { #if 0 - printk("%s: titan_init_arch()\n", __FUNCTION__); - printk("%s: CChip registers:\n", __FUNCTION__); - printk("%s: CSR_CSC 0x%lx\n", __FUNCTION__, TITAN_cchip->csc.csr); - printk("%s: CSR_MTR 0x%lx\n", __FUNCTION__, TITAN_cchip->mtr.csr); - printk("%s: CSR_MISC 0x%lx\n", __FUNCTION__, TITAN_cchip->misc.csr); - printk("%s: CSR_DIM0 0x%lx\n", __FUNCTION__, TITAN_cchip->dim0.csr); - printk("%s: CSR_DIM1 0x%lx\n", __FUNCTION__, TITAN_cchip->dim1.csr); - printk("%s: CSR_DIR0 0x%lx\n", __FUNCTION__, TITAN_cchip->dir0.csr); - printk("%s: CSR_DIR1 0x%lx\n", __FUNCTION__, TITAN_cchip->dir1.csr); - printk("%s: CSR_DRIR 0x%lx\n", __FUNCTION__, TITAN_cchip->drir.csr); - - printk("%s: DChip registers:\n", __FUNCTION__); - printk("%s: CSR_DSC 0x%lx\n", __FUNCTION__, TITAN_dchip->dsc.csr); - printk("%s: CSR_STR 0x%lx\n", __FUNCTION__, TITAN_dchip->str.csr); - printk("%s: CSR_DREV 0x%lx\n", __FUNCTION__, TITAN_dchip->drev.csr); + printk(KERN_DEBUG "%s: titan_init_arch()\n", __FUNCTION__); + printk(KERN_DEBUG "%s: CChip registers:\n", __FUNCTION__); + printk(KERN_DEBUG "%s: CSR_CSC 0x%lx\n", __FUNCTION__, TITAN_cchip->csc.csr); + printk(KERN_DEBUG "%s: CSR_MTR 0x%lx\n", __FUNCTION__, TITAN_cchip->mtr.csr); + printk(KERN_DEBUG "%s: CSR_MISC 0x%lx\n", __FUNCTION__, TITAN_cchip->misc.csr); + printk(KERN_DEBUG "%s: CSR_DIM0 0x%lx\n", __FUNCTION__, TITAN_cchip->dim0.csr); + printk(KERN_DEBUG "%s: CSR_DIM1 0x%lx\n", __FUNCTION__, TITAN_cchip->dim1.csr); + printk(KERN_DEBUG "%s: CSR_DIR0 0x%lx\n", __FUNCTION__, TITAN_cchip->dir0.csr); + printk(KERN_DEBUG "%s: CSR_DIR1 0x%lx\n", __FUNCTION__, TITAN_cchip->dir1.csr); + printk(KERN_DEBUG "%s: CSR_DRIR 0x%lx\n", __FUNCTION__, TITAN_cchip->drir.csr); + + printk(KERN_DEBUG "%s: DChip registers:\n", __FUNCTION__); + printk(KERN_DEBUG "%s: CSR_DSC 0x%lx\n", __FUNCTION__, TITAN_dchip->dsc.csr); + printk(KERN_DEBUG "%s: CSR_STR 0x%lx\n", __FUNCTION__, TITAN_dchip->str.csr); + printk(KERN_DEBUG "%s: CSR_DREV 0x%lx\n", __FUNCTION__, TITAN_dchip->drev.csr); #endif boot_cpuid = __hard_smp_processor_id(); @@ -530,7 +530,7 @@ titan_ioremap(unsigned long addr, unsign baddr += PAGE_SIZE, vaddr += PAGE_SIZE) { pfn = ptes[baddr >> PAGE_SHIFT]; if (!(pfn & 1)) { - printk("ioremap failed... pte not valid...\n"); + printk(KERN_ERR "ioremap failed... pte not valid...\n"); vfree(area->addr); return NULL; } @@ -539,7 +539,7 @@ titan_ioremap(unsigned long addr, unsign if (__alpha_remap_area_pages(vaddr, pfn << PAGE_SHIFT, PAGE_SIZE, 0)) { - printk("FAILED to map...\n"); + printk(KERN_ERR "FAILED to map...\n"); vfree(area->addr); return NULL; } @@ -711,13 +711,13 @@ titan_agp_translate(alpha_agp_info *agp, if (addr < agp->aperture.bus_base || addr >= agp->aperture.bus_base + agp->aperture.size) { - printk("%s: addr out of range\n", __FUNCTION__); + printk(KERN_ERR "%s: addr out of range\n", __FUNCTION__); return -EINVAL; } pte = aper->arena->ptes[baddr >> PAGE_SHIFT]; if (!(pte & 1)) { - printk("%s: pte not valid\n", __FUNCTION__); + printk(KERN_ERR "%s: pte not valid\n", __FUNCTION__); return -EINVAL; } --- a/arch/alpha/kernel/core_tsunami.c +++ b/arch/alpha/kernel/core_tsunami.c @@ -211,7 +211,7 @@ tsunami_probe_read(volatile unsigned lon mcheck_taken(cpu) = 0; setipl(s); - printk("dont_care == 0x%lx\n", dont_care); + printk(KERN_INFO "dont_care == 0x%lx\n", dont_care); return probe_result; } @@ -229,7 +229,7 @@ tsunami_probe_write(volatile unsigned lo int source = (TSUNAMI_cchip->misc.csr >> 29) & 7; TSUNAMI_cchip->misc.csr |= (1L << 28); /* ...and unlock NXS. */ probe_result = 0; - printk("tsunami_probe_write: unit %d at 0x%016lx\n", source, + printk(KERN_INFO "tsunami_probe_write: unit %d at 0x%016lx\n", source, (unsigned long)vaddr); } if (probe_result) @@ -362,27 +362,27 @@ tsunami_init_arch(void) /* NXMs just don't matter to Tsunami--unless they make it choke completely. */ tmp = (unsigned long)(TSUNAMI_cchip - 1); - printk("%s: probing bogus address: 0x%016lx\n", FN, bogus_addr); - printk("\tprobe %s\n", + printk(KERN_INFO "%s: probing bogus address: 0x%016lx\n", FN, bogus_addr); + printk(KERN_INFO "\tprobe %s\n", tsunami_probe_write((unsigned long *)bogus_addr) ? "succeeded" : "failed"); #endif /* NXM_MACHINE_CHECKS_ON_TSUNAMI */ #if 0 - printk("%s: CChip registers:\n", FN); - printk("%s: CSR_CSC 0x%lx\n", FN, TSUNAMI_cchip->csc.csr); - printk("%s: CSR_MTR 0x%lx\n", FN, TSUNAMI_cchip.mtr.csr); - printk("%s: CSR_MISC 0x%lx\n", FN, TSUNAMI_cchip->misc.csr); - printk("%s: CSR_DIM0 0x%lx\n", FN, TSUNAMI_cchip->dim0.csr); - printk("%s: CSR_DIM1 0x%lx\n", FN, TSUNAMI_cchip->dim1.csr); - printk("%s: CSR_DIR0 0x%lx\n", FN, TSUNAMI_cchip->dir0.csr); - printk("%s: CSR_DIR1 0x%lx\n", FN, TSUNAMI_cchip->dir1.csr); - printk("%s: CSR_DRIR 0x%lx\n", FN, TSUNAMI_cchip->drir.csr); - - printk("%s: DChip registers:\n"); - printk("%s: CSR_DSC 0x%lx\n", FN, TSUNAMI_dchip->dsc.csr); - printk("%s: CSR_STR 0x%lx\n", FN, TSUNAMI_dchip->str.csr); - printk("%s: CSR_DREV 0x%lx\n", FN, TSUNAMI_dchip->drev.csr); + printk(KERN_DEBUG "%s: CChip registers:\n", FN); + printk(KERN_DEBUG "%s: CSR_CSC 0x%lx\n", FN, TSUNAMI_cchip->csc.csr); + printk(KERN_DEBUG "%s: CSR_MTR 0x%lx\n", FN, TSUNAMI_cchip.mtr.csr); + printk(KERN_DEBUG "%s: CSR_MISC 0x%lx\n", FN, TSUNAMI_cchip->misc.csr); + printk(KERN_DEBUG "%s: CSR_DIM0 0x%lx\n", FN, TSUNAMI_cchip->dim0.csr); + printk(KERN_DEBUG "%s: CSR_DIM1 0x%lx\n", FN, TSUNAMI_cchip->dim1.csr); + printk(KERN_DEBUG "%s: CSR_DIR0 0x%lx\n", FN, TSUNAMI_cchip->dir0.csr); + printk(KERN_DEBUG "%s: CSR_DIR1 0x%lx\n", FN, TSUNAMI_cchip->dir1.csr); + printk(KERN_DEBUG "%s: CSR_DRIR 0x%lx\n", FN, TSUNAMI_cchip->drir.csr); + + printk(KERN_DEBUG "%s: DChip registers:\n"); + printk(KERN_DEBUG "%s: CSR_DSC 0x%lx\n", FN, TSUNAMI_dchip->dsc.csr); + printk(KERN_DEBUG "%s: CSR_STR 0x%lx\n", FN, TSUNAMI_dchip->str.csr); + printk(KERN_DEBUG "%s: CSR_DREV 0x%lx\n", FN, TSUNAMI_dchip->drev.csr); #endif /* With multiple PCI busses, we play with I/O as physical addrs. */ ioport_resource.end = ~0UL; --- a/arch/alpha/kernel/pci.c +++ b/arch/alpha/kernel/pci.c @@ -408,7 +408,7 @@ pcibios_set_master(struct pci_dev *dev) u8 lat; pci_read_config_byte(dev, PCI_LATENCY_TIMER, &lat); if (lat >= 16) return; - printk("PCI: Setting latency timer of device %s to 64\n", + printk(KERN_INFO "PCI: Setting latency timer of device %s to 64\n", pci_name(dev)); pci_write_config_byte(dev, PCI_LATENCY_TIMER, 64); } --- a/arch/alpha/kernel/pci_iommu.c +++ b/arch/alpha/kernel/pci_iommu.c @@ -79,7 +79,7 @@ iommu_arena_new_node(int nid, struct pci if (!NODE_DATA(nid) || (NULL == (arena = alloc_bootmem_node(NODE_DATA(nid), sizeof(*arena))))) { - printk("%s: couldn't allocate arena from node %d\n" + printk(KERN_WARNING "%s: couldn't allocate arena from node %d\n" " falling back to system-wide allocation\n", __FUNCTION__, nid); arena = alloc_bootmem(sizeof(*arena)); @@ -90,7 +90,7 @@ iommu_arena_new_node(int nid, struct pci mem_size, align, 0)))) { - printk("%s: couldn't allocate arena ptes from node %d\n" + printk(KERN_WARNING "%s: couldn't allocate arena ptes from node %d\n" " falling back to system-wide allocation\n", __FUNCTION__, nid); arena->ptes = __alloc_bootmem(mem_size, align, 0); --- a/arch/alpha/kernel/ptrace.c +++ b/arch/alpha/kernel/ptrace.c @@ -239,7 +239,7 @@ ptrace_cancel_bpt(struct task_struct * c task_thread_info(child)->bpt_nsaved = 0; if (nsaved > 2) { - printk("ptrace_cancel_bpt: bogus nsaved: %d!\n", nsaved); + printk(KERN_ERR "ptrace_cancel_bpt: bogus nsaved: %d!\n", nsaved); nsaved = 2; } --- a/arch/alpha/kernel/semaphore.c +++ b/arch/alpha/kernel/semaphore.c @@ -68,7 +68,7 @@ __down_failed(struct semaphore *sem) DECLARE_WAITQUEUE(wait, tsk); #ifdef CONFIG_DEBUG_SEMAPHORE - printk("%s(%d): down failed(%p)\n", + printk(KERN_DEBUG "%s(%d): down failed(%p)\n", tsk->comm, tsk->pid, sem); #endif @@ -97,7 +97,7 @@ __down_failed(struct semaphore *sem) wake_up(&sem->wait); #ifdef CONFIG_DEBUG_SEMAPHORE - printk("%s(%d): down acquired(%p)\n", + printk(KERN_DEBUG "%s(%d): down acquired(%p)\n", tsk->comm, tsk->pid, sem); #endif } @@ -110,7 +110,7 @@ __down_failed_interruptible(struct semap long ret = 0; #ifdef CONFIG_DEBUG_SEMAPHORE - printk("%s(%d): down failed(%p)\n", + printk(KERN_DEBUG "%s(%d): down failed(%p)\n", tsk->comm, tsk->pid, sem); #endif @@ -138,7 +138,7 @@ __down_failed_interruptible(struct semap wake_up(&sem->wait); #ifdef CONFIG_DEBUG_SEMAPHORE - printk("%s(%d): down %s(%p)\n", + printk(KERN_DEBUG "%s(%d): down %s(%p)\n", current->comm, current->pid, (ret < 0 ? "interrupted" : "acquired"), sem); #endif @@ -167,7 +167,7 @@ down(struct semaphore *sem) CHECK_MAGIC(sem->__magic); #endif #ifdef CONFIG_DEBUG_SEMAPHORE - printk("%s(%d): down(%p) from %p\n", + printk(KERN_DEBUG "%s(%d): down(%p) from %p\n", current->comm, current->pid, sem, atomic_read(&sem->count), __builtin_return_address(0)); #endif @@ -181,7 +181,7 @@ down_interruptible(struct semaphore *sem CHECK_MAGIC(sem->__magic); #endif #ifdef CONFIG_DEBUG_SEMAPHORE - printk("%s(%d): down(%p) from %p\n", + printk(KERN_DEBUG "%s(%d): down(%p) from %p\n", current->comm, current->pid, sem, atomic_read(&sem->count), __builtin_return_address(0)); #endif @@ -200,7 +200,7 @@ down_trylock(struct semaphore *sem) ret = __down_trylock(sem); #ifdef CONFIG_DEBUG_SEMAPHORE - printk("%s(%d): down_trylock %s from %p\n", + printk(KERN_DEBUG "%s(%d): down_trylock %s from %p\n", current->comm, current->pid, ret ? "failed" : "acquired", __builtin_return_address(0)); @@ -216,7 +216,7 @@ up(struct semaphore *sem) CHECK_MAGIC(sem->__magic); #endif #ifdef CONFIG_DEBUG_SEMAPHORE - printk("%s(%d): up(%p) from %p\n", + printk(KERN_DEBUG "%s(%d): up(%p) from %p\n", current->comm, current->pid, sem, atomic_read(&sem->count), __builtin_return_address(0)); #endif --- a/arch/alpha/kernel/setup.c +++ b/arch/alpha/kernel/setup.c @@ -285,7 +285,7 @@ move_initrd(unsigned long mem_limit) memmove(start, (void *)initrd_start, size); initrd_start = (unsigned long)start; initrd_end = initrd_start + size; - printk("initrd moved to %p\n", start); + printk(KERN_INFO "initrd moved to %p\n", start); return start; } #endif @@ -306,7 +306,7 @@ setup_memory(void *kernel_end) (hwrpb->mddt_offset + (unsigned long) hwrpb); for_each_mem_cluster(memdesc, cluster, i) { - printk("memcluster %lu, usage %01lx, start %8lu, end %8lu\n", + printk(KERN_INFO "memcluster %lu, usage %01lx, start %8lu, end %8lu\n", i, cluster->usage, cluster->start_pfn, cluster->start_pfn + cluster->numpages); @@ -341,7 +341,7 @@ setup_memory(void *kernel_end) if (mem_size_limit && max_low_pfn >= mem_size_limit) { - printk("setup: forcing memory size to %ldK (from %ldK).\n", + printk(KERN_INFO "setup: forcing memory size to %ldK (from %ldK).\n", mem_size_limit << (PAGE_SHIFT - 10), max_low_pfn << (PAGE_SHIFT - 10)); max_low_pfn = mem_size_limit; @@ -410,7 +410,7 @@ setup_memory(void *kernel_end) free_bootmem(PFN_PHYS(start), (PFN_PHYS(start_kernel_pfn) - PFN_PHYS(start))); - printk("freeing pages %ld:%ld\n", + printk(KERN_INFO "freeing pages %ld:%ld\n", start, start_kernel_pfn); start = end_kernel_pfn; } else if (end > start_kernel_pfn) @@ -421,23 +421,23 @@ setup_memory(void *kernel_end) continue; free_bootmem(PFN_PHYS(start), PFN_PHYS(end) - PFN_PHYS(start)); - printk("freeing pages %ld:%ld\n", start, end); + printk(KERN_INFO "freeing pages %ld:%ld\n", start, end); } /* Reserve the bootmap memory. */ reserve_bootmem(PFN_PHYS(bootmap_start), bootmap_size); - printk("reserving pages %ld:%ld\n", bootmap_start, bootmap_start+PFN_UP(bootmap_size)); + printk(KERN_INFO "reserving pages %ld:%ld\n", bootmap_start, bootmap_start+PFN_UP(bootmap_size)); #ifdef CONFIG_BLK_DEV_INITRD initrd_start = INITRD_START; if (initrd_start) { initrd_end = initrd_start+INITRD_SIZE; - printk("Initial ramdisk at: 0x%p (%lu bytes)\n", + printk(KERN_INFO "Initial ramdisk at: 0x%p (%lu bytes)\n", (void *) initrd_start, INITRD_SIZE); if ((void *)initrd_end > phys_to_virt(PFN_PHYS(max_low_pfn))) { if (!move_initrd(PFN_PHYS(max_low_pfn))) - printk("initrd extends beyond end of memory " + printk(KERN_INFO "initrd extends beyond end of memory " "(0x%08lx > 0x%p)\ndisabling initrd\n", initrd_end, phys_to_virt(PFN_PHYS(max_low_pfn))); @@ -662,7 +662,7 @@ setup_arch(char **cmdline_p) #endif "\n"); - printk("Command line: %s\n", command_line); + printk(KERN_INFO "Command line: %s\n", command_line); /* * Sync up the HAE. @@ -716,7 +716,7 @@ setup_arch(char **cmdline_p) */ if (hwrpb->max_asn != MAX_ASN) { - printk("Max ASN from HWRPB is bad (0x%lx)\n", hwrpb->max_asn); + printk(KERN_INFO "Max ASN from HWRPB is bad (0x%lx)\n", hwrpb->max_asn); } /* @@ -1307,7 +1307,7 @@ external_cache_probe(int minsize, int wi cycles = read_mem_block(__va(0), stride, size); if (cycles > prev_cycles * 2) { /* Fine, we exceed the cache. */ - printk("%ldK Bcache detected; load hit latency %d " + printk(KERN_INFO "%ldK Bcache detected; load hit latency %d " "cycles, load miss latency %d cycles\n", size >> 11, prev_cycles, cycles); return CSHAPE(size >> 1, width, 1); --- a/arch/alpha/kernel/signal.c +++ b/arch/alpha/kernel/signal.c @@ -478,7 +478,7 @@ setup_frame(int sig, struct k_sigaction wrusp((unsigned long) frame); #if DEBUG_SIG - printk("SIG deliver (%s:%d): sp=%p pc=%p ra=%p\n", + printk(KERN_DEBUG "SIG deliver (%s:%d): sp=%p pc=%p ra=%p\n", current->comm, current->pid, frame, regs->pc, regs->r26); #endif @@ -540,7 +540,7 @@ setup_rt_frame(int sig, struct k_sigacti wrusp((unsigned long) frame); #if DEBUG_SIG - printk("SIG deliver (%s:%d): sp=%p pc=%p ra=%p\n", + printk(KERN_DEBUG "SIG deliver (%s:%d): sp=%p pc=%p ra=%p\n", current->comm, current->pid, frame, regs->pc, regs->r26); #endif --- a/arch/alpha/kernel/smc37c669.c +++ b/arch/alpha/kernel/smc37c669.c @@ -1898,45 +1898,45 @@ static unsigned int __init SMC37c669_get void __init SMC37c669_display_device_info ( void ) { if ( SMC37c669_is_device_enabled( SERIAL_0 ) ) { - printk( " Serial 0: Enabled [ Port 0x%x, IRQ %d ]\n", + printk(KERN_INFO " Serial 0: Enabled [ Port 0x%x, IRQ %d ]\n", local_config[ SERIAL_0 ].port1, local_config[ SERIAL_0 ].irq ); } else { - printk( " Serial 0: Disabled\n" ); + printk(KERN_INFO " Serial 0: Disabled\n" ); } if ( SMC37c669_is_device_enabled( SERIAL_1 ) ) { - printk( " Serial 1: Enabled [ Port 0x%x, IRQ %d ]\n", + printk(KERN_INFO " Serial 1: Enabled [ Port 0x%x, IRQ %d ]\n", local_config[ SERIAL_1 ].port1, local_config[ SERIAL_1 ].irq ); } else { - printk( " Serial 1: Disabled\n" ); + printk(KERN_INFO " Serial 1: Disabled\n" ); } if ( SMC37c669_is_device_enabled( PARALLEL_0 ) ) { - printk( " Parallel: Enabled [ Port 0x%x, IRQ %d/%d ]\n", + printk(KERN_INFO " Parallel: Enabled [ Port 0x%x, IRQ %d/%d ]\n", local_config[ PARALLEL_0 ].port1, local_config[ PARALLEL_0 ].irq, local_config[ PARALLEL_0 ].drq ); } else { - printk( " Parallel: Disabled\n" ); + printk(KERN_INFO " Parallel: Disabled\n" ); } if ( SMC37c669_is_device_enabled( FLOPPY_0 ) ) { - printk( " Floppy Ctrl: Enabled [ Port 0x%x, IRQ %d/%d ]\n", + printk(KERN_INFO " Floppy Ctrl: Enabled [ Port 0x%x, IRQ %d/%d ]\n", local_config[ FLOPPY_0 ].port1, local_config[ FLOPPY_0 ].irq, local_config[ FLOPPY_0 ].drq ); } else { - printk( " Floppy Ctrl: Disabled\n" ); + printk(KERN_INFO " Floppy Ctrl: Disabled\n" ); } if ( SMC37c669_is_device_enabled( IDE_0 ) ) { @@ -1946,7 +1946,7 @@ void __init SMC37c669_display_device_inf ); } else { - printk( " IDE 0: Disabled\n" ); + printk(KERN_INFO " IDE 0: Disabled\n" ); } } @@ -2452,7 +2452,7 @@ SMC37c669_dump_registers(void) { int i; for (i = 0; i <= 0x29; i++) - printk("-- CR%02x : %02x\n", i, SMC37c669_read_config(i)); + printk(KERN_DEBUG "-- CR%02x : %02x\n", i, SMC37c669_read_config(i)); } /*+ * ============================================================================ @@ -2542,13 +2542,13 @@ void __init SMC669_Init ( int index ) SMC37c669_display_device_info( ); #endif local_irq_restore(flags); - printk( "SMC37c669 Super I/O Controller found @ 0x%lx\n", + printk(KERN_INFO "SMC37c669 Super I/O Controller found @ 0x%lx\n", (unsigned long) SMC_base ); } else { local_irq_restore(flags); #if SMC_DEBUG - printk( "No SMC37c669 Super I/O Controller found\n" ); + printk(KERN_INFO "No SMC37c669 Super I/O Controller found\n" ); #endif } } --- a/arch/alpha/kernel/smc37c93x.c +++ b/arch/alpha/kernel/smc37c93x.c @@ -265,7 +265,7 @@ int __init SMC93x_Init(void) #endif SMCRunState(SMCUltraBase); local_irq_restore(flags); - printk("SMC FDC37C93X Ultra I/O Controller found @ 0x%lx\n", + printk(KERN_INFO "SMC FDC37C93X Ultra I/O Controller found @ 0x%lx\n", SMCUltraBase); return 1; } --- a/arch/arm/common/scoop.c +++ b/arch/arm/common/scoop.c @@ -150,7 +150,7 @@ int __init scoop_probe(struct platform_d platform_set_drvdata(pdev, devptr); - printk("Sharp Scoop Device found at 0x%08x -> 0x%08x\n",(unsigned int)mem->start,(unsigned int)devptr->base); + printk(KERN_INFO "Sharp Scoop Device found at 0x%08x -> 0x%08x\n",(unsigned int)mem->start,(unsigned int)devptr->base); SCOOP_REG(devptr->base, SCOOP_MCR) = 0x0140; reset_scoop(&pdev->dev); --- a/arch/arm/kernel/apm.c +++ b/arch/arm/kernel/apm.c @@ -516,6 +516,7 @@ static int kapmd(void *arg) static int __init apm_init(void) { + struct proc_dir_entry *proc_entry; int ret; if (apm_disabled) { @@ -532,7 +533,9 @@ static int __init apm_init(void) } #ifdef CONFIG_PROC_FS - create_proc_info_entry("apm", 0, NULL, apm_get_info); + proc_entry = create_proc_info_entry("apm", 0, NULL, apm_get_info); + if (proc_entry == NULL) + printk(KERN_WARNING "apm: Unable to create apm proc entry.\n"); #endif ret = misc_register(&apm_device); --- a/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c @@ -48,7 +48,8 @@ static void pcibios_bus_report_status(st pci_write_config_word(dev, PCI_STATUS, status & status_mask); if (warn) - printk("(%s: %04X) ", pci_name(dev), status); + printk(KERN_WARNING "(%s: %04X) ", + pci_name(dev), status); } list_for_each_entry(dev, &bus->devices, bus_list) @@ -283,7 +284,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_C void __devinit pcibios_update_irq(struct pci_dev *dev, int irq) { if (debug_pci) - printk("PCI: Assigning IRQ %02d to %s\n", irq, pci_name(dev)); + printk(KERN_DEBUG "PCI: Assigning IRQ %02d to %s\n", irq, pci_name(dev)); pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq); } @@ -509,7 +510,7 @@ static u8 __devinit pcibios_swizzle(stru slot = sys->swizzle(dev, pin); if (debug_pci) - printk("PCI: %s swizzling pin %d => pin %d slot %d\n", + printk(KERN_DEBUG "PCI: %s swizzling pin %d => pin %d slot %d\n", pci_name(dev), oldpin, *pin, slot); return slot; @@ -527,7 +528,7 @@ static int pcibios_map_irq(struct pci_de irq = sys->map_irq(dev, slot, pin); if (debug_pci) - printk("PCI: %s mapping slot %d pin %d => irq %d\n", + printk(KERN_DEBUG "PCI: %s mapping slot %d pin %d => irq %d\n", pci_name(dev), slot, pin, irq); return irq; @@ -682,7 +683,7 @@ int pcibios_enable_device(struct pci_dev cmd |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY; if (cmd != old_cmd) { - printk("PCI: enabling device %s (%04x -> %04x)\n", + printk(KERN_INFO "PCI: enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd); pci_write_config_word(dev, PCI_COMMAND, cmd); } --- a/arch/arm/kernel/ecard.c +++ b/arch/arm/kernel/ecard.c @@ -510,13 +510,13 @@ static void ecard_dump_irq_state(void) { ecard_t *ec; - printk("Expansion card IRQ state:\n"); + printk(KERN_DEBUG "Expansion card IRQ state:\n"); for (ec = cards; ec; ec = ec->next) { if (ec->slot_no == 8) continue; - printk(" %d: %sclaimed, ", + printk(KERN_DEBUG " %d: %sclaimed, ", ec->slot_no, ec->claimed ? "" : "not "); if (ec->ops && ec->ops->irqpending && @@ -777,9 +777,19 @@ static struct proc_dir_entry *proc_bus_e static void ecard_proc_init(void) { + struct proc_dir_entry *proc_entry; + proc_bus_ecard_dir = proc_mkdir("ecard", proc_bus); - create_proc_info_entry("devices", 0, proc_bus_ecard_dir, - get_ecard_dev_info); + if (proc_bus_ecard_dir == NULL) + printk(KERN_WARNING + "ecard: unable to create proc dir entry\n"); + else { + proc_entry = create_proc_info_entry("devices", 0, + proc_bus_ecard_dir, get_ecard_dev_info); + if (proc_entry == NULL) + printk(KERN_WARNING + "ecard: unable to create proc entry\n"); + } } #define ec_set_resource(ec,nr,st,sz) \ @@ -1069,7 +1079,7 @@ static int __init ecard_init(void) return ret; } - printk("Probing expansion cards\n"); + printk(KERN_INFO "Probing expansion cards\n"); for (slot = 0; slot < 8; slot ++) { if (ecard_probe(slot, ECARD_EASI) == -ENODEV) --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c @@ -10,7 +10,6 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ -#include #include #include #include --- a/arch/arm26/Makefile +++ b/arch/arm26/Makefile @@ -13,7 +13,7 @@ CPPFLAGS_vmlinux.lds = -DTEXTADDR=$(TEXT OBJCOPYFLAGS :=-O binary -R .note -R .comment -S GZFLAGS :=-9 -ifeq ($(CONFIG_FRAME_POINTER),y) +ifdef CONFIG_FRAME_POINTER CFLAGS +=-fno-omit-frame-pointer -mno-sched-prolog endif @@ -21,7 +21,7 @@ CFLAGS_BOOT :=-mapcs-26 -mcpu=arm3 -msof CFLAGS +=-mapcs-26 -mcpu=arm3 -msoft-float -Uarm AFLAGS +=-mapcs-26 -mcpu=arm3 -msoft-float -ifeq ($(CONFIG_XIP_KERNEL),y) +ifdef CONFIG_XIP_KERNEL TEXTADDR := 0x03880000 DATAADDR := 0x02080000 else --- a/arch/arm26/kernel/ecard.c +++ b/arch/arm26/kernel/ecard.c @@ -522,9 +522,16 @@ static struct proc_dir_entry *proc_bus_e static void ecard_proc_init(void) { + struct proc_dir_entry *proc_entry; proc_bus_ecard_dir = proc_mkdir("ecard", proc_bus); - create_proc_info_entry("devices", 0, proc_bus_ecard_dir, - get_ecard_dev_info); + if (!proc_bus_ecard_dir) + printk(KERN_WARNING "ecard.c: unable to create ecard proc dir entry\n"); + else { + proc_entry = create_proc_info_entry("devices", 0, + proc_bus_ecard_dir, get_ecard_dev_info); + if (!proc_entry) + printk(KERN_WARNING "ecard.c: unable to create devices proc entry\n"); + } } #define ec_set_resource(ec,nr,st,sz,flg) \ --- a/arch/arm26/nwfpe/fpmodule.c +++ b/arch/arm26/nwfpe/fpmodule.c @@ -24,7 +24,6 @@ #include "fpa11.h" #include -#include #include /* XXX */ --- a/arch/cris/arch-v10/drivers/axisflashmap.c +++ b/arch/cris/arch-v10/drivers/axisflashmap.c @@ -397,7 +397,7 @@ static int __init init_axis_flash(void) struct partitiontable_head *ptable_head = NULL; struct partitiontable_entry *ptable; int use_default_ptable = 1; /* Until proven otherwise. */ - const char *pmsg = " /dev/flash%d at 0x%08x, size 0x%08x\n"; + const char pmsg[] = " /dev/flash%d at 0x%08x, size 0x%08x\n"; if (!(mymtd = flash_probe())) { /* There's no reason to use this module if no flash chip can --- a/arch/cris/arch-v10/kernel/kgdb.c +++ b/arch/cris/arch-v10/kernel/kgdb.c @@ -415,7 +415,6 @@ extern unsigned char executing_task; #define RUNLENMAX 64 /* Definition of all valid hexadecimal characters */ -static const char hexchars[] = "0123456789abcdef"; /* The inbound/outbound buffers used in packet I/O */ static char remcomInBuffer[BUFMAX]; @@ -557,8 +556,8 @@ gdb_cris_strtol (const char *s, char **e char *sd; int x = 0; - for (s1 = (char*)s; (sd = gdb_cris_memchr(hexchars, *s1, base)) != NULL; ++s1) - x = x * base + (sd - hexchars); + for (s1 = (char*)s; (sd = gdb_cris_memchr(small_digits, *s1, base)) != NULL; ++s1) + x = x * base + (sd - small_digits); if (endptr) { --- a/arch/cris/arch-v32/drivers/pcf8563.c +++ b/arch/cris/arch-v32/drivers/pcf8563.c @@ -325,14 +325,12 @@ pcf8563_ioctl(struct inode *inode, struc int pcf8563_open(struct inode *inode, struct file *filp) { - MOD_INC_USE_COUNT; return 0; } int pcf8563_release(struct inode *inode, struct file *filp) { - MOD_DEC_USE_COUNT; return 0; } --- a/arch/cris/arch-v32/kernel/fasttimer.c +++ b/arch/cris/arch-v32/kernel/fasttimer.c @@ -604,23 +604,8 @@ void schedule_usleep(unsigned long us) #ifdef CONFIG_PROC_FS static int proc_fasttimer_read(char *buf, char **start, off_t offset, int len -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0) - ,int *eof, void *data_unused -#else - ,int unused -#endif - ); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0) + ,int *eof, void *data_unused); static struct proc_dir_entry *fasttimer_proc_entry; -#else -static struct proc_dir_entry fasttimer_proc_entry = -{ - 0, 9, "fasttimer", - S_IFREG | S_IRUGO, 1, 0, 0, - 0, NULL /* ops -- default to array */, - &proc_fasttimer_read /* get_info */, -}; -#endif #endif /* CONFIG_PROC_FS */ #ifdef CONFIG_PROC_FS @@ -629,12 +614,7 @@ static struct proc_dir_entry fasttimer_p #define BIG_BUF_SIZE (500 + NUM_TIMER_STATS * 300) static int proc_fasttimer_read(char *buf, char **start, off_t offset, int len -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0) - ,int *eof, void *data_unused -#else - ,int unused -#endif - ) + ,int *eof, void *data_unused) { unsigned long flags; int i = 0; @@ -809,9 +789,7 @@ static int proc_fasttimer_read(char *buf memcpy(buf, bigbuf + offset, len); *start = buf; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0) *eof = 1; -#endif return len; } @@ -975,12 +953,8 @@ void fast_timer_init(void) printk("fast_timer_init()\n"); #ifdef CONFIG_PROC_FS -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0) if ((fasttimer_proc_entry = create_proc_entry( "fasttimer", 0, 0 ))) fasttimer_proc_entry->read_proc = proc_fasttimer_read; -#else - proc_register_dynamic(&proc_root, &fasttimer_proc_entry); -#endif #endif /* PROC_FS */ if(request_irq(TIMER_INTR_VECT, timer_trig_interrupt, SA_INTERRUPT, "fast timer int", NULL)) --- a/arch/cris/arch-v32/kernel/kgdb.c +++ b/arch/cris/arch-v32/kernel/kgdb.c @@ -465,7 +465,6 @@ void breakpoint(void); #define RUNLENMAX 64 /* Definition of all valid hexadecimal characters */ -static const char hexchars[] = "0123456789abcdef"; /* The inbound/outbound buffers used in packet I/O */ static char input_buffer[BUFMAX]; @@ -550,8 +549,8 @@ gdb_cris_strtol(const char *s, char **en char *sd; int x = 0; - for (s1 = (char*)s; (sd = gdb_cris_memchr(hexchars, *s1, base)) != NULL; ++s1) - x = x * base + (sd - hexchars); + for (s1 = (char*)s; (sd = gdb_cris_memchr(small_digits, *s1, base)) != NULL; ++s1) + x = x * base + (sd - small_digits); if (endptr) { /* Unconverted suffix is stored in endptr unless endptr is NULL. */ @@ -660,7 +659,7 @@ read_register(char regno, unsigned int * static inline char highhex(int x) { - return hexchars[(x >> 4) & 0xf]; + return small_digits[(x >> 4) & 0xf]; } /* Returns the character equivalent of a nibble, bit 3, 2, 1, and 0 of a byte, @@ -668,7 +667,7 @@ highhex(int x) static inline char lowhex(int x) { - return hexchars[x & 0xf]; + return small_digits[x & 0xf]; } /* Returns the integer equivalent of a hexadecimal character. */ --- a/arch/frv/kernel/gdb-stub.c +++ b/arch/frv/kernel/gdb-stub.c @@ -182,8 +182,6 @@ extern volatile u32 __attribute__((secti static char input_buffer[BUFMAX]; static char output_buffer[BUFMAX]; -static const char hexchars[] = "0123456789abcdef"; - static const char *regnames[] = { "PSR ", "ISR ", "CCR ", "CCCR", "LR ", "LCR ", "PC ", "_stt", @@ -383,8 +381,8 @@ static int gdbstub_send_packet(char *buf } gdbstub_tx_char('#'); - gdbstub_tx_char(hexchars[checksum >> 4]); - gdbstub_tx_char(hexchars[checksum & 0xf]); + gdbstub_tx_char(small_digits[checksum >> 4]); + gdbstub_tx_char(small_digits[checksum & 0xf]); } while (gdbstub_rx_char(&ch,0), #ifdef GDBSTUB_DEBUG_PROTOCOL @@ -680,8 +678,8 @@ static unsigned char *mem2hex(const void if ((uint32_t)mem&1 && count>=1) { if (!gdbstub_read_byte(mem,ch)) return NULL; - *buf++ = hexchars[ch[0] >> 4]; - *buf++ = hexchars[ch[0] & 0xf]; + *buf++ = small_digits[ch[0] >> 4]; + *buf++ = small_digits[ch[0] & 0xf]; mem++; count--; } @@ -689,10 +687,10 @@ static unsigned char *mem2hex(const void if ((uint32_t)mem&3 && count>=2) { if (!gdbstub_read_word(mem,(uint16_t *)ch)) return NULL; - *buf++ = hexchars[ch[0] >> 4]; - *buf++ = hexchars[ch[0] & 0xf]; - *buf++ = hexchars[ch[1] >> 4]; - *buf++ = hexchars[ch[1] & 0xf]; + *buf++ = small_digits[ch[0] >> 4]; + *buf++ = small_digits[ch[0] & 0xf]; + *buf++ = small_digits[ch[1] >> 4]; + *buf++ = small_digits[ch[1] & 0xf]; mem += 2; count -= 2; } @@ -700,14 +698,14 @@ static unsigned char *mem2hex(const void while (count>=4) { if (!gdbstub_read_dword(mem,(uint32_t *)ch)) return NULL; - *buf++ = hexchars[ch[0] >> 4]; - *buf++ = hexchars[ch[0] & 0xf]; - *buf++ = hexchars[ch[1] >> 4]; - *buf++ = hexchars[ch[1] & 0xf]; - *buf++ = hexchars[ch[2] >> 4]; - *buf++ = hexchars[ch[2] & 0xf]; - *buf++ = hexchars[ch[3] >> 4]; - *buf++ = hexchars[ch[3] & 0xf]; + *buf++ = small_digits[ch[0] >> 4]; + *buf++ = small_digits[ch[0] & 0xf]; + *buf++ = small_digits[ch[1] >> 4]; + *buf++ = small_digits[ch[1] & 0xf]; + *buf++ = small_digits[ch[2] >> 4]; + *buf++ = small_digits[ch[2] & 0xf]; + *buf++ = small_digits[ch[3] >> 4]; + *buf++ = small_digits[ch[3] & 0xf]; mem += 4; count -= 4; } @@ -715,10 +713,10 @@ static unsigned char *mem2hex(const void if (count>=2) { if (!gdbstub_read_word(mem,(uint16_t *)ch)) return NULL; - *buf++ = hexchars[ch[0] >> 4]; - *buf++ = hexchars[ch[0] & 0xf]; - *buf++ = hexchars[ch[1] >> 4]; - *buf++ = hexchars[ch[1] & 0xf]; + *buf++ = small_digits[ch[0] >> 4]; + *buf++ = small_digits[ch[0] & 0xf]; + *buf++ = small_digits[ch[1] >> 4]; + *buf++ = small_digits[ch[1] & 0xf]; mem += 2; count -= 2; } @@ -726,8 +724,8 @@ static unsigned char *mem2hex(const void if (count>=1) { if (!gdbstub_read_byte(mem,ch)) return NULL; - *buf++ = hexchars[ch[0] >> 4]; - *buf++ = hexchars[ch[0] & 0xf]; + *buf++ = small_digits[ch[0] >> 4]; + *buf++ = small_digits[ch[0] & 0xf]; } *buf = 0; @@ -1448,22 +1446,22 @@ void gdbstub(int sigval) *ptr++ = 'O'; ptr = mem2hex(title, ptr, sizeof(title) - 1,0); - hx = hexchars[(brr & 0xf0000000) >> 28]; - *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; - hx = hexchars[(brr & 0x0f000000) >> 24]; - *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; - hx = hexchars[(brr & 0x00f00000) >> 20]; - *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; - hx = hexchars[(brr & 0x000f0000) >> 16]; - *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; - hx = hexchars[(brr & 0x0000f000) >> 12]; - *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; - hx = hexchars[(brr & 0x00000f00) >> 8]; - *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; - hx = hexchars[(brr & 0x000000f0) >> 4]; - *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; - hx = hexchars[(brr & 0x0000000f)]; - *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; + hx = small_digits[(brr & 0xf0000000) >> 28]; + *ptr++ = small_digits[hx >> 4]; *ptr++ = small_digits[hx & 0xf]; + hx = small_digits[(brr & 0x0f000000) >> 24]; + *ptr++ = small_digits[hx >> 4]; *ptr++ = small_digits[hx & 0xf]; + hx = small_digits[(brr & 0x00f00000) >> 20]; + *ptr++ = small_digits[hx >> 4]; *ptr++ = small_digits[hx & 0xf]; + hx = small_digits[(brr & 0x000f0000) >> 16]; + *ptr++ = small_digits[hx >> 4]; *ptr++ = small_digits[hx & 0xf]; + hx = small_digits[(brr & 0x0000f000) >> 12]; + *ptr++ = small_digits[hx >> 4]; *ptr++ = small_digits[hx & 0xf]; + hx = small_digits[(brr & 0x00000f00) >> 8]; + *ptr++ = small_digits[hx >> 4]; *ptr++ = small_digits[hx & 0xf]; + hx = small_digits[(brr & 0x000000f0) >> 4]; + *ptr++ = small_digits[hx >> 4]; *ptr++ = small_digits[hx & 0xf]; + hx = small_digits[(brr & 0x0000000f)]; + *ptr++ = small_digits[hx >> 4]; *ptr++ = small_digits[hx & 0xf]; ptr = mem2hex(crlf, ptr, sizeof(crlf) - 1, 0); *ptr = 0; @@ -1477,12 +1475,12 @@ void gdbstub(int sigval) /* Send trap type (converted to signal) */ *ptr++ = 'T'; - *ptr++ = hexchars[sigval >> 4]; - *ptr++ = hexchars[sigval & 0xf]; + *ptr++ = small_digits[sigval >> 4]; + *ptr++ = small_digits[sigval & 0xf]; /* Send Error PC */ - *ptr++ = hexchars[GDB_REG_PC >> 4]; - *ptr++ = hexchars[GDB_REG_PC & 0xf]; + *ptr++ = small_digits[GDB_REG_PC >> 4]; + *ptr++ = small_digits[GDB_REG_PC & 0xf]; *ptr++ = ':'; ptr = mem2hex(&__debug_frame->pc, ptr, 4, 0); *ptr++ = ';'; @@ -1490,8 +1488,8 @@ void gdbstub(int sigval) /* * Send frame pointer */ - *ptr++ = hexchars[GDB_REG_FP >> 4]; - *ptr++ = hexchars[GDB_REG_FP & 0xf]; + *ptr++ = small_digits[GDB_REG_FP >> 4]; + *ptr++ = small_digits[GDB_REG_FP & 0xf]; *ptr++ = ':'; ptr = mem2hex(&__debug_frame->fp, ptr, 4, 0); *ptr++ = ';'; @@ -1499,8 +1497,8 @@ void gdbstub(int sigval) /* * Send stack pointer */ - *ptr++ = hexchars[GDB_REG_SP >> 4]; - *ptr++ = hexchars[GDB_REG_SP & 0xf]; + *ptr++ = small_digits[GDB_REG_SP >> 4]; + *ptr++ = small_digits[GDB_REG_SP & 0xf]; *ptr++ = ':'; ptr = mem2hex(&__debug_frame->sp, ptr, 4, 0); *ptr++ = ';'; @@ -1525,8 +1523,8 @@ void gdbstub(int sigval) /* request repeat of last signal number */ case '?': output_buffer[0] = 'S'; - output_buffer[1] = hexchars[sigval >> 4]; - output_buffer[2] = hexchars[sigval & 0xf]; + output_buffer[1] = small_digits[sigval >> 4]; + output_buffer[2] = small_digits[sigval & 0xf]; output_buffer[3] = 0; break; @@ -2044,8 +2042,8 @@ void gdbstub_exit(int status) } gdbstub_tx_char('#'); - gdbstub_tx_char(hexchars[checksum >> 4]); - gdbstub_tx_char(hexchars[checksum & 0xf]); + gdbstub_tx_char(small_digits[checksum >> 4]); + gdbstub_tx_char(small_digits[checksum & 0xf]); /* make sure the output is flushed, or else RedBoot might clobber it */ gdbstub_tx_char('-'); --- a/arch/frv/kernel/setup.c +++ b/arch/frv/kernel/setup.c @@ -814,7 +814,7 @@ void __init setup_arch(char **cmdline_p) * - by now the stack is part of the init task */ printk("Memory %08lx-%08lx\n", memory_start, memory_end); - if (memory_start == memory_end) BUG(); + BUG_ON(memory_start == memory_end); init_mm.start_code = (unsigned long) &_stext; init_mm.end_code = (unsigned long) &_etext; --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c @@ -67,7 +67,7 @@ static void apic_pm_activate(void); */ void ack_bad_irq(unsigned int irq) { - printk("unexpected IRQ trap at vector %02x\n", irq); + printk(KERN_ERR "unexpected IRQ trap at vector %02x\n", irq); /* * Currently unexpected vectors happen only on SMP and APIC. * We _must_ ack these because every local APIC has only N @@ -549,9 +549,9 @@ void __devinit setup_local_APIC(void) * ESR disabled - we can't do anything useful with the * errors anyway - mbligh */ - printk("Leaving ESR disabled.\n"); + printk(KERN_INFO "Leaving ESR disabled.\n"); else - printk("No ESR for 82489DX.\n"); + printk(KERN_INFO "No ESR for 82489DX.\n"); } if (nmi_watchdog == NMI_LOCAL_APIC) @@ -761,7 +761,7 @@ static int __init detect_init_APIC (void * APIC only if "lapic" specified. */ if (enable_local_apic <= 0) { - printk("Local APIC disabled by BIOS -- " + printk(KERN_INFO "Local APIC disabled by BIOS -- " "you can enable it with \"lapic\"\n"); return -1; } @@ -773,7 +773,7 @@ static int __init detect_init_APIC (void */ rdmsr(MSR_IA32_APICBASE, l, h); if (!(l & MSR_IA32_APICBASE_ENABLE)) { - printk("Local APIC disabled by BIOS -- reenabling.\n"); + printk(KERN_INFO "Local APIC disabled by BIOS -- reenabling.\n"); l &= ~MSR_IA32_APICBASE_BASE; l |= MSR_IA32_APICBASE_ENABLE | APIC_DEFAULT_PHYS_BASE; wrmsr(MSR_IA32_APICBASE, l, h); @@ -786,7 +786,7 @@ static int __init detect_init_APIC (void */ features = cpuid_edx(1); if (!(features & (1 << X86_FEATURE_APIC))) { - printk("Could not enable APIC!\n"); + printk(KERN_WARNING "Could not enable APIC!\n"); return -1; } set_bit(X86_FEATURE_APIC, boot_cpu_data.x86_capability); @@ -800,14 +800,14 @@ static int __init detect_init_APIC (void if (nmi_watchdog != NMI_NONE) nmi_watchdog = NMI_LOCAL_APIC; - printk("Found and enabled local APIC!\n"); + printk(KERN_INFO "Found and enabled local APIC!\n"); apic_pm_activate(); return 0; no_apic: - printk("No local APIC present or hardware disabled\n"); + printk(KERN_INFO "No local APIC present or hardware disabled\n"); return -1; } --- a/arch/i386/kernel/irq.c +++ b/arch/i386/kernel/irq.c @@ -29,7 +29,7 @@ EXPORT_PER_CPU_SYMBOL(irq_stat); */ void ack_bad_irq(unsigned int irq) { - printk("unexpected IRQ trap at vector %02x\n", irq); + printk(KERN_ERR "unexpected IRQ trap at vector %02x\n", irq); } #endif @@ -69,7 +69,7 @@ fastcall unsigned int do_IRQ(struct pt_r __asm__ __volatile__("andl %%esp,%0" : "=r" (esp) : "0" (THREAD_SIZE - 1)); if (unlikely(esp < (sizeof(struct thread_info) + STACK_WARN))) { - printk("do_IRQ: stack overflow: %ld\n", + printk(KERN_ERR "do_IRQ: stack overflow: %ld\n", esp - sizeof(struct thread_info)); dump_stack(); } @@ -152,7 +152,7 @@ void irq_ctx_init(int cpu) softirq_ctx[cpu] = irqctx; - printk("CPU %u irqstacks, hard=%p soft=%p\n", + printk(KERN_INFO "CPU %u irqstacks, hard=%p soft=%p\n", cpu,hardirq_ctx[cpu],softirq_ctx[cpu]); } @@ -279,13 +279,13 @@ void fixup_irqs(cpumask_t map) cpus_and(mask, irq_affinity[irq], map); if (any_online_cpu(mask) == NR_CPUS) { - printk("Breaking affinity for irq %i\n", irq); + printk(KERN_ERR "Breaking affinity for irq %i\n", irq); mask = map; } if (irq_desc[irq].handler->set_affinity) irq_desc[irq].handler->set_affinity(irq, mask); else if (irq_desc[irq].action && !(warned++)) - printk("Cannot set affinity for irq %i\n", irq); + printk(KERN_ERR "Cannot set affinity for irq %i\n", irq); } #if 0 --- a/arch/m68k/atari/time.c +++ b/arch/m68k/atari/time.c @@ -16,6 +16,7 @@ #include #include #include +#include #include @@ -97,7 +98,7 @@ static void mste_write(struct MSTE_RTC * } while(0) -#define HWCLK_POLL_INTERVAL 5 +#define HWCLK_POLL_INTERVAL 50 /* ms */ int atari_mste_hwclk( int op, struct rtc_time *t ) { @@ -213,7 +214,7 @@ int atari_tt_hwclk( int op, struct rtc_t */ while( RTC_READ(RTC_FREQ_SELECT) & RTC_UIP ) - schedule_timeout_interruptible(HWCLK_POLL_INTERVAL); + msleep_interruptible(HWCLK_POLL_INTERVAL); local_irq_save(flags); RTC_WRITE( RTC_CONTROL, ctrl | RTC_SET ); --- a/arch/mips/arc/Makefile +++ b/arch/mips/arc/Makefile @@ -3,7 +3,7 @@ # lib-y += cmdline.o env.o file.o identify.o init.o \ - misc.o salone.o time.o tree.o + misc.o time.o tree.o lib-$(CONFIG_ARC_MEMORY) += memory.o lib-$(CONFIG_ARC_CONSOLE) += arc_con.o --- a/arch/mips/arc/salone.c +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Routines to load into memory and execute stand-along program images using - * ARCS PROM firmware. - * - * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com) - */ -#include -#include - -LONG __init ArcLoad(CHAR *Path, ULONG TopAddr, ULONG *ExecAddr, ULONG *LowAddr) -{ - return ARC_CALL4(load, Path, TopAddr, ExecAddr, LowAddr); -} - -LONG __init ArcInvoke(ULONG ExecAddr, ULONG StackAddr, ULONG Argc, CHAR *Argv[], - CHAR *Envp[]) -{ - return ARC_CALL5(invoke, ExecAddr, StackAddr, Argc, Argv, Envp); -} - -LONG __init ArcExecute(CHAR *Path, LONG Argc, CHAR *Argv[], CHAR *Envp[]) -{ - return ARC_CALL4(exec, Path, Argc, Argv, Envp); -} --- a/arch/mips/galileo-boards/ev96100/puts.c +++ b/arch/mips/galileo-boards/ev96100/puts.c @@ -21,7 +21,6 @@ #define TIMEOUT 0xffff #undef SLOW_DOWN -static const char digits[16] = "0123456789abcdef"; static volatile unsigned char *const com1 = (unsigned char *) SERIAL_BASE; @@ -118,7 +117,7 @@ void put64(uint64_t ul) do { cnt--; ch = (unsigned char) (ul >> cnt * 4) & 0x0F; - putch(digits[ch]); + putch(small_digits[ch]); } while (cnt > 0); } @@ -133,6 +132,6 @@ void put32(unsigned u) do { cnt--; ch = (unsigned char) (u >> cnt * 4) & 0x0F; - putch(digits[ch]); + putch(small_digits[ch]); } while (cnt > 0); } --- a/arch/mips/ite-boards/generic/puts.c +++ b/arch/mips/ite-boards/generic/puts.c @@ -38,7 +38,6 @@ #define TIMEOUT 0xffff #undef SLOW_DOWN -static const char digits[16] = "0123456789abcdef"; static volatile unsigned char *const com1 = (unsigned char *) SERIAL_BASE; @@ -119,7 +118,7 @@ void put64(uint64_t ul) do { cnt--; ch = (unsigned char) (ul >> cnt * 4) & 0x0F; - putch(digits[ch]); + putch(small_digits[ch]); } while (cnt > 0); } @@ -134,6 +133,6 @@ void put32(unsigned u) do { cnt--; ch = (unsigned char) (u >> cnt * 4) & 0x0F; - putch(digits[ch]); + putch(small_digits[ch]); } while (cnt > 0); } --- a/arch/mips/jmr3927/common/puts.c +++ b/arch/mips/jmr3927/common/puts.c @@ -40,8 +40,6 @@ #define TIMEOUT 0xffffff #define SLOW_DOWN -static const char digits[16] = "0123456789abcdef"; - #ifdef SLOW_DOWN #define slow_down() { int k; for (k=0; k<10000; k++); } #else @@ -147,7 +145,7 @@ put64(uint64_t ul) do { cnt--; ch = (unsigned char)(ul >> cnt * 4) & 0x0F; - putch(digits[ch]); + putch(small_digits[ch]); } while (cnt > 0); } @@ -163,6 +161,6 @@ put32(unsigned u) do { cnt--; ch = (unsigned char)(u >> cnt * 4) & 0x0F; - putch(digits[ch]); + putch(small_digits[ch]); } while (cnt > 0); } --- a/arch/mips/jmr3927/rbhma3100/kgdb_io.c +++ b/arch/mips/jmr3927/rbhma3100/kgdb_io.c @@ -39,8 +39,6 @@ #define TIMEOUT 0xffffff #define SLOW_DOWN -static const char digits[16] = "0123456789abcdef"; - #ifdef SLOW_DOWN #define slow_down() { int k; for (k=0; k<10000; k++); } #else --- a/arch/mips/kernel/gdb-stub.c +++ b/arch/mips/kernel/gdb-stub.c @@ -191,7 +191,6 @@ static char input_buffer[BUFMAX]; static char output_buffer[BUFMAX]; static int initialized; /* !0 means we've been initialized */ static int kgdb_started; -static const char hexchars[]="0123456789abcdef"; /* Used to prevent crashes in memory access. Note that they'll crash anyway if we haven't set up fault handlers yet... */ @@ -307,8 +306,8 @@ static void putpacket(char *buffer) } putDebugChar('#'); - putDebugChar(hexchars[checksum >> 4]); - putDebugChar(hexchars[checksum & 0xf]); + putDebugChar(small_digits[checksum >> 4]); + putDebugChar(small_digits[checksum & 0xf]); } while ((getDebugChar() & 0x7f) != '+'); @@ -329,8 +328,8 @@ static unsigned char *mem2hex(char *mem, while (count-- > 0) { if (kgdb_read_byte(mem++, &ch) != 0) return 0; - *buf++ = hexchars[ch >> 4]; - *buf++ = hexchars[ch & 0xf]; + *buf++ = small_digits[ch >> 4]; + *buf++ = small_digits[ch & 0xf]; } *buf = 0; @@ -753,14 +752,14 @@ void handle_exception (struct gdb_regs * * Send trap type (converted to signal) */ *ptr++ = 'T'; - *ptr++ = hexchars[sigval >> 4]; - *ptr++ = hexchars[sigval & 0xf]; + *ptr++ = small_digits[sigval >> 4]; + *ptr++ = small_digits[sigval & 0xf]; /* * Send Error PC */ - *ptr++ = hexchars[REG_EPC >> 4]; - *ptr++ = hexchars[REG_EPC & 0xf]; + *ptr++ = small_digits[REG_EPC >> 4]; + *ptr++ = small_digits[REG_EPC & 0xf]; *ptr++ = ':'; ptr = mem2hex((char *)®s->cp0_epc, ptr, sizeof(long), 0); *ptr++ = ';'; @@ -768,8 +767,8 @@ void handle_exception (struct gdb_regs * /* * Send frame pointer */ - *ptr++ = hexchars[REG_FP >> 4]; - *ptr++ = hexchars[REG_FP & 0xf]; + *ptr++ = small_digits[REG_FP >> 4]; + *ptr++ = small_digits[REG_FP & 0xf]; *ptr++ = ':'; ptr = mem2hex((char *)®s->reg30, ptr, sizeof(long), 0); *ptr++ = ';'; @@ -777,8 +776,8 @@ void handle_exception (struct gdb_regs * /* * Send stack pointer */ - *ptr++ = hexchars[REG_SP >> 4]; - *ptr++ = hexchars[REG_SP & 0xf]; + *ptr++ = small_digits[REG_SP >> 4]; + *ptr++ = small_digits[REG_SP & 0xf]; *ptr++ = ':'; ptr = mem2hex((char *)®s->reg29, ptr, sizeof(long), 0); *ptr++ = ';'; @@ -797,8 +796,8 @@ void handle_exception (struct gdb_regs * { case '?': output_buffer[0] = 'S'; - output_buffer[1] = hexchars[sigval >> 4]; - output_buffer[2] = hexchars[sigval & 0xf]; + output_buffer[1] = small_digits[sigval >> 4]; + output_buffer[2] = small_digits[sigval & 0xf]; output_buffer[3] = 0; break; --- a/arch/mips/pmc-sierra/yosemite/ht-irq.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2003 PMC-Sierra - * Author: Manish Lachwani (lachwani@pmc-sierra.com) - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include -#include -#include -#include -#include - -/* - * HT Bus fixup for the Titan - * XXX IRQ values need to change based on the board layout - */ -void __init titan_ht_pcibios_fixup_bus(struct pci_bus *bus) -{ - struct pci_bus *current_bus = bus; - struct pci_dev *devices; - struct list_head *devices_link; - - list_for_each(devices_link, &(current_bus->devices)) { - devices = pci_dev_b(devices_link); - if (devices == NULL) - continue; - } - - /* - * PLX and SPKT related changes go here - */ - -} --- a/arch/ppc/4xx_io/serial_sicc.c +++ b/arch/ppc/4xx_io/serial_sicc.c @@ -60,125 +60,121 @@ #include #include - #include - /* ----------------------------------------------------------------------------- * From STB03xxx SICC UART Specification * ----------------------------------------------------------------------------- * UART Register Offsets. */ -#define BL_SICC_LSR 0x0000000 /* line status register read/clear */ -#define BL_SICC_LSRS 0x0000001 /* set line status register read/set */ -#define BL_SICC_HSR 0x0000002 /* handshake status register r/clear */ -#define BL_SICC_HSRS 0x0000003 /* set handshake status register r/set */ -#define BL_SICC_BRDH 0x0000004 /* baudrate divisor high reg r/w */ -#define BL_SICC_BRDL 0x0000005 /* baudrate divisor low reg r/w */ -#define BL_SICC_LCR 0x0000006 /* control register r/w */ -#define BL_SICC_RCR 0x0000007 /* receiver command register r/w */ -#define BL_SICC_TxCR 0x0000008 /* transmitter command register r/w */ -#define BL_SICC_RBR 0x0000009 /* receive buffer r */ -#define BL_SICC_TBR 0x0000009 /* transmit buffer w */ -#define BL_SICC_CTL2 0x000000A /* added for Vesta */ -#define BL_SICC_IrCR 0x000000B /* added for Vesta IR */ +#define BL_SICC_LSR 0x0000000 /* line status register read/clear */ +#define BL_SICC_LSRS 0x0000001 /* set line status register read/set */ +#define BL_SICC_HSR 0x0000002 /* handshake status register r/clear */ +#define BL_SICC_HSRS 0x0000003 /* set handshake status register r/set */ +#define BL_SICC_BRDH 0x0000004 /* baudrate divisor high reg r/w */ +#define BL_SICC_BRDL 0x0000005 /* baudrate divisor low reg r/w */ +#define BL_SICC_LCR 0x0000006 /* control register r/w */ +#define BL_SICC_RCR 0x0000007 /* receiver command register r/w */ +#define BL_SICC_TxCR 0x0000008 /* transmitter command register r/w */ +#define BL_SICC_RBR 0x0000009 /* receive buffer r */ +#define BL_SICC_TBR 0x0000009 /* transmit buffer w */ +#define BL_SICC_CTL2 0x000000A /* added for Vesta */ +#define BL_SICC_IrCR 0x000000B /* added for Vesta IR */ /* masks and definitions for serial port control register */ -#define _LCR_LM_MASK 0xc0 /* loop back modes */ -#define _LCR_DTR_MASK 0x20 /* data terminal ready 0-inactive */ -#define _LCR_RTS_MASK 0x10 /* request to send 0-inactive */ -#define _LCR_DB_MASK 0x08 /* data bits mask */ -#define _LCR_PE_MASK 0x04 /* parity enable */ -#define _LCR_PTY_MASK 0x02 /* parity */ -#define _LCR_SB_MASK 0x01 /* stop bit mask */ - -#define _LCR_LM_NORM 0x00 /* normal operation */ -#define _LCR_LM_LOOP 0x40 /* internal loopback mode */ -#define _LCR_LM_ECHO 0x80 /* automatic echo mode */ -#define _LCR_LM_RES 0xc0 /* reserved */ - -#define _LCR_DTR_ACTIVE _LCR_DTR_MASK /* DTR is active */ -#define _LCR_RTS_ACTIVE _LCR_RTS_MASK /* RTS is active */ -#define _LCR_DB_8_BITS _LCR_DB_MASK /* 8 data bits */ -#define _LCR_DB_7_BITS 0x00 /* 7 data bits */ -#define _LCR_PE_ENABLE _LCR_PE_MASK /* parity enabled */ -#define _LCR_PE_DISABLE 0x00 /* parity disabled */ -#define _LCR_PTY_EVEN 0x00 /* even parity */ -#define _LCR_PTY_ODD _LCR_PTY_MASK /* odd parity */ -#define _LCR_SB_1_BIT 0x00 /* one stop bit */ -#define _LCR_SB_2_BIT _LCR_SB_MASK /* two stop bit */ +#define _LCR_LM_MASK 0xc0 /* loop back modes */ +#define _LCR_DTR_MASK 0x20 /* data terminal ready 0-inactive */ +#define _LCR_RTS_MASK 0x10 /* request to send 0-inactive */ +#define _LCR_DB_MASK 0x08 /* data bits mask */ +#define _LCR_PE_MASK 0x04 /* parity enable */ +#define _LCR_PTY_MASK 0x02 /* parity */ +#define _LCR_SB_MASK 0x01 /* stop bit mask */ + +#define _LCR_LM_NORM 0x00 /* normal operation */ +#define _LCR_LM_LOOP 0x40 /* internal loopback mode */ +#define _LCR_LM_ECHO 0x80 /* automatic echo mode */ +#define _LCR_LM_RES 0xc0 /* reserved */ + +#define _LCR_DTR_ACTIVE _LCR_DTR_MASK /* DTR is active */ +#define _LCR_RTS_ACTIVE _LCR_RTS_MASK /* RTS is active */ +#define _LCR_DB_8_BITS _LCR_DB_MASK /* 8 data bits */ +#define _LCR_DB_7_BITS 0x00 /* 7 data bits */ +#define _LCR_PE_ENABLE _LCR_PE_MASK /* parity enabled */ +#define _LCR_PE_DISABLE 0x00 /* parity disabled */ +#define _LCR_PTY_EVEN 0x00 /* even parity */ +#define _LCR_PTY_ODD _LCR_PTY_MASK /* odd parity */ +#define _LCR_SB_1_BIT 0x00 /* one stop bit */ +#define _LCR_SB_2_BIT _LCR_SB_MASK /* two stop bit */ /* serial port handshake register */ -#define _HSR_DIS_MASK 0x80 /* DSR input inactive error mask */ -#define _HSR_CS_MASK 0x40 /* CTS input inactive error mask */ -#define _HSR_DIS_ACT 0x00 /* dsr input is active */ -#define _HSR_DIS_INACT _HSR_DIS_MASK /* dsr input is inactive */ -#define _HSR_CS_ACT 0x00 /* cts input is active */ -#define _HSR_CS_INACT _HSR_CS_MASK /* cts input is active */ +#define _HSR_DIS_MASK 0x80 /* DSR input inactive error mask */ +#define _HSR_CS_MASK 0x40 /* CTS input inactive error mask */ +#define _HSR_DIS_ACT 0x00 /* dsr input is active */ +#define _HSR_DIS_INACT _HSR_DIS_MASK /* dsr input is inactive */ +#define _HSR_CS_ACT 0x00 /* cts input is active */ +#define _HSR_CS_INACT _HSR_CS_MASK /* cts input is active */ /* serial port line status register */ -#define _LSR_RBR_MASK 0x80 /* receive buffer ready mask */ -#define _LSR_FE_MASK 0x40 /* framing error */ -#define _LSR_OE_MASK 0x20 /* overrun error */ -#define _LSR_PE_MASK 0x10 /* parity error */ -#define _LSR_LB_MASK 0x08 /* line break */ -#define _LSR_TBR_MASK 0x04 /* transmit buffer ready */ -#define _LSR_TSR_MASK 0x02 /* transmit shift register ready */ - -#define _LSR_RBR_FULL _LSR_RBR_MASK /* receive buffer is full */ -#define _LSR_FE_ERROR _LSR_FE_MASK /* framing error detected */ -#define _LSR_OE_ERROR _LSR_OE_MASK /* overrun error detected */ -#define _LSR_PE_ERROR _LSR_PE_MASK /* parity error detected */ -#define _LSR_LB_BREAK _LSR_LB_MASK /* line break detected */ -#define _LSR_TBR_EMPTY _LSR_TBR_MASK /* transmit buffer is ready */ -#define _LSR_TSR_EMPTY _LSR_TSR_MASK /* transmit shift register is empty */ -#define _LSR_TX_ALL 0x06 /* all physical transmit is done */ +#define _LSR_RBR_MASK 0x80 /* receive buffer ready mask */ +#define _LSR_FE_MASK 0x40 /* framing error */ +#define _LSR_OE_MASK 0x20 /* overrun error */ +#define _LSR_PE_MASK 0x10 /* parity error */ +#define _LSR_LB_MASK 0x08 /* line break */ +#define _LSR_TBR_MASK 0x04 /* transmit buffer ready */ +#define _LSR_TSR_MASK 0x02 /* transmit shift register ready */ + +#define _LSR_RBR_FULL _LSR_RBR_MASK /* receive buffer is full */ +#define _LSR_FE_ERROR _LSR_FE_MASK /* framing error detected */ +#define _LSR_OE_ERROR _LSR_OE_MASK /* overrun error detected */ +#define _LSR_PE_ERROR _LSR_PE_MASK /* parity error detected */ +#define _LSR_LB_BREAK _LSR_LB_MASK /* line break detected */ +#define _LSR_TBR_EMPTY _LSR_TBR_MASK /* transmit buffer is ready */ +#define _LSR_TSR_EMPTY _LSR_TSR_MASK /* transmit shift register is empty */ +#define _LSR_TX_ALL 0x06 /* all physical transmit is done */ #define _LSR_RX_ERR (_LSR_LB_BREAK | _LSR_FE_MASK | _LSR_OE_MASK | \ _LSR_PE_MASK ) /* serial port receiver command register */ -#define _RCR_ER_MASK 0x80 /* enable receiver mask */ -#define _RCR_DME_MASK 0x60 /* dma mode */ -#define _RCR_EIE_MASK 0x10 /* error interrupt enable mask */ -#define _RCR_PME_MASK 0x08 /* pause mode mask */ - -#define _RCR_ER_ENABLE _RCR_ER_MASK /* receiver enabled */ -#define _RCR_DME_DISABLE 0x00 /* dma disabled */ -#define _RCR_DME_RXRDY 0x20 /* dma disabled, RxRDY interrupt enabled*/ -#define _RCR_DME_ENABLE2 0x40 /* dma enabled,receiver src channel 2 */ -#define _RCR_DME_ENABLE3 0x60 /* dma enabled,receiver src channel 3 */ -#define _RCR_PME_HARD _RCR_PME_MASK /* RTS controlled by hardware */ -#define _RCR_PME_SOFT 0x00 /* RTS controlled by software */ +#define _RCR_ER_MASK 0x80 /* enable receiver mask */ +#define _RCR_DME_MASK 0x60 /* dma mode */ +#define _RCR_EIE_MASK 0x10 /* error interrupt enable mask */ +#define _RCR_PME_MASK 0x08 /* pause mode mask */ + +#define _RCR_ER_ENABLE _RCR_ER_MASK /* receiver enabled */ +#define _RCR_DME_DISABLE 0x00 /* dma disabled */ +#define _RCR_DME_RXRDY 0x20 /* dma disabled, RxRDY interrupt enabled */ +#define _RCR_DME_ENABLE2 0x40 /* dma enabled,receiver src channel 2 */ +#define _RCR_DME_ENABLE3 0x60 /* dma enabled,receiver src channel 3 */ +#define _RCR_PME_HARD _RCR_PME_MASK /* RTS controlled by hardware */ +#define _RCR_PME_SOFT 0x00 /* RTS controlled by software */ /* serial port transmit command register */ -#define _TxCR_ET_MASK 0x80 /* transmiter enable mask */ -#define _TxCR_DME_MASK 0x60 /* dma mode mask */ -#define _TxCR_TIE_MASK 0x10 /* empty interrupt enable mask */ -#define _TxCR_EIE_MASK 0x08 /* error interrupt enable mask */ -#define _TxCR_SPE_MASK 0x04 /* stop/pause mask */ -#define _TxCR_TB_MASK 0x02 /* transmit break mask */ - -#define _TxCR_ET_ENABLE _TxCR_ET_MASK /* transmiter enabled */ -#define _TxCR_DME_DISABLE 0x00 /* transmiter disabled, TBR intr disabled */ -#define _TxCR_DME_TBR 0x20 /* transmiter disabled, TBR intr enabled */ -#define _TxCR_DME_CHAN_2 0x40 /* dma enabled, destination chann 2 */ -#define _TxCR_DME_CHAN_3 0x60 /* dma enabled, destination chann 3 */ +#define _TxCR_ET_MASK 0x80 /* transmiter enable mask */ +#define _TxCR_DME_MASK 0x60 /* dma mode mask */ +#define _TxCR_TIE_MASK 0x10 /* empty interrupt enable mask */ +#define _TxCR_EIE_MASK 0x08 /* error interrupt enable mask */ +#define _TxCR_SPE_MASK 0x04 /* stop/pause mask */ +#define _TxCR_TB_MASK 0x02 /* transmit break mask */ + +#define _TxCR_ET_ENABLE _TxCR_ET_MASK /* transmiter enabled */ +#define _TxCR_DME_DISABLE 0x00 /* transmiter disabled, TBR intr disabled */ +#define _TxCR_DME_TBR 0x20 /* transmiter disabled, TBR intr enabled */ +#define _TxCR_DME_CHAN_2 0x40 /* dma enabled, destination chann 2 */ +#define _TxCR_DME_CHAN_3 0x60 /* dma enabled, destination chann 3 */ /* serial ctl reg 2 - added for Vesta */ -#define _CTL2_EXTERN 0x80 /* */ -#define _CTL2_USEFIFO 0x40 /* */ -#define _CTL2_RESETRF 0x08 /* */ -#define _CTL2_RESETTF 0x04 /* */ - - +#define _CTL2_EXTERN 0x80 /* */ +#define _CTL2_USEFIFO 0x40 /* */ +#define _CTL2_RESETRF 0x08 /* */ +#define _CTL2_RESETTF 0x04 /* */ #define SERIAL_SICC_NAME "ttySICC" #define SERIAL_SICC_MAJOR 150 @@ -225,46 +221,46 @@ static u_char *tmp_buf; #define EVT_WRITE_WAKEUP 0 struct SICC_icount { - __u32 cts; - __u32 dsr; - __u32 rng; - __u32 dcd; - __u32 rx; - __u32 tx; - __u32 frame; - __u32 overrun; - __u32 parity; - __u32 brk; - __u32 buf_overrun; + __u32 cts; + __u32 dsr; + __u32 rng; + __u32 dcd; + __u32 rx; + __u32 tx; + __u32 frame; + __u32 overrun; + __u32 parity; + __u32 brk; + __u32 buf_overrun; }; /* * Static information about the port */ struct SICC_port { - unsigned int uart_base; - unsigned int uart_base_phys; - unsigned int irqrx; - unsigned int irqtx; - unsigned int uartclk; - unsigned int fifosize; - unsigned int tiocm_support; - void (*set_mctrl)(struct SICC_port *, u_int mctrl); + unsigned int uart_base; + unsigned int uart_base_phys; + unsigned int irqrx; + unsigned int irqtx; + unsigned int uartclk; + unsigned int fifosize; + unsigned int tiocm_support; + void (*set_mctrl) (struct SICC_port *, u_int mctrl); }; /* * This is the state information which is persistent across opens */ struct SICC_state { - struct SICC_icount icount; - unsigned int line; - unsigned int close_delay; - unsigned int closing_wait; - unsigned int custom_divisor; - unsigned int flags; - int count; - struct SICC_info *info; - spinlock_t sicc_lock; + struct SICC_icount icount; + unsigned int line; + unsigned int close_delay; + unsigned int closing_wait; + unsigned int custom_divisor; + unsigned int flags; + int count; + struct SICC_info *info; + spinlock_t sicc_lock; }; #define SICC_XMIT_SIZE 1024 @@ -272,53 +268,52 @@ struct SICC_state { * This is the state information which is only valid when the port is open. */ struct SICC_info { - struct SICC_port *port; - struct SICC_state *state; - struct tty_struct *tty; - unsigned char x_char; - unsigned char old_status; - unsigned char read_status_mask; - unsigned char ignore_status_mask; - struct circ_buf xmit; - unsigned int flags; + struct SICC_port *port; + struct SICC_state *state; + struct tty_struct *tty; + unsigned char x_char; + unsigned char old_status; + unsigned char read_status_mask; + unsigned char ignore_status_mask; + struct circ_buf xmit; + unsigned int flags; #ifdef SUPPORT_SYSRQ - unsigned long sysrq; + unsigned long sysrq; #endif - unsigned int event; - unsigned int timeout; - unsigned int lcr_h; - unsigned int mctrl; - int blocked_open; - - struct tasklet_struct tlet; - - wait_queue_head_t open_wait; - wait_queue_head_t close_wait; - wait_queue_head_t delta_msr_wait; + unsigned int event; + unsigned int timeout; + unsigned int lcr_h; + unsigned int mctrl; + int blocked_open; + + struct tasklet_struct tlet; + + wait_queue_head_t open_wait; + wait_queue_head_t close_wait; + wait_queue_head_t delta_msr_wait; }; #ifdef CONFIG_SERIAL_SICC_CONSOLE static struct console siccuart_cons; #endif -static void siccuart_change_speed(struct SICC_info *info, struct termios *old_termios); +static void siccuart_change_speed(struct SICC_info *info, + struct termios *old_termios); static void siccuart_wait_until_sent(struct tty_struct *tty, int timeout); - - static void powerpcMtcic_cr(unsigned long value) { - mtdcr(DCRN_CICCR, value); + mtdcr(DCRN_CICCR, value); } static unsigned long powerpcMfcic_cr(void) { - return mfdcr(DCRN_CICCR); + return mfdcr(DCRN_CICCR); } static unsigned long powerpcMfclkgpcr(void) { - return mfdcr(DCRN_SCCR); + return mfdcr(DCRN_SCCR); } static void sicc_set_mctrl_null(struct SICC_port *port, u_int mctrl) @@ -326,379 +321,370 @@ static void sicc_set_mctrl_null(struct S } static struct SICC_port sicc_ports[SERIAL_SICC_NR] = { - { - .uart_base = 0, - .uart_base_phys = SICC0_IO_BASE, - .irqrx = SICC0_INTRX, - .irqtx = SICC0_INTTX, + { + .uart_base = 0, + .uart_base_phys = SICC0_IO_BASE, + .irqrx = SICC0_INTRX, + .irqtx = SICC0_INTTX, // .uartclk = 0, - .fifosize = 1, - .set_mctrl = sicc_set_mctrl_null, - } + .fifosize = 1, + .set_mctrl = sicc_set_mctrl_null, + } }; static struct SICC_state sicc_state[SERIAL_SICC_NR]; static void siccuart_enable_rx_interrupt(struct SICC_info *info) { - unsigned char cr; + unsigned char cr; - cr = readb(info->port->uart_base+BL_SICC_RCR); - cr &= ~_RCR_DME_MASK; - cr |= _RCR_DME_RXRDY; - writeb(cr, info->port->uart_base+BL_SICC_RCR); + cr = readb(info->port->uart_base + BL_SICC_RCR); + cr &= ~_RCR_DME_MASK; + cr |= _RCR_DME_RXRDY; + writeb(cr, info->port->uart_base + BL_SICC_RCR); } static void siccuart_disable_rx_interrupt(struct SICC_info *info) { - unsigned char cr; + unsigned char cr; - cr = readb(info->port->uart_base+BL_SICC_RCR); - cr &= ~_RCR_DME_MASK; - cr |= _RCR_DME_DISABLE; - writeb(cr, info->port->uart_base+BL_SICC_RCR); + cr = readb(info->port->uart_base + BL_SICC_RCR); + cr &= ~_RCR_DME_MASK; + cr |= _RCR_DME_DISABLE; + writeb(cr, info->port->uart_base + BL_SICC_RCR); } - static void siccuart_enable_tx_interrupt(struct SICC_info *info) { - unsigned char cr; + unsigned char cr; - cr = readb(info->port->uart_base+BL_SICC_TxCR); - cr &= ~_TxCR_DME_MASK; - cr |= _TxCR_DME_TBR; - writeb(cr, info->port->uart_base+BL_SICC_TxCR); + cr = readb(info->port->uart_base + BL_SICC_TxCR); + cr &= ~_TxCR_DME_MASK; + cr |= _TxCR_DME_TBR; + writeb(cr, info->port->uart_base + BL_SICC_TxCR); } static void siccuart_disable_tx_interrupt(struct SICC_info *info) { - unsigned char cr; + unsigned char cr; - cr = readb(info->port->uart_base+BL_SICC_TxCR); - cr &= ~_TxCR_DME_MASK; - cr |= _TxCR_DME_DISABLE; - writeb(cr, info->port->uart_base+BL_SICC_TxCR); + cr = readb(info->port->uart_base + BL_SICC_TxCR); + cr &= ~_TxCR_DME_MASK; + cr |= _TxCR_DME_DISABLE; + writeb(cr, info->port->uart_base + BL_SICC_TxCR); } - static void siccuart_stop(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - /* disable interrupts while stopping serial port interrupts */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - siccuart_disable_tx_interrupt(info); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); + /* disable interrupts while stopping serial port interrupts */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + siccuart_disable_tx_interrupt(info); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); } static void siccuart_start(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - /* disable interrupts while starting serial port interrupts */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - if (info->xmit.head != info->xmit.tail - && info->xmit.buf) - siccuart_enable_tx_interrupt(info); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); + /* disable interrupts while starting serial port interrupts */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + if (info->xmit.head != info->xmit.tail && info->xmit.buf) + siccuart_enable_tx_interrupt(info); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); } - /* * This routine is used by the interrupt handler to schedule * processing in the software interrupt portion of the driver. */ static void siccuart_event(struct SICC_info *info, int event) { - info->event |= 1 << event; - tasklet_schedule(&info->tlet); + info->event |= 1 << event; + tasklet_schedule(&info->tlet); } -static void -siccuart_rx_chars(struct SICC_info *info, struct pt_regs *regs) +static void siccuart_rx_chars(struct SICC_info *info, struct pt_regs *regs) { - struct tty_struct *tty = info->tty; - unsigned int status, ch, rsr, flg, ignored = 0; - struct SICC_icount *icount = &info->state->icount; - struct SICC_port *port = info->port; - - status = readb(port->uart_base+BL_SICC_LSR ); - while (status & _LSR_RBR_FULL) { - ch = readb(port->uart_base+BL_SICC_RBR); - - if (tty->flip.count >= TTY_FLIPBUF_SIZE) - goto ignore_char; - icount->rx++; - - flg = TTY_NORMAL; - - /* - * Note that the error handling code is - * out of the main execution path - */ - rsr = readb(port->uart_base+BL_SICC_LSR); - if (rsr & _LSR_RX_ERR) - goto handle_error; + struct tty_struct *tty = info->tty; + unsigned int status, ch, rsr, flg, ignored = 0; + struct SICC_icount *icount = &info->state->icount; + struct SICC_port *port = info->port; + + status = readb(port->uart_base + BL_SICC_LSR); + while (status & _LSR_RBR_FULL) { + ch = readb(port->uart_base + BL_SICC_RBR); + + if (tty->flip.count >= TTY_FLIPBUF_SIZE) + goto ignore_char; + icount->rx++; + + flg = TTY_NORMAL; + + /* + * Note that the error handling code is + * out of the main execution path + */ + rsr = readb(port->uart_base + BL_SICC_LSR); + if (rsr & _LSR_RX_ERR) + goto handle_error; #ifdef SUPPORT_SYSRQ - if (info->sysrq) { - if (ch && time_before(jiffies, info->sysrq)) { - handle_sysrq(ch, regs, NULL); - info->sysrq = 0; - goto ignore_char; - } - info->sysrq = 0; - } + if (info->sysrq) { + if (ch && time_before(jiffies, info->sysrq)) { + handle_sysrq(ch, regs, NULL); + info->sysrq = 0; + goto ignore_char; + } + info->sysrq = 0; + } #endif - error_return: - *tty->flip.flag_buf_ptr++ = flg; - *tty->flip.char_buf_ptr++ = ch; - tty->flip.count++; - ignore_char: - status = readb(port->uart_base+BL_SICC_LSR ); - } -out: - tty_flip_buffer_push(tty); - return; - -handle_error: - if (rsr & _LSR_LB_BREAK) { - rsr &= ~(_LSR_FE_MASK | _LSR_PE_MASK); - icount->brk++; + error_return: + *tty->flip.flag_buf_ptr++ = flg; + *tty->flip.char_buf_ptr++ = ch; + tty->flip.count++; + ignore_char: + status = readb(port->uart_base + BL_SICC_LSR); + } + out: + tty_flip_buffer_push(tty); + return; + + handle_error: + if (rsr & _LSR_LB_BREAK) { + rsr &= ~(_LSR_FE_MASK | _LSR_PE_MASK); + icount->brk++; #ifdef SUPPORT_SYSRQ - if (info->state->line == siccuart_cons.index) { - if (!info->sysrq) { - info->sysrq = jiffies + HZ*5; - goto ignore_char; - } - } + if (info->state->line == siccuart_cons.index) { + if (!info->sysrq) { + info->sysrq = jiffies + HZ * 5; + goto ignore_char; + } + } #endif - } else if (rsr & _LSR_PE_MASK) - icount->parity++; - else if (rsr & _LSR_FE_MASK) - icount->frame++; - if (rsr & _LSR_OE_MASK) - icount->overrun++; - - if (rsr & info->ignore_status_mask) { - if (++ignored > 100) - goto out; - goto ignore_char; - } - rsr &= info->read_status_mask; - - if (rsr & _LSR_LB_BREAK) - flg = TTY_BREAK; - else if (rsr & _LSR_PE_MASK) - flg = TTY_PARITY; - else if (rsr & _LSR_FE_MASK) - flg = TTY_FRAME; - - if (rsr & _LSR_OE_MASK) { - /* - * CHECK: does overrun affect the current character? - * ASSUMPTION: it does not. - */ - *tty->flip.flag_buf_ptr++ = flg; - *tty->flip.char_buf_ptr++ = ch; - tty->flip.count++; - if (tty->flip.count >= TTY_FLIPBUF_SIZE) - goto ignore_char; - ch = 0; - flg = TTY_OVERRUN; - } + } else if (rsr & _LSR_PE_MASK) + icount->parity++; + else if (rsr & _LSR_FE_MASK) + icount->frame++; + if (rsr & _LSR_OE_MASK) + icount->overrun++; + + if (rsr & info->ignore_status_mask) { + if (++ignored > 100) + goto out; + goto ignore_char; + } + rsr &= info->read_status_mask; + + if (rsr & _LSR_LB_BREAK) + flg = TTY_BREAK; + else if (rsr & _LSR_PE_MASK) + flg = TTY_PARITY; + else if (rsr & _LSR_FE_MASK) + flg = TTY_FRAME; + + if (rsr & _LSR_OE_MASK) { + /* + * CHECK: does overrun affect the current character? + * ASSUMPTION: it does not. + */ + *tty->flip.flag_buf_ptr++ = flg; + *tty->flip.char_buf_ptr++ = ch; + tty->flip.count++; + if (tty->flip.count >= TTY_FLIPBUF_SIZE) + goto ignore_char; + ch = 0; + flg = TTY_OVERRUN; + } #ifdef SUPPORT_SYSRQ - info->sysrq = 0; + info->sysrq = 0; #endif - goto error_return; + goto error_return; } static void siccuart_tx_chars(struct SICC_info *info) { - struct SICC_port *port = info->port; - int count; - unsigned char status; - - - if (info->x_char) { - writeb(info->x_char, port->uart_base+ BL_SICC_TBR); - info->state->icount.tx++; - info->x_char = 0; - return; - } - if (info->xmit.head == info->xmit.tail - || info->tty->stopped - || info->tty->hw_stopped) { - siccuart_disable_tx_interrupt(info); - writeb(status&(~_LSR_RBR_MASK),port->uart_base+BL_SICC_LSR); - return; - } - - count = port->fifosize; - do { - writeb(info->xmit.buf[info->xmit.tail], port->uart_base+ BL_SICC_TBR); - info->xmit.tail = (info->xmit.tail + 1) & (SICC_XMIT_SIZE - 1); - info->state->icount.tx++; - if (info->xmit.head == info->xmit.tail) - break; - } while (--count > 0); - - if (CIRC_CNT(info->xmit.head, - info->xmit.tail, - SICC_XMIT_SIZE) < WAKEUP_CHARS) - siccuart_event(info, EVT_WRITE_WAKEUP); - - if (info->xmit.head == info->xmit.tail) { - siccuart_disable_tx_interrupt(info); - } + struct SICC_port *port = info->port; + int count; + unsigned char status; + + if (info->x_char) { + writeb(info->x_char, port->uart_base + BL_SICC_TBR); + info->state->icount.tx++; + info->x_char = 0; + return; + } + if (info->xmit.head == info->xmit.tail + || info->tty->stopped || info->tty->hw_stopped) { + siccuart_disable_tx_interrupt(info); + writeb(status & (~_LSR_RBR_MASK), + port->uart_base + BL_SICC_LSR); + return; + } + + count = port->fifosize; + do { + writeb(info->xmit.buf[info->xmit.tail], + port->uart_base + BL_SICC_TBR); + info->xmit.tail = (info->xmit.tail + 1) & (SICC_XMIT_SIZE - 1); + info->state->icount.tx++; + if (info->xmit.head == info->xmit.tail) + break; + } while (--count > 0); + + if (CIRC_CNT(info->xmit.head, + info->xmit.tail, SICC_XMIT_SIZE) < WAKEUP_CHARS) + siccuart_event(info, EVT_WRITE_WAKEUP); + + if (info->xmit.head == info->xmit.tail) { + siccuart_disable_tx_interrupt(info); + } } - static irqreturn_t siccuart_int_rx(int irq, void *dev_id, struct pt_regs *regs) { - struct SICC_info *info = dev_id; - siccuart_rx_chars(info, regs); - return IRQ_HANDLED; + struct SICC_info *info = dev_id; + siccuart_rx_chars(info, regs); + return IRQ_HANDLED; } - static irqreturn_t siccuart_int_tx(int irq, void *dev_id, struct pt_regs *regs) { - struct SICC_info *info = dev_id; - siccuart_tx_chars(info); - return IRQ_HANDLED; + struct SICC_info *info = dev_id; + siccuart_tx_chars(info); + return IRQ_HANDLED; } static void siccuart_tasklet_action(unsigned long data) { - struct SICC_info *info = (struct SICC_info *)data; - struct tty_struct *tty; + struct SICC_info *info = (struct SICC_info *)data; + struct tty_struct *tty; - tty = info->tty; - if (!tty || !test_and_clear_bit(EVT_WRITE_WAKEUP, &info->event)) - return; - - if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && - tty->ldisc.write_wakeup) - (tty->ldisc.write_wakeup)(tty); - wake_up_interruptible(&tty->write_wait); + tty = info->tty; + if (!tty || !test_and_clear_bit(EVT_WRITE_WAKEUP, &info->event)) + return; + + if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && + tty->ldisc.write_wakeup) + (tty->ldisc.write_wakeup) (tty); + wake_up_interruptible(&tty->write_wait); } static int siccuart_startup(struct SICC_info *info) { - unsigned long flags; - unsigned long page; - int retval = 0; - - if (info->flags & ASYNC_INITIALIZED) { - return 0; - } - - page = get_zeroed_page(GFP_KERNEL); - if (!page) - return -ENOMEM; - - if (info->port->uart_base == 0) - info->port->uart_base = (int)ioremap(info->port->uart_base_phys, PAGE_SIZE); - if (info->port->uart_base == 0) { - free_page(page); - return -ENOMEM; - } - - /* lock access to info while doing setup */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - - if (info->xmit.buf) - free_page(page); - else - info->xmit.buf = (unsigned char *) page; - - - info->mctrl = 0; - if (info->tty->termios->c_cflag & CBAUD) - info->mctrl = TIOCM_RTS | TIOCM_DTR; - info->port->set_mctrl(info->port, info->mctrl); - - /* - * initialise the old status of the modem signals - */ - info->old_status = 0; // UART_GET_FR(info->port) & AMBA_UARTFR_MODEM_ANY; - - - if (info->tty) - clear_bit(TTY_IO_ERROR, &info->tty->flags); - info->xmit.head = info->xmit.tail = 0; - - /* - * Set up the tty->alt_speed kludge - */ - if (info->tty) { - if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) - info->tty->alt_speed = 57600; - if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) - info->tty->alt_speed = 115200; - if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI) - info->tty->alt_speed = 230400; - if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) - info->tty->alt_speed = 460800; - } - - - writeb( 0x00, info->port->uart_base + BL_SICC_IrCR ); // disable IrDA - - - /* - * and set the speed of the serial port - */ - siccuart_change_speed(info, 0); - - // enable rx/tx ports - writeb(_RCR_ER_ENABLE /*| _RCR_PME_HARD*/, info->port->uart_base + BL_SICC_RCR); - writeb(_TxCR_ET_ENABLE , info->port->uart_base + BL_SICC_TxCR); - - readb(info->port->uart_base + BL_SICC_RBR); // clear rx port - - writeb(0xf8, info->port->uart_base + BL_SICC_LSR); /* reset bits 0-4 of LSR */ - - /* - * Finally, enable interrupts - */ - - /* - * Allocate the IRQ - */ - retval = request_irq(info->port->irqrx, siccuart_int_rx, 0, "SICC rx", info); - if (retval) { - if (capable(CAP_SYS_ADMIN)) { - if (info->tty) - set_bit(TTY_IO_ERROR, &info->tty->flags); - retval = 0; - } - goto errout; - } - retval = request_irq(info->port->irqtx, siccuart_int_tx, 0, "SICC tx", info); - if (retval) { - if (capable(CAP_SYS_ADMIN)) { - if (info->tty) - set_bit(TTY_IO_ERROR, &info->tty->flags); - retval = 0; - } - free_irq(info->port->irqrx, info); - goto errout; - } - - siccuart_enable_rx_interrupt(info); - - info->flags |= ASYNC_INITIALIZED; - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - return 0; - - -errout: - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - return retval; + unsigned long flags; + unsigned long page; + int retval = 0; + + if (info->flags & ASYNC_INITIALIZED) { + return 0; + } + + page = get_zeroed_page(GFP_KERNEL); + if (!page) + return -ENOMEM; + + if (info->port->uart_base == 0) + info->port->uart_base = + (int)ioremap(info->port->uart_base_phys, PAGE_SIZE); + if (info->port->uart_base == 0) { + free_page(page); + return -ENOMEM; + } + + /* lock access to info while doing setup */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + + if (info->xmit.buf) + free_page(page); + else + info->xmit.buf = (unsigned char *)page; + + info->mctrl = 0; + if (info->tty->termios->c_cflag & CBAUD) + info->mctrl = TIOCM_RTS | TIOCM_DTR; + info->port->set_mctrl(info->port, info->mctrl); + + /* + * initialise the old status of the modem signals + */ + info->old_status = 0; // UART_GET_FR(info->port) & AMBA_UARTFR_MODEM_ANY; + + if (info->tty) + clear_bit(TTY_IO_ERROR, &info->tty->flags); + info->xmit.head = info->xmit.tail = 0; + + /* + * Set up the tty->alt_speed kludge + */ + if (info->tty) { + if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) + info->tty->alt_speed = 57600; + if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) + info->tty->alt_speed = 115200; + if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI) + info->tty->alt_speed = 230400; + if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) + info->tty->alt_speed = 460800; + } + + writeb(0x00, info->port->uart_base + BL_SICC_IrCR); // disable IrDA + + /* + * and set the speed of the serial port + */ + siccuart_change_speed(info, 0); + + // enable rx/tx ports + writeb(_RCR_ER_ENABLE /*| _RCR_PME_HARD */ , + info->port->uart_base + BL_SICC_RCR); + writeb(_TxCR_ET_ENABLE, info->port->uart_base + BL_SICC_TxCR); + + readb(info->port->uart_base + BL_SICC_RBR); // clear rx port + + writeb(0xf8, info->port->uart_base + BL_SICC_LSR); /* reset bits 0-4 of LSR */ + + /* + * Finally, enable interrupts + */ + + /* + * Allocate the IRQ + */ + retval = + request_irq(info->port->irqrx, siccuart_int_rx, 0, "SICC rx", info); + if (retval) { + if (capable(CAP_SYS_ADMIN)) { + if (info->tty) + set_bit(TTY_IO_ERROR, &info->tty->flags); + retval = 0; + } + goto errout; + } + retval = + request_irq(info->port->irqtx, siccuart_int_tx, 0, "SICC tx", info); + if (retval) { + if (capable(CAP_SYS_ADMIN)) { + if (info->tty) + set_bit(TTY_IO_ERROR, &info->tty->flags); + retval = 0; + } + free_irq(info->port->irqrx, info); + goto errout; + } + + siccuart_enable_rx_interrupt(info); + + info->flags |= ASYNC_INITIALIZED; + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + return 0; + + errout: + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + return retval; } /* @@ -707,302 +693,299 @@ errout: */ static void siccuart_shutdown(struct SICC_info *info) { - unsigned long flags; + unsigned long flags; - if (!(info->flags & ASYNC_INITIALIZED)) - return; + if (!(info->flags & ASYNC_INITIALIZED)) + return; - /* lock while shutting down port */ - spin_lock_irqsave(&info->state->sicc_lock,flags); /* Disable interrupts */ + /* lock while shutting down port */ + spin_lock_irqsave(&info->state->sicc_lock, flags); /* Disable interrupts */ - /* - * clear delta_msr_wait queue to avoid mem leaks: we may free the irq - * here so the queue might never be woken up - */ - wake_up_interruptible(&info->delta_msr_wait); - - /* - * disable all interrupts, disable the port - */ - siccuart_disable_rx_interrupt(info); - siccuart_disable_tx_interrupt(info); - - /* - * Free the IRQ - */ - free_irq(info->port->irqtx, info); - free_irq(info->port->irqrx, info); - - if (info->xmit.buf) { - unsigned long pg = (unsigned long) info->xmit.buf; - info->xmit.buf = NULL; - free_page(pg); - } - - - if (!info->tty || (info->tty->termios->c_cflag & HUPCL)) - info->mctrl &= ~(TIOCM_DTR|TIOCM_RTS); - info->port->set_mctrl(info->port, info->mctrl); - - /* kill off our tasklet */ - tasklet_kill(&info->tlet); - if (info->tty) - set_bit(TTY_IO_ERROR, &info->tty->flags); - - info->flags &= ~ASYNC_INITIALIZED; - - spin_unlock_irqrestore(&info->state->sicc_lock,flags); -} - - -static void siccuart_change_speed(struct SICC_info *info, struct termios *old_termios) -{ - unsigned int lcr_h, baud, quot, cflag, old_rcr, old_tcr, bits; - unsigned long flags; - - if (!info->tty || !info->tty->termios) - return; - - cflag = info->tty->termios->c_cflag; - - pr_debug("siccuart_set_cflag(0x%x) called\n", cflag); - /* byte size and parity */ - switch (cflag & CSIZE) { - case CS7: lcr_h = _LCR_PE_DISABLE | _LCR_DB_7_BITS | _LCR_SB_1_BIT; bits = 9; break; - default: lcr_h = _LCR_PE_DISABLE | _LCR_DB_8_BITS | _LCR_SB_1_BIT; bits = 10; break; // CS8 - } - if (cflag & CSTOPB) { - lcr_h |= _LCR_SB_2_BIT; - bits ++; - } - if (cflag & PARENB) { - lcr_h |= _LCR_PE_ENABLE; - bits++; - if (!(cflag & PARODD)) - lcr_h |= _LCR_PTY_ODD; - else - lcr_h |= _LCR_PTY_EVEN; - } - - do { - /* Determine divisor based on baud rate */ - baud = tty_get_baud_rate(info->tty); - if (!baud) - baud = 9600; - - - { - // here is ppc403SetBaud(com_port, baud); - unsigned long divisor, clockSource, temp; - - /* Ensure CICCR[7] is 0 to select Internal Baud Clock */ - powerpcMtcic_cr((unsigned long)(powerpcMfcic_cr() & 0xFEFFFFFF)); - - /* Determine Internal Baud Clock Frequency */ - /* powerpcMfclkgpcr() reads DCR 0x120 - the*/ - /* SCCR (Serial Clock Control Register) on Vesta */ - temp = powerpcMfclkgpcr(); - - if(temp & 0x00000080) { - clockSource = 324000000; - } - else { - clockSource = 216000000; - } - clockSource = clockSource/(unsigned long)((temp&0x00FC0000)>>18); - divisor = clockSource/(16*baud) - 1; - /* divisor has only 12 bits of resolution */ - if(divisor>0x00000FFF){ - divisor=0x00000FFF; - } - - quot = divisor; - } - - if (baud == 38400 && - ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST)) - quot = info->state->custom_divisor; - - if (!quot && old_termios) { - info->tty->termios->c_cflag &= ~CBAUD; - info->tty->termios->c_cflag |= (old_termios->c_cflag & CBAUD); - old_termios = NULL; - } - } while (quot == 0 && old_termios); - - /* As a last resort, if the quotient is zero, default to 9600 bps */ - if (!quot) - quot = (info->port->uartclk / (16 * 9600)) - 1; - - info->timeout = info->port->fifosize * HZ * bits / baud; - info->timeout += HZ/50; /* Add .02 seconds of slop */ - - if (cflag & CRTSCTS) - info->flags |= ASYNC_CTS_FLOW; - else - info->flags &= ~ASYNC_CTS_FLOW; - if (cflag & CLOCAL) - info->flags &= ~ASYNC_CHECK_CD; - else - info->flags |= ASYNC_CHECK_CD; - - /* - * Set up parity check flag - */ + /* + * clear delta_msr_wait queue to avoid mem leaks: we may free the irq + * here so the queue might never be woken up + */ + wake_up_interruptible(&info->delta_msr_wait); + + /* + * disable all interrupts, disable the port + */ + siccuart_disable_rx_interrupt(info); + siccuart_disable_tx_interrupt(info); + + /* + * Free the IRQ + */ + free_irq(info->port->irqtx, info); + free_irq(info->port->irqrx, info); + + if (info->xmit.buf) { + unsigned long pg = (unsigned long)info->xmit.buf; + info->xmit.buf = NULL; + free_page(pg); + } + + if (!info->tty || (info->tty->termios->c_cflag & HUPCL)) + info->mctrl &= ~(TIOCM_DTR | TIOCM_RTS); + info->port->set_mctrl(info->port, info->mctrl); + + /* kill off our tasklet */ + tasklet_kill(&info->tlet); + if (info->tty) + set_bit(TTY_IO_ERROR, &info->tty->flags); + + info->flags &= ~ASYNC_INITIALIZED; + + spin_unlock_irqrestore(&info->state->sicc_lock, flags); +} + +static void siccuart_change_speed(struct SICC_info *info, + struct termios *old_termios) +{ + unsigned int lcr_h, baud, quot, cflag, old_rcr, old_tcr, bits; + unsigned long flags; + + if (!info->tty || !info->tty->termios) + return; + + cflag = info->tty->termios->c_cflag; + + pr_debug("siccuart_set_cflag(0x%x) called\n", cflag); + /* byte size and parity */ + switch (cflag & CSIZE) { + case CS7: + lcr_h = _LCR_PE_DISABLE | _LCR_DB_7_BITS | _LCR_SB_1_BIT; + bits = 9; + break; + default: + lcr_h = _LCR_PE_DISABLE | _LCR_DB_8_BITS | _LCR_SB_1_BIT; + bits = 10; + break; // CS8 + } + if (cflag & CSTOPB) { + lcr_h |= _LCR_SB_2_BIT; + bits++; + } + if (cflag & PARENB) { + lcr_h |= _LCR_PE_ENABLE; + bits++; + if (!(cflag & PARODD)) + lcr_h |= _LCR_PTY_ODD; + else + lcr_h |= _LCR_PTY_EVEN; + } + + do { + /* Determine divisor based on baud rate */ + baud = tty_get_baud_rate(info->tty); + if (!baud) + baud = 9600; + + { + // here is ppc403SetBaud(com_port, baud); + unsigned long divisor, clockSource, temp; + + /* Ensure CICCR[7] is 0 to select Internal Baud Clock */ + powerpcMtcic_cr((unsigned long)(powerpcMfcic_cr() & + 0xFEFFFFFF)); + + /* Determine Internal Baud Clock Frequency */ + /* powerpcMfclkgpcr() reads DCR 0x120 - the */ + /* SCCR (Serial Clock Control Register) on Vesta */ + temp = powerpcMfclkgpcr(); + + if (temp & 0x00000080) { + clockSource = 324000000; + } else { + clockSource = 216000000; + } + clockSource = + clockSource / + (unsigned long)((temp & 0x00FC0000) >> 18); + divisor = clockSource / (16 * baud) - 1; + /* divisor has only 12 bits of resolution */ + if (divisor > 0x00000FFF) { + divisor = 0x00000FFF; + } + + quot = divisor; + } + + if (baud == 38400 && + ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST)) + quot = info->state->custom_divisor; + + if (!quot && old_termios) { + info->tty->termios->c_cflag &= ~CBAUD; + info->tty->termios->c_cflag |= + (old_termios->c_cflag & CBAUD); + old_termios = NULL; + } + } while (quot == 0 && old_termios); + + /* As a last resort, if the quotient is zero, default to 9600 bps */ + if (!quot) + quot = (info->port->uartclk / (16 * 9600)) - 1; + + info->timeout = info->port->fifosize * HZ * bits / baud; + info->timeout += HZ / 50; /* Add .02 seconds of slop */ + + if (cflag & CRTSCTS) + info->flags |= ASYNC_CTS_FLOW; + else + info->flags &= ~ASYNC_CTS_FLOW; + if (cflag & CLOCAL) + info->flags &= ~ASYNC_CHECK_CD; + else + info->flags |= ASYNC_CHECK_CD; + + /* + * Set up parity check flag + */ #define RELEVENT_IFLAG(iflag) ((iflag) & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK)) - info->read_status_mask = _LSR_OE_MASK; - if (I_INPCK(info->tty)) - info->read_status_mask |= _LSR_FE_MASK | _LSR_PE_MASK; - if (I_BRKINT(info->tty) || I_PARMRK(info->tty)) - info->read_status_mask |= _LSR_LB_MASK; - - /* - * Characters to ignore - */ - info->ignore_status_mask = 0; - if (I_IGNPAR(info->tty)) - info->ignore_status_mask |= _LSR_FE_MASK | _LSR_PE_MASK; - if (I_IGNBRK(info->tty)) { - info->ignore_status_mask |= _LSR_LB_MASK; - /* - * If we're ignoring parity and break indicators, - * ignore overruns to (for real raw support). - */ - if (I_IGNPAR(info->tty)) - info->ignore_status_mask |= _LSR_OE_MASK; - } - - /* disable interrupts while reading and clearing registers */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - - old_rcr = readb(info->port->uart_base + BL_SICC_RCR); - old_tcr = readb(info->port->uart_base + BL_SICC_TxCR); - - - writeb(0, info->port->uart_base + BL_SICC_RCR); - writeb(0, info->port->uart_base + BL_SICC_TxCR); - - /*RLBtrace (&ppc403Chan0, 0x2000000c, 0, 0);*/ + info->read_status_mask = _LSR_OE_MASK; + if (I_INPCK(info->tty)) + info->read_status_mask |= _LSR_FE_MASK | _LSR_PE_MASK; + if (I_BRKINT(info->tty) || I_PARMRK(info->tty)) + info->read_status_mask |= _LSR_LB_MASK; + + /* + * Characters to ignore + */ + info->ignore_status_mask = 0; + if (I_IGNPAR(info->tty)) + info->ignore_status_mask |= _LSR_FE_MASK | _LSR_PE_MASK; + if (I_IGNBRK(info->tty)) { + info->ignore_status_mask |= _LSR_LB_MASK; + /* + * If we're ignoring parity and break indicators, + * ignore overruns to (for real raw support). + */ + if (I_IGNPAR(info->tty)) + info->ignore_status_mask |= _LSR_OE_MASK; + } + + /* disable interrupts while reading and clearing registers */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + + old_rcr = readb(info->port->uart_base + BL_SICC_RCR); + old_tcr = readb(info->port->uart_base + BL_SICC_TxCR); + + writeb(0, info->port->uart_base + BL_SICC_RCR); + writeb(0, info->port->uart_base + BL_SICC_TxCR); + + /*RLBtrace (&ppc403Chan0, 0x2000000c, 0, 0); */ + + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + + /* Set baud rate */ + writeb((quot & 0x00000F00) >> 8, info->port->uart_base + BL_SICC_BRDH); + writeb(quot & 0x00000FF, info->port->uart_base + BL_SICC_BRDL); + + /* Set CTL2 reg to use external clock (ExtClk) and enable FIFOs. */ + /* For now, do NOT use FIFOs since 403 UART did not have this */ + /* capability and this driver was inherited from 403UART. */ + writeb(_CTL2_EXTERN, info->port->uart_base + BL_SICC_CTL2); + writeb(lcr_h, info->port->uart_base + BL_SICC_LCR); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - - - /* Set baud rate */ - writeb((quot & 0x00000F00)>>8, info->port->uart_base + BL_SICC_BRDH ); - writeb( quot & 0x00000FF, info->port->uart_base + BL_SICC_BRDL ); - - /* Set CTL2 reg to use external clock (ExtClk) and enable FIFOs. */ - /* For now, do NOT use FIFOs since 403 UART did not have this */ - /* capability and this driver was inherited from 403UART. */ - writeb(_CTL2_EXTERN, info->port->uart_base + BL_SICC_CTL2); - - writeb(lcr_h, info->port->uart_base + BL_SICC_LCR); - - writeb(old_rcr, info->port->uart_base + BL_SICC_RCR); // restore rcr - writeb(old_tcr, info->port->uart_base + BL_SICC_TxCR); // restore txcr + writeb(old_rcr, info->port->uart_base + BL_SICC_RCR); // restore rcr + writeb(old_tcr, info->port->uart_base + BL_SICC_TxCR); // restore txcr } - static void siccuart_put_char(struct tty_struct *tty, u_char ch) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - if (!tty || !info->xmit.buf) - return; + if (!tty || !info->xmit.buf) + return; - /* lock info->xmit while adding character to tx buffer */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - if (CIRC_SPACE(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE) != 0) { - info->xmit.buf[info->xmit.head] = ch; - info->xmit.head = (info->xmit.head + 1) & (SICC_XMIT_SIZE - 1); - } - spin_unlock_irqrestore(&info->state->sicc_lock,flags); + /* lock info->xmit while adding character to tx buffer */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + if (CIRC_SPACE(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE) != 0) { + info->xmit.buf[info->xmit.head] = ch; + info->xmit.head = (info->xmit.head + 1) & (SICC_XMIT_SIZE - 1); + } + spin_unlock_irqrestore(&info->state->sicc_lock, flags); } static void siccuart_flush_chars(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - if (info->xmit.head == info->xmit.tail - || tty->stopped - || tty->hw_stopped - || !info->xmit.buf) - return; - - /* disable interrupts while transmitting characters */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - siccuart_enable_tx_interrupt(info); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); -} - -static int siccuart_write(struct tty_struct *tty, - const u_char * buf, int count) -{ - struct SICC_info *info = tty->driver_data; - unsigned long flags; - int c, ret = 0; - - if (!tty || !info->xmit.buf || !tmp_buf) - return 0; - - /* lock info->xmit while removing characters from buffer */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - while (1) { - c = CIRC_SPACE_TO_END(info->xmit.head, - info->xmit.tail, - SICC_XMIT_SIZE); - if (count < c) - c = count; - if (c <= 0) - break; - memcpy(info->xmit.buf + info->xmit.head, buf, c); - info->xmit.head = (info->xmit.head + c) & - (SICC_XMIT_SIZE - 1); - buf += c; - count -= c; - ret += c; - } - if (info->xmit.head != info->xmit.tail - && !tty->stopped - && !tty->hw_stopped) - siccuart_enable_tx_interrupt(info); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - return ret; + if (info->xmit.head == info->xmit.tail + || tty->stopped || tty->hw_stopped || !info->xmit.buf) + return; + + /* disable interrupts while transmitting characters */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + siccuart_enable_tx_interrupt(info); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); +} + +static int siccuart_write(struct tty_struct *tty, const u_char * buf, int count) +{ + struct SICC_info *info = tty->driver_data; + unsigned long flags; + int c, ret = 0; + + if (!tty || !info->xmit.buf || !tmp_buf) + return 0; + + /* lock info->xmit while removing characters from buffer */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + while (1) { + c = CIRC_SPACE_TO_END(info->xmit.head, + info->xmit.tail, SICC_XMIT_SIZE); + if (count < c) + c = count; + if (c <= 0) + break; + memcpy(info->xmit.buf + info->xmit.head, buf, c); + info->xmit.head = (info->xmit.head + c) & (SICC_XMIT_SIZE - 1); + buf += c; + count -= c; + ret += c; + } + if (info->xmit.head != info->xmit.tail + && !tty->stopped && !tty->hw_stopped) + siccuart_enable_tx_interrupt(info); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + return ret; } static int siccuart_write_room(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; + struct SICC_info *info = tty->driver_data; - return CIRC_SPACE(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE); + return CIRC_SPACE(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE); } static int siccuart_chars_in_buffer(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; + struct SICC_info *info = tty->driver_data; - return CIRC_CNT(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE); + return CIRC_CNT(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE); } static void siccuart_flush_buffer(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - pr_debug("siccuart_flush_buffer(%d) called\n", tty->index); - /* lock info->xmit while zeroing buffer counts */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - info->xmit.head = info->xmit.tail = 0; - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - wake_up_interruptible(&tty->write_wait); - if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && - tty->ldisc.write_wakeup) - (tty->ldisc.write_wakeup)(tty); + pr_debug("siccuart_flush_buffer(%d) called\n", tty->index); + /* lock info->xmit while zeroing buffer counts */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + info->xmit.head = info->xmit.tail = 0; + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + wake_up_interruptible(&tty->write_wait); + if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && + tty->ldisc.write_wakeup) + (tty->ldisc.write_wakeup) (tty); } /* @@ -1011,717 +994,712 @@ static void siccuart_flush_buffer(struct */ static void siccuart_send_xchar(struct tty_struct *tty, char ch) { - struct SICC_info *info = tty->driver_data; + struct SICC_info *info = tty->driver_data; - info->x_char = ch; - if (ch) - siccuart_enable_tx_interrupt(info); + info->x_char = ch; + if (ch) + siccuart_enable_tx_interrupt(info); } static void siccuart_throttle(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - if (I_IXOFF(tty)) - siccuart_send_xchar(tty, STOP_CHAR(tty)); + if (I_IXOFF(tty)) + siccuart_send_xchar(tty, STOP_CHAR(tty)); - if (tty->termios->c_cflag & CRTSCTS) { - /* disable interrupts while setting modem control lines */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - info->mctrl &= ~TIOCM_RTS; - info->port->set_mctrl(info->port, info->mctrl); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - } + if (tty->termios->c_cflag & CRTSCTS) { + /* disable interrupts while setting modem control lines */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + info->mctrl &= ~TIOCM_RTS; + info->port->set_mctrl(info->port, info->mctrl); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + } } static void siccuart_unthrottle(struct tty_struct *tty) { - struct SICC_info *info = (struct SICC_info *) tty->driver_data; - unsigned long flags; + struct SICC_info *info = (struct SICC_info *)tty->driver_data; + unsigned long flags; - if (I_IXOFF(tty)) { - if (info->x_char) - info->x_char = 0; - else - siccuart_send_xchar(tty, START_CHAR(tty)); - } - - if (tty->termios->c_cflag & CRTSCTS) { - /* disable interrupts while setting modem control lines */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - info->mctrl |= TIOCM_RTS; - info->port->set_mctrl(info->port, info->mctrl); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - } -} - -static int get_serial_info(struct SICC_info *info, struct serial_struct *retinfo) -{ - struct SICC_state *state = info->state; - struct SICC_port *port = info->port; - struct serial_struct tmp; - - memset(&tmp, 0, sizeof(tmp)); - tmp.type = 0; - tmp.line = state->line; - tmp.port = port->uart_base; - if (HIGH_BITS_OFFSET) - tmp.port_high = port->uart_base >> HIGH_BITS_OFFSET; - tmp.irq = port->irqrx; - tmp.flags = 0; - tmp.xmit_fifo_size = port->fifosize; - tmp.baud_base = port->uartclk / 16; - tmp.close_delay = state->close_delay; - tmp.closing_wait = state->closing_wait; - tmp.custom_divisor = state->custom_divisor; - - if (copy_to_user(retinfo, &tmp, sizeof(*retinfo))) - return -EFAULT; - return 0; + if (I_IXOFF(tty)) { + if (info->x_char) + info->x_char = 0; + else + siccuart_send_xchar(tty, START_CHAR(tty)); + } + + if (tty->termios->c_cflag & CRTSCTS) { + /* disable interrupts while setting modem control lines */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + info->mctrl |= TIOCM_RTS; + info->port->set_mctrl(info->port, info->mctrl); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + } +} + +static int get_serial_info(struct SICC_info *info, + struct serial_struct *retinfo) +{ + struct SICC_state *state = info->state; + struct SICC_port *port = info->port; + struct serial_struct tmp; + + memset(&tmp, 0, sizeof(tmp)); + tmp.type = 0; + tmp.line = state->line; + tmp.port = port->uart_base; + if (HIGH_BITS_OFFSET) + tmp.port_high = port->uart_base >> HIGH_BITS_OFFSET; + tmp.irq = port->irqrx; + tmp.flags = 0; + tmp.xmit_fifo_size = port->fifosize; + tmp.baud_base = port->uartclk / 16; + tmp.close_delay = state->close_delay; + tmp.closing_wait = state->closing_wait; + tmp.custom_divisor = state->custom_divisor; + + if (copy_to_user(retinfo, &tmp, sizeof(*retinfo))) + return -EFAULT; + return 0; } static int set_serial_info(struct SICC_info *info, - struct serial_struct *newinfo) + struct serial_struct *newinfo) { - struct serial_struct new_serial; - struct SICC_state *state, old_state; - struct SICC_port *port; - unsigned long new_port; - unsigned int i, change_irq, change_port; - int retval = 0; - - if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) - return -EFAULT; - - state = info->state; - old_state = *state; - port = info->port; - - new_port = new_serial.port; - if (HIGH_BITS_OFFSET) - new_port += (unsigned long) new_serial.port_high << HIGH_BITS_OFFSET; - - change_irq = new_serial.irq != port->irqrx; - change_port = new_port != port->uart_base; - - if (!capable(CAP_SYS_ADMIN)) { - if (change_irq || change_port || - (new_serial.baud_base != port->uartclk / 16) || - (new_serial.close_delay != state->close_delay) || - (new_serial.xmit_fifo_size != port->fifosize) || - ((new_serial.flags & ~ASYNC_USR_MASK) != - (state->flags & ~ASYNC_USR_MASK))) - return -EPERM; - state->flags = ((state->flags & ~ASYNC_USR_MASK) | - (new_serial.flags & ASYNC_USR_MASK)); - info->flags = ((info->flags & ~ASYNC_USR_MASK) | - (new_serial.flags & ASYNC_USR_MASK)); - state->custom_divisor = new_serial.custom_divisor; - goto check_and_exit; - } - - if ((new_serial.irq >= NR_IRQS) || (new_serial.irq < 0) || - (new_serial.baud_base < 9600)) - return -EINVAL; - - if (new_serial.type && change_port) { - for (i = 0; i < SERIAL_SICC_NR; i++) - if ((port != sicc_ports + i) && - sicc_ports[i].uart_base != new_port) - return -EADDRINUSE; - } - - if ((change_port || change_irq) && (state->count > 1)) - return -EBUSY; - - /* - * OK, past this point, all the error checking has been done. - * At this point, we start making changes..... - */ - port->uartclk = new_serial.baud_base * 16; - state->flags = ((state->flags & ~ASYNC_FLAGS) | - (new_serial.flags & ASYNC_FLAGS)); - info->flags = ((state->flags & ~ASYNC_INTERNAL_FLAGS) | - (info->flags & ASYNC_INTERNAL_FLAGS)); - state->custom_divisor = new_serial.custom_divisor; - state->close_delay = msecs_to_jiffies(10 * new_serial.close_delay); - state->closing_wait = msecs_to_jiffies(10 * new_serial.closing_wait); - info->tty->low_latency = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; - port->fifosize = new_serial.xmit_fifo_size; - - if (change_port || change_irq) { - /* - * We need to shutdown the serial port at the old - * port/irq combination. - */ - siccuart_shutdown(info); - port->irqrx = new_serial.irq; - port->uart_base = new_port; - } - -check_and_exit: - if (!port->uart_base) - return 0; - if (info->flags & ASYNC_INITIALIZED) { - if ((old_state.flags & ASYNC_SPD_MASK) != - (state->flags & ASYNC_SPD_MASK) || - (old_state.custom_divisor != state->custom_divisor)) { - if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) - info->tty->alt_speed = 57600; - if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) - info->tty->alt_speed = 115200; - if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI) - info->tty->alt_speed = 230400; - if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) - info->tty->alt_speed = 460800; - siccuart_change_speed(info, NULL); - } - } else - retval = siccuart_startup(info); - return retval; + struct serial_struct new_serial; + struct SICC_state *state, old_state; + struct SICC_port *port; + unsigned long new_port; + unsigned int i, change_irq, change_port; + int retval = 0; + + if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) + return -EFAULT; + + state = info->state; + old_state = *state; + port = info->port; + + new_port = new_serial.port; + if (HIGH_BITS_OFFSET) + new_port += + (unsigned long)new_serial.port_high << HIGH_BITS_OFFSET; + + change_irq = new_serial.irq != port->irqrx; + change_port = new_port != port->uart_base; + + if (!capable(CAP_SYS_ADMIN)) { + if (change_irq || change_port || + (new_serial.baud_base != port->uartclk / 16) || + (new_serial.close_delay != state->close_delay) || + (new_serial.xmit_fifo_size != port->fifosize) || + ((new_serial.flags & ~ASYNC_USR_MASK) != + (state->flags & ~ASYNC_USR_MASK))) + return -EPERM; + state->flags = ((state->flags & ~ASYNC_USR_MASK) | + (new_serial.flags & ASYNC_USR_MASK)); + info->flags = ((info->flags & ~ASYNC_USR_MASK) | + (new_serial.flags & ASYNC_USR_MASK)); + state->custom_divisor = new_serial.custom_divisor; + goto check_and_exit; + } + + if ((new_serial.irq >= NR_IRQS) || (new_serial.irq < 0) || + (new_serial.baud_base < 9600)) + return -EINVAL; + + if (new_serial.type && change_port) { + for (i = 0; i < SERIAL_SICC_NR; i++) + if ((port != sicc_ports + i) && + sicc_ports[i].uart_base != new_port) + return -EADDRINUSE; + } + + if ((change_port || change_irq) && (state->count > 1)) + return -EBUSY; + + /* + * OK, past this point, all the error checking has been done. + * At this point, we start making changes..... + */ + port->uartclk = new_serial.baud_base * 16; + state->flags = ((state->flags & ~ASYNC_FLAGS) | + (new_serial.flags & ASYNC_FLAGS)); + info->flags = ((state->flags & ~ASYNC_INTERNAL_FLAGS) | + (info->flags & ASYNC_INTERNAL_FLAGS)); + state->custom_divisor = new_serial.custom_divisor; + state->close_delay = msecs_to_jiffies(10 * new_serial.close_delay); + state->closing_wait = msecs_to_jiffies(10 * new_serial.closing_wait); + info->tty->low_latency = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; + port->fifosize = new_serial.xmit_fifo_size; + + if (change_port || change_irq) { + /* + * We need to shutdown the serial port at the old + * port/irq combination. + */ + siccuart_shutdown(info); + port->irqrx = new_serial.irq; + port->uart_base = new_port; + } + + check_and_exit: + if (!port->uart_base) + return 0; + if (info->flags & ASYNC_INITIALIZED) { + if ((old_state.flags & ASYNC_SPD_MASK) != + (state->flags & ASYNC_SPD_MASK) || + (old_state.custom_divisor != state->custom_divisor)) { + if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) + info->tty->alt_speed = 57600; + if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) + info->tty->alt_speed = 115200; + if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI) + info->tty->alt_speed = 230400; + if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) + info->tty->alt_speed = 460800; + siccuart_change_speed(info, NULL); + } + } else + retval = siccuart_startup(info); + return retval; } - /* * get_lsr_info - get line status register info */ static int get_lsr_info(struct SICC_info *info, unsigned int *value) { - unsigned int result, status; - unsigned long flags; + unsigned int result, status; + unsigned long flags; - /* disable interrupts while reading status from port */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - status = readb(info->port->uart_base + BL_SICC_LSR); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - result = status & _LSR_TSR_EMPTY ? TIOCSER_TEMT : 0; - - /* - * If we're about to load something into the transmit - * register, we'll pretend the transmitter isn't empty to - * avoid a race condition (depending on when the transmit - * interrupt happens). - */ - if (info->x_char || - ((CIRC_CNT(info->xmit.head, info->xmit.tail, - SICC_XMIT_SIZE) > 0) && - !info->tty->stopped && !info->tty->hw_stopped)) - result &= TIOCSER_TEMT; + /* disable interrupts while reading status from port */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + status = readb(info->port->uart_base + BL_SICC_LSR); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + result = status & _LSR_TSR_EMPTY ? TIOCSER_TEMT : 0; + + /* + * If we're about to load something into the transmit + * register, we'll pretend the transmitter isn't empty to + * avoid a race condition (depending on when the transmit + * interrupt happens). + */ + if (info->x_char || + ((CIRC_CNT(info->xmit.head, info->xmit.tail, + SICC_XMIT_SIZE) > 0) && + !info->tty->stopped && !info->tty->hw_stopped)) + result &= TIOCSER_TEMT; - return put_user(result, value); + return put_user(result, value); } static int get_modem_info(struct SICC_info *info, unsigned int *value) { - unsigned int result = info->mctrl; + unsigned int result = info->mctrl; - return put_user(result, value); + return put_user(result, value); } static int set_modem_info(struct SICC_info *info, unsigned int cmd, - unsigned int *value) + unsigned int *value) { - unsigned int arg, old; - unsigned long flags; + unsigned int arg, old; + unsigned long flags; - if (get_user(arg, value)) - return -EFAULT; + if (get_user(arg, value)) + return -EFAULT; - old = info->mctrl; - switch (cmd) { - case TIOCMBIS: - info->mctrl |= arg; - break; - - case TIOCMBIC: - info->mctrl &= ~arg; - break; - - case TIOCMSET: - info->mctrl = arg; - break; - - default: - return -EINVAL; - } - /* disable interrupts while setting modem control lines */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - if (old != info->mctrl) - info->port->set_mctrl(info->port, info->mctrl); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - return 0; + old = info->mctrl; + switch (cmd) { + case TIOCMBIS: + info->mctrl |= arg; + break; + + case TIOCMBIC: + info->mctrl &= ~arg; + break; + + case TIOCMSET: + info->mctrl = arg; + break; + + default: + return -EINVAL; + } + /* disable interrupts while setting modem control lines */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + if (old != info->mctrl) + info->port->set_mctrl(info->port, info->mctrl); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + return 0; } static void siccuart_break_ctl(struct tty_struct *tty, int break_state) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; - unsigned int lcr_h; - - - /* disable interrupts while setting break state */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - lcr_h = readb(info->port + BL_SICC_LSR); - if (break_state == -1) - lcr_h |= _LSR_LB_MASK; - else - lcr_h &= ~_LSR_LB_MASK; - writeb(lcr_h, info->port + BL_SICC_LSRS); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); + struct SICC_info *info = tty->driver_data; + unsigned long flags; + unsigned int lcr_h; + + /* disable interrupts while setting break state */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + lcr_h = readb(info->port + BL_SICC_LSR); + if (break_state == -1) + lcr_h |= _LSR_LB_MASK; + else + lcr_h &= ~_LSR_LB_MASK; + writeb(lcr_h, info->port + BL_SICC_LSRS); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); } static int siccuart_ioctl(struct tty_struct *tty, struct file *file, - unsigned int cmd, unsigned long arg) + unsigned int cmd, unsigned long arg) { - struct SICC_info *info = tty->driver_data; - struct SICC_icount cnow; - struct serial_icounter_struct icount; - unsigned long flags; - - if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) && - (cmd != TIOCSERCONFIG) && (cmd != TIOCSERGSTRUCT) && - (cmd != TIOCMIWAIT) && (cmd != TIOCGICOUNT)) { - if (tty->flags & (1 << TTY_IO_ERROR)) - return -EIO; - } - - switch (cmd) { - case TIOCMGET: - return get_modem_info(info, (unsigned int *)arg); - case TIOCMBIS: - case TIOCMBIC: - case TIOCMSET: - return set_modem_info(info, cmd, (unsigned int *)arg); - case TIOCGSERIAL: - return get_serial_info(info, - (struct serial_struct *)arg); - case TIOCSSERIAL: - return set_serial_info(info, - (struct serial_struct *)arg); - case TIOCSERGETLSR: /* Get line status register */ - return get_lsr_info(info, (unsigned int *)arg); - /* - * Wait for any of the 4 modem inputs (DCD,RI,DSR,CTS) to change - * - mask passed in arg for lines of interest - * (use |'ed TIOCM_RNG/DSR/CD/CTS for masking) - * Caller should use TIOCGICOUNT to see which one it was - */ - case TIOCMIWAIT: - return 0; - /* - * Get counter of input serial line interrupts (DCD,RI,DSR,CTS) - * Return: write counters to the user passed counter struct - * NB: both 1->0 and 0->1 transitions are counted except for - * RI where only 0->1 is counted. - */ - case TIOCGICOUNT: - /* disable interrupts while getting interrupt count */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - cnow = info->state->icount; - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - icount.cts = cnow.cts; - icount.dsr = cnow.dsr; - icount.rng = cnow.rng; - icount.dcd = cnow.dcd; - icount.rx = cnow.rx; - icount.tx = cnow.tx; - icount.frame = cnow.frame; - icount.overrun = cnow.overrun; - icount.parity = cnow.parity; - icount.brk = cnow.brk; - icount.buf_overrun = cnow.buf_overrun; - - return copy_to_user((void *)arg, &icount, sizeof(icount)) - ? -EFAULT : 0; - - default: - return -ENOIOCTLCMD; - } - return 0; -} - -static void siccuart_set_termios(struct tty_struct *tty, struct termios *old_termios) -{ - struct SICC_info *info = tty->driver_data; - unsigned long flags; - unsigned int cflag = tty->termios->c_cflag; - - if ((cflag ^ old_termios->c_cflag) == 0 && - RELEVENT_IFLAG(tty->termios->c_iflag ^ old_termios->c_iflag) == 0) - return; - - siccuart_change_speed(info, old_termios); - - /* Handle transition to B0 status */ - if ((old_termios->c_cflag & CBAUD) && - !(cflag & CBAUD)) { - /* disable interrupts while setting break state */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - info->mctrl &= ~(TIOCM_RTS | TIOCM_DTR); - info->port->set_mctrl(info->port, info->mctrl); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - } - - /* Handle transition away from B0 status */ - if (!(old_termios->c_cflag & CBAUD) && - (cflag & CBAUD)) { - /* disable interrupts while setting break state */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - info->mctrl |= TIOCM_DTR; - if (!(cflag & CRTSCTS) || - !test_bit(TTY_THROTTLED, &tty->flags)) - info->mctrl |= TIOCM_RTS; - info->port->set_mctrl(info->port, info->mctrl); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - } - - /* Handle turning off CRTSCTS */ - if ((old_termios->c_cflag & CRTSCTS) && - !(cflag & CRTSCTS)) { - tty->hw_stopped = 0; - siccuart_start(tty); - } - + struct SICC_info *info = tty->driver_data; + struct SICC_icount cnow; + struct serial_icounter_struct icount; + unsigned long flags; + + if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) && + (cmd != TIOCSERCONFIG) && (cmd != TIOCSERGSTRUCT) && + (cmd != TIOCMIWAIT) && (cmd != TIOCGICOUNT)) { + if (tty->flags & (1 << TTY_IO_ERROR)) + return -EIO; + } + + switch (cmd) { + case TIOCMGET: + return get_modem_info(info, (unsigned int *)arg); + case TIOCMBIS: + case TIOCMBIC: + case TIOCMSET: + return set_modem_info(info, cmd, (unsigned int *)arg); + case TIOCGSERIAL: + return get_serial_info(info, (struct serial_struct *)arg); + case TIOCSSERIAL: + return set_serial_info(info, (struct serial_struct *)arg); + case TIOCSERGETLSR: /* Get line status register */ + return get_lsr_info(info, (unsigned int *)arg); + /* + * Wait for any of the 4 modem inputs (DCD,RI,DSR,CTS) to change + * - mask passed in arg for lines of interest + * (use |'ed TIOCM_RNG/DSR/CD/CTS for masking) + * Caller should use TIOCGICOUNT to see which one it was + */ + case TIOCMIWAIT: + return 0; + /* + * Get counter of input serial line interrupts (DCD,RI,DSR,CTS) + * Return: write counters to the user passed counter struct + * NB: both 1->0 and 0->1 transitions are counted except for + * RI where only 0->1 is counted. + */ + case TIOCGICOUNT: + /* disable interrupts while getting interrupt count */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + cnow = info->state->icount; + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + icount.cts = cnow.cts; + icount.dsr = cnow.dsr; + icount.rng = cnow.rng; + icount.dcd = cnow.dcd; + icount.rx = cnow.rx; + icount.tx = cnow.tx; + icount.frame = cnow.frame; + icount.overrun = cnow.overrun; + icount.parity = cnow.parity; + icount.brk = cnow.brk; + icount.buf_overrun = cnow.buf_overrun; + + return copy_to_user((void *)arg, &icount, sizeof(icount)) + ? -EFAULT : 0; + + default: + return -ENOIOCTLCMD; + } + return 0; +} + +static void siccuart_set_termios(struct tty_struct *tty, + struct termios *old_termios) +{ + struct SICC_info *info = tty->driver_data; + unsigned long flags; + unsigned int cflag = tty->termios->c_cflag; + + if ((cflag ^ old_termios->c_cflag) == 0 && + RELEVENT_IFLAG(tty->termios->c_iflag ^ old_termios->c_iflag) == 0) + return; + + siccuart_change_speed(info, old_termios); + + /* Handle transition to B0 status */ + if ((old_termios->c_cflag & CBAUD) && !(cflag & CBAUD)) { + /* disable interrupts while setting break state */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + info->mctrl &= ~(TIOCM_RTS | TIOCM_DTR); + info->port->set_mctrl(info->port, info->mctrl); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + } + + /* Handle transition away from B0 status */ + if (!(old_termios->c_cflag & CBAUD) && (cflag & CBAUD)) { + /* disable interrupts while setting break state */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + info->mctrl |= TIOCM_DTR; + if (!(cflag & CRTSCTS) || !test_bit(TTY_THROTTLED, &tty->flags)) + info->mctrl |= TIOCM_RTS; + info->port->set_mctrl(info->port, info->mctrl); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + } + + /* Handle turning off CRTSCTS */ + if ((old_termios->c_cflag & CRTSCTS) && !(cflag & CRTSCTS)) { + tty->hw_stopped = 0; + siccuart_start(tty); + } #if 0 - /* - * No need to wake up processes in open wait, since they - * sample the CLOCAL flag once, and don't recheck it. - * XXX It's not clear whether the current behavior is correct - * or not. Hence, this may change..... - */ - if (!(old_termios->c_cflag & CLOCAL) && - (tty->termios->c_cflag & CLOCAL)) - wake_up_interruptible(&info->open_wait); + /* + * No need to wake up processes in open wait, since they + * sample the CLOCAL flag once, and don't recheck it. + * XXX It's not clear whether the current behavior is correct + * or not. Hence, this may change..... + */ + if (!(old_termios->c_cflag & CLOCAL) && + (tty->termios->c_cflag & CLOCAL)) + wake_up_interruptible(&info->open_wait); #endif } static void siccuart_close(struct tty_struct *tty, struct file *filp) { - struct SICC_info *info = tty->driver_data; - struct SICC_state *state; - unsigned long flags; - - if (!info) - return; - - state = info->state; - - //pr_debug("siccuart_close() called\n"); - - /* lock tty->driver_data while closing port */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - - if (tty_hung_up_p(filp)) { - goto quick_close; - } - - if ((tty->count == 1) && (state->count != 1)) { - /* - * Uh, oh. tty->count is 1, which means that the tty - * structure will be freed. state->count should always - * be one in these conditions. If it's greater than - * one, we've got real problems, since it means the - * serial port won't be shutdown. - */ - printk("siccuart_close: bad serial port count; tty->count is 1, state->count is %d\n", state->count); - state->count = 1; - } - if (--state->count < 0) { - printk("rs_close: bad serial port count for %s: %d\n", tty->name, state->count); - state->count = 0; - } - if (state->count) { - goto quick_close; - } - info->flags |= ASYNC_CLOSING; - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - /* - * Now we wait for the transmit buffer to clear; and we notify - * the line discipline to only process XON/XOFF characters. - */ - tty->closing = 1; - if (info->state->closing_wait != ASYNC_CLOSING_WAIT_NONE) - tty_wait_until_sent(tty, info->state->closing_wait); - /* - * At this point, we stop accepting input. To do this, we - * disable the receive line status interrupts. - */ - if (info->flags & ASYNC_INITIALIZED) { - siccuart_disable_rx_interrupt(info); - /* - * Before we drop DTR, make sure the UART transmitter - * has completely drained; this is especially - * important if there is a transmit FIFO! - */ - siccuart_wait_until_sent(tty, info->timeout); - } - siccuart_shutdown(info); - if (tty->driver->flush_buffer) - tty->driver->flush_buffer(tty); - if (tty->ldisc.flush_buffer) - tty->ldisc.flush_buffer(tty); - tty->closing = 0; - info->event = 0; - info->tty = NULL; - if (info->blocked_open) { - if (info->state->close_delay) - schedule_timeout_interruptible(info->state->close_delay); - wake_up_interruptible(&info->open_wait); - } - info->flags &= ~(ASYNC_NORMAL_ACTIVE|ASYNC_CLOSING); - wake_up_interruptible(&info->close_wait); - return; - -quick_close: - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - return; + struct SICC_info *info = tty->driver_data; + struct SICC_state *state; + unsigned long flags; + + if (!info) + return; + + state = info->state; + + //pr_debug("siccuart_close() called\n"); + + /* lock tty->driver_data while closing port */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + + if (tty_hung_up_p(filp)) { + goto quick_close; + } + + if ((tty->count == 1) && (state->count != 1)) { + /* + * Uh, oh. tty->count is 1, which means that the tty + * structure will be freed. state->count should always + * be one in these conditions. If it's greater than + * one, we've got real problems, since it means the + * serial port won't be shutdown. + */ + printk + ("siccuart_close: bad serial port count; tty->count is 1, state->count is %d\n", + state->count); + state->count = 1; + } + if (--state->count < 0) { + printk("rs_close: bad serial port count for %s: %d\n", + tty->name, state->count); + state->count = 0; + } + if (state->count) { + goto quick_close; + } + info->flags |= ASYNC_CLOSING; + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + /* + * Now we wait for the transmit buffer to clear; and we notify + * the line discipline to only process XON/XOFF characters. + */ + tty->closing = 1; + if (info->state->closing_wait != ASYNC_CLOSING_WAIT_NONE) + tty_wait_until_sent(tty, info->state->closing_wait); + /* + * At this point, we stop accepting input. To do this, we + * disable the receive line status interrupts. + */ + if (info->flags & ASYNC_INITIALIZED) { + siccuart_disable_rx_interrupt(info); + /* + * Before we drop DTR, make sure the UART transmitter + * has completely drained; this is especially + * important if there is a transmit FIFO! + */ + siccuart_wait_until_sent(tty, info->timeout); + } + siccuart_shutdown(info); + if (tty->driver->flush_buffer) + tty->driver->flush_buffer(tty); + if (tty->ldisc.flush_buffer) + tty->ldisc.flush_buffer(tty); + tty->closing = 0; + info->event = 0; + info->tty = NULL; + if (info->blocked_open) { + if (info->state->close_delay) + schedule_timeout_interruptible(info->state-> + close_delay); + wake_up_interruptible(&info->open_wait); + } + info->flags &= ~(ASYNC_NORMAL_ACTIVE | ASYNC_CLOSING); + wake_up_interruptible(&info->close_wait); + return; + + quick_close: + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + return; } static void siccuart_wait_until_sent(struct tty_struct *tty, int timeout) { - struct SICC_info *info = (struct SICC_info *) tty->driver_data; - unsigned long char_time, expire; + struct SICC_info *info = (struct SICC_info *)tty->driver_data; + unsigned long char_time, expire; - if (info->port->fifosize == 0) - return; + if (info->port->fifosize == 0) + return; - /* - * Set the check interval to be 1/5 of the estimated time to - * send a single character, and make it at least 1. The check - * interval should also be less than the timeout. - * - * Note: we have to use pretty tight timings here to satisfy - * the NIST-PCTS. - */ - char_time = (info->timeout - msecs_to_jiffies(20)) / info->port->fifosize; - char_time = char_time / 5; - if (char_time == 0) - char_time = 1; - - // Crazy!! sometimes the input arg 'timeout' can be negtive numbers :-( - if (timeout >= 0 && timeout < char_time) - char_time = timeout; - /* - * If the transmitter hasn't cleared in twice the approximate - * amount of time to send the entire FIFO, it probably won't - * ever clear. This assumes the UART isn't doing flow - * control, which is currently the case. Hence, if it ever - * takes longer than info->timeout, this is probably due to a - * UART bug of some kind. So, we clamp the timeout parameter at - * 2*info->timeout. - */ - if (!timeout || timeout > 2 * info->timeout) - timeout = 2 * info->timeout; - - expire = jiffies + timeout; - pr_debug("siccuart_wait_until_sent(%d), jiff=%lu, expire=%lu char_time=%lu...\n", - tty->index, jiffies, - expire, char_time); - while ((readb(info->port->uart_base + BL_SICC_LSR) & _LSR_TX_ALL) != _LSR_TX_ALL) { - schedule_timeout_interruptible(char_time); - if (signal_pending(current)) - break; - if (timeout && time_after(jiffies, expire)) - break; - } - set_current_state(TASK_RUNNING); + /* + * Set the check interval to be 1/5 of the estimated time to + * send a single character, and make it at least 1. The check + * interval should also be less than the timeout. + * + * Note: we have to use pretty tight timings here to satisfy + * the NIST-PCTS. + */ + char_time = + (info->timeout - msecs_to_jiffies(20)) / info->port->fifosize; + char_time = char_time / 5; + if (char_time == 0) + char_time = 1; + + // Crazy!! sometimes the input arg 'timeout' can be negtive numbers :-( + if (timeout >= 0 && timeout < char_time) + char_time = timeout; + /* + * If the transmitter hasn't cleared in twice the approximate + * amount of time to send the entire FIFO, it probably won't + * ever clear. This assumes the UART isn't doing flow + * control, which is currently the case. Hence, if it ever + * takes longer than info->timeout, this is probably due to a + * UART bug of some kind. So, we clamp the timeout parameter at + * 2*info->timeout. + */ + if (!timeout || timeout > 2 * info->timeout) + timeout = 2 * info->timeout; + + expire = jiffies + timeout; + pr_debug + ("siccuart_wait_until_sent(%d), jiff=%lu, expire=%lu char_time=%lu...\n", + tty->index, jiffies, expire, char_time); + while ((readb(info->port->uart_base + BL_SICC_LSR) & _LSR_TX_ALL) != + _LSR_TX_ALL) { + schedule_timeout_interruptible(char_time); + if (signal_pending(current)) + break; + if (timeout && time_after(jiffies, expire)) + break; + } + set_current_state(TASK_RUNNING); } static void siccuart_hangup(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - struct SICC_state *state = info->state; + struct SICC_info *info = tty->driver_data; + struct SICC_state *state = info->state; - siccuart_flush_buffer(tty); - if (info->flags & ASYNC_CLOSING) - return; - siccuart_shutdown(info); - info->event = 0; - state->count = 0; - info->flags &= ~ASYNC_NORMAL_ACTIVE; - info->tty = NULL; - wake_up_interruptible(&info->open_wait); + siccuart_flush_buffer(tty); + if (info->flags & ASYNC_CLOSING) + return; + siccuart_shutdown(info); + info->event = 0; + state->count = 0; + info->flags &= ~ASYNC_NORMAL_ACTIVE; + info->tty = NULL; + wake_up_interruptible(&info->open_wait); } static int block_til_ready(struct tty_struct *tty, struct file *filp, - struct SICC_info *info) + struct SICC_info *info) { - DECLARE_WAITQUEUE(wait, current); - struct SICC_state *state = info->state; - unsigned long flags; - int do_clocal = 0, extra_count = 0, retval; - - /* - * If the device is in the middle of being closed, then block - * until it's done, and then try again. - */ - if (tty_hung_up_p(filp) || - (info->flags & ASYNC_CLOSING)) { - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); - return (info->flags & ASYNC_HUP_NOTIFY) ? - -EAGAIN : -ERESTARTSYS; - } - - /* - * If non-blocking mode is set, or the port is not enabled, - * then make the check up front and then exit. - */ - if ((filp->f_flags & O_NONBLOCK) || - (tty->flags & (1 << TTY_IO_ERROR))) { - info->flags |= ASYNC_NORMAL_ACTIVE; - return 0; - } - - if (tty->termios->c_cflag & CLOCAL) - do_clocal = 1; - - /* - * Block waiting for the carrier detect and the line to become - * free (i.e., not in use by the callout). While we are in - * this loop, state->count is dropped by one, so that - * rs_close() knows when to free things. We restore it upon - * exit, either normal or abnormal. - */ - retval = 0; - add_wait_queue(&info->open_wait, &wait); - /* lock while decrementing state->count */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - if (!tty_hung_up_p(filp)) { - extra_count = 1; - state->count--; - } - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - info->blocked_open++; - while (1) { - /* disable interrupts while setting modem control lines */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - if (tty->termios->c_cflag & CBAUD) { - info->mctrl = TIOCM_DTR | TIOCM_RTS; - info->port->set_mctrl(info->port, info->mctrl); - } - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - set_current_state(TASK_INTERRUPTIBLE); - if (tty_hung_up_p(filp) || - !(info->flags & ASYNC_INITIALIZED)) { - if (info->flags & ASYNC_HUP_NOTIFY) - retval = -EAGAIN; - else - retval = -ERESTARTSYS; - break; - } - if (!(info->flags & ASYNC_CLOSING) && - (do_clocal /*|| (UART_GET_FR(info->port) & SICC_UARTFR_DCD)*/)) - break; - if (signal_pending(current)) { - retval = -ERESTARTSYS; - break; - } - schedule(); - } - set_current_state(TASK_RUNNING); - remove_wait_queue(&info->open_wait, &wait); - if (extra_count) - state->count++; - info->blocked_open--; - if (retval) - return retval; - info->flags |= ASYNC_NORMAL_ACTIVE; - return 0; + DECLARE_WAITQUEUE(wait, current); + struct SICC_state *state = info->state; + unsigned long flags; + int do_clocal = 0, extra_count = 0, retval; + + /* + * If the device is in the middle of being closed, then block + * until it's done, and then try again. + */ + if (tty_hung_up_p(filp) || (info->flags & ASYNC_CLOSING)) { + if (info->flags & ASYNC_CLOSING) + interruptible_sleep_on(&info->close_wait); + return (info->flags & ASYNC_HUP_NOTIFY) ? + -EAGAIN : -ERESTARTSYS; + } + + /* + * If non-blocking mode is set, or the port is not enabled, + * then make the check up front and then exit. + */ + if ((filp->f_flags & O_NONBLOCK) || (tty->flags & (1 << TTY_IO_ERROR))) { + info->flags |= ASYNC_NORMAL_ACTIVE; + return 0; + } + + if (tty->termios->c_cflag & CLOCAL) + do_clocal = 1; + + /* + * Block waiting for the carrier detect and the line to become + * free (i.e., not in use by the callout). While we are in + * this loop, state->count is dropped by one, so that + * rs_close() knows when to free things. We restore it upon + * exit, either normal or abnormal. + */ + retval = 0; + add_wait_queue(&info->open_wait, &wait); + /* lock while decrementing state->count */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + if (!tty_hung_up_p(filp)) { + extra_count = 1; + state->count--; + } + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + info->blocked_open++; + while (1) { + /* disable interrupts while setting modem control lines */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + if (tty->termios->c_cflag & CBAUD) { + info->mctrl = TIOCM_DTR | TIOCM_RTS; + info->port->set_mctrl(info->port, info->mctrl); + } + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + set_current_state(TASK_INTERRUPTIBLE); + if (tty_hung_up_p(filp) || !(info->flags & ASYNC_INITIALIZED)) { + if (info->flags & ASYNC_HUP_NOTIFY) + retval = -EAGAIN; + else + retval = -ERESTARTSYS; + break; + } + if (!(info->flags & ASYNC_CLOSING) && + (do_clocal + /*|| (UART_GET_FR(info->port) & SICC_UARTFR_DCD) */ )) + break; + if (signal_pending(current)) { + retval = -ERESTARTSYS; + break; + } + schedule(); + } + set_current_state(TASK_RUNNING); + remove_wait_queue(&info->open_wait, &wait); + if (extra_count) + state->count++; + info->blocked_open--; + if (retval) + return retval; + info->flags |= ASYNC_NORMAL_ACTIVE; + return 0; } static struct SICC_info *siccuart_get(int line) { - struct SICC_info *info; - struct SICC_state *state = sicc_state + line; + struct SICC_info *info; + struct SICC_state *state = sicc_state + line; - state->count++; - if (state->info) - return state->info; - info = kmalloc(sizeof(struct SICC_info), GFP_KERNEL); - if (info) { - memset(info, 0, sizeof(struct SICC_info)); - init_waitqueue_head(&info->open_wait); - init_waitqueue_head(&info->close_wait); - init_waitqueue_head(&info->delta_msr_wait); - info->flags = state->flags; - info->state = state; - info->port = sicc_ports + line; - tasklet_init(&info->tlet, siccuart_tasklet_action, - (unsigned long)info); - } - if (state->info) { - kfree(info); - return state->info; - } - state->info = info; - return info; + state->count++; + if (state->info) + return state->info; + info = kmalloc(sizeof(struct SICC_info), GFP_KERNEL); + if (info) { + memset(info, 0, sizeof(struct SICC_info)); + init_waitqueue_head(&info->open_wait); + init_waitqueue_head(&info->close_wait); + init_waitqueue_head(&info->delta_msr_wait); + info->flags = state->flags; + info->state = state; + info->port = sicc_ports + line; + tasklet_init(&info->tlet, siccuart_tasklet_action, + (unsigned long)info); + } + if (state->info) { + kfree(info); + return state->info; + } + state->info = info; + return info; } static int siccuart_open(struct tty_struct *tty, struct file *filp) { - struct SICC_info *info; - int retval, line = tty->index; - - - // is this a line that we've got? - if (line >= SERIAL_SICC_NR) { - return -ENODEV; - } - - info = siccuart_get(line); - if (!info) - return -ENOMEM; - - tty->driver_data = info; - info->tty = tty; - info->tty->low_latency = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; - - /* - * Make sure we have the temporary buffer allocated - */ - if (!tmp_buf) { - unsigned long page = get_zeroed_page(GFP_KERNEL); - if (tmp_buf) - free_page(page); - else if (!page) { - return -ENOMEM; - } - tmp_buf = (u_char *)page; - } - - /* - * If the port is in the middle of closing, bail out now. - */ - if (tty_hung_up_p(filp) || - (info->flags & ASYNC_CLOSING)) { - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); - return -EAGAIN; - } - - /* - * Start up the serial port - */ - retval = siccuart_startup(info); - if (retval) { - return retval; - } - - retval = block_til_ready(tty, filp, info); - if (retval) { - return retval; - } + struct SICC_info *info; + int retval, line = tty->index; + // is this a line that we've got? + if (line >= SERIAL_SICC_NR) { + return -ENODEV; + } + + info = siccuart_get(line); + if (!info) + return -ENOMEM; + + tty->driver_data = info; + info->tty = tty; + info->tty->low_latency = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; + + /* + * Make sure we have the temporary buffer allocated + */ + if (!tmp_buf) { + unsigned long page = get_zeroed_page(GFP_KERNEL); + if (tmp_buf) + free_page(page); + else if (!page) { + return -ENOMEM; + } + tmp_buf = (u_char *) page; + } + + /* + * If the port is in the middle of closing, bail out now. + */ + if (tty_hung_up_p(filp) || (info->flags & ASYNC_CLOSING)) { + if (info->flags & ASYNC_CLOSING) + interruptible_sleep_on(&info->close_wait); + return -EAGAIN; + } + + /* + * Start up the serial port + */ + retval = siccuart_startup(info); + if (retval) { + return retval; + } + + retval = block_til_ready(tty, filp, info); + if (retval) { + return retval; + } #ifdef CONFIG_SERIAL_SICC_CONSOLE - if (siccuart_cons.cflag && siccuart_cons.index == line) { - tty->termios->c_cflag = siccuart_cons.cflag; - siccuart_cons.cflag = 0; - siccuart_change_speed(info, NULL); - } + if (siccuart_cons.cflag && siccuart_cons.index == line) { + tty->termios->c_cflag = siccuart_cons.cflag; + siccuart_cons.cflag = 0; + siccuart_change_speed(info, NULL); + } #endif - return 0; + return 0; } static struct tty_operations sicc_ops = { @@ -1732,7 +1710,7 @@ static struct tty_operations sicc_ops = .flush_chars = siccuart_flush_chars, .write_room = siccuart_write_room, .chars_in_buffer = siccuart_chars_in_buffer, - .flush_buffer = siccuart_flush_buffer, + .flush_buffer = siccuart_flush_buffer, .ioctl = siccuart_ioctl, .throttle = siccuart_throttle, .unthrottle = siccuart_unthrottle, @@ -1747,36 +1725,37 @@ static struct tty_operations sicc_ops = int __init siccuart_init(void) { - int i; - siccnormal_driver = alloc_tty_driver(SERIAL_SICC_NR); - if (!siccnormal_driver) - return -ENOMEM; - printk("IBM Vesta SICC serial port driver V 0.1 by Yudong Yang and Yi Ge / IBM CRL .\n"); - siccnormal_driver->driver_name = "serial_sicc"; - siccnormal_driver->owner = THIS_MODULE; - siccnormal_driver->name = SERIAL_SICC_NAME; - siccnormal_driver->major = SERIAL_SICC_MAJOR; - siccnormal_driver->minor_start = SERIAL_SICC_MINOR; - siccnormal_driver->type = TTY_DRIVER_TYPE_SERIAL; - siccnormal_driver->subtype = SERIAL_TYPE_NORMAL; - siccnormal_driver->init_termios = tty_std_termios; - siccnormal_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; - siccnormal_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; - tty_set_operations(siccnormal_driver, &sicc_ops); - - if (tty_register_driver(siccnormal_driver)) - panic("Couldn't register SICC serial driver\n"); - - for (i = 0; i < SERIAL_SICC_NR; i++) { - struct SICC_state *state = sicc_state + i; - state->line = i; - state->close_delay = msecs_to_jiffies(500); - state->closing_wait = 30 * HZ; - spin_lock_init(&state->sicc_lock); - } - + int i; + siccnormal_driver = alloc_tty_driver(SERIAL_SICC_NR); + if (!siccnormal_driver) + return -ENOMEM; + printk + ("IBM Vesta SICC serial port driver V 0.1 by Yudong Yang and Yi Ge / IBM CRL .\n"); + siccnormal_driver->driver_name = "serial_sicc"; + siccnormal_driver->owner = THIS_MODULE; + siccnormal_driver->name = SERIAL_SICC_NAME; + siccnormal_driver->major = SERIAL_SICC_MAJOR; + siccnormal_driver->minor_start = SERIAL_SICC_MINOR; + siccnormal_driver->type = TTY_DRIVER_TYPE_SERIAL; + siccnormal_driver->subtype = SERIAL_TYPE_NORMAL; + siccnormal_driver->init_termios = tty_std_termios; + siccnormal_driver->init_termios.c_cflag = + B9600 | CS8 | CREAD | HUPCL | CLOCAL; + siccnormal_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; + tty_set_operations(siccnormal_driver, &sicc_ops); + + if (tty_register_driver(siccnormal_driver)) + panic("Couldn't register SICC serial driver\n"); + + for (i = 0; i < SERIAL_SICC_NR; i++) { + struct SICC_state *state = sicc_state + i; + state->line = i; + state->close_delay = msecs_to_jiffies(500); + state->closing_wait = 30 * HZ; + spin_lock_init(&state->sicc_lock); + } - return 0; + return 0; } __initcall(siccuart_init); @@ -1793,26 +1772,26 @@ __initcall(siccuart_init); #ifdef used_and_not_const_char_pointer static int siccuart_console_read(struct console *co, const char *s, u_int count) { - struct SICC_port *port = &sicc_ports[co->index]; - unsigned int status; - char *w; - int c; - - pr_debug("siccuart_console_read() called\n"); - - c = 0; - w = s; - while (c < count) { - if(readb(port->uart_base + BL_SICC_LSR) & _LSR_RBR_FULL) { - *w++ = readb(port->uart_base + BL_SICC_RBR); - c++; - } else { - // nothing more to get, return - return c; - } - } - // return the count - return c; + struct SICC_port *port = &sicc_ports[co->index]; + unsigned int status; + char *w; + int c; + + pr_debug("siccuart_console_read() called\n"); + + c = 0; + w = s; + while (c < count) { + if (readb(port->uart_base + BL_SICC_LSR) & _LSR_RBR_FULL) { + *w++ = readb(port->uart_base + BL_SICC_RBR); + c++; + } else { + // nothing more to get, return + return c; + } + } + // return the count + return c; } #endif @@ -1822,36 +1801,40 @@ static int siccuart_console_read(struct * * The console_lock must be held when we get here. */ -static void siccuart_console_write(struct console *co, const char *s, u_int count) +static void siccuart_console_write(struct console *co, const char *s, + u_int count) { - struct SICC_port *port = &sicc_ports[co->index]; - unsigned int old_cr; - int i; - - /* - * First save the CR then disable the interrupts - */ - old_cr = readb(port->uart_base + BL_SICC_TxCR); - writeb(old_cr & ~_TxCR_DME_MASK, port->uart_base + BL_SICC_TxCR); - - /* - * Now, do each character - */ - for (i = 0; i < count; i++) { - while ((readb(port->uart_base + BL_SICC_LSR)&_LSR_TX_ALL) != _LSR_TX_ALL); - writeb(s[i], port->uart_base + BL_SICC_TBR); - if (s[i] == '\n') { - while ((readb(port->uart_base + BL_SICC_LSR)&_LSR_TX_ALL) != _LSR_TX_ALL); - writeb('\r', port->uart_base + BL_SICC_TBR); - } - } - - /* - * Finally, wait for transmitter to become empty - * and restore the TCR - */ - while ((readb(port->uart_base + BL_SICC_LSR)&_LSR_TX_ALL) != _LSR_TX_ALL); - writeb(old_cr, port->uart_base + BL_SICC_TxCR); + struct SICC_port *port = &sicc_ports[co->index]; + unsigned int old_cr; + int i; + + /* + * First save the CR then disable the interrupts + */ + old_cr = readb(port->uart_base + BL_SICC_TxCR); + writeb(old_cr & ~_TxCR_DME_MASK, port->uart_base + BL_SICC_TxCR); + + /* + * Now, do each character + */ + for (i = 0; i < count; i++) { + while ((readb(port->uart_base + BL_SICC_LSR) & _LSR_TX_ALL) != + _LSR_TX_ALL) ; + writeb(s[i], port->uart_base + BL_SICC_TBR); + if (s[i] == '\n') { + while ((readb(port->uart_base + BL_SICC_LSR) & + _LSR_TX_ALL) != _LSR_TX_ALL) ; + writeb('\r', port->uart_base + BL_SICC_TBR); + } + } + + /* + * Finally, wait for transmitter to become empty + * and restore the TCR + */ + while ((readb(port->uart_base + BL_SICC_LSR) & _LSR_TX_ALL) != + _LSR_TX_ALL) ; + writeb(old_cr, port->uart_base + BL_SICC_TxCR); } /* @@ -1859,12 +1842,12 @@ static void siccuart_console_write(struc */ static int siccuart_console_wait_key(struct console *co) { - struct SICC_port *port = &sicc_ports[co->index]; - int c; + struct SICC_port *port = &sicc_ports[co->index]; + int c; - while(!(readb(port->uart_base + BL_SICC_LSR) & _LSR_RBR_FULL)); - c = readb(port->uart_base + BL_SICC_RBR); - return c; + while (!(readb(port->uart_base + BL_SICC_LSR) & _LSR_RBR_FULL)) ; + c = readb(port->uart_base + BL_SICC_RBR); + return c; } static struct tty_driver *siccuart_console_device(struct console *c, int *index) @@ -1875,135 +1858,164 @@ static struct tty_driver *siccuart_conso static int __init siccuart_console_setup(struct console *co, char *options) { - struct SICC_port *port; - int baud = 9600; - int bits = 8; - int parity = 'n'; - u_int cflag = CREAD | HUPCL | CLOCAL; - u_int lcr_h, quot; - - - if (co->index >= SERIAL_SICC_NR) - co->index = 0; - - port = &sicc_ports[co->index]; - - if (port->uart_base == 0) - port->uart_base = (int)ioremap(port->uart_base_phys, PAGE_SIZE); - - if (options) { - char *s = options; - baud = simple_strtoul(s, NULL, 10); - while (*s >= '0' && *s <= '9') - s++; - if (*s) parity = *s++; - if (*s) bits = *s - '0'; - } - - /* - * Now construct a cflag setting. - */ - switch (baud) { - case 1200: cflag |= B1200; break; - case 2400: cflag |= B2400; break; - case 4800: cflag |= B4800; break; - default: cflag |= B9600; baud = 9600; break; - case 19200: cflag |= B19200; break; - case 38400: cflag |= B38400; break; - case 57600: cflag |= B57600; break; - case 115200: cflag |= B115200; break; - } - switch (bits) { - case 7: cflag |= CS7; lcr_h = _LCR_PE_DISABLE | _LCR_DB_7_BITS | _LCR_SB_1_BIT; break; - default: cflag |= CS8; lcr_h = _LCR_PE_DISABLE | _LCR_DB_8_BITS | _LCR_SB_1_BIT; break; - } - switch (parity) { - case 'o': - case 'O': cflag |= PARODD; lcr_h |= _LCR_PTY_ODD; break; - case 'e': - case 'E': cflag |= PARENB; lcr_h |= _LCR_PE_ENABLE | _LCR_PTY_ODD; break; - } - - co->cflag = cflag; - - - { - // a copy of is inserted here ppc403SetBaud(com_port, (int)9600); - unsigned long divisor, clockSource, temp; - unsigned int rate = baud; - - /* Ensure CICCR[7] is 0 to select Internal Baud Clock */ - powerpcMtcic_cr((unsigned long)(powerpcMfcic_cr() & 0xFEFFFFFF)); - - /* Determine Internal Baud Clock Frequency */ - /* powerpcMfclkgpcr() reads DCR 0x120 - the*/ - /* SCCR (Serial Clock Control Register) on Vesta */ - temp = powerpcMfclkgpcr(); - - if(temp & 0x00000080) { - clockSource = 324000000; - } - else { - clockSource = 216000000; - } - clockSource = clockSource/(unsigned long)((temp&0x00FC0000)>>18); - divisor = clockSource/(16*rate) - 1; - /* divisor has only 12 bits of resolution */ - if(divisor>0x00000FFF){ - divisor=0x00000FFF; - } - - quot = divisor; - } - - writeb((quot & 0x00000F00)>>8, port->uart_base + BL_SICC_BRDH ); - writeb( quot & 0x00000FF, port->uart_base + BL_SICC_BRDL ); - - /* Set CTL2 reg to use external clock (ExtClk) and enable FIFOs. */ - /* For now, do NOT use FIFOs since 403 UART did not have this */ - /* capability and this driver was inherited from 403UART. */ - writeb(_CTL2_EXTERN, port->uart_base + BL_SICC_CTL2); - - writeb(lcr_h, port->uart_base + BL_SICC_LCR); - writeb(_RCR_ER_ENABLE | _RCR_PME_HARD, port->uart_base + BL_SICC_RCR); - writeb( _TxCR_ET_ENABLE , port->uart_base + BL_SICC_TxCR); - - // writeb(, info->port->uart_base + BL_SICC_RCR ); - /* - * Transmitter Command Register: Transmitter enabled & DMA + TBR interrupt - * + Transmitter Empty interrupt + Transmitter error interrupt disabled & - * Stop mode when CTS active enabled & Transmit Break + Pattern Generation - * mode disabled. - */ - - writeb( 0x00, port->uart_base + BL_SICC_IrCR ); // disable IrDA - - readb(port->uart_base + BL_SICC_RBR); - - writeb(0xf8, port->uart_base + BL_SICC_LSR); /* reset bits 0-4 of LSR */ - - /* we will enable the port as we need it */ - - return 0; -} - -static struct console siccuart_cons = -{ - .name = SERIAL_SICC_NAME, - .write = siccuart_console_write, + struct SICC_port *port; + int baud = 9600; + int bits = 8; + int parity = 'n'; + u_int cflag = CREAD | HUPCL | CLOCAL; + u_int lcr_h, quot; + + if (co->index >= SERIAL_SICC_NR) + co->index = 0; + + port = &sicc_ports[co->index]; + + if (port->uart_base == 0) + port->uart_base = (int)ioremap(port->uart_base_phys, PAGE_SIZE); + + if (options) { + char *s = options; + baud = simple_strtoul(s, NULL, 10); + while (*s >= '0' && *s <= '9') + s++; + if (*s) + parity = *s++; + if (*s) + bits = *s - '0'; + } + + /* + * Now construct a cflag setting. + */ + switch (baud) { + case 1200: + cflag |= B1200; + break; + case 2400: + cflag |= B2400; + break; + case 4800: + cflag |= B4800; + break; + default: + cflag |= B9600; + baud = 9600; + break; + case 19200: + cflag |= B19200; + break; + case 38400: + cflag |= B38400; + break; + case 57600: + cflag |= B57600; + break; + case 115200: + cflag |= B115200; + break; + } + switch (bits) { + case 7: + cflag |= CS7; + lcr_h = _LCR_PE_DISABLE | _LCR_DB_7_BITS | _LCR_SB_1_BIT; + break; + default: + cflag |= CS8; + lcr_h = _LCR_PE_DISABLE | _LCR_DB_8_BITS | _LCR_SB_1_BIT; + break; + } + switch (parity) { + case 'o': + case 'O': + cflag |= PARODD; + lcr_h |= _LCR_PTY_ODD; + break; + case 'e': + case 'E': + cflag |= PARENB; + lcr_h |= _LCR_PE_ENABLE | _LCR_PTY_ODD; + break; + } + + co->cflag = cflag; + + { + // a copy of is inserted here ppc403SetBaud(com_port, (int)9600); + unsigned long divisor, clockSource, temp; + unsigned int rate = baud; + + /* Ensure CICCR[7] is 0 to select Internal Baud Clock */ + powerpcMtcic_cr((unsigned long)(powerpcMfcic_cr() & + 0xFEFFFFFF)); + + /* Determine Internal Baud Clock Frequency */ + /* powerpcMfclkgpcr() reads DCR 0x120 - the */ + /* SCCR (Serial Clock Control Register) on Vesta */ + temp = powerpcMfclkgpcr(); + + if (temp & 0x00000080) { + clockSource = 324000000; + } else { + clockSource = 216000000; + } + clockSource = + clockSource / (unsigned long)((temp & 0x00FC0000) >> 18); + divisor = clockSource / (16 * rate) - 1; + /* divisor has only 12 bits of resolution */ + if (divisor > 0x00000FFF) { + divisor = 0x00000FFF; + } + + quot = divisor; + } + + writeb((quot & 0x00000F00) >> 8, port->uart_base + BL_SICC_BRDH); + writeb(quot & 0x00000FF, port->uart_base + BL_SICC_BRDL); + + /* Set CTL2 reg to use external clock (ExtClk) and enable FIFOs. */ + /* For now, do NOT use FIFOs since 403 UART did not have this */ + /* capability and this driver was inherited from 403UART. */ + writeb(_CTL2_EXTERN, port->uart_base + BL_SICC_CTL2); + + writeb(lcr_h, port->uart_base + BL_SICC_LCR); + writeb(_RCR_ER_ENABLE | _RCR_PME_HARD, port->uart_base + BL_SICC_RCR); + writeb(_TxCR_ET_ENABLE, port->uart_base + BL_SICC_TxCR); + + // writeb(, info->port->uart_base + BL_SICC_RCR ); + /* + * Transmitter Command Register: Transmitter enabled & DMA + TBR interrupt + * + Transmitter Empty interrupt + Transmitter error interrupt disabled & + * Stop mode when CTS active enabled & Transmit Break + Pattern Generation + * mode disabled. + */ + + writeb(0x00, port->uart_base + BL_SICC_IrCR); // disable IrDA + + readb(port->uart_base + BL_SICC_RBR); + + writeb(0xf8, port->uart_base + BL_SICC_LSR); /* reset bits 0-4 of LSR */ + + /* we will enable the port as we need it */ + + return 0; +} + +static struct console siccuart_cons = { + .name = SERIAL_SICC_NAME, + .write = siccuart_console_write, #ifdef used_and_not_const_char_pointer - .read = siccuart_console_read, + .read = siccuart_console_read, #endif - .device = siccuart_console_device, - .wait_key = siccuart_console_wait_key, - .setup = siccuart_console_setup, - .flags = CON_PRINTBUFFER, - .index = -1, + .device = siccuart_console_device, + .wait_key = siccuart_console_wait_key, + .setup = siccuart_console_setup, + .flags = CON_PRINTBUFFER, + .index = -1, }; void __init sicc_console_init(void) { - register_console(&siccuart_cons); + register_console(&siccuart_cons); } -#endif /* CONFIG_SERIAL_SICC_CONSOLE */ +#endif /* CONFIG_SERIAL_SICC_CONSOLE */ --- a/arch/ppc/8260_io/fcc_enet.c +++ b/arch/ppc/8260_io/fcc_enet.c @@ -1305,11 +1305,9 @@ static void mii_parse_dm9161_scsr(uint m static void mii_dm9161_wait(uint mii_reg, struct net_device *dev) { - int timeout = HZ; - /* Davicom takes a bit to come up after a reset, * so wait here for a bit */ - schedule_timeout_uninterruptible(timeout); + ssleep(1); } static phy_info_t phy_info_dm9161 = { --- a/arch/ppc/8xx_io/cs4218_tdm.c +++ b/arch/ppc/8xx_io/cs4218_tdm.c @@ -126,11 +126,11 @@ static int numReadBufs = 4, readbufSize */ static volatile cbd_t *rx_base, *rx_cur, *tx_base, *tx_cur; -MODULE_PARM(catchRadius, "i"); -MODULE_PARM(numBufs, "i"); -MODULE_PARM(bufSize, "i"); -MODULE_PARM(numreadBufs, "i"); -MODULE_PARM(readbufSize, "i"); +module_param(catchRadius, int, 0); +module_param(numBufs, int, 0); +module_param(bufSize, int, 0); +module_param(numreadBufs, int, 0); +module_param(readbufSize, int, 0); #define arraysize(x) (sizeof(x)/sizeof(*(x))) #define le2be16(x) (((x)<<8 & 0xff00) | ((x)>>8 & 0x00ff)) --- a/arch/ppc/boot/common/misc-common.c +++ b/arch/ppc/boot/common/misc-common.c @@ -280,7 +280,7 @@ puthex(unsigned long val) int i; for (i = 7; i >= 0; i--) { - buf[i] = "0123456789ABCDEF"[val & 0x0F]; + buf[i] = large_digits[val & 0x0F]; val >>= 4; } buf[8] = '\0'; @@ -362,13 +362,13 @@ _vprintk(void(*putc)(const char), const sign = '-'; val = -val; } - length = _cvt(val, buf, 10, "0123456789"); + length = _cvt(val, buf, 10, small_digits); break; case 'x': - length = _cvt(val, buf, 16, "0123456789abcdef"); + length = _cvt(val, buf, 16, small_digits); break; case 'X': - length = _cvt(val, buf, 16, "0123456789ABCDEF"); + length = _cvt(val, buf, 16, large_digits); break; } cp = buf; @@ -450,7 +450,7 @@ _cvt(unsigned long val, char *buf, long } else while (val) { - *cp++ = digits[val % radix]; + *cp++ = small_digits[val % radix]; val /= radix; } while (cp != temp) --- a/arch/ppc/kernel/ppc-stub.c +++ b/arch/ppc/kernel/ppc-stub.c @@ -132,7 +132,6 @@ static u_int fault_jmp_buf[100]; static int kdebug; -static const char hexchars[]="0123456789abcdef"; /* Place where we save old trap entries for restoration - sparc*/ /* struct tt_entry kgdb_savettable[256]; */ @@ -206,28 +205,28 @@ mem2hex(const char *mem, char *buf, int if ((count == 2) && (((long)mem & 1) == 0)) { tmp_s = *(unsigned short *)mem; mem += 2; - *buf++ = hexchars[(tmp_s >> 12) & 0xf]; - *buf++ = hexchars[(tmp_s >> 8) & 0xf]; - *buf++ = hexchars[(tmp_s >> 4) & 0xf]; - *buf++ = hexchars[tmp_s & 0xf]; + *buf++ = small_digits[(tmp_s >> 12) & 0xf]; + *buf++ = small_digits[(tmp_s >> 8) & 0xf]; + *buf++ = small_digits[(tmp_s >> 4) & 0xf]; + *buf++ = small_digits[tmp_s & 0xf]; } else if ((count == 4) && (((long)mem & 3) == 0)) { tmp_l = *(unsigned int *)mem; mem += 4; - *buf++ = hexchars[(tmp_l >> 28) & 0xf]; - *buf++ = hexchars[(tmp_l >> 24) & 0xf]; - *buf++ = hexchars[(tmp_l >> 20) & 0xf]; - *buf++ = hexchars[(tmp_l >> 16) & 0xf]; - *buf++ = hexchars[(tmp_l >> 12) & 0xf]; - *buf++ = hexchars[(tmp_l >> 8) & 0xf]; - *buf++ = hexchars[(tmp_l >> 4) & 0xf]; - *buf++ = hexchars[tmp_l & 0xf]; + *buf++ = small_digits[(tmp_l >> 28) & 0xf]; + *buf++ = small_digits[(tmp_l >> 24) & 0xf]; + *buf++ = small_digits[(tmp_l >> 20) & 0xf]; + *buf++ = small_digits[(tmp_l >> 16) & 0xf]; + *buf++ = small_digits[(tmp_l >> 12) & 0xf]; + *buf++ = small_digits[(tmp_l >> 8) & 0xf]; + *buf++ = small_digits[(tmp_l >> 4) & 0xf]; + *buf++ = small_digits[tmp_l & 0xf]; } else { while (count-- > 0) { ch = *mem++; - *buf++ = hexchars[ch >> 4]; - *buf++ = hexchars[ch & 0xf]; + *buf++ = small_digits[ch >> 4]; + *buf++ = small_digits[ch & 0xf]; } } @@ -412,8 +411,8 @@ static void putpacket(unsigned char *buf } putDebugChar('#'); - putDebugChar(hexchars[checksum >> 4]); - putDebugChar(hexchars[checksum & 0xf]); + putDebugChar(small_digits[checksum >> 4]); + putDebugChar(small_digits[checksum & 0xf]); recv = getDebugChar(); } while ((recv & 0x7f) != '+'); } @@ -603,15 +602,15 @@ handle_exception (struct pt_regs *regs) ptr = remcomOutBuffer; *ptr++ = 'T'; - *ptr++ = hexchars[sigval >> 4]; - *ptr++ = hexchars[sigval & 0xf]; - *ptr++ = hexchars[PC_REGNUM >> 4]; - *ptr++ = hexchars[PC_REGNUM & 0xf]; + *ptr++ = small_digits[sigval >> 4]; + *ptr++ = small_digits[sigval & 0xf]; + *ptr++ = small_digits[PC_REGNUM >> 4]; + *ptr++ = small_digits[PC_REGNUM & 0xf]; *ptr++ = ':'; ptr = mem2hex((char *)®s->nip, ptr, 4); *ptr++ = ';'; - *ptr++ = hexchars[SP_REGNUM >> 4]; - *ptr++ = hexchars[SP_REGNUM & 0xf]; + *ptr++ = small_digits[SP_REGNUM >> 4]; + *ptr++ = small_digits[SP_REGNUM & 0xf]; *ptr++ = ':'; ptr = mem2hex(((char *)regs) + SP_REGNUM*4, ptr, 4); *ptr++ = ';'; @@ -633,8 +632,8 @@ handle_exception (struct pt_regs *regs) switch (remcomInBuffer[0]) { case '?': /* report most recent signal */ remcomOutBuffer[0] = 'S'; - remcomOutBuffer[1] = hexchars[sigval >> 4]; - remcomOutBuffer[2] = hexchars[sigval & 0xf]; + remcomOutBuffer[1] = small_digits[sigval >> 4]; + remcomOutBuffer[2] = small_digits[sigval & 0xf]; remcomOutBuffer[3] = 0; break; #if 0 --- a/arch/ppc/platforms/apus_setup.c +++ b/arch/ppc/platforms/apus_setup.c @@ -613,10 +613,9 @@ int __debug_serinit( void ) void __debug_print_hex(unsigned long x) { int i; - char hexchars[] = "0123456789ABCDEF"; for (i = 0; i < 8; i++) { - __debug_ser_out(hexchars[(x >> 28) & 15]); + __debug_ser_out(large_digits[(x >> 28) & 15]); x <<= 4; } __debug_ser_out('\n'); --- a/arch/ppc/platforms/residual.c +++ b/arch/ppc/platforms/residual.c @@ -770,15 +770,14 @@ static int __init same_DevID(unsigned sh unsigned short Number, char * str) { - static unsigned const char hexdigit[]="0123456789ABCDEF"; if (strlen(str)!=7) return 0; if ( ( ((vendor>>10)&0x1f)+'A'-1 == str[0]) && ( ((vendor>>5)&0x1f)+'A'-1 == str[1]) && ( (vendor&0x1f)+'A'-1 == str[2]) && - (hexdigit[(Number>>12)&0x0f] == str[3]) && - (hexdigit[(Number>>8)&0x0f] == str[4]) && - (hexdigit[(Number>>4)&0x0f] == str[5]) && - (hexdigit[Number&0x0f] == str[6]) ) return 1; + (large_digits[(Number>>12)&0x0f] == str[3]) && + (large_digits[(Number>>8)&0x0f] == str[4]) && + (large_digits[(Number>>4)&0x0f] == str[5]) && + (large_digits[Number&0x0f] == str[6]) ) return 1; return 0; } --- a/arch/ppc/syslib/Makefile +++ b/arch/ppc/syslib/Makefile @@ -37,7 +37,6 @@ endif endif obj-$(CONFIG_8xx) += m8xx_setup.o ppc8xx_pic.o $(wdt-mpc8xx-y) \ ppc_sys.o mpc8xx_devices.o mpc8xx_sys.o -obj-$(CONFIG_PCI_QSPAN) += qspan_pci.o obj-$(CONFIG_PPC_OF) += prom_init.o prom.o obj-$(CONFIG_PPC_CHRP) += open_pic.o obj-$(CONFIG_PPC_PREP) += open_pic.o todc_time.o --- a/arch/ppc/syslib/btext.c +++ b/arch/ppc/syslib/btext.c @@ -392,18 +392,17 @@ btext_drawstring(const char *c) void BTEXT btext_drawhex(unsigned long v) { - static char hex_table[] = "0123456789abcdef"; if (!boot_text_mapped) return; - btext_drawchar(hex_table[(v >> 28) & 0x0000000FUL]); - btext_drawchar(hex_table[(v >> 24) & 0x0000000FUL]); - btext_drawchar(hex_table[(v >> 20) & 0x0000000FUL]); - btext_drawchar(hex_table[(v >> 16) & 0x0000000FUL]); - btext_drawchar(hex_table[(v >> 12) & 0x0000000FUL]); - btext_drawchar(hex_table[(v >> 8) & 0x0000000FUL]); - btext_drawchar(hex_table[(v >> 4) & 0x0000000FUL]); - btext_drawchar(hex_table[(v >> 0) & 0x0000000FUL]); + btext_drawchar(small_digits[(v >> 28) & 0x0000000FUL]); + btext_drawchar(small_digits[(v >> 24) & 0x0000000FUL]); + btext_drawchar(small_digits[(v >> 20) & 0x0000000FUL]); + btext_drawchar(small_digits[(v >> 16) & 0x0000000FUL]); + btext_drawchar(small_digits[(v >> 12) & 0x0000000FUL]); + btext_drawchar(small_digits[(v >> 8) & 0x0000000FUL]); + btext_drawchar(small_digits[(v >> 4) & 0x0000000FUL]); + btext_drawchar(small_digits[(v >> 0) & 0x0000000FUL]); btext_drawchar(' '); } --- a/arch/ppc/syslib/ppc4xx_pm.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Author: Armin Kuster - * - * 2002 (c) MontaVista, Software, Inc. This file is licensed under - * the terms of the GNU General Public License version 2. This program - * is licensed "as is" without any warranty of any kind, whether express - * or implied. - * - * This an attempt to get Power Management going for the IBM 4xx processor. - * This was derived from the ppc4xx._setup.c file - */ - -#include -#include - -#include - -void __init -ppc4xx_pm_init(void) -{ - - unsigned int value = 0; - - /* turn off unused hardware to save power */ -#ifdef CONFIG_405GP - value |= CPM_DCP; /* CodePack */ -#endif - -#if !defined(CONFIG_IBM_OCP_GPIO) - value |= CPM_GPIO0; -#endif - -#if !defined(CONFIG_PPC405_I2C_ADAP) - value |= CPM_IIC0; -#ifdef CONFIG_STB03xxx - value |= CPM_IIC1; -#endif -#endif - - -#if !defined(CONFIG_405_DMA) - value |= CPM_DMA; -#endif - - mtdcr(DCRN_CPMFR, value); - -} --- a/arch/ppc/syslib/qspan_pci.c +++ /dev/null @@ -1,381 +0,0 @@ -/* - * QSpan pci routines. - * Most 8xx boards use the QSpan PCI bridge. The config address register - * is located 0x500 from the base of the bridge control/status registers. - * The data register is located at 0x504. - * This is a two step operation. First, the address register is written, - * then the data register is read/written as required. - * I don't know what to do about interrupts (yet). - * - * The RPX Classic implementation shares a chip select for normal - * PCI access and QSpan control register addresses. The selection is - * further selected by a bit setting in a board control register. - * Although it should happen, we disable interrupts during this operation - * to make sure some driver doesn't accidentally access the PCI while - * we have switched the chip select. - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - - -/* - * This blows...... - * When reading the configuration space, if something does not respond - * the bus times out and we get a machine check interrupt. So, the - * good ol' exception tables come to mind to trap it and return some - * value. - * - * On an error we just return a -1, since that is what the caller wants - * returned if nothing is present. I copied this from __get_user_asm, - * with the only difference of returning -1 instead of EFAULT. - * There is an associated hack in the machine check trap code. - * - * The QSPAN is also a big endian device, that is it makes the PCI - * look big endian to us. This presents a problem for the Linux PCI - * functions, which assume little endian. For example, we see the - * first 32-bit word like this: - * ------------------------ - * | Device ID | Vendor ID | - * ------------------------ - * If we read/write as a double word, that's OK. But in our world, - * when read as a word, device ID is at location 0, not location 2 as - * the little endian PCI would believe. We have to switch bits in - * the PCI addresses given to us to get the data to/from the correct - * byte lanes. - * - * The QSPAN only supports 4 bits of "slot" in the dev_fn instead of 5. - * It always forces the MS bit to zero. Therefore, dev_fn values - * greater than 128 are returned as "no device found" errors. - * - * The QSPAN can only perform long word (32-bit) configuration cycles. - * The "offset" must have the two LS bits set to zero. Read operations - * require we read the entire word and then sort out what should be - * returned. Write operations other than long word require that we - * read the long word, update the proper word or byte, then write the - * entire long word back. - * - * PCI Bridge hack. We assume (correctly) that bus 0 is the primary - * PCI bus from the QSPAN. If we are called with a bus number other - * than zero, we create a Type 1 configuration access that a downstream - * PCI bridge will interpret. - */ - -#define __get_qspan_pci_config(x, addr, op) \ - __asm__ __volatile__( \ - "1: "op" %0,0(%1)\n" \ - " eieio\n" \ - "2:\n" \ - ".section .fixup,\"ax\"\n" \ - "3: li %0,-1\n" \ - " b 2b\n" \ - ".section __ex_table,\"a\"\n" \ - " .align 2\n" \ - " .long 1b,3b\n" \ - ".text" \ - : "=r"(x) : "r"(addr) : " %0") - -#define QS_CONFIG_ADDR ((volatile uint *)(PCI_CSR_ADDR + 0x500)) -#define QS_CONFIG_DATA ((volatile uint *)(PCI_CSR_ADDR + 0x504)) - -#define mk_config_addr(bus, dev, offset) \ - (((bus)<<16) | ((dev)<<8) | (offset & 0xfc)) - -#define mk_config_type1(bus, dev, offset) \ - mk_config_addr(bus, dev, offset) | 1; - -static DEFINE_SPINLOCK(pcibios_lock); - -int qspan_pcibios_read_config_byte(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned char *val) -{ - uint temp; - u_char *cp; -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) { - *val = 0xff; - return PCIBIOS_DEVICE_NOT_FOUND; - } - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - __get_qspan_pci_config(temp, QS_CONFIG_DATA, "lwz"); - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - offset ^= 0x03; - cp = ((u_char *)&temp) + (offset & 0x03); - *val = *cp; - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_read_config_word(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned short *val) -{ - uint temp; - ushort *sp; -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) { - *val = 0xffff; - return PCIBIOS_DEVICE_NOT_FOUND; - } - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - __get_qspan_pci_config(temp, QS_CONFIG_DATA, "lwz"); - offset ^= 0x02; - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - sp = ((ushort *)&temp) + ((offset >> 1) & 1); - *val = *sp; - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_read_config_dword(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned int *val) -{ -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) { - *val = 0xffffffff; - return PCIBIOS_DEVICE_NOT_FOUND; - } - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - __get_qspan_pci_config(*val, QS_CONFIG_DATA, "lwz"); - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_write_config_byte(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned char val) -{ - uint temp; - u_char *cp; -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) - return PCIBIOS_DEVICE_NOT_FOUND; - - qspan_pcibios_read_config_dword(bus, dev_fn, offset, &temp); - - offset ^= 0x03; - cp = ((u_char *)&temp) + (offset & 0x03); - *cp = val; - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - *QS_CONFIG_DATA = temp; - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_write_config_word(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned short val) -{ - uint temp; - ushort *sp; -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) - return PCIBIOS_DEVICE_NOT_FOUND; - - qspan_pcibios_read_config_dword(bus, dev_fn, offset, &temp); - - offset ^= 0x02; - sp = ((ushort *)&temp) + ((offset >> 1) & 1); - *sp = val; - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - *QS_CONFIG_DATA = temp; - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_write_config_dword(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned int val) -{ -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) - return PCIBIOS_DEVICE_NOT_FOUND; - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - *(unsigned int *)QS_CONFIG_DATA = val; - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_find_device(unsigned short vendor, unsigned short dev_id, - unsigned short index, unsigned char *bus_ptr, - unsigned char *dev_fn_ptr) -{ - int num, devfn; - unsigned int x, vendev; - - if (vendor == 0xffff) - return PCIBIOS_BAD_VENDOR_ID; - vendev = (dev_id << 16) + vendor; - num = 0; - for (devfn = 0; devfn < 32; devfn++) { - qspan_pcibios_read_config_dword(0, devfn<<3, PCI_VENDOR_ID, &x); - if (x == vendev) { - if (index == num) { - *bus_ptr = 0; - *dev_fn_ptr = devfn<<3; - return PCIBIOS_SUCCESSFUL; - } - ++num; - } - } - return PCIBIOS_DEVICE_NOT_FOUND; -} - -int qspan_pcibios_find_class(unsigned int class_code, unsigned short index, - unsigned char *bus_ptr, unsigned char *dev_fn_ptr) -{ - int devnr, x, num; - - num = 0; - for (devnr = 0; devnr < 32; devnr++) { - qspan_pcibios_read_config_dword(0, devnr<<3, PCI_CLASS_REVISION, &x); - if ((x>>8) == class_code) { - if (index == num) { - *bus_ptr = 0; - *dev_fn_ptr = devnr<<3; - return PCIBIOS_SUCCESSFUL; - } - ++num; - } - } - return PCIBIOS_DEVICE_NOT_FOUND; -} - -void __init -m8xx_pcibios_fixup(void)) -{ - /* Lots to do here, all board and configuration specific. */ -} - -void __init -m8xx_setup_pci_ptrs(void)) -{ - set_config_access_method(qspan); - - ppc_md.pcibios_fixup = m8xx_pcibios_fixup; -} - --- a/arch/sh/drivers/dma/dma-api.c +++ b/arch/sh/drivers/dma/dma-api.c @@ -288,10 +288,13 @@ void unregister_dmac(struct dma_info *in static int __init dma_api_init(void) { + struct proc_dir_entry *ent; printk("DMA: Registering DMA API.\n"); #ifdef CONFIG_PROC_FS - create_proc_read_entry("dma", 0, 0, dma_read_proc, 0); + ent = create_proc_read_entry("dma", 0, 0, dma_read_proc, 0); + if (!ent) + printk(KERN_WARNING "dma-api.c: unable to create /proc entry\n"); #endif return 0; --- a/arch/sh/kernel/cpu/sh4/sq.c +++ b/arch/sh/kernel/cpu/sh4/sq.c @@ -423,10 +423,14 @@ static struct miscdevice sq_dev = { static int __init sq_api_init(void) { + struct proc_dir_entry *ent; printk(KERN_NOTICE "sq: Registering store queue API.\n"); #ifdef CONFIG_PROC_FS - create_proc_read_entry("sq_mapping", 0, 0, sq_mapping_read_proc, 0); + ent = create_proc_read_entry("sq_mapping", 0, 0, + sq_mapping_read_proc, 0); + if (!ent) + printk(KERN_WARNING "sq: unable to create /proc entry\n"); #endif return misc_register(&sq_dev); --- a/arch/sh/kernel/kgdb_stub.c +++ b/arch/sh/kernel/kgdb_stub.c @@ -240,7 +240,6 @@ static jmp_buf rem_com_env; /* Misc static */ static int stepped_address; static short stepped_opcode; -static const char hexchars[] = "0123456789abcdef"; static char in_buffer[BUFMAX]; static char out_buffer[OUTBUFMAX]; @@ -268,13 +267,13 @@ static inline void ctrl_outl(const unsig /* Get high hex bits */ static char highhex(const int x) { - return hexchars[(x >> 4) & 0xf]; + return small_digits[(x >> 4) & 0xf]; } /* Get low hex bits */ static char lowhex(const int x) { - return hexchars[x & 0xf]; + return small_digits[x & 0xf]; } /* Convert ch to hex */ @@ -367,8 +366,8 @@ static char *ebin_to_mem(const char *buf /* Pack a hex byte */ static char *pack_hex_byte(char *pkt, int byte) { - *pkt++ = hexchars[(byte >> 4) & 0xf]; - *pkt++ = hexchars[(byte & 0xf)]; + *pkt++ = small_digits[(byte >> 4) & 0xf]; + *pkt++ = small_digits[(byte & 0xf)]; return pkt; } --- a/arch/sh64/kernel/process.c +++ b/arch/sh64/kernel/process.c @@ -927,7 +927,11 @@ asids_proc_info(char *buf, char **start, static int __init register_proc_asids(void) { - create_proc_read_entry("asids", 0, NULL, asids_proc_info, NULL); + struct proc_dir_entry *ent; + ent = create_proc_read_entry("asids", 0, NULL, asids_proc_info, NULL); + if (!ent) + printk(KERN_WARNING + "process.c: unable to create asids /proc entry\n"); return 0; } --- a/arch/sh64/mm/fault.c +++ b/arch/sh64/mm/fault.c @@ -592,8 +592,11 @@ tlb_proc_info(char *buf, char **start, o static int __init register_proc_tlb(void) { - create_proc_read_entry("tlb", 0, NULL, tlb_proc_info, NULL); - return 0; + struct proc_dir_entry *ent; + ent = create_proc_read_entry("tlb", 0, NULL, tlb_proc_info, NULL); + if (!ent) + printk(KERN_WARNING "fault.c: unable to create tlb /proc entry\n"); + return 0; } __initcall(register_proc_tlb); --- a/arch/sh64/mm/ioremap.c +++ b/arch/sh64/mm/ioremap.c @@ -459,7 +459,11 @@ ioremap_proc_info(char *buf, char **star static int __init register_proc_onchip(void) { #ifdef CONFIG_PROC_FS - create_proc_read_entry("io_map",0,0, ioremap_proc_info, &shmedia_iomap); + struct proc_dir_entry *ent; + ent = create_proc_read_entry("io_map",0,0, + ioremap_proc_info, &shmedia_iomap); + if (!ent) + printk(KERN_WARNING "ioremap.c: unable to create /proc entry\n"); #endif return 0; } --- a/arch/sparc/kernel/ioport.c +++ b/arch/sparc/kernel/ioport.c @@ -725,7 +725,16 @@ _sparc_find_resource(struct resource *ro void register_proc_sparc_ioport(void) { #ifdef CONFIG_PROC_FS - create_proc_read_entry("io_map",0,NULL,_sparc_io_get_info,&sparc_iomap); - create_proc_read_entry("dvma_map",0,NULL,_sparc_io_get_info,&_sparc_dvma); + struct proc_dir_entry *ent; + ent = create_proc_read_entry("io_map",0,NULL, + _sparc_io_get_info,&sparc_iomap); + if (!ent) + printk(KERN_WARNING + "ioport.c: unable to create io_map /proc entry\n"); + ent = create_proc_read_entry("dvma_map",0,NULL, + _sparc_io_get_info,&_sparc_dvma); + if (!ent) + printk(KERN_WARNING + "ioport.c: unable to create dvma_map /proc entry\n"); #endif } --- a/arch/sparc/kernel/sparc-stub.c +++ b/arch/sparc/kernel/sparc-stub.c @@ -127,8 +127,6 @@ extern char getDebugChar(void); /* rea static int initialized; /* !0 means we've been initialized */ -static const char hexchars[]="0123456789abcdef"; - #define NUMREGS 72 /* Number of bytes of registers. */ @@ -298,8 +296,8 @@ putpacket(unsigned char *buffer) } putDebugChar('#'); - putDebugChar(hexchars[checksum >> 4]); - putDebugChar(hexchars[checksum & 0xf]); + putDebugChar(small_digits[checksum >> 4]); + putDebugChar(small_digits[checksum & 0xf]); recv = getDebugChar(); } while ((recv & 0x7f) != '+'); } @@ -337,8 +335,8 @@ mem2hex(char *mem, char *buf, int count) ".word 1b, 2b\n\t" ".text\n" : "=r" (mem), "=r" (ch) : "0" (mem)); - *buf++ = hexchars[ch >> 4]; - *buf++ = hexchars[ch & 0xf]; + *buf++ = small_digits[ch >> 4]; + *buf++ = small_digits[ch & 0xf]; } *buf = 0; @@ -527,35 +525,35 @@ handle_exception (unsigned long *registe ptr = remcomOutBuffer; *ptr++ = 'T'; - *ptr++ = hexchars[sigval >> 4]; - *ptr++ = hexchars[sigval & 0xf]; + *ptr++ = small_digits[sigval >> 4]; + *ptr++ = small_digits[sigval & 0xf]; - *ptr++ = hexchars[PC >> 4]; - *ptr++ = hexchars[PC & 0xf]; + *ptr++ = small_digits[PC >> 4]; + *ptr++ = small_digits[PC & 0xf]; *ptr++ = ':'; ptr = mem2hex((char *)®isters[PC], ptr, 4); *ptr++ = ';'; - *ptr++ = hexchars[FP >> 4]; - *ptr++ = hexchars[FP & 0xf]; + *ptr++ = small_digits[FP >> 4]; + *ptr++ = small_digits[FP & 0xf]; *ptr++ = ':'; ptr = mem2hex((char *) (sp + 8 + 6), ptr, 4); /* FP */ *ptr++ = ';'; - *ptr++ = hexchars[SP >> 4]; - *ptr++ = hexchars[SP & 0xf]; + *ptr++ = small_digits[SP >> 4]; + *ptr++ = small_digits[SP & 0xf]; *ptr++ = ':'; ptr = mem2hex((char *)&sp, ptr, 4); *ptr++ = ';'; - *ptr++ = hexchars[NPC >> 4]; - *ptr++ = hexchars[NPC & 0xf]; + *ptr++ = small_digits[NPC >> 4]; + *ptr++ = small_digits[NPC & 0xf]; *ptr++ = ':'; ptr = mem2hex((char *)®isters[NPC], ptr, 4); *ptr++ = ';'; - *ptr++ = hexchars[O7 >> 4]; - *ptr++ = hexchars[O7 & 0xf]; + *ptr++ = small_digits[O7 >> 4]; + *ptr++ = small_digits[O7 & 0xf]; *ptr++ = ':'; ptr = mem2hex((char *)®isters[O7], ptr, 4); *ptr++ = ';'; @@ -577,8 +575,8 @@ handle_exception (unsigned long *registe switch (remcomInBuffer[0]) { case '?': remcomOutBuffer[0] = 'S'; - remcomOutBuffer[1] = hexchars[sigval >> 4]; - remcomOutBuffer[2] = hexchars[sigval & 0xf]; + remcomOutBuffer[1] = small_digits[sigval >> 4]; + remcomOutBuffer[2] = small_digits[sigval & 0xf]; remcomOutBuffer[3] = 0; break; --- a/arch/x86_64/Makefile +++ b/arch/x86_64/Makefile @@ -42,7 +42,7 @@ CFLAGS += -Wno-sign-compare ifneq ($(CONFIG_UNWIND_INFO),y) CFLAGS += -fno-asynchronous-unwind-tables endif -ifneq ($(CONFIG_DEBUG_INFO),y) +ifndef CONFIG_DEBUG_INFO # -fweb shrinks the kernel a bit, but the difference is very small # it also messes up debugging, so don't use it for now. #CFLAGS += $(call cc-option,-fweb) --- a/drivers/acorn/block/fd1772.c +++ b/drivers/acorn/block/fd1772.c @@ -124,6 +124,8 @@ * Minor parameter, name layouts for 2.4.x differences */ +#undef DEBUG /* define to enable debugging statements */ + #include #include #include @@ -165,13 +167,6 @@ /* Ditto worries for Arc - DAG */ #define FD_MAX_UNITS 4 #define TRACKBUFFER 0 -/*#define DEBUG*/ - -#ifdef DEBUG -#define DPRINT(a) printk a -#else -#define DPRINT(a) -#endif static struct request_queue *floppy_queue; @@ -180,6 +175,9 @@ static struct request_queue *floppy_queu #define DEVICE_NAME "floppy" #define QUEUE (floppy_queue) #define CURRENT elv_next_request(floppy_queue) +#define PFX DEVICE_NAME ": " + +#define DBG(fmt, args...) pr_debug(PFX "%s: " fmt, __FUNCTION__ , ## args) /* Disk types: DD */ static struct archy_disk_type { @@ -240,9 +238,9 @@ extern volatile int fdc1772_fdc_int_done void FDC1772_WRITE(int reg, unsigned char val) { if (reg == FDC1772REG_CMD) { - DPRINT(("FDC1772_WRITE new command 0x%x @ %d\n", val,jiffies)); + DBG("new command 0x%x @ %d\n", val,jiffies); if (fdc1772_fdc_int_done) { - DPRINT(("FDC1772_WRITE: Hmm fdc1772_fdc_int_done true - resetting\n")); + DBG("Hmm fdc1772_fdc_int_done true - resetting\n"); fdc1772_fdc_int_done = 0; }; }; @@ -405,9 +403,7 @@ static void fd_select_side(int side) static void fd_select_drive(int drive) { -#ifdef DEBUG - printk("fd_select_drive:%d\n", drive); -#endif + DBG("%d\n", drive); /* Hmm - nowhere do we seem to turn the motor on - I'm going to do it here! */ oldlatch_aupdate(LATCHA_MOTOR | LATCHA_INUSE, 0); @@ -430,7 +426,7 @@ static void fd_deselect(void) { unsigned long flags; - DPRINT(("fd_deselect\n")); + DBG("start\n"); oldlatch_aupdate(LATCHA_FDSELALL | LATCHA_MOTOR | LATCHA_INUSE, 0xf | LATCHA_MOTOR | LATCHA_INUSE); @@ -470,7 +466,7 @@ static void fd_motor_off_timer(unsigned * off on the Arc, since the motor control is actually on * Latch A */ - DPRINT(("fdc1772: deselecting in fd_motor_off_timer\n")); + DBG("deselecting\n"); fd_deselect(); MotorOn = 0; restore_flags(flags); @@ -519,7 +515,7 @@ static void check_change(unsigned long d /* The idea here is that if the write protect line has changed then the disc must have changed */ if (stat != unit[drive].wpstat) { - DPRINT(("wpstat[%d] = %d\n", drive, stat)); + DBG("wpstat[%d] = %d\n", drive, stat); unit[drive].wpstat = stat; set_bit(drive, &changed_floppies); } @@ -575,12 +571,13 @@ static void floppy_irqconsequencehandler if (handler) { nop(); status = (unsigned char) fdc1772_comendstatus; - DPRINT(("FDC1772 irq, status = %02x handler = %08lx\n", (unsigned int) status, (unsigned long) handler)); + DBG("status = %02x handler = %08lx\n", (unsigned int) status, + (unsigned long) handler); handler(status); } else { - DPRINT(("FDC1772 irq, no handler status=%02x\n", fdc1772_comendstatus)); + DBG("no handler status=%02x\n", fdc1772_comendstatus); } - DPRINT(("FDC1772 irq: end of floppy_irq\n")); + DBG("end\n"); } @@ -590,16 +587,16 @@ static void floppy_irqconsequencehandler static void fd_error(void) { - printk("FDC1772: fd_error\n"); + DBG("start\n"); /*panic("fd1772: fd_error"); *//* DAG tmp */ if (!CURRENT) return; CURRENT->errors++; if (CURRENT->errors >= MAX_ERRORS) { - printk("fd%d: too many errors.\n", SelectedDrive); + printk(KERN_ERR "fd%d: too many errors, giving up\n", SelectedDrive); end_request(CURRENT, 0); } else if (CURRENT->errors == RECALIBRATE_ERRORS) { - printk("fd%d: recalibrating\n", SelectedDrive); + printk(KERN_ERR "fd%d: error, recalibrating...\n", SelectedDrive); if (SelectedDrive != -1) unit[SelectedDrive].track = -1; } @@ -623,7 +620,7 @@ static void fd_error(void) static void do_fd_action(int drive) { struct request *req; - DPRINT(("do_fd_action unit[drive].track=%d\n", unit[drive].track)); + DBG("unit[drive].track=%d\n", unit[drive].track); #ifdef TRACKBUFFER repeat: @@ -671,12 +668,12 @@ repeat: static void fd_calibrate(void) { - DPRINT(("fd_calibrate\n")); + DBG("start\n"); if (unit[SelectedDrive].track >= 0) { fd_calibrate_done(0); return; } - DPRINT(("fd_calibrate (after track compare)\n")); + DBG("(after track compare)\n"); SET_IRQ_HANDLER(fd_calibrate_done); /* we can't verify, since the speed may be incorrect */ FDC1772_WRITE(FDC1772REG_CMD, FDC1772CMD_RESTORE | unit[SelectedDrive].steprate); @@ -690,12 +687,12 @@ static void fd_calibrate(void) static void fd_calibrate_done(int status) { - DPRINT(("fd_calibrate_done()\n")); + DBG("start\n"); STOP_TIMEOUT(); /* set the correct speed now */ if (status & FDC1772STAT_RECNF) { - printk("fd%d: restore failed\n", SelectedDrive); + printk(KERN_ERR "fd%d: restore failed\n", SelectedDrive); fd_error(); } else { unit[SelectedDrive].track = 0; @@ -711,8 +708,8 @@ static void fd_calibrate_done(int status static void fd_seek(void) { unsigned long flags; - DPRINT(("fd_seek() to track %d (unit[SelectedDrive].track=%d)\n", ReqTrack, - unit[SelectedDrive].track)); + DBG("to track %d (unit[SelectedDrive].track=%d)\n", ReqTrack, + unit[SelectedDrive].track); if (unit[SelectedDrive].track == ReqTrack << unit[SelectedDrive].disktype->stretch) { fd_seek_done(0); @@ -738,12 +735,12 @@ static void fd_seek(void) static void fd_seek_done(int status) { - DPRINT(("fd_seek_done()\n")); + DBG("start\n"); STOP_TIMEOUT(); /* set the correct speed */ if (status & FDC1772STAT_RECNF) { - printk("fd%d: seek error (to track %d)\n", + printk(KERN_ERR "fd%d: seek error (to track %d)\n", SelectedDrive, ReqTrack); /* we don't know exactly which track we are on now! */ unit[SelectedDrive].track = -1; @@ -772,7 +769,7 @@ static void fd_rwsec(void) unsigned int rwflag, old_motoron; unsigned int track; - DPRINT(("fd_rwsec(), Sec=%d, Access=%c\n", ReqSector, ReqCmd == WRITE ? 'w' : 'r')); + DBG("Sec=%d, Access=%c\n", ReqSector, ReqCmd == WRITE ? 'w' : 'r'); if (ReqCmd == WRITE) { /*cache_push( (unsigned long)ReqData, 512 ); */ paddr = (unsigned long) ReqData; @@ -786,11 +783,11 @@ static void fd_rwsec(void) rwflag = 0; } - DPRINT(("fd_rwsec() before sidesel rwflag=%d sec=%d trk=%d\n", rwflag, - ReqSector, FDC1772_READ(FDC1772REG_TRACK))); + DBG("before sidesel rwflag=%d sec=%d trk=%d\n", rwflag, + ReqSector, FDC1772_READ(FDC1772REG_TRACK)); fd_select_side(ReqSide); - /*DPRINT(("fd_rwsec() before start sector \n")); */ + /*DBG("before start sector\n"); */ /* Start sector of this operation */ #ifdef TRACKBUFFER FDC1772_WRITE( FDC1772REG_SECTOR, !read_track ? ReqSector : 1 ); @@ -806,7 +803,7 @@ static void fd_rwsec(void) } udelay(25); - DPRINT(("fd_rwsec() before setup DMA \n")); + DBG("before setup DMA\n"); /* Setup DMA - Heavily modified by DAG */ save_flags(flags); clf(); @@ -834,7 +831,7 @@ static void fd_rwsec(void) )); restore_flags(flags); - DPRINT(("fd_rwsec() after DMA setup flags=0x%08x\n", flags)); + DBG("after DMA setup flags=0x%08x\n", flags); /*sti(); *//* DAG - Hmm */ /* Hmm - should do something DAG */ old_motoron = MotorOn; @@ -853,15 +850,15 @@ static void fd_rwsec(void) */ /* 1 rot. + 5 rot.s if motor was off */ mod_timer(&readtrack_timer, jiffies + HZ/5 + (old_motoron ? 0 : HZ)); - DPRINT(("Setting readtrack_timer to %d @ %d\n", - readtrack_timer.expires,jiffies)); + DBG("setting readtrack_timer to %d @ %d\n", + readtrack_timer.expires,jiffies); MultReadInProgress = 1; } #endif - /*DPRINT(("fd_rwsec() before START_TIMEOUT \n")); */ + /*DBG("before START_TIMEOUT\n"); */ START_TIMEOUT(); - /*DPRINT(("fd_rwsec() after START_TIMEOUT \n")); */ + /*DBG("after START_TIMEOUT\n"); */ } @@ -872,7 +869,7 @@ static void fd_readtrack_check(unsigned unsigned long flags, addr; extern unsigned char *fdc1772_dataaddr; - DPRINT(("fd_readtrack_check @ %d\n",jiffies)); + DBG("%d jiffies\n", jiffies); save_flags(flags); clf(); @@ -892,7 +889,7 @@ static void fd_readtrack_check(unsigned /* get the current DMA address */ addr=(unsigned long)fdc1772_dataaddr; /* DAG - ? */ - DPRINT(("fd_readtrack_check: addr=%x PhysTrackBuffer=%x\n",addr,PhysTrackBuffer)); + DBG("addr=%x PhysTrackBuffer=%x\n",addr,PhysTrackBuffer); if (addr >= (unsigned int)PhysTrackBuffer + unit[SelectedDrive].disktype->spt*512) { /* already read enough data, force an FDC interrupt to stop @@ -900,7 +897,7 @@ static void fd_readtrack_check(unsigned */ SET_IRQ_HANDLER( NULL ); restore_flags(flags); - DPRINT(("fd_readtrack_check(): done\n")); + DBG("done\n"); FDC1772_WRITE( FDC1772REG_CMD, FDC1772CMD_FORCI ); udelay(25); @@ -911,7 +908,7 @@ static void fd_readtrack_check(unsigned } else { /* not yet finished, wait another tenth rotation */ restore_flags(flags); - DPRINT(("fd_readtrack_check(): not yet finished\n")); + DBG("not yet finished\n"); readtrack_timer.expires = jiffies + HZ/5/10; add_timer( &readtrack_timer ); } @@ -923,7 +920,7 @@ static void fd_rwsec_done(int status) { unsigned int track; - DPRINT(("fd_rwsec_done() status=%d @ %d\n", status,jiffies)); + DBG("status=%d @ %d\n", status,jiffies); #ifdef TRACKBUFFER if (read_track && !MultReadInProgress) @@ -945,7 +942,7 @@ static void fd_rwsec_done(int status) unit[SelectedDrive].disktype->stretch); } if (ReqCmd == WRITE && (status & FDC1772STAT_WPROT)) { - printk("fd%d: is write protected\n", SelectedDrive); + printk(KERN_ERR "fd%d: is write protected\n", SelectedDrive); goto err_end; } if ((status & FDC1772STAT_RECNF) @@ -982,17 +979,17 @@ static void fd_rwsec_done(int status) do_fd_action(SelectedDrive); return; } - printk("fd%d: sector %d not found (side %d, track %d)\n", + printk(KERN_ERR "fd%d: sector %d not found (side %d, track %d)\n", SelectedDrive, FDC1772_READ(FDC1772REG_SECTOR), ReqSide, ReqTrack); goto err_end; } if (status & FDC1772STAT_CRC) { - printk("fd%d: CRC error (side %d, track %d, sector %d)\n", + printk(KERN_ERR "fd%d: CRC error (side %d, track %d, sector %d)\n", SelectedDrive, ReqSide, ReqTrack, FDC1772_READ(FDC1772REG_SECTOR)); goto err_end; } if (status & FDC1772STAT_LOST) { - printk("fd%d: lost data (side %d, track %d, sector %d)\n", + printk(KERN_ERR "fd%d: lost data (side %d, track %d, sector %d)\n", SelectedDrive, ReqSide, ReqTrack, FDC1772_READ(FDC1772REG_SECTOR)); goto err_end; } @@ -1046,7 +1043,7 @@ static void fd_times_out(unsigned long d FDC1772_WRITE(FDC1772REG_CMD, FDC1772CMD_FORCI); udelay(25); - printk("floppy timeout\n"); + printk(KERN_WARNING "floppy timeout\n"); STOP_TIMEOUT(); /* hmm - should we do this ? */ fd_error(); } @@ -1068,7 +1065,7 @@ static void finish_fdc(void) if (!NeedSeek) { finish_fdc_done(0); } else { - DPRINT(("finish_fdc: dummy seek started\n")); + DBG("dummy seek started\n"); FDC1772_WRITE(FDC1772REG_DATA, unit[SelectedDrive].track); SET_IRQ_HANDLER(finish_fdc_done); FDC1772_WRITE(FDC1772REG_CMD, FDC1772CMD_SEEK); @@ -1086,7 +1083,7 @@ static void finish_fdc_done(int dummy) { unsigned long flags; - DPRINT(("finish_fdc_done entered\n")); + DBG("start\n"); STOP_TIMEOUT(); NeedSeek = 0; @@ -1109,7 +1106,7 @@ static void finish_fdc_done(int dummy) wake_up(&fdc_wait); restore_flags(flags); - DPRINT(("finish_fdc() finished\n")); + DBG("end\n"); } @@ -1189,8 +1186,8 @@ static void setup_req_params(int drive) read_track = (ReqCmd == READ && CURRENT->errors == 0); #endif - DPRINT(("Request params: Si=%d Tr=%d Se=%d Data=%08lx\n", ReqSide, - ReqTrack, ReqSector, (unsigned long) ReqData)); + DBG("Request params: Si=%d Tr=%d Se=%d Data=%08lx\n", ReqSide, + ReqTrack, ReqSector, (unsigned long) ReqData); } @@ -1199,9 +1196,9 @@ static void redo_fd_request(void) int drive, type; struct archy_floppy_struct *floppy; - DPRINT(("redo_fd_request: CURRENT=%p dev=%s CURRENT->sector=%ld\n", + DBG("CURRENT=%p dev=%s CURRENT->sector=%ld\n" CURRENT, CURRENT ? CURRENT->rq_disk->disk_name : "", - CURRENT ? CURRENT->sector : 0)); + CURRENT ? CURRENT->sector : 0); repeat: @@ -1214,7 +1211,7 @@ repeat: if (!floppy->connected) { /* drive not connected */ - printk("Unknown Device: fd%d\n", drive); + printk(KERN_ERR "Unknown Device: fd%d\n", drive); end_request(CURRENT, 0); goto repeat; } @@ -1229,7 +1226,7 @@ repeat: /* user supplied disk type */ --type; if (type >= NUM_DISK_TYPES) { - printk("fd%d: invalid disk format", drive); + printk(KERN_ERR "fd%d: invalid disk format", drive); end_request(CURRENT, 0); goto repeat; } @@ -1275,7 +1272,7 @@ static void do_fd_request(request_queue_ { unsigned long flags; - DPRINT(("do_fd_request for pid %d\n", current->pid)); + DBG("pid %d\n", current->pid); if (fdc_busy) return; save_flags(flags); cli(); @@ -1354,7 +1351,7 @@ static int fd_test_drive_present(int dri unsigned char status; int ok; - printk("fd_test_drive_present %d\n", drive); + DBG("drive %d\n", drive); if (drive > 1) return (0); return (1); /* Simple hack for the moment - the autodetect doesn't seem to work on arc */ @@ -1392,15 +1389,15 @@ static int fd_test_drive_present(int dri /* dummy seek command to make WP bit accessible */ FDC1772_WRITE(FDC1772REG_DATA, 0); FDC1772_WRITE(FDC1772REG_CMD, FDC1772CMD_SEEK); - printk("fd_test_drive_present: just before wait for int\n"); + DBG("just before wait for int\n"); /* DAG: Guess means wait for interrupt */ while (!(ioc_readb(IOC_FIQSTAT) & 2)); - printk("fd_test_drive_present: just after wait for int\n"); + DBG("just after wait for int\n"); status = FDC1772_READ(FDC1772REG_STATUS); } - printk("fd_test_drive_present: just before ENABLE_IRQ\n"); + DBG("just before ENABLE_IRQ\n"); ENABLE_IRQ(); - printk("fd_test_drive_present: about to return\n"); + DBG("about to return\n"); return (ok); } @@ -1413,14 +1410,15 @@ static void config_types(void) { int drive, cnt = 0; - printk("Probing floppy drive(s):\n"); + pr_info("Probing floppy drive(s):"); for (drive = 0; drive < FD_MAX_UNITS; drive++) { fd_probe(drive); if (unit[drive].connected) { - printk("fd%d\n", drive); + printk(" fd%d", drive); ++cnt; } } + printk ("\n"); if (FDC1772_READ(FDC1772REG_STATUS) & FDC1772STAT_BUSY) { /* If FDC1772 is still busy from probing, give it another FORCI @@ -1490,7 +1488,7 @@ static int floppy_release(struct inode * if (fd_ref[drive] < 0) fd_ref[drive] = 0; else if (!fd_ref[drive]--) { - printk("floppy_release with fd_ref == 0"); + printk(KERN_WARNING "floppy_release with fd_ref == 0\n"); fd_ref[drive] = 0; } @@ -1535,12 +1533,12 @@ int fd1772_init(void) err = -EBUSY; if (request_dma(FLOPPY_DMA, "fd1772")) { - printk("Unable to grab DMA%d for the floppy (1772) driver\n", FLOPPY_DMA); + printk(KERN_ERR "Unable to grab DMA%d for the floppy (1772) driver\n", FLOPPY_DMA); goto err_blkdev; }; if (request_dma(FIQ_FD1772, "fd1772 end")) { - printk("Unable to grab DMA%d for the floppy (1772) driver\n", FIQ_FD1772); + printk(KERN_ERR "Unable to grab DMA%d for the floppy (1772) driver\n", FIQ_FD1772); goto err_dma1; }; --- a/drivers/acorn/block/mfmhd.c +++ b/drivers/acorn/block/mfmhd.c @@ -98,6 +98,8 @@ * This would be a performance boost with dual drive systems. */ +#undef DEBUG /* define to enable debugging statements */ + #include #include #include @@ -126,6 +128,7 @@ static void (*do_mfm)(void) = NULL; static struct request_queue *mfm_queue; static DEFINE_SPINLOCK(mfm_lock); +#define PFX "mfm: " #define MAJOR_NR MFM_ACORN_MAJOR #define QUEUE (mfm_queue) #define CURRENT elv_next_request(mfm_queue) @@ -140,12 +143,7 @@ static DEFINE_SPINLOCK(mfm_lock); * Linux I/O address of onboard MFM controller or 0 to disable this */ #define ONBOARD_MFM_ADDRESS ((0x002d0000 >> 2) | 0x80000000) -/* - * Uncomment this to enable debugging in the MFM driver... - */ -#ifndef DEBUG -/*#define DEBUG */ -#endif + /* * End of configuration */ @@ -287,28 +285,8 @@ int number_mfm_drives = 1; #define STAT_POL 0x0200 /* Polling */ /* ------------------------------------------------------------------------------------------ */ -#ifdef DEBUG -static void console_printf(const char *fmt,...) -{ - static char buffer[2048]; /* Arbitary! */ - extern void console_print(const char *); - unsigned long flags; - va_list ap; - - local_irq_save(flags); - - va_start(ap, fmt); - vsprintf(buffer, fmt, ap); - console_print(buffer); - va_end(fmt); - local_irq_restore(flags); -}; /* console_printf */ - -#define DBG(x...) console_printf(x) -#else -#define DBG(x...) -#endif +#define DBG(fmt, args...) pr_debug(PFX "%s: " fmt, __FUNCTION__ , ## args) static void print_status(void) { @@ -364,23 +342,23 @@ static void issue_command(int command, u int status; #ifdef DEBUG int i; - console_printf("issue_command: %02X: ", command); + DBG("%02X:", command); for (i = 0; i < len; i++) - console_printf("%02X ", cmdb[i]); - console_printf("\n"); + printk(" %02X", cmdb[i]); + printk("\n"); #endif do { status = inw(MFM_STATUS); } while (status & (STAT_BSY | STAT_POL)); - DBG("issue_command: status after pol/bsy loop: %02X:\n ", status >> 8); + DBG("status after pol/bsy loop: %02X:\n", status >> 8); if (status & (STAT_CPR | STAT_CED | STAT_SED | STAT_DER | STAT_ABN)) { outw(CMD_RCAL, MFM_COMMAND); while (inw(MFM_STATUS) & STAT_BSY); } status = inw(MFM_STATUS); - DBG("issue_command: status before parameter issue: %02X:\n ", status >> 8); + DBG("status before parameter issue: %02X:\n", status >> 8); while (len > 0) { outw(cmdb[1] | (cmdb[0] << 8), MFM_DATAOUT); @@ -388,11 +366,11 @@ static void issue_command(int command, u cmdb += 2; } status = inw(MFM_STATUS); - DBG("issue_command: status before command issue: %02X:\n ", status >> 8); + DBG("status before command issue: %02X:\n", status >> 8); outw(command, MFM_COMMAND); status = inw(MFM_STATUS); - DBG("issue_command: status immediately after command issue: %02X:\n ", status >> 8); + DBG("status immediately after command issue: %02X:\n", status >> 8); } static void wait_for_completion(void) @@ -421,7 +399,7 @@ static void mfm_rw_intr(void) { int old_status; /* Holds status on entry, we read to see if the command just finished */ #ifdef DEBUG - console_printf("mfm_rw_intr...dataleft=%d\n", hdc63463_dataleft); + DBG("dataleft=%d ", hdc63463_dataleft); print_status(); #endif @@ -430,7 +408,7 @@ static void mfm_rw_intr(void) /* Something has gone wrong - let's try that again */ outw(CMD_RCAL, MFM_COMMAND); /* Clear interrupt condition */ if (cont) { - DBG("mfm_rw_intr: DER/ABN err\n"); + DBG("DER/ABN err\n"); cont->error(); cont->redo(); }; @@ -444,7 +422,7 @@ static void mfm_rw_intr(void) if (CURRENT->cmd == WRITE) { extern void hdc63463_writedma(void); if ((hdc63463_dataleft <= 0) && (!(mfm_status & STAT_CED))) { - printk("mfm_rw_intr: Apparent DMA write request when no more to DMA\n"); + printk(KERN_WARNING PFX "mfm_rw_intr: Apparent DMA write request when no more to DMA\n"); if (cont) { cont->error(); cont->redo(); @@ -455,7 +433,7 @@ static void mfm_rw_intr(void) } else { extern void hdc63463_readdma(void); if ((hdc63463_dataleft <= 0) && (!(mfm_status & STAT_CED))) { - printk("mfm_rw_intr: Apparent DMA read request when no more to DMA\n"); + printk(KERN_WARNING PFX "mfm_rw_intr: Apparent DMA read request when no more to DMA\n"); if (cont) { cont->error(); cont->redo(); @@ -469,7 +447,7 @@ static void mfm_rw_intr(void) if (hdc63463_dataptr != ((unsigned int) Copy_buffer + 256)) { /* If we didn't actually manage to get any data on this interrupt - but why? We got the interrupt */ /* Ah - well looking at the status its just when we get command end; so no problem */ - /*console_printf("mfm: dataptr mismatch. dataptr=0x%08x Copy_buffer+256=0x%08p\n", + /*DBG("dataptr mismatch. dataptr=0x%08x Copy_buffer+256=0x%08p ", hdc63463_dataptr,Copy_buffer+256); print_status(); */ } else { @@ -479,7 +457,7 @@ static void mfm_rw_intr(void) /* We have come to the end of this request */ if (!Sectors256LeftInCurrent) { - DBG("mfm: end_request for CURRENT=0x%p CURRENT(sector=%d current_nr_sectors=%d nr_sectors=%d)\n", + DBG("end_request for CURRENT=0x%p CURRENT(sector=%d current_nr_sectors=%d nr_sectors=%d)\n", CURRENT, CURRENT->sector, CURRENT->current_nr_sectors, CURRENT->nr_sectors); CURRENT->nr_sectors -= CURRENT->current_nr_sectors; @@ -498,10 +476,10 @@ static void mfm_rw_intr(void) if (Copy_Sector != CURRENT->sector * 2) #ifdef DEBUG - /*console_printf*/printk("mfm: Copy_Sector mismatch. Copy_Sector=%d CURRENT->sector*2=%d\n", + DBG("Copy_Sector mismatch. Copy_Sector=%d CURRENT->sector*2=%d\n", Copy_Sector, CURRENT->sector * 2); #else - printk("mfm: Copy_Sector mismatch! Eek!\n"); + printk(KERN_ERR PFX "Copy_Sector mismatch! Eek!\n"); #endif }; /* CURRENT */ }; /* Sectors256LeftInCurrent */ @@ -512,7 +490,7 @@ static void mfm_rw_intr(void) if (mfm_status & (STAT_DER | STAT_ABN)) { /* Something has gone wrong - let's try that again */ if (cont) { - DBG("mfm_rw_intr: DER/ABN error\n"); + DBG("DER/ABN error\n"); cont->error(); cont->redo(); }; @@ -534,7 +512,7 @@ static void mfm_rw_intr(void) }; }; /* Result read */ - /*console_printf ("mfm_rw_intr nearexit [%02X]\n", __raw_readb(mfm_IRQPollLoc)); */ + /*DBG("nearexit [%02X]\n", __raw_readb(mfm_IRQPollLoc)); */ /* If end of command move on */ if (mfm_status & (STAT_CED)) { @@ -543,7 +521,7 @@ static void mfm_rw_intr(void) if (cont) { cont->done(1); } - DBG("mfm_rw_intr: returned from cont->done\n"); + DBG("returned from cont->done\n"); } else { /* Its going to generate another interrupt */ do_mfm = mfm_rw_intr; @@ -552,7 +530,7 @@ static void mfm_rw_intr(void) static void mfm_setup_rw(void) { - DBG("setting up for rw...\n"); + DBG("start\n"); do_mfm = mfm_rw_intr; issue_command(raw_cmd.cmdcode, raw_cmd.cmddata, raw_cmd.cmdlen); @@ -561,12 +539,12 @@ static void mfm_setup_rw(void) static void mfm_recal_intr(void) { #ifdef DEBUG - console_printf("recal intr - status = "); + DBG("status = "); print_status(); #endif outw(CMD_RCAL, MFM_COMMAND); /* Clear interrupt condition */ if (mfm_status & (STAT_DER | STAT_ABN)) { - printk("recal failed\n"); + printk(KERN_ERR PFX "recal failed\n"); MFM_DRV_INFO.cylinder = NEED_2_RECAL; if (cont) { cont->error(); @@ -588,18 +566,18 @@ static void mfm_recal_intr(void) issue_command(CMD_POL, NULL, 0); return; } - printk("recal: unknown status\n"); + printk(KERN_ERR PFX "recal: unknown status\n"); } static void mfm_seek_intr(void) { #ifdef DEBUG - console_printf("seek intr - status = "); + DBG("status = "); print_status(); #endif outw(CMD_RCAL, MFM_COMMAND); /* Clear interrupt condition */ if (mfm_status & (STAT_DER | STAT_ABN)) { - printk("seek failed\n"); + printk(KERN_ERR PFX "seek failed\n"); MFM_DRV_INFO.cylinder = NEED_2_RECAL; if (cont) { cont->error(); @@ -618,7 +596,7 @@ static void mfm_seek_intr(void) issue_command(CMD_POL, NULL, 0); return; } - printk("seek: unknown status\n"); + printk(KERN_ERR PFX "seek: unknown status\n"); } /* IDEA2 seems to work better - its what RiscOS sets my @@ -673,7 +651,7 @@ static void mfm_seek(void) DBG("seeking...\n"); if (MFM_DRV_INFO.cylinder < 0) { do_mfm = mfm_recal_intr; - DBG("mfm_seek: about to call specify\n"); + DBG("about to call specify\n"); mfm_specify (); /* DAG added this */ cmdb[0] = raw_cmd.dev + 1; @@ -696,19 +674,20 @@ static void mfm_seek(void) static void mfm_initialise(void) { - DBG("init...\n"); + DBG("start\n"); mfm_seek(); } static void request_done(int uptodate) { - DBG("mfm:request_done\n"); + DBG("start\n"); if (uptodate) { unsigned char block[2] = {0, 0}; /* Apparently worked - let's check bytes left to DMA */ if (hdc63463_dataleft != (PartFragRead_SectorsLeft * 256)) { - printk("mfm: request_done - dataleft=%d - should be %d - Eek!\n", hdc63463_dataleft, PartFragRead_SectorsLeft * 256); + printk(KERN_ERR PFX "request_done - dataleft=%d - should be %d - Eek!\n", + hdc63463_dataleft, PartFragRead_SectorsLeft * 256); end_request(CURRENT, 0); Busy = 0; }; @@ -727,7 +706,8 @@ static void request_done(int uptodate) /* ah well - perhaps there is another fragment to go */ /* Increment pointers/counts to start of next fragment */ - if (SectorsLeftInRequest > 0) printk("mfm: SectorsLeftInRequest>0 - Eek! Shouldn't happen!\n"); + if (SectorsLeftInRequest > 0) + printk(KERN_CRIT PFX "SectorsLeftInRequest > 0 - Eek! Shouldn't happen!\n"); /* No - its the end of the line */ /* end_request's should have happened at the end of sector DMAs */ @@ -736,12 +716,12 @@ static void request_done(int uptodate) issue_command(CMD_CKV, block, 2); Busy = 0; - DBG("request_done: About to mfm_request\n"); + DBG("About to mfm_request\n"); /* Next one please */ mfm_request(); /* Moved from mfm_rw_intr */ - DBG("request_done: returned from mfm_request\n"); + DBG("returned from mfm_request\n"); } else { - printk("mfm:request_done: update=0\n"); + DBG("update=0\n"); end_request(CURRENT, 0); Busy = 0; } @@ -749,7 +729,7 @@ static void request_done(int uptodate) static void error_handler(void) { - printk("error detected... status = "); + printk(KERN_ERR PFX "error detected... status = "); print_status(); (*errors)++; if (*errors > MFM_DRV_INFO.errors.abort) @@ -760,7 +740,7 @@ static void error_handler(void) static void rw_interrupt(void) { - printk("rw_interrupt\n"); + DBG("start\n"); } static struct cont rw_cont = @@ -794,7 +774,7 @@ static void issue_request(unsigned int b /* Then add in the number of sectors left on this track */ sectors_to_next_cyl += (p->sectors - start_sector); - DBG("issue_request: mfm_info[dev].sectors=%d track=%d\n", p->sectors, track); + DBG("mfm_info[dev].sectors=%d track=%d\n", p->sectors, track); raw_cmd.dev = dev; raw_cmd.sector = start_sector; @@ -856,7 +836,7 @@ static void issue_request(unsigned int b */ static void mfm_rerequest(void) { - DBG("mfm_rerequest\n"); + DBG("start\n"); cli(); Busy = 0; mfm_request(); @@ -866,12 +846,12 @@ static struct gendisk *mfm_gendisk[2]; static void mfm_request(void) { - DBG("mfm_request CURRENT=%p Busy=%d\n", CURRENT, Busy); + DBG("CURRENT=%p Busy=%d\n", CURRENT, Busy); /* If we are still processing then return; we will get called again */ if (Busy) { /* Again seems to be common in 1.3.45 */ - /*DBG*/printk("mfm_request: Exiting due to busy\n"); + DBG("Exiting due to busy\n"); return; } Busy = 1; @@ -880,28 +860,28 @@ static void mfm_request(void) unsigned int block, nsect; struct gendisk *disk; - DBG("mfm_request: loop start\n"); + DBG("loop start\n"); sti(); - DBG("mfm_request: before !CURRENT\n"); + DBG("before !CURRENT\n"); if (!CURRENT) { - printk("mfm_request: Exiting due to empty queue (pre)\n"); + DBG("Exiting due to empty queue (pre)\n"); do_mfm = NULL; Busy = 0; return; } - DBG("mfm_request: before arg extraction\n"); + DBG("before arg extraction\n"); disk = CURRENT->rq_disk; block = CURRENT->sector; nsect = CURRENT->nr_sectors; if (block >= get_capacity(disk) || block+nsect > get_capacity(disk)) { - printk("%s: bad access: block=%d, count=%d, nr_sects=%ld\n", + printk(KERN_ERR "%s: bad access: block=%d, count=%d, nr_sects=%ld\n", disk->disk_name, block, nsect, get_capacity(disk)); - printk("mfm: continue 1\n"); + DBG("continue 1\n"); end_request(CURRENT, 0); Busy = 0; continue; @@ -917,25 +897,25 @@ static void mfm_request(void) Copy_buffer = CURRENT->buffer; Copy_Sector = CURRENT->sector << 1; - DBG("mfm_request: block after offset=%d\n", block); + DBG("block after offset=%d\n", block); if (CURRENT->cmd != READ && CURRENT->cmd != WRITE) { - printk("unknown mfm-command %d\n", CURRENT->cmd); + printk(KERN_ERR "unknown mfm-command %d\n", CURRENT->cmd); end_request(CURRENT, 0); Busy = 0; - printk("mfm: continue 4\n"); + DBG("continue 4\n"); continue; } issue_request(block, nsect, CURRENT); break; } - DBG("mfm_request: Dropping out bottom\n"); + DBG("Dropping out bottom\n"); } static void do_mfm_request(request_queue_t *q) { - DBG("do_mfm_request: about to mfm_request\n"); + DBG("about to mfm_request\n"); mfm_request(); } @@ -945,7 +925,7 @@ static void mfm_interrupt_handler(int un do_mfm = NULL; - DBG("mfm_interrupt_handler (handler=0x%p)\n", handler); + DBG("(handler=0x%p)\n", handler); mfm_status = inw(MFM_STATUS); @@ -965,7 +945,7 @@ static void mfm_interrupt_handler(int un return; } outw (CMD_RCAL, MFM_COMMAND); /* Clear interrupt condition */ - printk ("mfm: unexpected interrupt - status = "); + printk (KERN_WARNING PFX "unexpected interrupt - status = "); print_status (); while (1); } @@ -983,7 +963,7 @@ static void mfm_geometry(int drive) struct gendisk *disk = mfm_gendisk[drive]; disk->private_data = p; if (p->cylinders) - printk ("%s: %dMB CHS=%d/%d/%d LCC=%d RECOMP=%d\n", + pr_info ("%s: %dMB CHS=%d/%d/%d LCC=%d RECOMP=%d\n", disk->disk_name, p->cylinders * p->heads * p->sectors / 4096, p->cylinders, p->heads, p->sectors, @@ -1095,7 +1075,8 @@ static int mfm_initdrives(void) if (number_mfm_drives > MFM_MAXDRIVES) { number_mfm_drives = MFM_MAXDRIVES; - printk("No. of ADFS MFM drives is greater than MFM_MAXDRIVES - you can't have that many!\n"); + printk(KERN_WARNING "No. of ADFS MFM drives is greater than " + "MFM_MAXDRIVES - you can't have that many!\n"); } for (drive = 0; drive < number_mfm_drives; drive++) { @@ -1177,7 +1158,7 @@ void xd_set_geometry(struct block_device p->cylinders = discsize / (secsptrack * heads * secsize); if ((heads < 1) || (p->cylinders > 1024)) { - printk("%s: Insane disc shape! Setting to 512/4/32\n", + printk(KERN_WARNING "%s: Insane disc shape! Setting to 512/4/32\n", bdev->bd_disk->disk_name); /* These values are fairly arbitary, but are there so that if your @@ -1238,7 +1219,7 @@ static int mfm_do_init(unsigned char irq { int i, ret; - printk("mfm: found at address %08X, interrupt %d\n", mfm_addr, mfm_irq); + pr_info(PFX "controller found at address %08X, interrupt %d\n", mfm_addr, mfm_irq); ret = -EBUSY; if (!request_region (mfm_addr, 10, "mfm")) @@ -1277,11 +1258,11 @@ static int mfm_do_init(unsigned char irq mfm_gendisk[i] = disk; } - printk("mfm: detected %d hard drive%s\n", mfm_drives, + pr_info(PFX "detected %d hard drive%s\n", mfm_drives, mfm_drives == 1 ? "" : "s"); ret = request_irq(mfm_irq, mfm_interrupt_handler, SA_INTERRUPT, "MFM harddisk", NULL); if (ret) { - printk("mfm: unable to get IRQ%d\n", mfm_irq); + printk(KERN_ERR PFX "unable to get IRQ%d\n", mfm_irq); goto out4; } --- a/drivers/acpi/container.c +++ b/drivers/acpi/container.c @@ -164,7 +164,7 @@ static void container_notify_cb(acpi_han case ACPI_NOTIFY_BUS_CHECK: /* Fall through */ case ACPI_NOTIFY_DEVICE_CHECK: - printk("Container driver received %s event\n", + printk(KERN_INFO "Container driver received %s event\n", (type == ACPI_NOTIFY_BUS_CHECK) ? "ACPI_NOTIFY_BUS_CHECK" : "ACPI_NOTIFY_DEVICE_CHECK"); status = acpi_bus_get_device(handle, &device); --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c @@ -1164,9 +1164,8 @@ acpi_ec_io_ports(struct acpi_resource *r addr = &ec->common.data_addr; } else if (ec->common.command_addr.register_bit_width == 0) { addr = &ec->common.command_addr; - } else { + } else return AE_CTRL_TERMINATE; - } addr->address_space_id = ACPI_ADR_SPACE_SYSTEM_IO; addr->register_bit_width = 8; --- a/drivers/acpi/hotkey.c +++ b/drivers/acpi/hotkey.c @@ -723,6 +723,8 @@ get_parms(char *config_record, goto do_fail; count = tmp1 - tmp; *action_handle = (char *)kmalloc(count + 1, GFP_KERNEL); + if (!*action_handle) + goto do_fail; strncpy(*action_handle, tmp, count); *(*action_handle + count) = 0; --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c @@ -315,7 +315,7 @@ acpi_status acpi_os_remove_interrupt_han void acpi_os_sleep(acpi_integer ms) { - schedule_timeout_interruptible(msecs_to_jiffies(ms)); + msleep_interruptible((unsigned int)ms); } EXPORT_SYMBOL(acpi_os_sleep); @@ -835,7 +835,7 @@ acpi_status acpi_os_wait_semaphore(acpi_ // TODO: A better timeout algorithm? { int i = 0; - static const int quantum_ms = 1000 / HZ; + unsigned int quantum_ms = jiffies_to_msecs(1); ret = down_trylock(sem); for (i = timeout; (i > 0 && ret < 0); i -= quantum_ms) { --- a/drivers/acpi/pci_link.c +++ b/drivers/acpi/pci_link.c @@ -359,7 +359,7 @@ static int acpi_pci_link_set(struct acpi /* ignore resource_source, it's optional */ break; default: - printk("ACPI BUG: resource_type %d\n", link->irq.resource_type); + printk(KERN_ERR "ACPI BUG: resource_type %d\n", link->irq.resource_type); result = -EINVAL; goto end; --- a/drivers/acpi/system.c +++ b/drivers/acpi/system.c @@ -137,9 +137,8 @@ static int __init acpi_system_init(void) entry = create_proc_entry(name, S_IRUGO, acpi_root_dir); if (!entry) goto Error; - else { + else entry->proc_fops = &acpi_system_info_ops; - } /* 'dsdt' [R] */ name = ACPI_SYSTEM_FILE_DSDT; --- a/drivers/atm/adummy.c +++ b/drivers/atm/adummy.c @@ -4,7 +4,6 @@ #include #include -#include #include #include #include --- a/drivers/atm/firestream.c +++ b/drivers/atm/firestream.c @@ -734,8 +734,8 @@ static void process_txdone_queue (struct skb = td->skb; if (skb == FS_VCC (ATM_SKB(skb)->vcc)->last_skb) { - wake_up_interruptible (& FS_VCC (ATM_SKB(skb)->vcc)->close_wait); FS_VCC (ATM_SKB(skb)->vcc)->last_skb = NULL; + wake_up_interruptible (& FS_VCC (ATM_SKB(skb)->vcc)->close_wait); } td->dev->ntxpckts--; @@ -1113,10 +1113,10 @@ static void fs_close(struct atm_vcc *atm be impolite not to send them don't you think? XXX We don't know which packets didn't get sent. So if we get interrupted in - this sleep_on, we'll lose any reference to these packets. Memory leak! + this wait_event, we'll lose any reference to these packets. Memory leak! On the other hand, it's awfully convenient that we can abort a "close" that is taking too long. Maybe just use non-interruptible sleep on? -- REW */ - interruptible_sleep_on (& vcc->close_wait); + wait_event_interruptible (vcc->close_wait, !vcc->last_skb); } txtp = &atm_vcc->qos.txtp; --- a/drivers/atm/lanai.c +++ b/drivers/atm/lanai.c @@ -1972,7 +1972,7 @@ static int __devinit lanai_pci_start(str "(itf %d): No suitable DMA available.\n", lanai->number); return -EBUSY; } - if (pci_set_consistent_dma_mask(pci, 0xFFFFFFFF) != 0) { + if (pci_set_consistent_dma_mask(pci, DMA_32BIT_MASK) != 0) { printk(KERN_WARNING DEV_LABEL "(itf %d): No suitable DMA available.\n", lanai->number); return -EBUSY; --- a/drivers/atm/nicstar.c +++ b/drivers/atm/nicstar.c @@ -1905,7 +1905,7 @@ static int push_scqe(ns_dev *card, vc_ma scq->full = 1; spin_unlock_irqrestore(&scq->lock, flags); - interruptible_sleep_on_timeout(&scq->scqfull_waitq, SCQFULL_TIMEOUT); + wait_event_interruptible_timeout(scq->scqfull_waitq, !scq->full, SCQFULL_TIMEOUT); ns_grab_scq_lock(card, scq, flags); if (scq->full) { @@ -1954,7 +1954,7 @@ static int push_scqe(ns_dev *card, vc_ma scq->full = 1; if (has_run++) break; spin_unlock_irqrestore(&scq->lock, flags); - interruptible_sleep_on_timeout(&scq->scqfull_waitq, SCQFULL_TIMEOUT); + wait_event_interruptible_timeout(scq->scqfull_waitq, !scq->full, SCQFULL_TIMEOUT); ns_grab_scq_lock(card, scq, flags); } --- a/drivers/block/DAC960.c +++ b/drivers/block/DAC960.c @@ -41,6 +41,8 @@ #include #include #include +#include +#include #include #include #include "DAC960.h" @@ -2519,7 +2521,7 @@ static boolean DAC960_RegisterBlockDevic /* for now, let all request queues share controller's lock */ RequestQueue = blk_init_queue(DAC960_RequestFunction,&Controller->queue_lock); if (!RequestQueue) { - printk("DAC960: failure to allocate request queue\n"); + printk(KERN_WARNING "DAC960: failure to allocate request queue\n"); continue; } Controller->RequestQueue[n] = RequestQueue; @@ -3593,7 +3595,7 @@ static void DAC960_V1_ProcessCompletedCo #ifdef FORCE_RETRY_FAILURE_DEBUG if (!(++retry_count % 10000)) { - printk("V1 error retry failure test\n"); + printk(KERN_DEBUG "V1 error retry failure test\n"); normal_completion = false; DAC960_V1_ReadWriteError(Command); } @@ -3657,8 +3659,8 @@ static void DAC960_V1_ProcessCompletedCo (NewEnquiry->EventLogSequenceNumber != OldEnquiry->EventLogSequenceNumber) || Controller->MonitoringTimerCount == 0 || - (jiffies - Controller->SecondaryMonitoringTime - >= DAC960_SecondaryMonitoringInterval)) + time_after_eq(jiffies, Controller->SecondaryMonitoringTime + + DAC960_SecondaryMonitoringInterval)) { Controller->V1.NeedLogicalDriveInformation = true; Controller->V1.NewEventLogSequenceNumber = @@ -4681,7 +4683,7 @@ static void DAC960_V2_ProcessCompletedCo #ifdef FORCE_RETRY_FAILURE_DEBUG if (!(++retry_count % 10000)) { - printk("V2 error retry failure test\n"); + printk(KERN_DEBUG "V2 error retry failure test\n"); normal_completion = false; DAC960_V2_ReadWriteError(Command); } @@ -5643,8 +5645,8 @@ static void DAC960_MonitoringTimerFuncti unsigned int StatusChangeCounter = Controller->V2.HealthStatusBuffer->StatusChangeCounter; boolean ForceMonitoringCommand = false; - if (jiffies - Controller->SecondaryMonitoringTime - > DAC960_SecondaryMonitoringInterval) + if (time_after(jiffies, Controller->SecondaryMonitoringTime + + DAC960_SecondaryMonitoringInterval)) { int LogicalDriveNumber; for (LogicalDriveNumber = 0; @@ -5672,8 +5674,8 @@ static void DAC960_MonitoringTimerFuncti ControllerInfo->ConsistencyChecksActive + ControllerInfo->RebuildsActive + ControllerInfo->OnlineExpansionsActive == 0 || - jiffies - Controller->PrimaryMonitoringTime - < DAC960_MonitoringTimerInterval) && + time_before(jiffies, Controller->PrimaryMonitoringTime + + DAC960_MonitoringTimerInterval)) && !ForceMonitoringCommand) { Controller->MonitoringTimer.expires = @@ -5810,8 +5812,8 @@ static void DAC960_Message(DAC960_Messag Controller->ProgressBufferLength = Length; if (Controller->EphemeralProgressMessage) { - if (jiffies - Controller->LastProgressReportTime - >= DAC960_ProgressReportingInterval) + if (time_after_eq(jiffies, Controller->LastProgressReportTime + + DAC960_ProgressReportingInterval)) { printk("%sDAC960#%d: %s", DAC960_MessageLevelMap[MessageLevel], Controller->ControllerNumber, Buffer); @@ -6226,6 +6228,7 @@ static boolean DAC960_V2_TranslatePhysic static boolean DAC960_V2_ExecuteUserCommand(DAC960_Controller_T *Controller, unsigned char *UserCommand) { + DEFINE_WAIT(wait); DAC960_Command_T *Command; DAC960_V2_CommandMailbox_T *CommandMailbox; unsigned long flags; @@ -6416,7 +6419,9 @@ static boolean DAC960_V2_ExecuteUserComm while (Controller->V2.NewControllerInformation->PhysicalScanActive) { DAC960_ExecuteCommand(Command); - sleep_on_timeout(&Controller->CommandWaitQueue, HZ); + prepare_to_wait(&Controller->CommandWaitQueue, &wait, TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ); + finish_wait(&Controller->CommandWaitQueue, &wait); } DAC960_UserCritical("Discovery Completed\n", Controller); } @@ -7016,15 +7021,13 @@ static int DAC960_gam_ioctl(struct inode GetHealthStatus.HealthStatusBuffer, sizeof(DAC960_V2_HealthStatusBuffer_T))) return -EFAULT; - while (Controller->V2.HealthStatusBuffer->StatusChangeCounter - == HealthStatusBuffer.StatusChangeCounter && - Controller->V2.HealthStatusBuffer->NextEventSequenceNumber - == HealthStatusBuffer.NextEventSequenceNumber) - { - interruptible_sleep_on_timeout(&Controller->HealthStatusWaitQueue, - DAC960_MonitoringTimerInterval); - if (signal_pending(current)) return -EINTR; - } + wait_event_interruptible_timeout(Controller->HealthStatusWaitQueue, + (Controller->V2.HealthStatusBuffer->StatusChangeCounter + != HealthStatusBuffer.StatusChangeCounter || + Controller->V2.HealthStatusBuffer->NextEventSequenceNumber + != HealthStatusBuffer.NextEventSequenceNumber), + DAC960_MonitoringTimerInterval); + if (signal_pending(current)) return -EINTR; if (copy_to_user(GetHealthStatus.HealthStatusBuffer, Controller->V2.HealthStatusBuffer, sizeof(DAC960_V2_HealthStatusBuffer_T))) --- a/drivers/block/acsi_slm.c +++ b/drivers/block/acsi_slm.c @@ -67,6 +67,7 @@ not be guaranteed. There are several way #include #include #include +#include #include #include @@ -625,12 +626,10 @@ static ssize_t slm_write( struct file *f int device = iminor(node); int n, filled, w, h; - while( SLMState == PRINTING || - (SLMState == FILLING && SLMBufOwner != device) ) { - interruptible_sleep_on( &slm_wait ); - if (signal_pending(current)) - return( -ERESTARTSYS ); - } + wait_event_interruptible(slm_wait, (SLMState != PRINTING && + (SLMState != FILLING || SLMBufOwner == device))); + if (signal_pending(current)) + return -ERESTARTSYS; if (SLMState == IDLE) { /* first data of page: get current page size */ if (slm_get_pagesize( device, &w, &h )) @@ -654,6 +653,7 @@ static ssize_t slm_write( struct file *f filled += n; if (filled == BufferSize) { + DEFINE_WAIT(wait); /* Check the paper size again! The user may have switched it in the * time between starting the data and finishing them. Would end up in * a trashy page... */ @@ -672,7 +672,9 @@ static ssize_t slm_write( struct file *f #endif start_print( device ); - sleep_on( &print_wait ); + prepare_to_wait(&print_wait, &wait, TASK_UNINTERRUPTIBLE); + schedule(); + finish_wait(&print_wait, &wait); if (SLMError && IS_REAL_ERROR(SLMError)) { printk( KERN_ERR "slm%d: %s\n", device, slm_errstr(SLMError) ); n = -EIO; --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c @@ -366,7 +366,10 @@ static void __devinit cciss_procinit(int pde = create_proc_read_entry(hba[i]->devname, S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH, proc_cciss, cciss_proc_get_info, hba[i]); - pde->write_proc = cciss_proc_write; + if (!pde) + printk(KERN_WARNING "cciss: unable to create /proc entry\n"); + else + pde->write_proc = cciss_proc_write; } #endif /* CONFIG_PROC_FS */ @@ -2816,8 +2819,7 @@ static int cciss_pci_init(ctlr_info_t *c scratchpad = readl(c->vaddr + SA5_SCRATCHPAD_OFFSET); if (scratchpad == CCISS_FIRMWARE_READY) break; - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(HZ / 10); /* wait 100ms */ + msleep(100); } if (scratchpad != CCISS_FIRMWARE_READY) { printk(KERN_WARNING "cciss: Board not ready. Timed out.\n"); --- a/drivers/block/cpqarray.c +++ b/drivers/block/cpqarray.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -65,8 +66,6 @@ MODULE_LICENSE("GPL"); #define MAX_CTLR 8 #define CTLR_SHIFT 8 -#define CPQARRAY_DMA_MASK 0xFFFFFFFF /* 32 bit DMA */ - static int nr_ctlr; static ctlr_info_t *hba[MAX_CTLR]; @@ -215,13 +214,18 @@ static struct proc_dir_entry *proc_array */ static void __init ida_procinit(int i) { + struct proc_dir_entry *ent; + if (proc_array == NULL) { proc_array = proc_mkdir("cpqarray", proc_root_driver); if (!proc_array) return; } - create_proc_read_entry(hba[i]->devname, 0, proc_array, + ent = create_proc_read_entry(hba[i]->devname, 0, proc_array, ida_proc_get_info, hba[i]); + if (!ent) + printk(KERN_WARNING + "cpqarray: unable to create /proc entry\n"); } /* @@ -628,7 +632,7 @@ static int cpqarray_pci_init(ctlr_info_t for(i=0; i<6; i++) addr[i] = pci_resource_start(pdev, i); - if (pci_set_dma_mask(pdev, CPQARRAY_DMA_MASK) != 0) + if (pci_set_dma_mask(pdev, DMA_32BIT_MASK) != 0) { printk(KERN_ERR "cpqarray: Unable to set DMA mask\n"); return -1; --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -179,6 +179,7 @@ static int print_unex = 1; #include #include #include /* for invalidate_buffers() */ +#include /* * PS/2 floppies have much slower step rates than regular floppies. @@ -734,7 +735,7 @@ static int disk_change(int drive) { int fdc = FDC(drive); #ifdef FLOPPY_SANITY_CHECK - if (jiffies - UDRS->select_date < UDP->select_delay) + if (time_before(jiffies, UDRS->select_date + UDP->select_delay)) DPRINT("WARNING disk change called early\n"); if (!(FDCS->dor & (0x10 << UNIT(drive))) || (FDCS->dor & 3) != UNIT(drive) || fdc != FDC(drive)) { @@ -1062,7 +1063,7 @@ static int fd_wait_for_completion(unsign return 1; } - if ((signed)(jiffies - delay) < 0) { + if (time_before(jiffies, delay)) { del_timer(&fd_timer); fd_timer.function = function; fd_timer.expires = delay; @@ -1522,7 +1523,7 @@ static void setup_rw_floppy(void) * again just before spinup completion. Beware that * after scandrives, we must again wait for selection. */ - if ((signed)(ready_date - jiffies) > DP->select_delay) { + if (time_after(ready_date, jiffies + DP->select_delay)) { ready_date -= DP->select_delay; function = (timeout_fn) floppy_start; } else @@ -3810,7 +3811,7 @@ static int check_floppy_change(struct ge if (UTESTF(FD_DISK_CHANGED) || UTESTF(FD_VERIFY)) return 1; - if (UDP->checkfreq < (int)(jiffies - UDRS->last_checked)) { + if (time_after(jiffies, UDRS->last_checked + UDP->checkfreq)) { if (floppy_grab_irq_and_dma()) { return 1; } --- a/drivers/block/paride/comm.c +++ b/drivers/block/paride/comm.c @@ -180,7 +180,7 @@ static void comm_log_adapter( PIA *pi, c { char *mode_string[5] = {"4-bit","8-bit","EPP-8","EPP-16","EPP-32"}; - printk("%s: comm %s, DataStor Commuter at 0x%x, ", + printk(KERN_INFO "%s: comm %s, DataStor Commuter at 0x%x, ", pi->device,COMM_VERSION,pi->port); printk("mode %d (%s), delay %d\n",pi->mode, mode_string[pi->mode],pi->delay); --- a/drivers/block/paride/dstr.c +++ b/drivers/block/paride/dstr.c @@ -195,7 +195,7 @@ static void dstr_log_adapter( PIA *pi, c { char *mode_string[5] = {"4-bit","8-bit","EPP-8", "EPP-16","EPP-32"}; - printk("%s: dstr %s, DataStor EP2000 at 0x%x, ", + printk(KERN_INFO "%s: dstr %s, DataStor EP2000 at 0x%x, ", pi->device,DSTR_VERSION,pi->port); printk("mode %d (%s), delay %d\n",pi->mode, mode_string[pi->mode],pi->delay); --- a/drivers/block/paride/epat.c +++ b/drivers/block/paride/epat.c @@ -280,7 +280,7 @@ static int epat_test_proto( PIA *pi, cha epat_disconnect(pi); if (verbose) { - printk("%s: epat: port 0x%x, mode %d, ccr %x, test=(%d,%d,%d)\n", + printk(KERN_DEBUG "%s: epat: port 0x%x, mode %d, ccr %x, test=(%d,%d,%d)\n", pi->device,pi->port,pi->mode,cc,e[0],e[1],f); } @@ -298,7 +298,7 @@ static void epat_log_adapter( PIA *pi, c ver = RR(0xb); epat_disconnect(pi); - printk("%s: epat %s, Shuttle EPAT chip %x at 0x%x, ", + printk(KERN_INFO "%s: epat %s, Shuttle EPAT chip %x at 0x%x, ", pi->device,EPAT_VERSION,ver,pi->port); printk("mode %d (%s), delay %d\n",pi->mode, mode_string[pi->mode],pi->delay); --- a/drivers/block/paride/epia.c +++ b/drivers/block/paride/epia.c @@ -263,7 +263,7 @@ static int epia_test_proto( PIA *pi, cha epia_disconnect(pi); if (verbose) { - printk("%s: epia: port 0x%x, mode %d, test=(%d,%d,%d)\n", + printk(KERN_DEBUG "%s: epia: port 0x%x, mode %d, test=(%d,%d,%d)\n", pi->device,pi->port,pi->mode,e[0],e[1],f); } @@ -277,7 +277,7 @@ static void epia_log_adapter( PIA *pi, c { char *mode_string[6] = {"4-bit","5/3","8-bit", "EPP-8","EPP-16","EPP-32"}; - printk("%s: epia %s, Shuttle EPIA at 0x%x, ", + printk(KERN_INFO "%s: epia %s, Shuttle EPIA at 0x%x, ", pi->device,EPIA_VERSION,pi->port); printk("mode %d (%s), delay %d\n",pi->mode, mode_string[pi->mode],pi->delay); --- a/drivers/block/paride/fit2.c +++ b/drivers/block/paride/fit2.c @@ -115,7 +115,7 @@ static void fit2_disconnect ( PIA *pi ) static void fit2_log_adapter( PIA *pi, char * scratch, int verbose ) -{ printk("%s: fit2 %s, FIT 2000 adapter at 0x%x, delay %d\n", +{ printk(KERN_INFO "%s: fit2 %s, FIT 2000 adapter at 0x%x, delay %d\n", pi->device,FIT2_VERSION,pi->port,pi->delay); } --- a/drivers/block/paride/fit3.c +++ b/drivers/block/paride/fit3.c @@ -173,7 +173,7 @@ static void fit3_log_adapter( PIA *pi, c { char *mode_string[3] = {"4-bit","8-bit","EPP"}; - printk("%s: fit3 %s, FIT 3000 adapter at 0x%x, " + printk(KERN_INFO "%s: fit3 %s, FIT 3000 adapter at 0x%x, " "mode %d (%s), delay %d\n", pi->device,FIT3_VERSION,pi->port, pi->mode,mode_string[pi->mode],pi->delay); --- a/drivers/block/paride/friq.c +++ b/drivers/block/paride/friq.c @@ -208,7 +208,7 @@ static int friq_test_proto( PIA *pi, cha friq_disconnect(pi); if (verbose) { - printk("%s: friq: port 0x%x, mode %d, test=(%d,%d,%d)\n", + printk(KERN_DEBUG "%s: friq: port 0x%x, mode %d, test=(%d,%d,%d)\n", pi->device,pi->port,pi->mode,e[0],e[1],r); } @@ -221,7 +221,7 @@ static void friq_log_adapter( PIA *pi, c { char *mode_string[6] = {"4-bit","8-bit", "EPP-8","EPP-16","EPP-32"}; - printk("%s: friq %s, Freecom IQ ASIC-2 adapter at 0x%x, ", pi->device, + printk(KERN_INFO "%s: friq %s, Freecom IQ ASIC-2 adapter at 0x%x, ", pi->device, FRIQ_VERSION,pi->port); printk("mode %d (%s), delay %d\n",pi->mode, mode_string[pi->mode],pi->delay); --- a/drivers/block/paride/frpw.c +++ b/drivers/block/paride/frpw.c @@ -231,14 +231,14 @@ static int frpw_test_proto( PIA *pi, cha if (((pi->private%2) == 0) && (pi->mode > 2)) { if (verbose) - printk("%s: frpw: Xilinx does not support mode %d\n", + printk(KERN_DEBUG "%s: frpw: Xilinx does not support mode %d\n", pi->device, pi->mode); return 1; } if (((pi->private%2) == 1) && (pi->mode == 2)) { if (verbose) - printk("%s: frpw: ASIC does not support mode 2\n", + printk(KERN_DEBUG "%s: frpw: ASIC does not support mode 2\n", pi->device); return 1; } @@ -261,7 +261,7 @@ static int frpw_test_proto( PIA *pi, cha frpw_disconnect(pi); if (verbose) { - printk("%s: frpw: port 0x%x, chip %ld, mode %d, test=(%d,%d,%d)\n", + printk(KERN_DEBUG "%s: frpw: port 0x%x, chip %ld, mode %d, test=(%d,%d,%d)\n", pi->device,pi->port,(pi->private%2),pi->mode,e[0],e[1],r); } @@ -274,7 +274,7 @@ static void frpw_log_adapter( PIA *pi, c { char *mode_string[6] = {"4-bit","8-bit","EPP", "EPP-8","EPP-16","EPP-32"}; - printk("%s: frpw %s, Freecom (%s) adapter at 0x%x, ", pi->device, + printk(KERN_INFO "%s: frpw %s, Freecom (%s) adapter at 0x%x, ", pi->device, FRPW_VERSION,((pi->private%2) == 0)?"Xilinx":"ASIC",pi->port); printk("mode %d (%s), delay %d\n",pi->mode, mode_string[pi->mode],pi->delay); --- a/drivers/block/paride/kbic.c +++ b/drivers/block/paride/kbic.c @@ -232,7 +232,7 @@ static void kbic_log_adapter( PIA *pi, c { char *mode_string[6] = {"4-bit","5/3","8-bit", "EPP-8","EPP_16","EPP-32"}; - printk("%s: kbic %s, KingByte %s at 0x%x, ", + printk(KERN_INFO "%s: kbic %s, KingByte %s at 0x%x, ", pi->device,KBIC_VERSION,chip,pi->port); printk("mode %d (%s), delay %d\n",pi->mode, mode_string[pi->mode],pi->delay); --- a/drivers/block/paride/ktti.c +++ b/drivers/block/paride/ktti.c @@ -92,7 +92,7 @@ static void ktti_disconnect ( PIA *pi ) static void ktti_log_adapter( PIA *pi, char * scratch, int verbose ) -{ printk("%s: ktti %s, KT adapter at 0x%x, delay %d\n", +{ printk(KERN_INFO "%s: ktti %s, KT adapter at 0x%x, delay %d\n", pi->device,KTTI_VERSION,pi->port,pi->delay); } --- a/drivers/block/paride/on20.c +++ b/drivers/block/paride/on20.c @@ -115,7 +115,7 @@ static void on20_log_adapter( PIA *pi, c { char *mode_string[2] = {"4-bit","8-bit"}; - printk("%s: on20 %s, OnSpec 90c20 at 0x%x, ", + printk(KERN_INFO "%s: on20 %s, OnSpec 90c20 at 0x%x, ", pi->device,ON20_VERSION,pi->port); printk("mode %d (%s), delay %d\n",pi->mode, mode_string[pi->mode],pi->delay); --- a/drivers/block/paride/on26.c +++ b/drivers/block/paride/on26.c @@ -167,7 +167,7 @@ static int on26_test_port( PIA *pi) /* } if (i == RESET_WAIT) - printk("on26: Device reset failed (%x,%x)\n",x,y); + printk(KERN_NOTICE "on26: Device reset failed (%x,%x)\n",x,y); w0(4); P1; w0(4); P1; } @@ -280,7 +280,7 @@ static void on26_log_adapter( PIA *pi, c { char *mode_string[5] = {"4-bit","8-bit","EPP-8", "EPP-16","EPP-32"}; - printk("%s: on26 %s, OnSpec 90c26 at 0x%x, ", + printk(KERN_INFO "%s: on26 %s, OnSpec 90c26 at 0x%x, ", pi->device,ON26_VERSION,pi->port); printk("mode %d (%s), delay %d\n",pi->mode, mode_string[pi->mode],pi->delay); --- a/drivers/block/paride/paride.c +++ b/drivers/block/paride/paride.c @@ -209,7 +209,7 @@ static int default_test_proto(PIA * pi, pi->proto->disconnect(pi); if (verbose) - printk("%s: %s: port 0x%x, mode %d, test=(%d,%d)\n", + printk(KERN_INFO "%s: %s: port 0x%x, mode %d, test=(%d,%d)\n", pi->device, pi->proto->name, pi->port, pi->mode, e[0], e[1]); @@ -236,7 +236,7 @@ int pi_register(PIP * pr) for (k = 0; k < MAX_PROTOS; k++) if (protocols[k] && !strcmp(pr->name, protocols[k]->name)) { - printk("paride: %s protocol already registered\n", + printk(KERN_DEBUG "paride: %s protocol already registered\n", pr->name); return 0; } @@ -244,12 +244,12 @@ int pi_register(PIP * pr) while ((k < MAX_PROTOS) && (protocols[k])) k++; if (k == MAX_PROTOS) { - printk("paride: protocol table full\n"); + printk(KERN_INFO "paride: protocol table full\n"); return 0; } protocols[k] = pr; pr->index = k; - printk("paride: %s registered as protocol %d\n", pr->name, k); + printk(KERN_INFO "paride: %s registered as protocol %d\n", pr->name, k); return 1; } @@ -260,7 +260,7 @@ void pi_unregister(PIP * pr) if (!pr) return; if (protocols[pr->index] != pr) { - printk("paride: %s not registered\n", pr->name); + printk(KERN_INFO "paride: %s not registered\n", pr->name); return; } protocols[pr->index] = NULL; @@ -288,7 +288,7 @@ static int pi_register_parport(PIA * pi, init_waitqueue_head(&pi->parq); if (verbose) - printk("%s: 0x%x is %s\n", pi->device, pi->port, port->name); + printk(KERN_DEBUG "%s: 0x%x is %s\n", pi->device, pi->port, port->name); pi->parname = (char *) port->name; #endif @@ -390,7 +390,7 @@ int pi_init(PIA * pi, int autoprobe, int } else if ((s < 0) || (s >= MAX_PROTOS) || (port <= 0) || (!protocols[s]) || (unit < 0) || (unit >= protocols[s]->max_units)) { - printk("%s: Invalid parameters\n", device); + printk(KERN_NOTICE "%s: Invalid parameters\n", device); return 0; } @@ -443,9 +443,9 @@ int pi_init(PIA * pi, int autoprobe, int if (!pi->port) { if (autoprobe) - printk("%s: Autoprobe failed\n", device); + printk(KERN_INFO "%s: Autoprobe failed\n", device); else - printk("%s: Adapter not found\n", device); + printk(KERN_INFO "%s: Adapter not found\n", device); return 0; } #ifndef CONFIG_PARPORT @@ -457,7 +457,7 @@ int pi_init(PIA * pi, int autoprobe, int #endif /* !CONFIG_PARPORT */ if (pi->parname) - printk("%s: Sharing %s at 0x%x\n", pi->device, + printk(KERN_INFO "%s: Sharing %s at 0x%x\n", pi->device, pi->parname, pi->port); pi->proto->log_adapter(pi, scratch, verbose); --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c @@ -409,7 +409,7 @@ static void pkt_dump_sense(struct packet int i; struct request_sense *sense = cgc->sense; - printk("pktcdvd:"); + printk(KERN_INFO "pktcdvd:"); for (i = 0; i < CDROM_PACKET_SIZE; i++) printk(" %02x", cgc->cmd[i]); printk(" - "); @@ -419,7 +419,7 @@ static void pkt_dump_sense(struct packet return; } - printk("sense %02x.%02x.%02x", sense->sense_key, sense->asc, sense->ascq); + printk(KERN_INFO "sense %02x.%02x.%02x", sense->sense_key, sense->asc, sense->ascq); if (sense->sense_key > 8) { printk(" (INVALID)\n"); @@ -609,7 +609,7 @@ static int pkt_set_segment_merging(struc set_bit(PACKET_MERGE_SEGS, &pd->flags); return 0; } else { - printk("pktcdvd: cdrom max_phys_segments too small\n"); + printk(KERN_WARNING "pktcdvd: cdrom max_phys_segments too small\n"); return -EIO; } } @@ -1304,7 +1304,7 @@ work_to_do: static void pkt_print_settings(struct pktcdvd_device *pd) { - printk("pktcdvd: %s packets, ", pd->settings.fp ? "Fixed" : "Variable"); + printk(KERN_INFO "pktcdvd: %s packets, ", pd->settings.fp ? "Fixed" : "Variable"); printk("%u blocks, ", pd->settings.size >> 2); printk("Mode-%c disc\n", pd->settings.block_mode == 8 ? '1' : '2'); } @@ -1489,7 +1489,7 @@ static int pkt_set_write_settings(struct /* * paranoia */ - printk("pktcdvd: write mode wrong %d\n", wp->data_block_type); + printk(KERN_WARNING "pktcdvd: write mode wrong %d\n", wp->data_block_type); return 1; } wp->packet_size = cpu_to_be32(pd->settings.size >> 2); @@ -1531,7 +1531,7 @@ static int pkt_good_track(track_informat if (ti->rt == 1 && ti->blank == 0 && ti->packet == 1) return 0; - printk("pktcdvd: bad state %d-%d-%d\n", ti->rt, ti->blank, ti->packet); + printk(KERN_WARNING "pktcdvd: bad state %d-%d-%d\n", ti->rt, ti->blank, ti->packet); return 1; } @@ -1549,7 +1549,7 @@ static int pkt_good_disc(struct pktcdvd_ case 0x12: /* DVD-RAM */ return 0; default: - printk("pktcdvd: Wrong disc profile (%x)\n", pd->mmc3_profile); + printk(KERN_INFO "pktcdvd: Wrong disc profile (%x)\n", pd->mmc3_profile); return 1; } @@ -1558,22 +1558,22 @@ static int pkt_good_disc(struct pktcdvd_ * but i'm not sure, should we leave this to user apps? probably. */ if (di->disc_type == 0xff) { - printk("pktcdvd: Unknown disc. No track?\n"); + printk(KERN_INFO "pktcdvd: Unknown disc. No track?\n"); return 1; } if (di->disc_type != 0x20 && di->disc_type != 0) { - printk("pktcdvd: Wrong disc type (%x)\n", di->disc_type); + printk(KERN_INFO "pktcdvd: Wrong disc type (%x)\n", di->disc_type); return 1; } if (di->erasable == 0) { - printk("pktcdvd: Disc not erasable\n"); + printk(KERN_INFO "pktcdvd: Disc not erasable\n"); return 1; } if (di->border_status == PACKET_SESSION_RESERVED) { - printk("pktcdvd: Can't write to last track (reserved)\n"); + printk(KERN_INFO "pktcdvd: Can't write to last track (reserved)\n"); return 1; } @@ -1598,7 +1598,7 @@ static int pkt_probe_settings(struct pkt memset(&ti, 0, sizeof(track_information)); if ((ret = pkt_get_disc_info(pd, &di))) { - printk("failed get_disc\n"); + printk(KERN_INFO "failed get_disc\n"); return ret; } @@ -1607,28 +1607,28 @@ static int pkt_probe_settings(struct pkt switch (pd->mmc3_profile) { case 0x1a: /* DVD+RW */ - printk("pktcdvd: inserted media is DVD+RW\n"); + printk(KERN_INFO "pktcdvd: inserted media is DVD+RW\n"); break; case 0x13: /* DVD-RW */ - printk("pktcdvd: inserted media is DVD-RW\n"); + printk(KERN_INFO "pktcdvd: inserted media is DVD-RW\n"); break; case 0x12: /* DVD-RAM */ - printk("pktcdvd: inserted media is DVD-RAM\n"); + printk(KERN_INFO "pktcdvd: inserted media is DVD-RAM\n"); break; default: - printk("pktcdvd: inserted media is CD-R%s\n", di.erasable ? "W" : ""); + printk(KERN_INFO "pktcdvd: inserted media is CD-R%s\n", di.erasable ? "W" : ""); break; } pd->type = di.erasable ? PACKET_CDRW : PACKET_CDR; track = 1; /* (di.last_track_msb << 8) | di.last_track_lsb; */ if ((ret = pkt_get_track_info(pd, track, 1, &ti))) { - printk("pktcdvd: failed get_track\n"); + printk(KERN_INFO "pktcdvd: failed get_track\n"); return ret; } if (pkt_good_track(&ti)) { - printk("pktcdvd: can't write to this track\n"); + printk(KERN_WARNING "pktcdvd: can't write to this track\n"); return -ENXIO; } @@ -1638,7 +1638,7 @@ static int pkt_probe_settings(struct pkt */ pd->settings.size = be32_to_cpu(ti.fixed_packet_size) << 2; if (pd->settings.size == 0) { - printk("pktcdvd: detected zero packet size!\n"); + printk(KERN_INFO "pktcdvd: detected zero packet size!\n"); pd->settings.size = 128; } if (pd->settings.size > PACKET_MAX_SECTORS) { @@ -1684,7 +1684,7 @@ static int pkt_probe_settings(struct pkt pd->settings.block_mode = PACKET_BLOCK_MODE2; break; default: - printk("pktcdvd: unknown data mode\n"); + printk(KERN_WARNING "pktcdvd: unknown data mode\n"); return 1; } return 0; @@ -1718,10 +1718,10 @@ static int pkt_write_caching(struct pktc cgc.buflen = cgc.cmd[8] = 2 + ((buf[0] << 8) | (buf[1] & 0xff)); ret = pkt_mode_select(pd, &cgc); if (ret) { - printk("pktcdvd: write caching control failed\n"); + printk(KERN_INFO "pktcdvd: write caching control failed\n"); pkt_dump_sense(&cgc); } else if (!ret && set) - printk("pktcdvd: enabled write caching on %s\n", pd->name); + printk(KERN_INFO "pktcdvd: enabled write caching on %s\n", pd->name); return ret; } @@ -1835,11 +1835,11 @@ static int pkt_media_speed(struct pktcdv } if (!buf[6] & 0x40) { - printk("pktcdvd: Disc type is not CD-RW\n"); + printk(KERN_INFO "pktcdvd: Disc type is not CD-RW\n"); return 1; } if (!buf[6] & 0x4) { - printk("pktcdvd: A1 values on media are not valid, maybe not CDRW?\n"); + printk(KERN_INFO "pktcdvd: A1 values on media are not valid, maybe not CDRW?\n"); return 1; } @@ -1859,14 +1859,14 @@ static int pkt_media_speed(struct pktcdv *speed = us_clv_to_speed[sp]; break; default: - printk("pktcdvd: Unknown disc sub-type %d\n",st); + printk(KERN_INFO "pktcdvd: Unknown disc sub-type %d\n",st); return 1; } if (*speed) { - printk("pktcdvd: Max. media speed: %d\n",*speed); + printk(KERN_INFO "pktcdvd: Max. media speed: %d\n",*speed); return 0; } else { - printk("pktcdvd: Unknown speed %d for sub-type %d\n",sp,st); + printk(KERN_INFO "pktcdvd: Unknown speed %d for sub-type %d\n",sp,st); return 1; } } @@ -1959,7 +1959,7 @@ static int pkt_open_dev(struct pktcdvd_d goto out_putdev; if ((ret = pkt_get_last_written(pd, &lba))) { - printk("pktcdvd: pkt_get_last_written failed\n"); + printk(KERN_WARNING "pktcdvd: pkt_get_last_written failed\n"); goto out_unclaim; } @@ -1988,7 +1988,7 @@ static int pkt_open_dev(struct pktcdvd_d goto out_unclaim; if (write) - printk("pktcdvd: %lukB available on disc\n", lba << 1); + printk(KERN_INFO "pktcdvd: %lukB available on disc\n", lba << 1); return 0; @@ -2121,7 +2121,7 @@ static int pkt_make_request(request_queu pd = q->queuedata; if (!pd) { - printk("pktcdvd: %s incorrect request queue\n", bdevname(bio->bi_bdev, b)); + printk(KERN_WARNING "pktcdvd: %s incorrect request queue\n", bdevname(bio->bi_bdev, b)); goto end_io; } @@ -2143,13 +2143,13 @@ static int pkt_make_request(request_queu } if (!test_bit(PACKET_WRITABLE, &pd->flags)) { - printk("pktcdvd: WRITE for ro device %s (%llu)\n", + printk(KERN_INFO "pktcdvd: WRITE for ro device %s (%llu)\n", pd->name, (unsigned long long)bio->bi_sector); goto end_io; } if (!bio->bi_size || (bio->bi_size % CD_FRAMESIZE)) { - printk("pktcdvd: wrong bio size\n"); + printk(KERN_WARNING "pktcdvd: wrong bio size\n"); goto end_io; } @@ -2352,7 +2352,7 @@ static int pkt_new_dev(struct pktcdvd_de struct block_device *bdev; if (pd->pkt_dev == dev) { - printk("pktcdvd: Recursive setup not allowed\n"); + printk(KERN_INFO "pktcdvd: Recursive setup not allowed\n"); return -EBUSY; } for (i = 0; i < MAX_WRITERS; i++) { @@ -2360,11 +2360,11 @@ static int pkt_new_dev(struct pktcdvd_de if (!pd2) continue; if (pd2->bdev->bd_dev == dev) { - printk("pktcdvd: %s already setup\n", bdevname(pd2->bdev, b)); + printk(KERN_INFO "pktcdvd: %s already setup\n", bdevname(pd2->bdev, b)); return -EBUSY; } if (pd2->pkt_dev == dev) { - printk("pktcdvd: Can't chain pktcdvd devices\n"); + printk(KERN_INFO "pktcdvd: Can't chain pktcdvd devices\n"); return -EBUSY; } } @@ -2380,7 +2380,7 @@ static int pkt_new_dev(struct pktcdvd_de __module_get(THIS_MODULE); if (!pkt_grow_pktlist(pd, CONFIG_CDROM_PKTCDVD_BUFFERS)) { - printk("pktcdvd: not enough memory for buffers\n"); + printk(KERN_WARNING "pktcdvd: not enough memory for buffers\n"); ret = -ENOMEM; goto out_mem; } @@ -2393,7 +2393,7 @@ static int pkt_new_dev(struct pktcdvd_de atomic_set(&pd->cdrw.pending_bios, 0); pd->cdrw.thread = kthread_run(kcdrwd, pd, "%s", pd->name); if (IS_ERR(pd->cdrw.thread)) { - printk("pktcdvd: can't start kernel thread\n"); + printk(KERN_ERR "pktcdvd: can't start kernel thread\n"); ret = -ENOMEM; goto out_thread; } @@ -2441,7 +2441,7 @@ static int pkt_ioctl(struct inode *inode return blkdev_ioctl(pd->bdev->bd_inode, file, cmd, arg); default: - printk("pktcdvd: Unknown ioctl for %s (%x)\n", pd->name, cmd); + printk(KERN_WARNING "pktcdvd: Unknown ioctl for %s (%x)\n", pd->name, cmd); return -ENOTTY; } @@ -2486,7 +2486,7 @@ static int pkt_setup_dev(struct pkt_ctrl if (!pkt_devs[idx]) break; if (idx == MAX_WRITERS) { - printk("pktcdvd: max %d writers supported\n", MAX_WRITERS); + printk(KERN_INFO "pktcdvd: max %d writers supported\n", MAX_WRITERS); return -EBUSY; } @@ -2662,7 +2662,7 @@ static int __init pkt_init(void) ret = register_blkdev(pkt_major, "pktcdvd"); if (ret < 0) { - printk("pktcdvd: Unable to register block device\n"); + printk(KERN_WARNING "pktcdvd: Unable to register block device\n"); goto out2; } if (!pkt_major) @@ -2670,7 +2670,7 @@ static int __init pkt_init(void) ret = misc_register(&pkt_misc); if (ret) { - printk("pktcdvd: Unable to register misc device\n"); + printk(KERN_WARNING "pktcdvd: Unable to register misc device\n"); goto out; } --- a/drivers/block/ps2esdi.c +++ b/drivers/block/ps2esdi.c @@ -44,6 +44,7 @@ #include #include #include +#include #include #include @@ -460,8 +461,7 @@ static void __init ps2esdi_get_device_cf cmd_blk[1] = 0; no_int_yet = TRUE; ps2esdi_out_cmd_blk(cmd_blk); - if (no_int_yet) - sleep_on(&ps2esdi_int); + wait_event(ps2esdi_int, !no_int_yet); if (ps2esdi_drives > 1) { printk("%s: Drive 1\n", DEVICE_NAME); /*BA */ @@ -469,8 +469,7 @@ static void __init ps2esdi_get_device_cf cmd_blk[1] = 0; no_int_yet = TRUE; ps2esdi_out_cmd_blk(cmd_blk); - if (no_int_yet) - sleep_on(&ps2esdi_int); + wait_event(ps2esdi_int, !no_int_yet); } /* if second physical drive is present */ return; } --- a/drivers/block/swim3.c +++ b/drivers/block/swim3.c @@ -821,13 +821,15 @@ static void release_drive(struct floppy_ static int fd_eject(struct floppy_state *fs) { - int err, n; + int err; + unsigned long end_jiffies; err = grab_drive(fs, ejecting, 1); if (err) return err; swim3_action(fs, EJECT); - for (n = 20; n > 0; --n) { + end_jiffies = jiffies + 20; + while (time_before(jiffies, end_jiffies)) { if (signal_pending(current)) { err = -EINTR; break; @@ -880,7 +882,8 @@ static int floppy_open(struct inode *ino { struct floppy_state *fs = inode->i_bdev->bd_disk->private_data; struct swim3 __iomem *sw = fs->swim3; - int n, err = 0; + int err = 0; + unsigned long end_jiffies, check_jiffies; if (fs->ref_count == 0) { #ifdef CONFIG_PMAC_MEDIABAY @@ -896,8 +899,11 @@ static int floppy_open(struct inode *ino swim3_action(fs, MOTOR_ON); fs->write_prot = -1; fs->cur_cyl = -1; - for (n = 0; n < 2 * HZ; ++n) { - if (n >= HZ/30 && swim3_readbit(fs, SEEK_COMPLETE)) + end_jiffies = jiffies + 2 * HZ; + check_jiffies = jiffies + HZ/30; + while (time_before(jiffies, end_jiffies)) { + if (time_after(jiffies, check_jiffies) && + swim3_readbit(fs, SEEK_COMPLETE)) break; if (signal_pending(current)) { err = -EINTR; @@ -968,7 +974,8 @@ static int floppy_revalidate(struct gend { struct floppy_state *fs = disk->private_data; struct swim3 __iomem *sw; - int ret, n; + int ret; + unsigned long end_jiffies; #ifdef CONFIG_PMAC_MEDIABAY if (fs->media_bay && check_media_bay(fs->media_bay, MB_FD)) @@ -983,7 +990,8 @@ static int floppy_revalidate(struct gend fs->write_prot = -1; fs->cur_cyl = -1; mdelay(1); - for (n = HZ; n > 0; --n) { + end_jiffies = jiffies + HZ; + while (time_before(jiffies, end_jiffies)) { if (swim3_readbit(fs, SEEK_COMPLETE)) break; if (signal_pending(current)) --- a/drivers/block/swim_iop.c +++ b/drivers/block/swim_iop.c @@ -317,7 +317,8 @@ static void swimiop_status_update(int dr static int swimiop_eject(struct floppy_state *fs) { - int err, n; + int err; + unsigned long end_jiffies; struct swim_iop_req req; struct swimcmd_eject *cmd = (struct swimcmd_eject *) &req.command[0]; @@ -332,8 +333,8 @@ static int swimiop_eject(struct floppy_s release_drive(fs); return err; } - for (n = 2*HZ; n > 0; --n) { - if (req.complete) break; + end_jiffies = jiffies + 2 * HZ; + while (!reg.complete && time_before(jiffies, end_jiffies)) { if (signal_pending(current)) { err = -EINTR; break; @@ -426,23 +427,27 @@ static int grab_drive(struct floppy_stat int interruptible) { unsigned long flags; + int err = 0; local_irq_save(flags); - if (fs->state != idle) { + while ((fs->state != idle) && !err) { ++fs->wanted; - while (fs->state != available) { - if (interruptible && signal_pending(current)) { - --fs->wanted; - local_irq_restore(flags); - return -EINTR; - } - interruptible_sleep_on(&fs->wait); + local_irq_restore(flags); + if (interruptible) { + err = wait_event_interruptible(fs->wait, + fs->state == available); + if (err) + err = -EINTR; + } else { + wait_event(fs->wait, fs->state == available); } + local_irq_save(flags); --fs->wanted; } - fs->state = state; + if (!err) + fs->state = state; local_irq_restore(flags); - return 0; + return err; } static void release_drive(struct floppy_state *fs) --- a/drivers/block/sx8.c +++ b/drivers/block/sx8.c @@ -551,9 +551,10 @@ static struct carm_request *carm_get_spe unsigned long flags; struct carm_request *crq = NULL; struct request *rq; - int tries = 5000; + unsigned long end_time; - while (tries-- > 0) { + end_time = jiffies + msecs_to_jiffies(50000); + while (time_before(jiffies, end_time)) { spin_lock_irqsave(&host->lock, flags); crq = carm_get_request(host); spin_unlock_irqrestore(&host->lock, flags); --- a/drivers/block/umem.c +++ b/drivers/block/umem.c @@ -50,7 +50,7 @@ #include #include #include - +#include #include /* O_ACCMODE */ #include /* HDIO_GETGEO */ @@ -881,8 +881,8 @@ static int __devinit mm_pci_probe(struct printk(KERN_INFO "Micro Memory(tm) controller #%d found at %02x:%02x (PCI Mem Module (Battery Backup))\n", card->card_number, dev->bus->number, dev->devfn); - if (pci_set_dma_mask(dev, 0xffffffffffffffffLL) && - !pci_set_dma_mask(dev, 0xffffffffLL)) { + if (pci_set_dma_mask(dev, DMA_64BIT_MASK) && + pci_set_dma_mask(dev, DMA_32BIT_MASK)) { printk(KERN_WARNING "MM%d: NO suitable DMA found\n",num_cards); return -ENOMEM; } --- a/drivers/block/xd.c +++ b/drivers/block/xd.c @@ -539,6 +539,7 @@ static inline u_char xd_waitport (u_shor static inline u_int xd_wait_for_IRQ (void) { + DEFINE_WAIT(wait); unsigned long flags; xd_watchdog_int.expires = jiffies + 8 * HZ; add_timer(&xd_watchdog_int); @@ -547,7 +548,9 @@ static inline u_int xd_wait_for_IRQ (voi enable_dma(xd_dma); release_dma_lock(flags); - sleep_on(&xd_wait_int); + prepare_to_wait(&xd_wait_int, &wait, TASK_UNINTERRUPTIBLE); + schedule(); + finish_wait(&xd_wait_int, &wait); del_timer(&xd_watchdog_int); xdc_busy = 0; --- a/drivers/cdrom/aztcd.c +++ b/drivers/cdrom/aztcd.c @@ -427,11 +427,12 @@ static void dten_low(void) * may cause kernel panic when used in the wrong place */ #define STEN_LOW_WAIT statusAzt() +#define STATUS_AZT_WAKEUP_COND (!(inb(STATUS_PORT) & AFL_STATUS)) static void statusAzt(void) { AztTimeout = AZT_STATUS_DELAY; SET_TIMER(aztStatTimer, HZ / 100); - sleep_on(&azt_waitq); + wait_event(azt_waitq, (STATUS_AZT_WAKEUP_COND || AztTimeout <= 0)); if (AztTimeout <= 0) printk("aztcd: Error Wait STEN_LOW_WAIT command:%x\n", aztCmd); @@ -440,7 +441,7 @@ static void statusAzt(void) static void aztStatTimer(void) { - if (!(inb(STATUS_PORT) & AFL_STATUS)) { + if (STATUS_AZT_WAKEUP_COND) { wake_up(&azt_waitq); return; } --- a/drivers/cdrom/mcdx.c +++ b/drivers/cdrom/mcdx.c @@ -67,6 +67,7 @@ static const char *mcdx_c_version #include #include #include +#include #include #include #include @@ -835,11 +836,14 @@ static void mcdx_delay(struct s_drive_st * May be we could use a simple count loop w/ jumps to itself, but * I wanna make this independent of cpu speed. [1 jiffy is 1/HZ] sec */ { + DEFINE_WAIT(wait); if (jifs < 0) return; xtrace(SLEEP, "*** delay: sleepq\n"); - interruptible_sleep_on_timeout(&stuff->sleepq, jifs); + prepare_to_wait(&stuff->sleepq, &wait, TASK_INTERRUPTIBLE); + schedule_timeout(jifs); + finish_wait(&stuff->sleepq, &wait); xtrace(SLEEP, "delay awoken\n"); if (signal_pending(current)) { xtrace(SLEEP, "got signal\n"); @@ -907,11 +911,9 @@ static int mcdx_talk(struct s_drive_stuf if ((discard = (buffer == NULL))) buffer = &c; - while (stuffp->lock) { - xtrace(SLEEP, "*** talk: lockq\n"); - interruptible_sleep_on(&stuffp->lockq); - xtrace(SLEEP, "talk: awoken\n"); - } + xtrace(SLEEP, "*** talk: lockq\n"); + wait_event(stuffp->lockq, !stuffp->lock); + xtrace(SLEEP, "talk: awoken\n"); stuffp->lock = 1; @@ -998,7 +1000,7 @@ static int mcdx_talk(struct s_drive_stuf #endif stuffp->lock = 0; - wake_up_interruptible(&stuffp->lockq); + wake_up(&stuffp->lockq); xtrace(TALK, "talk() done with 0x%02x\n", st); return st; @@ -1318,6 +1320,7 @@ static int mcdx_xfer(struct s_drive_stuf Return: -1 on timeout or other error else status byte (as in stuff->st) */ { + DEFINE_WAIT(wait); int border; int done = 0; long timeout; @@ -1332,9 +1335,7 @@ static int mcdx_xfer(struct s_drive_stuf return -1; } - while (stuffp->lock) { - interruptible_sleep_on(&stuffp->lockq); - } + wait_event(stuffp->lockq, !stuffp->lock); if (stuffp->valid && (sector >= stuffp->pending) && (sector < stuffp->low_border)) { @@ -1356,10 +1357,10 @@ static int mcdx_xfer(struct s_drive_stuf do { while (stuffp->busy) { - - timeout = - interruptible_sleep_on_timeout - (&stuffp->busyq, 5 * HZ); + prepare_to_wait(&stuffp->busyq, &wait, + TASK_INTERRUPTIBLE); + timeout = schedule_timeout(5 * HZ); + finish_wait(&stuffp->busyq, &wait); if (!stuffp->introk) { xtrace(XFER, @@ -1375,7 +1376,7 @@ static int mcdx_xfer(struct s_drive_stuf stuffp->busy = 0; stuffp->valid = 0; - wake_up_interruptible(&stuffp->lockq); + wake_up(&stuffp->lockq); xtrace(XFER, "transfer() done (-1)\n"); return -1; } @@ -1411,7 +1412,7 @@ static int mcdx_xfer(struct s_drive_stuf } while (++(stuffp->pending) < border); stuffp->lock = 0; - wake_up_interruptible(&stuffp->lockq); + wake_up(&stuffp->lockq); } else { --- a/drivers/cdrom/optcd.c +++ b/drivers/cdrom/optcd.c @@ -292,7 +292,7 @@ static int sleep_flag_low(int flag, unsi flag_high = inb(STATUS_PORT) & flag; if (flag_high && sleep_timeout > 0) { mod_timer(&delay_timer, jiffies + HZ/100); - sleep_on(&waitq); + wait_event(waitq, ((inb(STATUS_PORT) & FL_STDT) != FL_STDT || sleep_timeout <= 0)); flag_high = inb(STATUS_PORT) & flag; } --- a/drivers/cdrom/sjcd.c +++ b/drivers/cdrom/sjcd.c @@ -70,6 +70,7 @@ #include #include #include +#include #include #include @@ -407,9 +408,12 @@ static void sjcd_status_timer(void) */ static int sjcd_wait_for_status(void) { + DEFINE_WAIT(wait); sjcd_status_timeout = SJCD_WAIT_FOR_STATUS_TIMEOUT; SJCD_SET_TIMER(sjcd_status_timer, 1); - sleep_on(&sjcd_waitq); + prepare_to_wait(&sjcd_waitq, &wait, TASK_UNINTERRUPTIBLE); + schedule(); + finish_wait(&sjcd_waitq, &wait); #if defined( SJCD_DIAGNOSTIC ) || defined ( SJCD_TRACE ) if (sjcd_status_timeout <= 0) printk("SJCD: Error Wait For Status.\n"); --- a/drivers/cdrom/sonycd535.c +++ b/drivers/cdrom/sonycd535.c @@ -129,6 +129,7 @@ #include #include #include +#include #define REALLY_SLOW_IO #include @@ -896,9 +897,8 @@ do_cdu535_request(request_queue_t * q) } if (readStatus == BAD_STATUS) { /* Sleep for a while, then retry */ - set_current_state(TASK_INTERRUPTIBLE); spin_unlock_irq(&sonycd535_lock); - schedule_timeout(RETRY_FOR_BAD_STATUS*HZ/10); + msleep(RETRY_FOR_BAD_STATUS*100); spin_lock_irq(&sonycd535_lock); } #if DEBUG > 0 --- a/drivers/char/Makefile +++ b/drivers/char/Makefile @@ -45,53 +45,53 @@ obj-$(CONFIG_HVC_CONSOLE) += hvc_console obj-$(CONFIG_RAW_DRIVER) += raw.o obj-$(CONFIG_SGI_SNSC) += snsc.o snsc_event.o obj-$(CONFIG_MMTIMER) += mmtimer.o -obj-$(CONFIG_VIOCONS) += viocons.o +obj-$(CONFIG_VIOCONS) += viocons.o obj-$(CONFIG_VIOTAPE) += viotape.o obj-$(CONFIG_HVCS) += hvcs.o obj-$(CONFIG_SGI_MBCS) += mbcs.o -obj-$(CONFIG_PRINTER) += lp.o -obj-$(CONFIG_TIPAR) += tipar.o +obj-$(CONFIG_PRINTER) += lp.o +obj-$(CONFIG_TIPAR) += tipar.o -obj-$(CONFIG_DTLK) += dtlk.o -obj-$(CONFIG_R3964) += n_r3964.o -obj-$(CONFIG_APPLICOM) += applicom.o -obj-$(CONFIG_SONYPI) += sonypi.o -obj-$(CONFIG_RTC) += rtc.o -obj-$(CONFIG_HPET) += hpet.o -obj-$(CONFIG_GEN_RTC) += genrtc.o -obj-$(CONFIG_EFI_RTC) += efirtc.o -obj-$(CONFIG_SGI_DS1286) += ds1286.o -obj-$(CONFIG_SGI_IP27_RTC) += ip27-rtc.o -obj-$(CONFIG_DS1302) += ds1302.o -obj-$(CONFIG_S3C2410_RTC) += s3c2410-rtc.o -obj-$(CONFIG_RTC_VR41XX) += vr41xx_rtc.o +obj-$(CONFIG_DTLK) += dtlk.o +obj-$(CONFIG_R3964) += n_r3964.o +obj-$(CONFIG_APPLICOM) += applicom.o +obj-$(CONFIG_SONYPI) += sonypi.o +obj-$(CONFIG_RTC) += rtc.o +obj-$(CONFIG_HPET) += hpet.o +obj-$(CONFIG_GEN_RTC) += genrtc.o +obj-$(CONFIG_EFI_RTC) += efirtc.o +obj-$(CONFIG_SGI_DS1286) += ds1286.o +obj-$(CONFIG_SGI_IP27_RTC) += ip27-rtc.o +obj-$(CONFIG_DS1302) += ds1302.o +obj-$(CONFIG_S3C2410_RTC) += s3c2410-rtc.o +obj-$(CONFIG_RTC_VR41XX) += vr41xx_rtc.o ifeq ($(CONFIG_GENERIC_NVRAM),y) obj-$(CONFIG_NVRAM) += generic_nvram.o else obj-$(CONFIG_NVRAM) += nvram.o endif -obj-$(CONFIG_TOSHIBA) += toshiba.o -obj-$(CONFIG_I8K) += i8k.o -obj-$(CONFIG_DS1620) += ds1620.o -obj-$(CONFIG_HW_RANDOM) += hw_random.o -obj-$(CONFIG_FTAPE) += ftape/ -obj-$(CONFIG_COBALT_LCD) += lcd.o -obj-$(CONFIG_PPDEV) += ppdev.o -obj-$(CONFIG_NWBUTTON) += nwbutton.o -obj-$(CONFIG_NWFLASH) += nwflash.o -obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o -obj-$(CONFIG_CS5535_GPIO) += cs5535_gpio.o -obj-$(CONFIG_GPIO_VR41XX) += vr41xx_giu.o -obj-$(CONFIG_TANBAC_TB0219) += tb0219.o -obj-$(CONFIG_TELCLOCK) += tlclk.o - -obj-$(CONFIG_WATCHDOG) += watchdog/ -obj-$(CONFIG_MWAVE) += mwave/ -obj-$(CONFIG_AGP) += agp/ -obj-$(CONFIG_DRM) += drm/ -obj-$(CONFIG_PCMCIA) += pcmcia/ -obj-$(CONFIG_IPMI_HANDLER) += ipmi/ +obj-$(CONFIG_TOSHIBA) += toshiba.o +obj-$(CONFIG_I8K) += i8k.o +obj-$(CONFIG_DS1620) += ds1620.o +obj-$(CONFIG_HW_RANDOM) += hw_random.o +obj-$(CONFIG_FTAPE) += ftape/ +obj-$(CONFIG_COBALT_LCD) += lcd.o +obj-$(CONFIG_PPDEV) += ppdev.o +obj-$(CONFIG_NWBUTTON) += nwbutton.o +obj-$(CONFIG_NWFLASH) += nwflash.o +obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o +obj-$(CONFIG_CS5535_GPIO) += cs5535_gpio.o +obj-$(CONFIG_GPIO_VR41XX) += vr41xx_giu.o +obj-$(CONFIG_TANBAC_TB0219) += tb0219.o +obj-$(CONFIG_TELCLOCK) += tlclk.o + +obj-$(CONFIG_WATCHDOG) += watchdog/ +obj-$(CONFIG_MWAVE) += mwave/ +obj-$(CONFIG_AGP) += agp/ +obj-$(CONFIG_DRM) += drm/ +obj-$(CONFIG_PCMCIA) += pcmcia/ +obj-$(CONFIG_IPMI_HANDLER) += ipmi/ obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o obj-$(CONFIG_TCG_TPM) += tpm/ --- a/drivers/char/agp/nvidia-agp.c +++ b/drivers/char/agp/nvidia-agp.c @@ -11,6 +11,7 @@ #include #include #include +#include #include "agp.h" /* NVIDIA registers */ @@ -256,7 +257,7 @@ static void nvidia_tlbflush(struct agp_m do { pci_read_config_dword(nvidia_private.dev_1, NVIDIA_1_WBC, &wbc_reg); - if ((signed)(end - jiffies) <= 0) { + if (time_before_eq(end, jiffies)) { printk(KERN_ERR PFX "TLB flush took more than 3 seconds.\n"); } --- a/drivers/char/amiserial.c +++ b/drivers/char/amiserial.c @@ -1648,8 +1648,8 @@ static int block_til_ready(struct tty_st */ if (tty_hung_up_p(filp) || (info->flags & ASYNC_CLOSING)) { - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ASYNC_CLOSING) == 0); #ifdef SERIAL_DO_RESTART return ((info->flags & ASYNC_HUP_NOTIFY) ? -EAGAIN : -ERESTARTSYS); @@ -1821,8 +1821,8 @@ static int rs_open(struct tty_struct *tt */ if (tty_hung_up_p(filp) || (info->flags & ASYNC_CLOSING)) { - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ASYNC_CLOSING) == 0); #ifdef SERIAL_DO_RESTART return ((info->flags & ASYNC_HUP_NOTIFY) ? -EAGAIN : -ERESTARTSYS); @@ -1878,6 +1878,17 @@ static inline int line_info(char *buf, s info->quot = 0; info->tty = NULL; } + + if (info->quot) { + ret += sprintf(buf+ret, " baud:%d", + state->baud_base / info->quot); + } + + if (!capable(CAP_SYS_RAWIO)) { + strcat(buf, "\n"); + return ret + 1; + } + local_irq_save(flags); status = ciab.pra; control = info ? info->MCR : status; @@ -1896,11 +1907,6 @@ static inline int line_info(char *buf, s if(!(status & SER_DCD)) strcat(stat_buf, "|CD"); - if (info->quot) { - ret += sprintf(buf+ret, " baud:%d", - state->baud_base / info->quot); - } - ret += sprintf(buf+ret, " tx:%d rx:%d", state->icount.tx, state->icount.rx); --- a/drivers/char/cyclades.c +++ b/drivers/char/cyclades.c @@ -2291,9 +2291,8 @@ block_til_ready(struct tty_struct *tty, * until it's done, and then try again. */ if (tty_hung_up_p(filp) || (info->flags & ASYNC_CLOSING)) { - if (info->flags & ASYNC_CLOSING) { - interruptible_sleep_on(&info->close_wait); - } + wait_event_interruptible(info->close_wait, + (info->flags & ASYNC_CLOSING)==0); return ((info->flags & ASYNC_HUP_NOTIFY) ? -EAGAIN : -ERESTARTSYS); } @@ -2560,8 +2559,8 @@ cy_open(struct tty_struct *tty, struct f * If the port is the middle of closing, bail out now */ if (tty_hung_up_p(filp) || (info->flags & ASYNC_CLOSING)) { - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ASYNC_CLOSING)==0); return ((info->flags & ASYNC_HUP_NOTIFY) ? -EAGAIN : -ERESTARTSYS); } @@ -5144,7 +5143,11 @@ cyclades_get_proc_info(char *buf, char * int size; __u32 cur_jifs = jiffies; - size = sprintf(buf, "Dev TimeOpen BytesOut IdleOut BytesIn IdleIn Overruns Ldisc\n"); + if (capable(CAP_SYS_RAWIO)) { + size = sprintf(buf, "Dev TimeOpen BytesOut IdleOut BytesIn IdleIn Overruns Ldisc\n"); + } else { + size = sprintf(buf, "Dev Ldisc\n"); + } pos += size; len += size; @@ -5153,21 +5156,29 @@ cyclades_get_proc_info(char *buf, char * for (i = 0; i < NR_PORTS && cy_port[i].line >= 0; i++) { info = &cy_port[i]; - if (info->count) - size = sprintf(buf+len, - "%3d %8lu %10lu %8lu %10lu %8lu %9lu %6ld\n", - info->line, - JIFFIES_DIFF(info->idle_stats.in_use, cur_jifs) / HZ, - info->idle_stats.xmit_bytes, - JIFFIES_DIFF(info->idle_stats.xmit_idle, cur_jifs) / HZ, - info->idle_stats.recv_bytes, - JIFFIES_DIFF(info->idle_stats.recv_idle, cur_jifs) / HZ, - info->idle_stats.overruns, - (long) info->tty->ldisc.num); - else - size = sprintf(buf+len, - "%3d %8lu %10lu %8lu %10lu %8lu %9lu %6ld\n", - info->line, 0L, 0L, 0L, 0L, 0L, 0L, 0L); + if (capable(CAP_SYS_RAWIO)) { + if (info->count) + size = sprintf(buf+len, + "%3d %8lu %10lu %8lu %10lu %8lu %9lu %6ld\n", + info->line, + JIFFIES_DIFF(info->idle_stats.in_use, cur_jifs) / HZ, + info->idle_stats.xmit_bytes, + JIFFIES_DIFF(info->idle_stats.xmit_idle, cur_jifs) / HZ, + info->idle_stats.recv_bytes, + JIFFIES_DIFF(info->idle_stats.recv_idle, cur_jifs) / HZ, + info->idle_stats.overruns, + (long) info->tty->ldisc.num); + else + size = sprintf(buf+len, + "%3d %8lu %10lu %8lu %10lu %8lu %9lu %6ld\n", + info->line, 0L, 0L, 0L, 0L, 0L, 0L, 0L); + } else { + if (info->count) + size = sprintf(buf+len, "%3d %6ld\n", info->line, + (long) info->tty->ldisc.num); + else + size = sprintf(buf+len, "%3d %6ld\n", info->line, 0L); + } len += size; pos = begin + len; --- a/drivers/char/drm/i830_dma.c +++ b/drivers/char/drm/i830_dma.c @@ -587,26 +587,7 @@ static void i830EmitTexBlendVerified(drm static void i830EmitTexPalette(drm_device_t * dev, unsigned int *palette, int number, int is_shared) { - drm_i830_private_t *dev_priv = dev->dev_private; - int i; - RING_LOCALS; - return; - - BEGIN_LP_RING(258); - - if (is_shared == 1) { - OUT_RING(CMD_OP_MAP_PALETTE_LOAD | - MAP_PALETTE_NUM(0) | MAP_PALETTE_BOTH); - } else { - OUT_RING(CMD_OP_MAP_PALETTE_LOAD | MAP_PALETTE_NUM(number)); - } - for (i = 0; i < 256; i++) { - OUT_RING(palette[i]); - } - OUT_RING(0); - /* KW: WHERE IS THE ADVANCE_LP_RING? This is effectively a noop! - */ } /* Need to do some additional checking when setting the dest buffer. --- a/drivers/char/drm/i830_irq.c +++ b/drivers/char/drm/i830_irq.c @@ -32,6 +32,7 @@ #include "i830_drv.h" #include /* For task queue support */ #include +#include /* For wait_event */ irqreturn_t i830_driver_irq_handler(DRM_IRQ_ARGS) { @@ -73,9 +74,7 @@ static int i830_emit_irq(drm_device_t * static int i830_wait_irq(drm_device_t * dev, int irq_nr) { drm_i830_private_t *dev_priv = (drm_i830_private_t *) dev->dev_private; - DECLARE_WAITQUEUE(entry, current); - unsigned long end = jiffies + HZ * 3; - int ret = 0; + int ret; DRM_DEBUG("%s\n", __FUNCTION__); @@ -84,31 +83,23 @@ static int i830_wait_irq(drm_device_t * dev_priv->sarea_priv->perf_boxes |= I830_BOX_WAIT; - add_wait_queue(&dev_priv->irq_queue, &entry); + ret = wait_event_interruptible_timeout(dev_priv->irq_queue, + (atomic_read(&dev_priv->irq_received) >= irq_nr), + HZ*3); + + if (ret == 0) { + DRM_ERROR("timeout iir %x imr %x ier %x hwstam %x\n", + I830_READ16( I830REG_INT_IDENTITY_R ), + I830_READ16( I830REG_INT_MASK_R ), + I830_READ16( I830REG_INT_ENABLE_R ), + I830_READ16( I830REG_HWSTAM )); + + ret = -EBUSY; /* Lockup? Missed irq? */ + } else if (ret == -ERESTARTSYS) { + ret = -EINTR; /* interrupted */ + } else + ret = 0; /* condition */ - for (;;) { - __set_current_state(TASK_INTERRUPTIBLE); - if (atomic_read(&dev_priv->irq_received) >= irq_nr) - break; - if ((signed)(end - jiffies) <= 0) { - DRM_ERROR("timeout iir %x imr %x ier %x hwstam %x\n", - I830_READ16(I830REG_INT_IDENTITY_R), - I830_READ16(I830REG_INT_MASK_R), - I830_READ16(I830REG_INT_ENABLE_R), - I830_READ16(I830REG_HWSTAM)); - - ret = -EBUSY; /* Lockup? Missed irq? */ - break; - } - schedule_timeout(HZ * 3); - if (signal_pending(current)) { - ret = -EINTR; - break; - } - } - - __set_current_state(TASK_RUNNING); - remove_wait_queue(&dev_priv->irq_queue, &entry); return ret; } --- a/drivers/char/dsp56k.c +++ b/drivers/char/dsp56k.c @@ -60,11 +60,13 @@ #define handshake(count, maxio, timeout, ENABLE, f) \ { \ - long i, t, m; \ + long i, m; \ + unsigned long end_time; \ while (count > 0) { \ m = min_t(unsigned long, count, maxio); \ for (i = 0; i < m; i++) { \ - for (t = 0; t < timeout && !ENABLE; t++) \ + end_time = jiffies + msecs_to_jiffies((timeout) * 20); \ + while (time_before(jiffies, end_time) && !ENABLE) { \ msleep(20); \ if(!ENABLE) \ return -EIO; \ @@ -77,8 +79,8 @@ #define tx_wait(n) \ { \ - int t; \ - for(t = 0; t < n && !DSP56K_TRANSMIT; t++) \ + unsigned long end_time = jiffies + msecs_to_jiffies((n) * 10); \ + while (time_before(jiffies, end_time) && !DSP56K_TRANSMIT) \ msleep(10); \ if(!DSP56K_TRANSMIT) { \ return -EIO; \ @@ -87,8 +89,8 @@ #define rx_wait(n) \ { \ - int t; \ - for(t = 0; t < n && !DSP56K_RECEIVE; t++) \ + unsigned long end_time = jiffies + msecs_to_jiffies((n) * 10); \ + while (time_before(jiffies, end_time) && !DSP56K_RECEIVE) \ msleep(10); \ if(!DSP56K_RECEIVE) { \ return -EIO; \ --- a/drivers/char/epca.c +++ b/drivers/char/epca.c @@ -894,7 +894,8 @@ static int block_til_ready(struct tty_st until it's done, and then try again. -------------------------------------------------------------------- */ if (ch->asyncflags & ASYNC_CLOSING) { - interruptible_sleep_on(&ch->close_wait); + wait_event_interruptible(ch->close_wait, + (ch->asyncflags & ASYNC_CLOSING) == 0); if (ch->asyncflags & ASYNC_HUP_NOTIFY) return -EAGAIN; --- a/drivers/char/esp.c +++ b/drivers/char/esp.c @@ -2152,8 +2152,8 @@ static int block_til_ready(struct tty_st */ if (tty_hung_up_p(filp) || (info->flags & ASYNC_CLOSING)) { - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ASYNC_CLOSING) == 0); #ifdef SERIAL_DO_RESTART if (info->flags & ASYNC_HUP_NOTIFY) return -EAGAIN; --- a/drivers/char/generic_serial.c +++ b/drivers/char/generic_serial.c @@ -534,7 +534,8 @@ int gs_block_til_ready(void *port_, stru * until it's done, and then try again. */ if (tty_hung_up_p(filp) || port->flags & ASYNC_CLOSING) { - interruptible_sleep_on(&port->close_wait); + wait_event_interruptible(port->close_wait, + (port->flags & ASYNC_CLOSING) == 0); if (port->flags & ASYNC_HUP_NOTIFY) return -EAGAIN; else --- a/drivers/char/isicom.c +++ b/drivers/char/isicom.c @@ -896,7 +896,8 @@ static int block_til_ready(struct tty_st if (tty_hung_up_p(filp) || port->flags & ASYNC_CLOSING) { pr_dbg("block_til_ready: close in progress.\n"); - interruptible_sleep_on(&port->close_wait); + wait_event_interruptible(port->close_wait, + (port->flags & ASYNC_CLOSING)==0); if (port->flags & ASYNC_HUP_NOTIFY) return -EAGAIN; else --- a/drivers/char/istallion.c +++ b/drivers/char/istallion.c @@ -1048,7 +1048,8 @@ static int stli_open(struct tty_struct * * for it is done with the same context. */ if (portp->flags & ASYNC_CLOSING) { - interruptible_sleep_on(&portp->close_wait); + wait_event_interruptible(portp->close_wait, + (portp->flags & ASYNC_CLOSING) == 0); if (portp->flags & ASYNC_HUP_NOTIFY) return(-EAGAIN); return(-ERESTARTSYS); @@ -1088,7 +1089,8 @@ static int stli_open(struct tty_struct * * for it is done with the same context. */ if (portp->flags & ASYNC_CLOSING) { - interruptible_sleep_on(&portp->close_wait); + wait_event_interruptible(portp->close_wait, + (portp->flags & ASYNC_CLOSING) == 0); if (portp->flags & ASYNC_HUP_NOTIFY) return(-EAGAIN); return(-ERESTARTSYS); @@ -2506,7 +2508,7 @@ static int stli_portinfo(stlibrd_t *brdp sp = pos; sp += sprintf(sp, "%d: uart:%s ", portnr, uart); - if ((brdp->state & BST_STARTED) && (rc >= 0)) { + if (capable(CAP_SYS_RAWIO) && (brdp->state & BST_STARTED) && (rc >= 0)) { sp += sprintf(sp, "tx:%d rx:%d", (int) stli_comstats.txtotal, (int) stli_comstats.rxtotal); --- a/drivers/char/keyboard.c +++ b/drivers/char/keyboard.c @@ -975,7 +975,7 @@ static int emulate_raw(struct vc_data *v put_queue(vc, 0x1d | up_flag); put_queue(vc, 0x45 | up_flag); return 0; - case KEY_HANGUEL: + case KEY_HANGEUL: if (!up_flag) put_queue(vc, 0xf1); return 0; case KEY_HANJA: --- a/drivers/char/moxa.c +++ b/drivers/char/moxa.c @@ -1003,8 +1003,8 @@ static int block_till_ready(struct tty_s * until it's done, and then try again. */ if (tty_hung_up_p(filp) || (ch->asyncflags & ASYNC_CLOSING)) { - if (ch->asyncflags & ASYNC_CLOSING) - interruptible_sleep_on(&ch->close_wait); + wait_event_interruptible(ch->close_wait, + (ch->asyncflags & ASYNC_CLOSING)==0); #ifdef SERIAL_DO_RESTART if (ch->asyncflags & ASYNC_HUP_NOTIFY) return (-EAGAIN); --- a/drivers/char/pcmcia/synclink_cs.c +++ b/drivers/char/pcmcia/synclink_cs.c @@ -2759,8 +2759,8 @@ static int mgslpc_open(struct tty_struct /* If port is closing, signal caller to try again */ if (tty_hung_up_p(filp) || info->flags & ASYNC_CLOSING){ - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ASYNC_CLOSING)==0); retval = ((info->flags & ASYNC_HUP_NOTIFY) ? -EAGAIN : -ERESTARTSYS); goto cleanup; @@ -2821,6 +2821,11 @@ static inline int line_info(char *buf, M ret = sprintf(buf, "%s:io:%04X irq:%d", info->device_name, info->io_base, info->irq_level); + if (!capable(CAP_SYS_RAWIO)) { + strcat(buf, "\n"); + return ret + 1; + } + /* output current serial signal states */ spin_lock_irqsave(&info->lock,flags); get_signals(info); @@ -4042,8 +4047,8 @@ BOOLEAN irq_test(MGSLPC_INFO *info) spin_unlock_irqrestore(&info->lock,flags); - end_time=100; - while(end_time-- && !info->irq_occurred) { + end_time = jiffies + msecs_to_jiffies(1000); + while (time_before(jiffies, end_time) && !info->irq_occurred) { msleep_interruptible(10); } --- a/drivers/char/riscom8.c +++ b/drivers/char/riscom8.c @@ -941,7 +941,8 @@ static int block_til_ready(struct tty_st * until it's done, and then try again. */ if (tty_hung_up_p(filp) || port->flags & ASYNC_CLOSING) { - interruptible_sleep_on(&port->close_wait); + wait_event_interruptible(port->close_wait, + (port->flags & ASYNC_CLOSING) == 0); if (port->flags & ASYNC_HUP_NOTIFY) return -EAGAIN; else @@ -1743,10 +1744,10 @@ static int iobase; static int iobase1; static int iobase2; static int iobase3; -MODULE_PARM(iobase, "i"); -MODULE_PARM(iobase1, "i"); -MODULE_PARM(iobase2, "i"); -MODULE_PARM(iobase3, "i"); +module_param(iobase, int, 0); +module_param(iobase1, int, 0); +module_param(iobase2, int, 0); +module_param(iobase3, int, 0); MODULE_LICENSE("GPL"); #endif /* MODULE */ --- a/drivers/char/rocket.c +++ b/drivers/char/rocket.c @@ -898,7 +898,8 @@ static int block_til_ready(struct tty_st if (tty_hung_up_p(filp)) return ((info->flags & ROCKET_HUP_NOTIFY) ? -EAGAIN : -ERESTARTSYS); if (info->flags & ROCKET_CLOSING) { - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ROCKET_CLOSING)==0); return ((info->flags & ROCKET_HUP_NOTIFY) ? -EAGAIN : -ERESTARTSYS); } @@ -1003,7 +1004,8 @@ static int rp_open(struct tty_struct *tt return -ENOMEM; if (info->flags & ROCKET_CLOSING) { - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ROCKET_CLOSING)==0); free_page(page); return ((info->flags & ROCKET_HUP_NOTIFY) ? -EAGAIN : -ERESTARTSYS); } --- a/drivers/char/serial167.c +++ b/drivers/char/serial167.c @@ -1851,7 +1851,8 @@ block_til_ready(struct tty_struct *tty, * until it's done, and then try again. */ if (info->flags & ASYNC_CLOSING) { - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ASYNC_CLOSING) == 0); if (info->flags & ASYNC_HUP_NOTIFY){ return -EAGAIN; }else{ --- a/drivers/char/sonypi.c +++ b/drivers/char/sonypi.c @@ -724,7 +724,8 @@ static void sonypi_camera_off(void) /* Turns the camera on */ static void sonypi_camera_on(void) { - int i, j; + int j; + unsigned long end_time; if (sonypi_device.camera_power) return; @@ -735,12 +736,13 @@ static void sonypi_camera_on(void) msleep(10); sonypi_call1(0x93); - for (i = 400; i > 0; i--) { + end_time = jiffies + msecs_to_jiffies(4000); + while (time_before(jiffies, end_time)) { if (sonypi_camera_ready()) break; msleep(10); } - if (i) + if (time_before(jiffies, end_time)) break; } --- a/drivers/char/specialix.c +++ b/drivers/char/specialix.c @@ -1404,7 +1404,8 @@ static int block_til_ready(struct tty_st * until it's done, and then try again. */ if (tty_hung_up_p(filp) || port->flags & ASYNC_CLOSING) { - interruptible_sleep_on(&port->close_wait); + wait_event_interruptible(port->close_wait, + (port->flags & ASYNC_CLOSING)==0); if (port->flags & ASYNC_HUP_NOTIFY) { func_exit(); return -EAGAIN; --- a/drivers/char/stallion.c +++ b/drivers/char/stallion.c @@ -1041,7 +1041,8 @@ static int stl_open(struct tty_struct *t * for it is done with the same context. */ if (portp->flags & ASYNC_CLOSING) { - interruptible_sleep_on(&portp->close_wait); + wait_event_interruptible(portp->close_wait, + (portp->flags & ASYNC_CLOSING) == 0); if (portp->flags & ASYNC_HUP_NOTIFY) return -EAGAIN; return -ERESTARTSYS; @@ -1843,28 +1844,37 @@ static int stl_portinfo(stlport_t *portp int sigs, cnt; sp = pos; - sp += sprintf(sp, "%d: uart:%s tx:%d rx:%d", - portnr, (portp->hwid == 1) ? "SC26198" : "CD1400", - (int) portp->stats.txtotal, (int) portp->stats.rxtotal); - - if (portp->stats.rxframing) - sp += sprintf(sp, " fe:%d", (int) portp->stats.rxframing); - if (portp->stats.rxparity) - sp += sprintf(sp, " pe:%d", (int) portp->stats.rxparity); - if (portp->stats.rxbreaks) - sp += sprintf(sp, " brk:%d", (int) portp->stats.rxbreaks); - if (portp->stats.rxoverrun) - sp += sprintf(sp, " oe:%d", (int) portp->stats.rxoverrun); - - sigs = stl_getsignals(portp); - cnt = sprintf(sp, "%s%s%s%s%s ", - (sigs & TIOCM_RTS) ? "|RTS" : "", - (sigs & TIOCM_CTS) ? "|CTS" : "", - (sigs & TIOCM_DTR) ? "|DTR" : "", - (sigs & TIOCM_CD) ? "|DCD" : "", - (sigs & TIOCM_DSR) ? "|DSR" : ""); - *sp = ' '; - sp += cnt; + sp += sprintf(sp, "%d: uart:%s", + portnr, (portp->hwid == 1) ? "SC26198" : "CD1400"); + + if (capable(CAP_SYS_RAWIO)) { + sp += sprintf(sp, " tx:%d rx:%d", + (int) portp->stats.txtotal, + (int) portp->stats.rxtotal); + + if (portp->stats.rxframing) + sp += sprintf(sp, " fe:%d", + (int) portp->stats.rxframing); + if (portp->stats.rxparity) + sp += sprintf(sp, " pe:%d", + (int) portp->stats.rxparity); + if (portp->stats.rxbreaks) + sp += sprintf(sp, " brk:%d", + (int) portp->stats.rxbreaks); + if (portp->stats.rxoverrun) + sp += sprintf(sp, " oe:%d", + (int) portp->stats.rxoverrun); + + sigs = stl_getsignals(portp); + cnt = sprintf(sp, "%s%s%s%s%s ", + (sigs & TIOCM_RTS) ? "|RTS" : "", + (sigs & TIOCM_CTS) ? "|CTS" : "", + (sigs & TIOCM_DTR) ? "|DTR" : "", + (sigs & TIOCM_CD) ? "|DCD" : "", + (sigs & TIOCM_DSR) ? "|DSR" : ""); + *sp = ' '; + sp += cnt; + } for (cnt = (sp - pos); (cnt < (MAXLINE - 1)); cnt++) *sp++ = ' '; --- a/drivers/char/sx.c +++ b/drivers/char/sx.c @@ -1510,8 +1510,7 @@ static int sx_open (struct tty_struct * static void sx_close (void *ptr) { struct sx_port *port = ptr; - /* Give the port 5 seconds to close down. */ - int to = 5 * HZ; + unsigned long start_time, end_time; func_enter (); @@ -1519,9 +1518,13 @@ static void sx_close (void *ptr) sx_reconfigure_port(port); sx_send_command (port, HS_CLOSE, 0, 0); - while (to-- && (sx_read_channel_byte (port, hi_hstat) != HS_IDLE_CLOSED)) + /* Give the port 5 seconds to close down. */ + start_time = jiffies; + end_time = start_time + msecs_to_jiffies(5000); + while (time_before(jiffies, end_time) && (sx_read_channel_byte (port, hi_hstat) != HS_IDLE_CLOSED)) if (msleep_interruptible(10)) break; + end_time = jiffies; if (sx_read_channel_byte (port, hi_hstat) != HS_IDLE_CLOSED) { if (sx_send_command (port, HS_FORCE_CLOSED, -1, HS_IDLE_CLOSED) != 1) { printk (KERN_ERR @@ -1530,8 +1533,8 @@ static void sx_close (void *ptr) sx_dprintk (SX_DEBUG_CLOSE, "sent the force_close command.\n"); } - sx_dprintk (SX_DEBUG_CLOSE, "waited %d jiffies for close. count=%d\n", - 5 * HZ - to - 1, port->gs.count); + sx_dprintk (SX_DEBUG_CLOSE, "waited %ld jiffies for close. count=%d\n", + end_time - start_time, port->gs.count); if(port->gs.count) { sx_dprintk(SX_DEBUG_CLOSE, "WARNING port count:%d\n", port->gs.count); --- a/drivers/char/synclink.c +++ b/drivers/char/synclink.c @@ -3465,8 +3465,8 @@ static int mgsl_open(struct tty_struct * /* If port is closing, signal caller to try again */ if (tty_hung_up_p(filp) || info->flags & ASYNC_CLOSING){ - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ASYNC_CLOSING)==0); retval = ((info->flags & ASYNC_HUP_NOTIFY) ? -EAGAIN : -ERESTARTSYS); goto cleanup; @@ -3547,6 +3547,11 @@ static inline int line_info(char *buf, s info->irq_level, info->dma_level); } + if (!capable(CAP_SYS_RAWIO)) { + strcat(buf, "\n"); + return ret + 1; + } + /* output current serial signal states */ spin_lock_irqsave(&info->irq_spinlock,flags); usc_get_serial_signals(info); @@ -7100,8 +7105,8 @@ static BOOLEAN mgsl_register_test( struc */ static BOOLEAN mgsl_irq_test( struct mgsl_struct *info ) { - unsigned long EndTime; unsigned long flags; + unsigned long end_time; spin_lock_irqsave(&info->irq_spinlock,flags); usc_reset(info); @@ -7128,8 +7133,8 @@ static BOOLEAN mgsl_irq_test( struct mgs spin_unlock_irqrestore(&info->irq_spinlock,flags); - EndTime=100; - while( EndTime-- && !info->irq_occurred ) { + end_time = jiffies + msecs_to_jiffies(1000); + while (time_before(jiffies, end_time) && !info->irq_occurred) { msleep_interruptible(10); } --- a/drivers/char/synclink_gt.c +++ b/drivers/char/synclink_gt.c @@ -48,7 +48,6 @@ #include #include -#include #include #include #include --- a/drivers/char/synclinkmp.c +++ b/drivers/char/synclinkmp.c @@ -757,8 +757,8 @@ static int open(struct tty_struct *tty, /* If port is closing, signal caller to try again */ if (tty_hung_up_p(filp) || info->flags & ASYNC_CLOSING){ - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ASYNC_CLOSING) == 0); retval = ((info->flags & ASYNC_HUP_NOTIFY) ? -EAGAIN : -ERESTARTSYS); goto cleanup; @@ -1422,6 +1422,10 @@ static inline int line_info(char *buf, S info->irq_level, info->max_frame_size ); + if (!capable(CAP_SYS_RAWIO)) { + return ret; + } + /* output current serial signal states */ spin_lock_irqsave(&info->lock,flags); get_signals(info); @@ -5128,8 +5132,8 @@ int register_test(SLMP_INFO *info) int irq_test(SLMP_INFO *info) { - unsigned long timeout; unsigned long flags; + unsigned long end_time; unsigned char timer = (info->port_num & 1) ? TIMER2 : TIMER0; @@ -5163,8 +5167,8 @@ int irq_test(SLMP_INFO *info) spin_unlock_irqrestore(&info->lock,flags); - timeout=100; - while( timeout-- && !info->irq_occurred ) { + end_time = jiffies + msecs_to_jiffies(1000); + while (time_before(jiffies, end_time) && !info->irq_occurred) { msleep_interruptible(10); } --- a/drivers/char/tpm/tpm_infineon.c +++ b/drivers/char/tpm/tpm_infineon.c @@ -135,15 +135,17 @@ static int empty_fifo(struct tpm_chip *c static int wait(struct tpm_chip *chip, int wait_for_bit) { int status; - int i; - for (i = 0; i < TPM_MAX_TRIES; i++) { + unsigned long end_time; + + end_time = jiffies + msecs_to_jiffies(TPM_MAX_TRIES * TPM_MSLEEP_TIME); + while (time_before(jiffies, end_time)) { status = inb(chip->vendor->base + STAT); /* check the status-register if wait_for_bit is set */ if (status & 1 << wait_for_bit) break; msleep(TPM_MSLEEP_TIME); } - if (i == TPM_MAX_TRIES) { /* timeout occurs */ + if (time_after_eq(jiffies, end_time)) { /* timeout occurs */ if (wait_for_bit == STAT_XFE) dev_err(chip->dev, "Timeout in wait(STAT_XFE)\n"); if (wait_for_bit == STAT_RDA) --- a/drivers/char/watchdog/wdt285.c +++ b/drivers/char/watchdog/wdt285.c @@ -204,11 +204,11 @@ static int __init footbridge_watchdog_in if (retval < 0) return retval; - printk("Footbridge Watchdog Timer: 0.01, timer margin: %d sec\n", + printk(KERN_INFO "Footbridge Watchdog Timer: 0.01, timer margin: %d sec\n", soft_margin); if (machine_is_cats()) - printk("Warning: Watchdog reset may not work on this machine.\n"); + printk(KERN_WARNING "Warning: Watchdog reset may not work on this machine.\n"); return 0; } --- a/drivers/i2c/algos/i2c-algo-pca.c +++ b/drivers/i2c/algos/i2c-algo-pca.c @@ -187,9 +187,10 @@ static int pca_xfer(struct i2c_adapter * int numbytes = 0; int state; int ret; - int timeout = 100; + unsigned long end_time; - while ((state = pca_status(adap)) != 0xf8 && timeout--) { + end_time = jiffies + msecs_to_jiffies(1000); + while ((state = pca_status(adap)) != 0xf8 && time_before(jiffies, end_time)) { msleep(10); } if (state != 0xf8) { --- a/drivers/i2c/busses/i2c-ali1535.c +++ b/drivers/i2c/busses/i2c-ali1535.c @@ -210,7 +210,7 @@ static int ali1535_transaction(struct i2 { int temp; int result = 0; - int timeout = 0; + unsigned long end_time; dev_dbg(&adap->dev, "Transaction (pre): STS=%02x, TYP=%02x, " "CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", @@ -275,15 +275,15 @@ static int ali1535_transaction(struct i2 outb_p(0xFF, SMBHSTPORT); /* We will always wait for a fraction of a second! */ - timeout = 0; + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { msleep(1); temp = inb_p(SMBHSTSTS); } while (((temp & ALI1535_STS_BUSY) && !(temp & ALI1535_STS_IDLE)) - && (timeout++ < MAX_TIMEOUT)); + && time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { result = -1; dev_err(&adap->dev, "SMBus Timeout!\n"); } @@ -342,19 +342,19 @@ static s32 ali1535_access(struct i2c_ada { int i, len; int temp; - int timeout; s32 result = 0; + unsigned long end_time; down(&i2c_ali1535_sem); /* make sure SMBus is idle */ temp = inb_p(SMBHSTSTS); - for (timeout = 0; - (timeout < MAX_TIMEOUT) && !(temp & ALI1535_STS_IDLE); - timeout++) { + + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); + while (time_before(jiffies, end_time) && !(temp & ALI1535_STS_IDLE)) { msleep(1); temp = inb_p(SMBHSTSTS); } - if (timeout >= MAX_TIMEOUT) + if (time_after_eq(jiffies, end_time)) dev_warn(&adap->dev, "Idle wait Timeout! STS=0x%02x\n", temp); /* clear status register (clear-on-write) */ --- a/drivers/i2c/busses/i2c-ali1563.c +++ b/drivers/i2c/busses/i2c-ali1563.c @@ -66,7 +66,8 @@ static unsigned short ali1563_smba; static int ali1563_transaction(struct i2c_adapter * a, int size) { u32 data; - int timeout; + unsigned long end_time; + int timeout_reached; dev_dbg(&a->dev, "Transaction (pre): STS=%02x, CNTL1=%02x, " "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", @@ -84,10 +85,11 @@ static int ali1563_transaction(struct i2 } outb_p(inb_p(SMB_HST_CNTL2) | HST_CNTL2_START, SMB_HST_CNTL2); - timeout = ALI1563_MAX_TIMEOUT; + end_time = jiffies + msecs_to_jiffies(ALI1563_MAX_TIMEOUT); do msleep(1); - while (((data = inb_p(SMB_HST_STS)) & HST_STS_BUSY) && --timeout); + while (((data = inb_p(SMB_HST_STS)) & HST_STS_BUSY) && time_before(jiffies, end_time)); + timeout_reached = time_after_eq(jiffies, end_time); dev_dbg(&a->dev, "Transaction (post): STS=%02x, CNTL1=%02x, " "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", @@ -95,10 +97,10 @@ static int ali1563_transaction(struct i2 inb_p(SMB_HST_CMD), inb_p(SMB_HST_ADD), inb_p(SMB_HST_DAT0), inb_p(SMB_HST_DAT1)); - if (timeout && !(data & HST_STS_BAD)) + if (timeout_reached && !(data & HST_STS_BAD)) return 0; - if (!timeout) { + if (!timeout_reached) { dev_err(&a->dev, "Timeout - Trying to KILL transaction!\n"); /* Issue 'kill' to host controller */ outb_p(HST_CNTL2_KILL,SMB_HST_CNTL2); @@ -128,7 +130,8 @@ static int ali1563_transaction(struct i2 static int ali1563_block_start(struct i2c_adapter * a) { u32 data; - int timeout; + unsigned long end_time; + int timeout_reached; dev_dbg(&a->dev, "Block (pre): STS=%02x, CNTL1=%02x, " "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", @@ -151,10 +154,11 @@ static int ali1563_block_start(struct i2 /* Start transaction and wait for byte-ready bit to be set */ outb_p(inb_p(SMB_HST_CNTL2) | HST_CNTL2_START, SMB_HST_CNTL2); - timeout = ALI1563_MAX_TIMEOUT; + end_time = jiffies + msecs_to_jiffies(ALI1563_MAX_TIMEOUT); do msleep(1); - while (!((data = inb_p(SMB_HST_STS)) & HST_STS_DONE) && --timeout); + while (!((data = inb_p(SMB_HST_STS)) & HST_STS_DONE) && time_before(jiffies, end_time)); + timeout_reached = time_after_eq(jiffies, end_time); dev_dbg(&a->dev, "Block (post): STS=%02x, CNTL1=%02x, " "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", @@ -162,10 +166,10 @@ static int ali1563_block_start(struct i2 inb_p(SMB_HST_CMD), inb_p(SMB_HST_ADD), inb_p(SMB_HST_DAT0), inb_p(SMB_HST_DAT1)); - if (timeout && !(data & HST_STS_BAD)) + if (timeout_reached && !(data & HST_STS_BAD)) return 0; dev_err(&a->dev, "SMBus Error: %s%s%s%s%s\n", - timeout ? "Timeout " : "", + timeout_reached ? "Timeout " : "", data & HST_STS_FAIL ? "Transaction Failed " : "", data & HST_STS_BUSERR ? "No response or Bus Collision " : "", data & HST_STS_DEVERR ? "Device Error " : "", --- a/drivers/i2c/busses/i2c-ali15x3.c +++ b/drivers/i2c/busses/i2c-ali15x3.c @@ -231,7 +231,7 @@ static int ali15x3_transaction(struct i2 { int temp; int result = 0; - int timeout = 0; + unsigned long end_time; dev_dbg(&adap->dev, "Transaction (pre): STS=%02x, CNT=%02x, CMD=%02x, " "ADD=%02x, DAT0=%02x, DAT1=%02x\n", inb_p(SMBHSTSTS), @@ -296,15 +296,15 @@ static int ali15x3_transaction(struct i2 outb_p(0xFF, SMBHSTSTART); /* We will always wait for a fraction of a second! */ - timeout = 0; + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { msleep(1); temp = inb_p(SMBHSTSTS); } while ((!(temp & (ALI15X3_STS_ERR | ALI15X3_STS_DONE))) - && (timeout++ < MAX_TIMEOUT)); + && time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { result = -1; dev_err(&adap->dev, "SMBus Timeout!\n"); } @@ -346,19 +346,19 @@ static s32 ali15x3_access(struct i2c_ada { int i, len; int temp; - int timeout; + unsigned long end_time; /* clear all the bits (clear-on-write) */ outb_p(0xFF, SMBHSTSTS); /* make sure SMBus is idle */ temp = inb_p(SMBHSTSTS); - for (timeout = 0; - (timeout < MAX_TIMEOUT) && !(temp & ALI15X3_STS_IDLE); - timeout++) { + + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); + while (time_before(jiffies, end_time) && !(temp & ALI15X3_STS_IDLE)) { msleep(1); temp = inb_p(SMBHSTSTS); } - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { dev_err(&adap->dev, "Idle wait Timeout! STS=0x%02x\n", temp); } --- a/drivers/i2c/busses/i2c-amd756.c +++ b/drivers/i2c/busses/i2c-amd756.c @@ -113,7 +113,7 @@ static int amd756_transaction(struct i2c { int temp; int result = 0; - int timeout = 0; + unsigned long end_time; dev_dbg(&adap->dev, "Transaction (pre): GS=%04x, GE=%04x, ADD=%04x, " "DAT=%04x\n", inw_p(SMB_GLOBAL_STATUS), @@ -123,30 +123,32 @@ static int amd756_transaction(struct i2c /* Make sure the SMBus host is ready to start transmitting */ if ((temp = inw_p(SMB_GLOBAL_STATUS)) & (GS_HST_STS | GS_SMB_STS)) { dev_dbg(&adap->dev, "SMBus busy (%04x). Waiting...\n", temp); + + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { msleep(1); temp = inw_p(SMB_GLOBAL_STATUS); } while ((temp & (GS_HST_STS | GS_SMB_STS)) && - (timeout++ < MAX_TIMEOUT)); + time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { dev_dbg(&adap->dev, "Busy wait timeout (%04x)\n", temp); goto abort; } - timeout = 0; } /* start the transaction by setting the start bit */ outw_p(inw(SMB_GLOBAL_ENABLE) | GE_HOST_STC, SMB_GLOBAL_ENABLE); /* We will always wait for a fraction of a second! */ + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { msleep(1); temp = inw_p(SMB_GLOBAL_STATUS); - } while ((temp & GS_HST_STS) && (timeout++ < MAX_TIMEOUT)); + } while ((temp & GS_HST_STS) && time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { dev_dbg(&adap->dev, "Completion timeout!\n"); goto abort; } --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c @@ -181,7 +181,7 @@ static int i801_transaction(void) { int temp; int result = 0; - int timeout = 0; + unsigned long end_time; dev_dbg(&I801_dev->dev, "Transaction (pre): CNT=%02x, CMD=%02x, " "ADD=%02x, DAT0=%02x, DAT1=%02x\n", inb_p(SMBHSTCNT), @@ -205,13 +205,14 @@ static int i801_transaction(void) outb_p(inb(SMBHSTCNT) | I801_START, SMBHSTCNT); /* We will always wait for a fraction of a second! */ + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { msleep(1); temp = inb_p(SMBHSTSTS); - } while ((temp & 0x01) && (timeout++ < MAX_TIMEOUT)); + } while ((temp & 0x01) && time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { dev_dbg(&I801_dev->dev, "SMBus Timeout!\n"); result = -1; } @@ -255,8 +256,8 @@ static int i801_block_transaction(union int smbcmd; int temp; int result = 0; - int timeout; unsigned char hostc, errmask; + unsigned long end_time; if (command == I2C_SMBUS_I2C_BLOCK_DATA) { if (read_write == I2C_SMBUS_WRITE) { @@ -331,16 +332,15 @@ static int i801_block_transaction(union outb_p(inb(SMBHSTCNT) | I801_START, SMBHSTCNT); /* We will always wait for a fraction of a second! */ - timeout = 0; + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { temp = inb_p(SMBHSTSTS); msleep(1); - } - while ((!(temp & 0x80)) - && (timeout++ < MAX_TIMEOUT)); + } while ((!(temp & 0x80)) + && time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { result = -1; dev_dbg(&I801_dev->dev, "SMBus Timeout!\n"); } @@ -390,14 +390,14 @@ static int i801_block_transaction(union if (hwpec) { /* wait for INTR bit as advised by Intel */ - timeout = 0; + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { temp = inb_p(SMBHSTSTS); msleep(1); } while ((!(temp & 0x02)) - && (timeout++ < MAX_TIMEOUT)); + && time_before(jiffies, end_time)); - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { dev_dbg(&I801_dev->dev, "PEC Timeout!\n"); } outb_p(temp, SMBHSTSTS); --- a/drivers/i2c/busses/i2c-piix4.c +++ b/drivers/i2c/busses/i2c-piix4.c @@ -234,7 +234,7 @@ static int piix4_transaction(void) { int temp; int result = 0; - int timeout = 0; + unsigned long end_time; dev_dbg(&piix4_adapter.dev, "Transaction (pre): CNT=%02x, CMD=%02x, " "ADD=%02x, DAT0=%02x, DAT1=%02x\n", inb_p(SMBHSTCNT), @@ -258,13 +258,14 @@ static int piix4_transaction(void) outb_p(inb(SMBHSTCNT) | 0x040, SMBHSTCNT); /* We will always wait for a fraction of a second! (See PIIX4 docs errata) */ + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { msleep(1); temp = inb_p(SMBHSTSTS); - } while ((temp & 0x01) && (timeout++ < MAX_TIMEOUT)); + } while ((temp & 0x01) && time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { dev_err(&piix4_adapter.dev, "SMBus Timeout!\n"); result = -1; } --- a/drivers/i2c/busses/i2c-pxa.c +++ b/drivers/i2c/busses/i2c-pxa.c @@ -191,20 +191,23 @@ static void i2c_pxa_abort(struct pxa_i2c static int i2c_pxa_wait_bus_not_busy(struct pxa_i2c *i2c) { - int timeout = DEF_TIMEOUT; + int timeout_reached; + unsigned long end_time; - while (timeout-- && ISR & (ISR_IBB | ISR_UB)) { + end_time = jiffies + msecs_to_jiffies(DEF_TIMEOUT * 2); + while (time_before(jiffies, end_time) && ISR & (ISR_IBB | ISR_UB)) { if ((ISR & ISR_SAD) != 0) - timeout += 4; + end_time += msecs_to_jiffies(8); msleep(2); show_state(i2c); } + timeout_reached = time_after_eq(jiffies, end_time); - if (timeout <= 0) + if (timeout_reached) show_state(i2c); - return timeout <= 0 ? I2C_RETRY : 0; + return timeout_reached ? I2C_RETRY : 0; } static int i2c_pxa_wait_master(struct pxa_i2c *i2c) --- a/drivers/i2c/busses/i2c-s3c2410.c +++ b/drivers/i2c/busses/i2c-s3c2410.c @@ -465,9 +465,10 @@ static irqreturn_t s3c24xx_i2c_irq(int i static int s3c24xx_i2c_set_master(struct s3c24xx_i2c *i2c) { unsigned long iicstat; - int timeout = 400; + unsigned long end_time; - while (timeout-- > 0) { + end_time = jiffies + msecs_to_jiffies(400); + while (time_before(jiffies, end_time)) { iicstat = readl(i2c->regs + S3C2410_IICSTAT); if (!(iicstat & S3C2410_IICSTAT_BUSBUSY)) --- a/drivers/i2c/busses/i2c-sis5595.c +++ b/drivers/i2c/busses/i2c-sis5595.c @@ -225,7 +225,7 @@ static int sis5595_transaction(struct i2 { int temp; int result = 0; - int timeout = 0; + unsigned long end_time; /* Make sure the SMBus host is ready to start transmitting */ temp = sis5595_read(SMB_STS_LO) + (sis5595_read(SMB_STS_HI) << 8); @@ -245,13 +245,14 @@ static int sis5595_transaction(struct i2 sis5595_write(SMB_CTL_LO, sis5595_read(SMB_CTL_LO) | 0x10); /* We will always wait for a fraction of a second! */ + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { msleep(1); temp = sis5595_read(SMB_STS_LO); - } while (!(temp & 0x40) && (timeout++ < MAX_TIMEOUT)); + } while (!(temp & 0x40) && time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { dev_dbg(&adap->dev, "SMBus Timeout!\n"); result = -1; } --- a/drivers/i2c/busses/i2c-sis630.c +++ b/drivers/i2c/busses/i2c-sis630.c @@ -163,19 +163,21 @@ static int sis630_transaction_start(stru static int sis630_transaction_wait(struct i2c_adapter *adap, int size) { - int temp, result = 0, timeout = 0; + int temp, result = 0; + unsigned long end_time; /* We will always wait for a fraction of a second! */ + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { msleep(1); temp = sis630_read(SMB_STS); /* check if block transmitted */ if (size == SIS630_BLOCK_DATA && (temp & 0x10)) break; - } while (!(temp & 0x0e) && (timeout++ < MAX_TIMEOUT)); + } while (!(temp & 0x0e) && time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { dev_dbg(&adap->dev, "SMBus Timeout!\n"); result = -1; } --- a/drivers/i2c/busses/i2c-sis96x.c +++ b/drivers/i2c/busses/i2c-sis96x.c @@ -103,7 +103,7 @@ static int sis96x_transaction(int size) { int temp; int result = 0; - int timeout = 0; + unsigned long end_time; dev_dbg(&sis96x_adapter.dev, "SMBus transaction %d\n", size); @@ -136,13 +136,14 @@ static int sis96x_transaction(int size) sis96x_write(SMB_HOST_CNT, 0x10 | (size & 0x07)); /* We will always wait for a fraction of a second! */ + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { msleep(1); temp = sis96x_read(SMB_STS); - } while (!(temp & 0x0e) && (timeout++ < MAX_TIMEOUT)); + } while (!(temp & 0x0e) && time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { dev_dbg(&sis96x_adapter.dev, "SMBus Timeout! (0x%02x)\n", temp); result = -1; } --- a/drivers/i2c/busses/i2c-viapro.c +++ b/drivers/i2c/busses/i2c-viapro.c @@ -135,7 +135,7 @@ static int vt596_transaction(u8 size) { int temp; int result = 0; - int timeout = 0; + unsigned long end_time; vt596_dump_regs("Transaction (pre)", size); @@ -156,13 +156,14 @@ static int vt596_transaction(u8 size) outb_p(0x40 | size, SMBHSTCNT); /* We will always wait for a fraction of a second */ + end_time = jiffies + msecs_to_jiffies(MAX_TIMEOUT); do { msleep(1); temp = inb_p(SMBHSTSTS); - } while ((temp & 0x01) && (timeout++ < MAX_TIMEOUT)); + } while ((temp & 0x01) && time_before(jiffies, end_time)); /* If the SMBus is still busy, we give up */ - if (timeout >= MAX_TIMEOUT) { + if (time_after_eq(jiffies, end_time)) { result = -1; dev_err(&vt596_adapter.dev, "SMBus timeout!\n"); } --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c @@ -443,6 +443,7 @@ #include #include #include +#include #include #include @@ -2335,7 +2336,7 @@ static ide_startstop_t idetape_rw_callba } if (time_after(jiffies, tape->insert_time)) tape->insert_speed = tape->insert_size / 1024 * HZ / (jiffies - tape->insert_time); - if (jiffies - tape->avg_time >= HZ) { + if (time_after_eq(jiffies, tape->avg_time + HZ)) { tape->avg_speed = tape->avg_size * HZ / (jiffies - tape->avg_time) / 1024; tape->avg_size = 0; tape->avg_time = jiffies; @@ -2496,7 +2497,7 @@ static ide_startstop_t idetape_do_reques } else { return ide_do_reset(drive); } - } else if (jiffies - tape->dsc_polling_start > IDETAPE_DSC_MA_THRESHOLD) + } else if (time_after(jiffies, tape->dsc_polling_start + IDETAPE_DSC_MA_THRESHOLD)) tape->dsc_polling_frequency = IDETAPE_DSC_MA_SLOW; idetape_postpone_request(drive); return ide_stopped; --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c @@ -1428,8 +1428,6 @@ static int __init stridx (const char *s, */ static int __init match_parm (char *s, const char *keywords[], int vals[], int max_vals) { - static const char *decimal = "0123456789"; - static const char *hex = "0123456789abcdef"; int i, n; if (*s++ == '=') { @@ -1449,12 +1447,12 @@ static int __init match_parm (char *s, c * or base16 when prefixed with "0x". * Return a count of how many were found. */ - for (n = 0; (i = stridx(decimal, *s)) >= 0;) { + for (n = 0; (i = stridx(small_digits, *s)) >= 0;) { vals[n] = i; - while ((i = stridx(decimal, *++s)) >= 0) + while ((i = stridx(small_digits, *++s)) >= 0) vals[n] = (vals[n] * 10) + i; if (*s == 'x' && !vals[n]) { - while ((i = stridx(hex, *++s)) >= 0) + while ((i = stridx(small_digits, *++s)) >= 0) vals[n] = (vals[n] * 0x10) + i; } if (++n == max_vals) --- a/drivers/ide/legacy/hd.c +++ b/drivers/ide/legacy/hd.c @@ -456,11 +456,6 @@ ok_to_read: req->errors = 0; i = --req->nr_sectors; --req->current_nr_sectors; -#ifdef DEBUG - printk("%s: read: sector %ld, remaining = %ld, buffer=%p\n", - req->rq_disk->disk_name, req->sector, req->nr_sectors, - req->buffer+512)); -#endif if (req->current_nr_sectors <= 0) end_request(req, 1); if (i > 0) { @@ -542,12 +537,8 @@ static void hd_times_out(unsigned long d reset = 1; name = CURRENT->rq_disk->disk_name; printk("%s: timeout\n", name); - if (++CURRENT->errors >= MAX_ERRORS) { -#ifdef DEBUG - printk("%s: too many errors\n", name); -#endif + if (++CURRENT->errors >= MAX_ERRORS) end_request(CURRENT, 0); - } local_irq_disable(); hd_request(); enable_irq(HD_IRQ); @@ -621,11 +612,6 @@ repeat: track = block / disk->sect; head = track % disk->head; cyl = track / disk->head; -#ifdef DEBUG - printk("%s: %sing: CHS=%d/%d/%d, sectors=%d, buffer=%p\n", - req->rq_disk->disk_name, (req->cmd == READ)?"read":"writ", - cyl, head, sec, nsect, req->buffer); -#endif if (req->flags & REQ_CMD) { switch (rq_data_dir(req)) { case READ: --- a/drivers/infiniband/hw/mthca/mthca_reset.c +++ b/drivers/infiniband/hw/mthca/mthca_reset.c @@ -153,9 +153,10 @@ int mthca_reset(struct mthca_dev *mdev) /* Now wait for PCI device to start responding again */ { u32 v; - int c = 0; + unsigned long end_time; - for (c = 0; c < 100; ++c) { + end_time = jiffies + msecs_to_jiffies(10000); + while (time_before(jiffies, end_time)) { if (pci_read_config_dword(bridge ? bridge : mdev->pdev, 0, &v)) { err = -ENODEV; mthca_err(mdev, "Couldn't access HCA after reset, " --- a/drivers/input/joystick/analog.c +++ b/drivers/input/joystick/analog.c @@ -576,6 +576,7 @@ static int analog_init_masks(struct anal static int analog_init_port(struct gameport *gameport, struct gameport_driver *drv, struct analog_port *port) { int i, t, u, v; + unsigned long end_time; port->gameport = gameport; @@ -591,7 +592,8 @@ static int analog_init_port(struct gamep port->mask = (gameport_read(gameport) ^ t) & t & 0xf; port->fuzz = (port->speed * ANALOG_FUZZ_MAGIC) / port->loop / 1000 + ANALOG_FUZZ_BITS; - for (i = 0; i < ANALOG_INIT_RETRIES; i++) { + end_time = jiffies + msecs_to_jiffies(ANALOG_MAX_TIME * ANALOG_INIT_RETRIES); + while (time_before(jiffies, end_time)) { if (!analog_cooked_read(port)) break; msleep(ANALOG_MAX_TIME); --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c @@ -149,7 +149,7 @@ static unsigned char atkbd_unxlate_table #define ATKBD_RET_EMUL0 0xe0 #define ATKBD_RET_EMUL1 0xe1 #define ATKBD_RET_RELEASE 0xf0 -#define ATKBD_RET_HANGUEL 0xf1 +#define ATKBD_RET_HANGEUL 0xf1 #define ATKBD_RET_HANJA 0xf2 #define ATKBD_RET_ERR 0xff @@ -303,7 +303,7 @@ static irqreturn_t atkbd_interrupt(struc if (atkbd->emul || !(code == ATKBD_RET_EMUL0 || code == ATKBD_RET_EMUL1 || - code == ATKBD_RET_HANGUEL || code == ATKBD_RET_HANJA || + code == ATKBD_RET_HANGEUL || code == ATKBD_RET_HANJA || (code == ATKBD_RET_ERR && !atkbd->err_xl) || (code == ATKBD_RET_BAT && !atkbd->bat_xl))) { atkbd->release = code >> 7; @@ -332,8 +332,8 @@ static irqreturn_t atkbd_interrupt(struc case ATKBD_RET_RELEASE: atkbd->release = 1; goto out; - case ATKBD_RET_HANGUEL: - atkbd_report_key(atkbd->dev, regs, KEY_HANGUEL, 3); + case ATKBD_RET_HANGEUL: + atkbd_report_key(atkbd->dev, regs, KEY_HANGEUL, 3); goto out; case ATKBD_RET_HANJA: atkbd_report_key(atkbd->dev, regs, KEY_HANJA, 3); --- a/drivers/input/misc/hp_sdc_rtc.c +++ b/drivers/input/misc/hp_sdc_rtc.c @@ -690,14 +690,24 @@ static struct miscdevice hp_sdc_rtc_dev static int __init hp_sdc_rtc_init(void) { int ret; + struct proc_dir_entry* proc_de; init_MUTEX(&i8042tregs); if ((ret = hp_sdc_request_timer_irq(&hp_sdc_rtc_isr))) return ret; - misc_register(&hp_sdc_rtc_dev); - create_proc_read_entry ("driver/rtc", 0, 0, + ret = misc_register(&hp_sdc_rtc_dev); + if (ret) { + printk(KERN_WARNING "hp_sdc_rtc: " + "Unable to register misc device.\n"); + return ret; + } + proc_de = create_proc_read_entry("driver/rtc", 0, 0, hp_sdc_rtc_read_proc, NULL); + if (proc_de == NULL) { + printk(KERN_WARNING "hp_sdc_rtc: " + "Unable to create proc dir entry.\n"); + } printk(KERN_INFO "HP i8042 SDC + MSM-58321 RTC support loaded " "(RTC v " RTC_VERSION ")\n"); --- a/drivers/isdn/capi/capi.c +++ b/drivers/isdn/capi/capi.c @@ -674,13 +674,8 @@ capi_read(struct file *file, char __user if (file->f_flags & O_NONBLOCK) return -EAGAIN; - for (;;) { - interruptible_sleep_on(&cdev->recvwait); - if ((skb = skb_dequeue(&cdev->recvqueue)) != 0) - break; - if (signal_pending(current)) - break; - } + wait_event_interruptible(cdev->recvwait, + ((skb = skb_dequeue(&cdev->recvqueue)) == 0)); if (skb == 0) return -ERESTARTNOHAND; } --- a/drivers/isdn/hardware/eicon/debug.c +++ b/drivers/isdn/hardware/eicon/debug.c @@ -756,14 +756,14 @@ int diva_get_driver_info (dword id, byte data_length -= 9; - if ((to_copy = MIN(strlen(clients[id].drvName), data_length-1))) { + if ((to_copy = min(strlen(clients[id].drvName), data_length-1))) { memcpy (p, clients[id].drvName, to_copy); p += to_copy; data_length -= to_copy; if ((data_length >= 4) && clients[id].hDbg->drvTag[0]) { *p++ = '('; data_length -= 1; - if ((to_copy = MIN(strlen(clients[id].hDbg->drvTag), data_length-2))) { + if ((to_copy = min(strlen(clients[id].hDbg->drvTag), data_length-2))) { memcpy (p, clients[id].hDbg->drvTag, to_copy); p += to_copy; data_length -= to_copy; --- a/drivers/isdn/hardware/eicon/io.c +++ b/drivers/isdn/hardware/eicon/io.c @@ -262,7 +262,7 @@ void request(PISDN_ADAPTER IoAdapter, EN case IDI_SYNC_REQ_XDI_GET_CAPI_PARAMS: { diva_xdi_get_capi_parameters_t prms, *pI = &syncReq->xdi_capi_prms.info; memset (&prms, 0x00, sizeof(prms)); - prms.structure_length = MIN(sizeof(prms), pI->structure_length); + prms.structure_length = min(sizeof(prms), pI->structure_length); memset (pI, 0x00, pI->structure_length); prms.flag_dynamic_l1_down = (IoAdapter->capi_cfg.cfg_1 & \ DIVA_XDI_CAPI_CFG_1_DYNAMIC_L1_ON) ? 1 : 0; --- a/drivers/isdn/hisax/diva.c +++ b/drivers/isdn/hisax/diva.c @@ -1101,6 +1101,7 @@ setup_diva(struct IsdnCard *card) bytecnt = 32; } } + goto ready; /* Assure that `ready' is used even if `__ISAPNP__' isn't. */ ready: printk(KERN_INFO "Diva: %s card configured at %#lx IRQ %d\n", --- a/drivers/isdn/hisax/hisax_fcpcipnp.c +++ b/drivers/isdn/hisax/hisax_fcpcipnp.c @@ -1000,18 +1000,16 @@ static int __init hisax_fcpcipnp_init(vo printk(KERN_INFO "hisax_fcpcipnp: Fritz!Card PCI/PCIv2/PnP ISDN driver v0.0.1\n"); retval = pci_register_driver(&fcpci_driver); - if (retval) - goto out; + if (! retval) + { #ifdef __ISAPNP__ - retval = pnp_register_driver(&fcpnp_driver); - if (retval < 0) - goto out_unregister_pci; + retval = pnp_register_driver(&fcpnp_driver); + if (retval < 0) + pci_unregister_driver(&fcpci_driver); + else #endif - return 0; - - out_unregister_pci: - pci_unregister_driver(&fcpci_driver); - out: + retval = 0; + } return retval; } --- a/drivers/isdn/hysdn/boardergo.c +++ b/drivers/isdn/hysdn/boardergo.c @@ -329,14 +329,16 @@ static int ergo_waitpofready(struct HYSDN_CARD *card) { tErgDpram *dpr = card->dpram; /* pointer to DPRAM structure */ - int timecnt = 10000 / 50; /* timeout is 10 secs max. */ + unsigned long end_time; ulong flags; int msg_size; int i; if (card->debug_flags & LOG_POF_CARD) hysdn_addlog(card, "ERGO: waiting for pof ready"); - while (timecnt--) { + + end_time = jiffies + msecs_to_jiffies(10000); /* timeout is 10 secs max. */ + while (time_before(jiffies, end_time)) { /* wait until timeout */ if (dpr->ToPcFlag) { --- a/drivers/isdn/i4l/isdn_common.c +++ b/drivers/isdn/i4l/isdn_common.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "isdn_common.h" #include "isdn_tty.h" #include "isdn_net.h" @@ -1177,8 +1178,8 @@ isdn_write(struct file *file, const char goto out; } chidx = isdn_minor2chan(minor); - while (isdn_writebuf_stub(drvidx, chidx, buf, count) != count) - interruptible_sleep_on(&dev->drv[drvidx]->snd_waitq[chidx]); + wait_event(dev->drv[drvidx]->snd_waitq[chidx], + (isdn_writebuf_stub(drvidx, chidx, buf, count) == count)); retval = count; goto out; } --- a/drivers/isdn/i4l/isdn_tty.c +++ b/drivers/isdn/i4l/isdn_tty.c @@ -1500,8 +1500,8 @@ isdn_tty_block_til_ready(struct tty_stru */ if (tty_hung_up_p(filp) || (info->flags & ISDN_ASYNC_CLOSING)) { - if (info->flags & ISDN_ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); + wait_event_interruptible(info->close_wait, + (info->flags & ISDN_ASYNC_CLOSING)==0); #ifdef MODEM_DO_RESTART if (info->flags & ISDN_ASYNC_HUP_NOTIFY) return -EAGAIN; --- a/drivers/isdn/isdnloop/isdnloop.c +++ b/drivers/isdn/isdnloop/isdnloop.c @@ -1294,7 +1294,7 @@ isdnloop_command(isdn_ctrl * c, isdnloop c->parm.num[0] ? "N" : "ALL", c->parm.num); } else sprintf(cbuf, "%02d;EAZ%s\n", (int) a, - c->parm.num[0] ? c->parm.num : (u_char *) "0123456789"); + c->parm.num[0] ? c->parm.num : decimal); i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card); } break; --- a/drivers/isdn/sc/ioctl.c +++ b/drivers/isdn/sc/ioctl.c @@ -71,14 +71,14 @@ int sc_ioctl(int card, scs_ioctl *data) /* * Get the SRec from user space */ - if (copy_from_user(srec, data->dataptr, sizeof(srec))) { + if (copy_from_user(srec, data->dataptr, SCIOC_SRECSIZE)) { kfree(rcvmsg); kfree(srec); return -EFAULT; } status = send_and_receive(card, CMPID, cmReqType2, cmReqClass0, cmReqLoadProc, - 0, sizeof(srec), srec, rcvmsg, SAR_TIMEOUT); + 0, SCIOC_SRECSIZE, srec, rcvmsg, SAR_TIMEOUT); kfree(rcvmsg); kfree(srec); --- a/drivers/macintosh/adbhid.c +++ b/drivers/macintosh/adbhid.c @@ -179,7 +179,7 @@ u8 adb_to_linux_keycodes[128] = { /* 0x65 */ KEY_F9, /* 67 */ /* 0x66 */ KEY_HANJA, /* 123 */ /* 0x67 */ KEY_F11, /* 87 */ - /* 0x68 */ KEY_HANGUEL, /* 122 */ + /* 0x68 */ KEY_HANGEUL, /* 122 */ /* 0x69 */ KEY_SYSRQ, /* 99 */ /* 0x6a */ 0, /* 0x6b */ KEY_SCROLLLOCK, /* 70 */ --- a/drivers/macintosh/apm_emu.c +++ b/drivers/macintosh/apm_emu.c @@ -520,6 +520,7 @@ static struct miscdevice apm_device = { static int __init apm_emu_init(void) { struct proc_dir_entry *apm_proc; + int rc; if (sys_ctrler != SYS_CTRLER_PMU) { printk(KERN_INFO "apm_emu: Requires a machine with a PMU.\n"); @@ -530,7 +531,12 @@ static int __init apm_emu_init(void) if (apm_proc) apm_proc->owner = THIS_MODULE; - misc_register(&apm_device); + rc = misc_register(&apm_device); + if (rc < 0) { + remove_proc_entry("apm", NULL); + printk(KERN_ERR "apm_emu: Failed to register APM Emulation.\n"); + return rc; + } pmu_register_sleep_notifier(&apm_sleep_notifier); --- a/drivers/macintosh/via-pmu.c +++ b/drivers/macintosh/via-pmu.c @@ -1813,8 +1813,7 @@ pmu_register_sleep_notifier(struct pmu_s struct list_head *list; struct pmu_sleep_notifier *notifier; - for (list = sleep_notifiers.next; list != &sleep_notifiers; - list = list->next) { + list_for_each(list, &sleep_notifiers) { notifier = list_entry(list, struct pmu_sleep_notifier, list); if (n->priority > notifier->priority) break; @@ -1846,8 +1845,7 @@ broadcast_sleep(int when, int fallback) struct list_head *list; struct pmu_sleep_notifier *notifier; - for (list = sleep_notifiers.prev; list != &sleep_notifiers; - list = list->prev) { + list_for_each_prev(list, &sleep_notifiers) { notifier = list_entry(list, struct pmu_sleep_notifier, list); ret = notifier->notifier_call(notifier, when); if (ret != PBOOK_SLEEP_OK) { @@ -1868,14 +1866,10 @@ static int broadcast_wake(void) { int ret = PBOOK_SLEEP_OK; - struct list_head *list; struct pmu_sleep_notifier *notifier; - for (list = sleep_notifiers.next; list != &sleep_notifiers; - list = list->next) { - notifier = list_entry(list, struct pmu_sleep_notifier, list); + list_for_each_entry(notifier, &sleep_notifiers, list) notifier->notifier_call(notifier, PBOOK_WAKE); - } return ret; } @@ -2491,15 +2485,13 @@ static void pmu_pass_intr(unsigned char *data, int len) { struct pmu_private *pp; - struct list_head *list; int i; unsigned long flags; if (len > sizeof(pp->rb_buf[0].data)) len = sizeof(pp->rb_buf[0].data); spin_lock_irqsave(&all_pvt_lock, flags); - for (list = &all_pmu_pvt; (list = list->next) != &all_pmu_pvt; ) { - pp = list_entry(list, struct pmu_private, list); + list_for_each_entry(pp, &all_pmu_pvt, list) { spin_lock(&pp->lock); i = pp->rb_put + 1; if (i >= RB_SIZE) --- a/drivers/mca/mca-proc.c +++ b/drivers/mca/mca-proc.c @@ -184,8 +184,14 @@ void __init mca_do_proc_init(void) struct mca_device *mca_dev; proc_mca = proc_mkdir("mca", &proc_root); - create_proc_read_entry("pos",0,proc_mca,get_mca_info,NULL); - create_proc_read_entry("machine",0,proc_mca,get_mca_machine_info,NULL); + node = create_proc_read_entry("pos",0,proc_mca,get_mca_info,NULL); + if (!node) + printk(KERN_WARNING "MCA: Unable to create mca /proc entry.\n"); + node = create_proc_read_entry("machine",0,proc_mca, + get_mca_machine_info,NULL); + if (!node) + printk(KERN_WARNING + "MCA: Unable to create machine /proc entry.\n"); /* Initialize /proc/mca entries for existing adapters */ --- a/drivers/media/dvb/bt8xx/dst.c +++ b/drivers/media/dvb/bt8xx/dst.c @@ -182,9 +182,11 @@ EXPORT_SYMBOL(dst_pio_disable); int dst_wait_dst_ready(struct dst_state *state, u8 delay_mode) { u8 reply; - int i; + int i = 0; + unsigned long end_time; - for (i = 0; i < 200; i++) { + end_time = jiffies + msecs_to_jiffies(2000); + while (time_before(jiffies, end_time)) { if (dst_gpio_inb(state, &reply) < 0) { dprintk(verbose, DST_ERROR, 1, "dst_gpio_inb ERROR !"); return -1; @@ -194,6 +196,7 @@ int dst_wait_dst_ready(struct dst_state return 1; } msleep(10); + ++i; } dprintk(verbose, DST_NOTICE, 1, "dst wait NOT ready after %d", i); --- a/drivers/media/dvb/dvb-usb/dtt200u-fe.c +++ b/drivers/media/dvb/dvb-usb/dtt200u-fe.c @@ -105,7 +105,7 @@ static int dtt200u_fe_set_frontend(struc struct dvb_frontend_parameters *fep) { struct dtt200u_fe_state *state = fe->demodulator_priv; - int i; + unsigned long end_time; fe_status_t st; u16 freq = fep->frequency / 250000; u8 bwbuf[2] = { SET_BANDWIDTH, 0 },freqbuf[3] = { SET_RF_FREQ, 0, 0 }; @@ -125,7 +125,8 @@ static int dtt200u_fe_set_frontend(struc freqbuf[2] = (freq >> 8) & 0xff; dvb_usb_generic_write(state->d,freqbuf,3); - for (i = 0; i < 30; i++) { + end_time = jiffies + msecs_to_jiffies(600); + while (time_before(jiffies, end_time)) { msleep(20); dtt200u_fe_read_status(fe, &st); if (st & FE_TIMEDOUT) --- a/drivers/media/dvb/frontends/nxt2002.c +++ b/drivers/media/dvb/frontends/nxt2002.c @@ -159,18 +159,19 @@ static int nxt2002_readreg_multibyte (st static void nxt2002_microcontroller_stop (struct nxt2002_state* state) { - u8 buf[2],counter = 0; + u8 buf[2]; + unsigned long end_time; dprintk("%s\n", __FUNCTION__); buf[0] = 0x80; i2c_writebytes(state,0x22,buf,1); - while (counter < 20) { + end_time = jiffies + msecs_to_jiffies(200); + while (time_before(jiffies, end_time)) { i2c_readbytes(state,0x31,buf,1); if (buf[0] & 0x40) return; msleep(10); - counter++; } dprintk("Timeout waiting for micro to stop.. This is ok after firmware upload\n"); @@ -188,7 +189,8 @@ static void nxt2002_microcontroller_star static int nxt2002_writetuner (struct nxt2002_state* state, u8* data) { - u8 buf,count = 0; + u8 buf; + unsigned long end_time; dprintk("Tuner Bytes: %02X %02X %02X %02X\n",data[0],data[1],data[2],data[3]); @@ -215,12 +217,12 @@ static int nxt2002_writetuner (struct nx buf = 0x80; i2c_writebytes(state,0x21,&buf,1); - while (count < 20) { + end_time = jiffies + msecs_to_jiffies(2000); + while (time_before(jiffies, end_time)) { i2c_readbytes(state,0x21,&buf,1); if ((buf & 0x80)== 0x00) return 0; msleep(100); - count++; } printk("nxt2002: timeout error writing tuner\n"); --- a/drivers/media/dvb/frontends/tda80xx.c +++ b/drivers/media/dvb/frontends/tda80xx.c @@ -389,9 +389,10 @@ static void tda80xx_worklet(void *priv) static void tda80xx_wait_diseqc_fifo(struct tda80xx_state* state) { - size_t i; + unsigned long end_time; - for (i = 0; i < 100; i++) { + end_time = jiffies + msecs_to_jiffies(1000); + while (time_before(jiffies, end_time)) { if (tda80xx_readreg(state, 0x02) & 0x80) break; msleep(10); --- a/drivers/media/dvb/ttpci/av7110.c +++ b/drivers/media/dvb/ttpci/av7110.c @@ -1998,7 +1998,7 @@ static int nexusca_stv0297_pll_set(struc u8 data[4]; struct i2c_msg msg = { .addr = 0x63, .flags = 0, .buf = data, .len = sizeof(data) }; struct i2c_msg readmsg = { .addr = 0x63, .flags = I2C_M_RD, .buf = data, .len = 1 }; - int i; + unsigned long end_time; div = (params->frequency + 36150000 + 31250) / 62500; @@ -2024,8 +2024,8 @@ static int nexusca_stv0297_pll_set(struc } // wait for PLL lock - for(i = 0; i < 20; i++) { - + end_time = jiffies + msecs_to_jiffies(200); + while (time_before(jiffies, end_time)) { stv0297_enable_plli2c(fe); if (i2c_transfer(&av7110->i2c_adap, &readmsg, 1) == 1) if (data[0] & 0x40) break; --- a/drivers/media/dvb/ttpci/budget-av.c +++ b/drivers/media/dvb/ttpci/budget-av.c @@ -193,7 +193,7 @@ static int ciintf_slot_reset(struct dvb_ { struct budget_av *budget_av = (struct budget_av *) ca->data; struct saa7146_dev *saa = budget_av->budget.dev; - int timeout = 50; // 5 seconds (4.4.6 Ready) + unsigned long end_time; if (slot != 0) return -EINVAL; @@ -211,10 +211,11 @@ static int ciintf_slot_reset(struct dvb_ /* This should have been based on pin 16 READY of the pcmcia port, * but AFAICS it is not routed to the saa7146 */ - while (--timeout > 0 && ciintf_read_attribute_mem(ca, slot, 0) != 0x1d) + end_time = jiffies + msecs_to_jiffies(5000); // 5 seconds (4.4.6 Ready) + while (time_before(jiffies, end_time) && ciintf_read_attribute_mem(ca, slot, 0) != 0x1d) msleep(100); - if (timeout <= 0) + if (time_after_eq(jiffies, end_time)) { printk(KERN_ERR "budget-av: cam reset failed (timeout).\n"); saa7146_setgpio(saa, 2, SAA7146_GPIO_OUTHI); /* disable card */ --- a/drivers/media/radio/radio-cadet.c +++ b/drivers/media/radio/radio-cadet.c @@ -341,7 +341,7 @@ static ssize_t cadet_read(struct file *f if(rdsin==rdsout) { if (file->f_flags & O_NONBLOCK) return -EWOULDBLOCK; - interruptible_sleep_on(&read_queue); + wait_event_interruptible(read_queue, rdsin != rdsout); } while( ipll.pll_crystal) return; @@ -785,7 +785,8 @@ static void set_pll(struct bttv *btv) btv->pll.pll_ifreq, btv->pll.pll_ofreq); set_pll_freq(btv, btv->pll.pll_ifreq, btv->pll.pll_ofreq); - for (i=0; i<10; i++) { + end_time = jiffies + msecs_to_jiffies(100); + while (time_before(jiffies, end_time)) { /* Let other people run while the PLL stabilizes */ bttv_printk("."); msleep(10); --- a/drivers/media/video/c-qcam.c +++ b/drivers/media/video/c-qcam.c @@ -91,7 +91,7 @@ static unsigned int qcam_await_ready1(st int value) { unsigned long oldjiffies = jiffies; - unsigned int i; + unsigned long end_time; for (oldjiffies = jiffies; (jiffies - oldjiffies) < (HZ/25); ) if (qcam_ready1(qcam) == value) @@ -99,7 +99,8 @@ static unsigned int qcam_await_ready1(st /* If the camera didn't respond within 1/25 second, poll slowly for a while. */ - for (i = 0; i < 50; i++) + end_time = jiffies + msecs_to_jiffies(5000); + while (time_before(jiffies, end_time)) { if (qcam_ready1(qcam) == value) return 0; @@ -116,7 +117,7 @@ static unsigned int qcam_await_ready1(st static unsigned int qcam_await_ready2(struct qcam_device *qcam, int value) { unsigned long oldjiffies = jiffies; - unsigned int i; + unsigned long end_time; for (oldjiffies = jiffies; (jiffies - oldjiffies) < (HZ/25); ) if (qcam_ready2(qcam) == value) @@ -124,7 +125,8 @@ static unsigned int qcam_await_ready2(st /* If the camera didn't respond within 1/25 second, poll slowly for a while. */ - for (i = 0; i < 50; i++) + end_time = jiffies + msecs_to_jiffies(5000); + while (time_before(jiffies, end_time)) { if (qcam_ready2(qcam) == value) return 0; --- a/drivers/media/video/cpia.c +++ b/drivers/media/video/cpia.c @@ -194,9 +194,6 @@ enum { #define DARK_TIME 3 #define LIGHT_TIME 3 -/* Maximum number of 10ms loops to wait for the stream to become ready */ -#define READY_TIMEOUT 100 - /* Developer's Guide Table 5 p 3-34 * indexed by [mains][sensorFps.baserate][sensorFps.divisor]*/ static u8 flicker_jumps[2][2][4] = @@ -2830,6 +2827,7 @@ static int fetch_frame(void *data) int image_size, retry; struct cam_data *cam = (struct cam_data *)data; unsigned long oldjif, rate, diff; + unsigned long end_time; /* Allow up to two bad images in a row to be read and * ignored before an error is reported */ @@ -2858,10 +2856,10 @@ static int fetch_frame(void *data) if (cam->ops->wait_for_stream_ready) { /* loop until image ready */ - int count = 0; do_command(cam, CPIA_COMMAND_GetCameraStatus,0,0,0,0); + end_time = jiffies + msecs_to_jiffies(1000); while (cam->params.status.streamState != STREAM_READY) { - if(++count > READY_TIMEOUT) + if(time_after(jiffies, end_time)) break; if(cam->params.status.streamState == STREAM_PAUSED) { --- a/drivers/media/video/cx88/cx88-core.c +++ b/drivers/media/video/cx88/cx88-core.c @@ -753,7 +753,7 @@ static int set_pll(struct cx88_core *cor static u32 pre[] = { 0, 0, 0, 3, 2, 1 }; u64 pll; u32 reg; - int i; + unsigned long end_time; if (prescale < 2) prescale = 2; @@ -771,7 +771,9 @@ static int set_pll(struct cx88_core *cor dprintk(1,"set_pll: MO_PLL_REG 0x%08x [old=0x%08x,freq=%d]\n", reg, cx_read(MO_PLL_REG), ofreq); cx_write(MO_PLL_REG, reg); - for (i = 0; i < 100; i++) { + + end_time = jiffies + msecs_to_jiffies(1000); + while (time_before(jiffies, end_time)) { reg = cx_read(MO_DEVICE_STATUS); if (reg & (1<<2)) { dprintk(1,"pll locked [pre=%d,ofreq=%d]\n", --- a/drivers/media/video/em28xx/em28xx-i2c.c +++ b/drivers/media/video/em28xx/em28xx-i2c.c @@ -399,18 +399,6 @@ static u32 functionality(struct i2c_adap return I2C_FUNC_SMBUS_EMUL; } -#ifndef I2C_PEC -static void inc_use(struct i2c_adapter *adap) -{ - MOD_INC_USE_COUNT; -} - -static void dec_use(struct i2c_adapter *adap) -{ - MOD_DEC_USE_COUNT; -} -#endif - static int em28xx_set_tuner(int check_eeprom, struct i2c_client *client) { struct em28xx *dev = client->adapter->algo_data; @@ -481,12 +469,7 @@ static struct i2c_algorithm em28xx_algo }; static struct i2c_adapter em28xx_adap_template = { -#ifdef I2C_PEC .owner = THIS_MODULE, -#else - .inc_use = inc_use, - .dec_use = dec_use, -#endif .class = I2C_CLASS_TV_ANALOG, .name = "em28xx", .id = I2C_HW_B_EM28XX, --- a/drivers/media/video/meye.c +++ b/drivers/media/video/meye.c @@ -558,15 +558,19 @@ static void mchip_dma_free(void) reset the dma engine */ static void mchip_hic_stop(void) { - int i, j; + unsigned long end_time, end_time2; meye.mchip_mode = MCHIP_HIC_MODE_NOOP; if (!(mchip_read(MCHIP_HIC_STATUS) & MCHIP_HIC_STATUS_BUSY)) return; - for (i = 0; i < 20; ++i) { + + end_time = jiffies + msecs_to_jiffies(7000); + while (time_before(jiffies, end_time)) { mchip_set(MCHIP_HIC_CMD, MCHIP_HIC_CMD_STOP); mchip_delay(MCHIP_HIC_CMD, 0); - for (j = 0; j < 100; ++j) { + + end_time2 = jiffies + msecs_to_jiffies(100); + while (time_before(jiffies, end_time2)) { if (mchip_delay(MCHIP_HIC_STATUS, MCHIP_HIC_STATUS_IDLE)) return; @@ -660,7 +664,7 @@ static int mchip_comp_read_frame(u32 v, /* take a picture into SDRAM */ static void mchip_take_picture(void) { - int i; + unsigned long end_time; mchip_hic_stop(); mchip_subsample(); @@ -671,7 +675,8 @@ static void mchip_take_picture(void) mchip_delay(MCHIP_HIC_CMD, 0); - for (i = 0; i < 100; ++i) { + end_time = jiffies + msecs_to_jiffies(100); + while (time_before(jiffies, end_time)) { if (mchip_delay(MCHIP_HIC_STATUS, MCHIP_HIC_STATUS_IDLE)) break; msleep(1); @@ -683,12 +688,14 @@ static void mchip_get_picture(u8 *buf, i { u32 v; int i; + unsigned long end_time; mchip_set(MCHIP_HIC_MODE, MCHIP_HIC_MODE_STILL_OUT); mchip_set(MCHIP_HIC_CMD, MCHIP_HIC_CMD_START); mchip_delay(MCHIP_HIC_CMD, 0); - for (i = 0; i < 100; ++i) { + end_time = jiffies + msecs_to_jiffies(100); + while (time_before(jiffies, end_time)) { if (mchip_delay(MCHIP_HIC_STATUS, MCHIP_HIC_STATUS_IDLE)) break; msleep(1); @@ -724,6 +731,7 @@ static int mchip_compress_frame(u8 *buf, { u32 v; int len = -1, i; + unsigned long end_time; mchip_vrj_setup(0x3f); udelay(50); @@ -732,7 +740,9 @@ static int mchip_compress_frame(u8 *buf, mchip_set(MCHIP_HIC_CMD, MCHIP_HIC_CMD_START); mchip_delay(MCHIP_HIC_CMD, 0); - for (i = 0; i < 100; ++i) { + + end_time = jiffies + msecs_to_jiffies(100); + while (time_before(jiffies, end_time)) { if (mchip_delay(MCHIP_HIC_STATUS, MCHIP_HIC_STATUS_IDLE)) break; msleep(1); --- a/drivers/message/fusion/mptbase.c +++ b/drivers/message/fusion/mptbase.c @@ -2941,6 +2941,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFw u32 fwSize; u32 diag0val; int count; + unsigned long end_time; u32 *ptrFw; u32 diagRwData; u32 nextImage; @@ -2969,7 +2970,9 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFw diag0val = CHIPREG_READ32(&ioc->chip->Diagnostic); CHIPREG_WRITE32(&ioc->chip->Diagnostic, diag0val | MPI_DIAG_RESET_ADAPTER); - for (count = 0; count < 30; count ++) { + count = 0; + end_time = jiffies + msecs_to_jiffies(3000); + while (time_before(jiffies, end_time)) { diag0val = CHIPREG_READ32(&ioc->chip->Diagnostic); if (!(diag0val & MPI_DIAG_RESET_ADAPTER)) { ddlprintk((MYIOC_s_INFO_FMT "RESET_ADAPTER cleared, count=%d\n", @@ -2982,9 +2985,10 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFw } else { mdelay (100); } + ++count; } - if ( count == 30 ) { + if (diag0val & MPI_DIAG_RESET_ADAPTER) { ddlprintk((MYIOC_s_INFO_FMT "downloadboot failed! " "Unable to get MPI_DIAG_DRWE mode, diag0val=%x\n", ioc->name, diag0val)); @@ -3099,7 +3103,9 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFw } } - for (count=0; countname, count, ioc_state)); @@ -3120,6 +3126,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFw } else { mdelay (10); } + ++count; } ddlprintk((MYIOC_s_INFO_FMT "downloadboot failed! IocState=%x\n", ioc->name, ioc_state)); @@ -3157,7 +3164,8 @@ KickStart(MPT_ADAPTER *ioc, int force, i { int hard_reset_done = 0; u32 ioc_state=0; - int cnt,cntdn; + int cnt; + unsigned long end_time; dinitprintk((KERN_WARNING MYNAM ": KickStarting %s!\n", ioc->name)); if (ioc->bus_type == SPI) { @@ -3180,8 +3188,9 @@ KickStart(MPT_ADAPTER *ioc, int force, i dinitprintk((MYIOC_s_INFO_FMT "Diagnostic reset successful!\n", ioc->name)); - cntdn = ((sleepFlag == CAN_SLEEP) ? HZ : 1000) * 2; /* 2 seconds */ - for (cnt=0; cntchip->IntStatus, 0); @@ -3247,6 +3258,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ign * or if the reset history is 0 */ if (ignore || !(diag0val & MPI_DIAG_RESET_HISTORY)) { + end_time = jiffies + msecs_to_jiffies(2000); while ((diag0val & MPI_DIAG_DRWE) == 0) { /* Write magic sequence to WriteSequence register * Loop until in diagnostic mode @@ -3265,12 +3277,10 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ign mdelay (100); } - count++; - if (count > 20) { + if (time_after(jiffies, end_time)) { printk(MYIOC_s_ERR_FMT "Enable Diagnostic mode FAILED! (%02xh)\n", ioc->name, diag0val); return -2; - } diag0val = CHIPREG_READ32(&ioc->chip->Diagnostic); @@ -3331,7 +3341,8 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ign * IOC will be left unusable. This is a fatal error * case. _diag_reset will return < 0 */ - for (count = 0; count < 30; count ++) { + end_time = jiffies + msecs_to_jiffies(30000); + while (time_before(jiffies, end_time)) { diag0val = CHIPREG_READ32(&ioc->chip->Diagnostic); if (!(diag0val & MPI_DIAG_RESET_ADAPTER)) { break; @@ -3357,7 +3368,8 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ign * If fail, no error will check again * with calling program. */ - for (count = 0; count < 60; count ++) { + end_time = jiffies + msecs_to_jiffies(60000); + while (time_before(jiffies, end_time)) { doorbell = CHIPREG_READ32(&ioc->chip->Doorbell); doorbell &= MPI_IOC_STATE_MASK; --- a/drivers/message/fusion/mptscsih.c +++ b/drivers/message/fusion/mptscsih.c @@ -1968,10 +1968,11 @@ static int mptscsih_tm_pending_wait(MPT_SCSI_HOST * hd) { unsigned long flags; - int loop_count = 4 * 10; /* Wait 10 seconds */ int status = FAILED; + unsigned long end_time; - do { + end_time = jiffies + msecs_to_jiffies(10000); /* Wait 10 seconds */ + while (time_before(jiffies, end_time)) { spin_lock_irqsave(&hd->ioc->FreeQlock, flags); if (hd->tmState == TM_STATE_NONE) { hd->tmState = TM_STATE_IN_PROGRESS; @@ -1982,7 +1983,7 @@ mptscsih_tm_pending_wait(MPT_SCSI_HOST * } spin_unlock_irqrestore(&hd->ioc->FreeQlock, flags); msleep(250); - } while (--loop_count); + } return status; } @@ -1998,10 +1999,11 @@ static int mptscsih_tm_wait_for_completion(MPT_SCSI_HOST * hd, ulong timeout ) { unsigned long flags; - int loop_count = 4 * timeout; int status = FAILED; + unsigned long end_time; - do { + end_time = jiffies + msecs_to_jiffies(timeout * 1000); + while (time_before(jiffies, end_time)) { spin_lock_irqsave(&hd->ioc->FreeQlock, flags); if(hd->tmPending == 0) { status = SUCCESS; @@ -2010,7 +2012,7 @@ mptscsih_tm_wait_for_completion(MPT_SCSI } spin_unlock_irqrestore(&hd->ioc->FreeQlock, flags); msleep_interruptible(250); - } while (--loop_count); + } return status; } --- a/drivers/mtd/nand/au1550nd.c +++ b/drivers/mtd/nand/au1550nd.c @@ -20,18 +20,7 @@ #include #include -/* fixme: this is ugly */ -#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 0) #include -#else -#include -#ifdef CONFIG_MIPS_PB1550 -#include -#endif -#ifdef CONFIG_MIPS_DB1550 -#include -#endif -#endif /* * MTD structure for NAND controller --- a/drivers/net/3c523.c +++ b/drivers/net/3c523.c @@ -105,6 +105,7 @@ #include #include #include +#include #include #include @@ -658,7 +659,7 @@ static int init586(struct net_device *de s = jiffies; /* warning: only active with interrupts on !! */ while (!(cfg_cmd->cmd_status & STAT_COMPL)) { - if (jiffies - s > 30*HZ/100) + if (time_after(jiffies, s + 30*HZ/100)) break; } @@ -684,7 +685,7 @@ static int init586(struct net_device *de s = jiffies; while (!(ias_cmd->cmd_status & STAT_COMPL)) { - if (jiffies - s > 30*HZ/100) + if (time_after(jiffies, s + 30*HZ/100)) break; } @@ -709,7 +710,7 @@ static int init586(struct net_device *de s = jiffies; while (!(tdr_cmd->cmd_status & STAT_COMPL)) { - if (jiffies - s > 30*HZ/100) { + if (time_after(jiffies, s + 30*HZ/100)) { printk(KERN_WARNING "%s: %d Problems while running the TDR.\n", dev->name, __LINE__); result = 1; break; @@ -798,7 +799,7 @@ static int init586(struct net_device *de elmc_id_attn586(); s = jiffies; while (!(mc_cmd->cmd_status & STAT_COMPL)) { - if (jiffies - s > 30*HZ/100) + if (time_after(jiffies, s + 30*HZ/100)) break; } if (!(mc_cmd->cmd_status & STAT_COMPL)) { --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c @@ -258,6 +258,7 @@ static int vortex_debug = 1; #include #include #include +#include #include /* For NR_IRQS only. */ #include #include @@ -2717,7 +2718,7 @@ boomerang_rx(struct net_device *dev) skb = dev_alloc_skb(PKT_BUF_SZ); if (skb == NULL) { static unsigned long last_jif; - if ((jiffies - last_jif) > 10 * HZ) { + if (time_after(jiffies, last_jif + 10 * HZ)) { printk(KERN_WARNING "%s: memory shortage\n", dev->name); last_jif = jiffies; } @@ -3367,7 +3368,7 @@ static int __init vortex_init (void) { int pci_rc, eisa_rc; - pci_rc = pci_module_init(&vortex_driver); + pci_rc = pci_register_driver(&vortex_driver); eisa_rc = vortex_eisa_init(); if (pci_rc == 0) --- a/drivers/net/8139cp.c +++ b/drivers/net/8139cp.c @@ -1939,7 +1939,7 @@ static int __init cp_init (void) #ifdef MODULE printk("%s", version); #endif - return pci_module_init (&cp_driver); + return pci_register_driver (&cp_driver); } static void __exit cp_exit (void) --- a/drivers/net/8139too.c +++ b/drivers/net/8139too.c @@ -2613,7 +2613,7 @@ static int __init rtl8139_init_module (v printk (KERN_INFO RTL8139_DRIVER_NAME "\n"); #endif - return pci_module_init (&rtl8139_pci_driver); + return pci_register_driver (&rtl8139_pci_driver); } --- a/drivers/net/acenic.c +++ b/drivers/net/acenic.c @@ -730,7 +730,7 @@ static struct pci_driver acenic_pci_driv static int __init acenic_init(void) { - return pci_module_init(&acenic_pci_driver); + return pci_register_driver(&acenic_pci_driver); } static void __exit acenic_exit(void) @@ -1002,6 +1002,8 @@ static int __devinit ace_init(struct net mac1 = 0; for(i = 0; i < 4; i++) { + int tmp; + mac1 = mac1 << 8; tmp = read_eeprom_byte(dev, 0x8c+i); if (tmp < 0) { @@ -1012,6 +1014,8 @@ static int __devinit ace_init(struct net } mac2 = 0; for(i = 4; i < 8; i++) { + int tmp; + mac2 = mac2 << 8; tmp = read_eeprom_byte(dev, 0x8c+i); if (tmp < 0) { --- a/drivers/net/amd8111e.c +++ b/drivers/net/amd8111e.c @@ -2159,7 +2159,7 @@ static struct pci_driver amd8111e_driver static int __init amd8111e_init(void) { - return pci_module_init(&amd8111e_driver); + return pci_register_driver(&amd8111e_driver); } static void __exit amd8111e_cleanup(void) --- a/drivers/net/apne.c +++ b/drivers/net/apne.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -216,7 +217,7 @@ static int __init apne_probe1(struct net outb(inb(ioaddr + NE_RESET), ioaddr + NE_RESET); while ((inb(ioaddr + NE_EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(" not found (no reset ack).\n"); return -ENODEV; } @@ -382,7 +383,7 @@ apne_reset_8390(struct net_device *dev) /* This check _should_not_ be necessary, omit eventually. */ while ((inb(NE_BASE+NE_EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk("%s: ne_reset_8390() did not complete.\n", dev->name); break; } @@ -530,7 +531,7 @@ apne_block_output(struct net_device *dev dma_start = jiffies; while ((inb(NE_BASE + NE_EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk("%s: timeout waiting for Tx RDC.\n", dev->name); apne_reset_8390(dev); NS8390_init(dev,1); --- a/drivers/net/arcnet/arcnet.c +++ b/drivers/net/arcnet/arcnet.c @@ -52,6 +52,7 @@ #include #include #include +#include /* "do nothing" functions for protocol drivers */ static void null_rx(struct net_device *dev, int bufnum, @@ -733,7 +734,7 @@ static void arcnet_timeout(struct net_de spin_unlock_irqrestore(&lp->lock, flags); - if (jiffies - lp->last_timeout > 10*HZ) { + if (time_after(jiffies, lp->last_timeout + 10*HZ)) { BUGMSG(D_EXTRA, "tx timed out%s (status=%Xh, intmask=%Xh, dest=%02Xh)\n", msg, status, lp->intmask, lp->lasttrans_dest); lp->last_timeout = jiffies; --- a/drivers/net/arcnet/com20020-pci.c +++ b/drivers/net/arcnet/com20020-pci.c @@ -177,7 +177,7 @@ static struct pci_driver com20020pci_dri static int __init com20020pci_init(void) { BUGLVL(D_NORMAL) printk(VERSION); - return pci_module_init(&com20020pci_driver); + return pci_register_driver(&com20020pci_driver); } static void __exit com20020pci_cleanup(void) --- a/drivers/net/arm/etherh.c +++ b/drivers/net/arm/etherh.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -355,7 +356,7 @@ etherh_block_output (struct net_device * dma_start = jiffies; while ((readb (addr + EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk(KERN_ERR "%s: timeout waiting for TX RDC\n", dev->name); etherh_reset (dev); --- a/drivers/net/atari_bionet.c +++ b/drivers/net/atari_bionet.c @@ -123,7 +123,7 @@ static char version[] = * Global variable 'bionet_debug'. Can be set at load time by 'insmod' */ unsigned int bionet_debug = NET_DEBUG; -MODULE_PARM(bionet_debug, "i"); +module_param(bionet_debug, int, 0644); MODULE_PARM_DESC(bionet_debug, "bionet debug level (0-2)"); MODULE_LICENSE("GPL"); --- a/drivers/net/atarilance.c +++ b/drivers/net/atarilance.c @@ -78,7 +78,7 @@ static int lance_debug = LANCE_DEBUG; #else static int lance_debug = 1; #endif -MODULE_PARM(lance_debug, "i"); +module_param(lance_debug, int, 0644); MODULE_PARM_DESC(lance_debug, "atarilance debug level (0-3)"); MODULE_LICENSE("GPL"); --- a/drivers/net/b44.c +++ b/drivers/net/b44.c @@ -2138,7 +2138,7 @@ static int __init b44_init(void) dma_desc_align_mask = ~(dma_desc_align_size - 1); dma_desc_sync_size = max(dma_desc_align_size, sizeof(struct dma_desc)); - return pci_module_init(&b44_driver); + return pci_register_driver(&b44_driver); } static void __exit b44_cleanup(void) --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c @@ -4055,9 +4055,9 @@ bnx2_test_link(struct bnx2 *bp) static int bnx2_test_intr(struct bnx2 *bp) { - int i; u32 val; u16 status_idx; + unsigned long end_time; if (!netif_running(bp->dev)) return -ENODEV; @@ -4069,7 +4069,8 @@ bnx2_test_intr(struct bnx2 *bp) REG_WR(bp, BNX2_HC_COMMAND, val | BNX2_HC_COMMAND_COAL_NOW); REG_RD(bp, BNX2_HC_COMMAND); - for (i = 0; i < 10; i++) { + end_time = jiffies + msecs_to_jiffies(100); + while (time_before(jiffies, end_time)) { if ((REG_RD(bp, BNX2_PCICFG_INT_ACK_CMD) & 0xffff) != status_idx) { @@ -4078,7 +4079,7 @@ bnx2_test_intr(struct bnx2 *bp) msleep_interruptible(10); } - if (i < 10) + if (time_before(jiffies, end_time)) return 0; return -ENODEV; --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -576,7 +576,7 @@ static int bond_update_speed_duplex(stru slave->duplex = DUPLEX_FULL; if (slave_dev->ethtool_ops) { - u32 res; + int res; if (!slave_dev->ethtool_ops->get_settings) { return -1; --- a/drivers/net/cassini.c +++ b/drivers/net/cassini.c @@ -194,9 +194,9 @@ static char version[] __devinitdata = MODULE_AUTHOR("Adrian Sun (asun@darksunrising.com)"); MODULE_DESCRIPTION("Sun Cassini(+) ethernet driver"); MODULE_LICENSE("GPL"); -MODULE_PARM(cassini_debug, "i"); +module_param(cassini_debug, int, 0644); MODULE_PARM_DESC(cassini_debug, "Cassini bitmapped debugging message enable value"); -MODULE_PARM(link_mode, "i"); +module_param(link_mode, int, 0); MODULE_PARM_DESC(link_mode, "default link mode"); /* @@ -208,7 +208,7 @@ MODULE_PARM_DESC(link_mode, "default lin * Value in seconds, for user input. */ static int linkdown_timeout = DEFAULT_LINKDOWN_TIMEOUT; -MODULE_PARM(linkdown_timeout, "i"); +module_param(linkdown_timeout, int, 0); MODULE_PARM_DESC(linkdown_timeout, "min reset interval in sec. for PCS linkdown issue; disabled if not positive"); --- a/drivers/net/defxx.c +++ b/drivers/net/defxx.c @@ -3444,7 +3444,7 @@ static int __init dfx_init(void) { int rc_pci, rc_eisa; - rc_pci = pci_module_init(&dfx_driver); + rc_pci = pci_register_driver(&dfx_driver); if (rc_pci >= 0) dfx_have_pci = 1; rc_eisa = dfx_eisa_init(); --- a/drivers/net/dl2k.c +++ b/drivers/net/dl2k.c @@ -1848,7 +1848,7 @@ static struct pci_driver rio_driver = { static int __init rio_init (void) { - return pci_module_init (&rio_driver); + return pci_register_driver (&rio_driver); } static void __exit --- a/drivers/net/e100.c +++ b/drivers/net/e100.c @@ -2748,7 +2748,7 @@ static int __init e100_init_module(void) printk(KERN_INFO PFX "%s, %s\n", DRV_DESCRIPTION, DRV_VERSION); printk(KERN_INFO PFX "%s\n", DRV_COPYRIGHT); } - return pci_module_init(&e100_driver); + return pci_register_driver(&e100_driver); } static void __exit e100_cleanup_module(void) --- a/drivers/net/eepro100.c +++ b/drivers/net/eepro100.c @@ -2391,7 +2391,7 @@ static int __init eepro100_init_module(v #ifdef MODULE printk(version); #endif - return pci_module_init(&eepro100_driver); + return pci_register_driver(&eepro100_driver); } static void __exit eepro100_cleanup_module(void) --- a/drivers/net/epic100.c +++ b/drivers/net/epic100.c @@ -1673,7 +1673,7 @@ static int __init epic_init (void) version, version2, version3); #endif - return pci_module_init (&epic_driver); + return pci_register_driver (&epic_driver); } --- a/drivers/net/eth16i.c +++ b/drivers/net/eth16i.c @@ -161,6 +161,7 @@ static char *version = #include #include #include +#include #include #include @@ -754,7 +755,7 @@ static void eth16i_set_port(int ioaddr, static int eth16i_send_probe_packet(int ioaddr, unsigned char *b, int l) { - int starttime; + unsigned long starttime; outb(0xff, ioaddr + TX_STATUS_REG); @@ -765,7 +766,7 @@ static int eth16i_send_probe_packet(int outb(TX_START | 1, ioaddr + TRANSMIT_START_REG); while( (inb(ioaddr + TX_STATUS_REG) & 0x80) == 0) { - if( (jiffies - starttime) > TX_TIMEOUT) { + if( time_after(jiffies, starttime + TX_TIMEOUT)) { return -1; } } @@ -775,18 +776,18 @@ static int eth16i_send_probe_packet(int static int eth16i_receive_probe_packet(int ioaddr) { - int starttime; + unsigned long starttime; starttime = jiffies; while((inb(ioaddr + TX_STATUS_REG) & 0x20) == 0) { - if( (jiffies - starttime) > TX_TIMEOUT) { + if( time_after(jiffies, starttime + TX_TIMEOUT)) { if(eth16i_debug > 1) printk(KERN_DEBUG "Timeout occurred waiting transmit packet received\n"); starttime = jiffies; while((inb(ioaddr + RX_STATUS_REG) & 0x80) == 0) { - if( (jiffies - starttime) > TX_TIMEOUT) { + if( time_after(jiffies, starttime + TX_TIMEOUT)) { if(eth16i_debug > 1) printk(KERN_DEBUG "Timeout occurred waiting receive packet\n"); return -1; --- a/drivers/net/fealnx.c +++ b/drivers/net/fealnx.c @@ -1992,7 +1992,7 @@ static int __init fealnx_init(void) printk(version); #endif - return pci_module_init(&fealnx_driver); + return pci_register_driver(&fealnx_driver); } static void __exit fealnx_exit(void) --- a/drivers/net/fec.c +++ b/drivers/net/fec.c @@ -692,10 +692,13 @@ fec_enet_mii(struct net_device *dev) volatile fec_t *ep; mii_list_t *mip; uint mii_reg; + unsigned long flags; fep = netdev_priv(dev); ep = fep->hwp; mii_reg = ep->fec_mii_data; + + spin_lock_irqsave(&mii_lock, flags); if ((mip = mii_head) == NULL) { printk("MII and no head!\n"); @@ -711,6 +714,8 @@ fec_enet_mii(struct net_device *dev) if ((mip = mii_head) != NULL) ep->fec_mii_data = mip->mii_regval; + + spin_unlock_irqrestore(&mii_lock, flags); } static int @@ -728,8 +733,7 @@ mii_queue(struct net_device *dev, int re retval = 0; - save_flags(flags); - cli(); + spin_lock_irqsave(&mii_lock, flags); if ((mip = mii_free) != NULL) { mii_free = mip->mii_next; @@ -749,7 +753,7 @@ mii_queue(struct net_device *dev, int re retval = 1; } - restore_flags(flags); + spin_unlock_irqrestore(&mii_lock, flags); return(retval); } --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c @@ -131,6 +131,7 @@ #include #include #include +#include #include #include @@ -2467,7 +2468,7 @@ static int __devinit nv_probe(struct pci if (id->driver_data & DEV_HAS_HIGH_DMA) { /* packet format 3: supports 40-bit addressing */ np->desc_ver = DESC_VER_3; - if (pci_set_dma_mask(pci_dev, 0x0000007fffffffffULL)) { + if (pci_set_dma_mask(pci_dev, DMA_39BIT_MASK)) { printk(KERN_INFO "forcedeth: 64-bit DMA failed, using 32-bit addressing for device %s.\n", pci_name(pci_dev)); } else { @@ -2757,7 +2758,7 @@ static struct pci_driver driver = { static int __init init_nic(void) { printk(KERN_INFO "forcedeth.c: Reverse Engineered nForce ethernet driver. Version %s.\n", FORCEDETH_VERSION); - return pci_module_init(&driver); + return pci_register_driver(&driver); } static void __exit exit_nic(void) --- a/drivers/net/fs_enet/fs_enet-main.c +++ b/drivers/net/fs_enet/fs_enet-main.c @@ -58,7 +58,7 @@ MODULE_DESCRIPTION("Freescale Ethernet D MODULE_LICENSE("GPL"); MODULE_VERSION(DRV_MODULE_VERSION); -MODULE_PARM(fs_enet_debug, "i"); +module_param(fs_enet_debug, int, 0); MODULE_PARM_DESC(fs_enet_debug, "Freescale bitmapped debugging message enable value"); --- a/drivers/net/gianfar_sysfs.c +++ b/drivers/net/gianfar_sysfs.c @@ -35,7 +35,6 @@ #include #include -#include #include "gianfar.h" --- a/drivers/net/gt64240eth.h +++ /dev/null @@ -1,402 +0,0 @@ -/* - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * - * Copyright (C) 2001 Patton Electronics Company - * Copyright (C) 2002 Momentum Computer - * - * Copyright 2000 MontaVista Software Inc. - * Author: MontaVista Software, Inc. - * stevel@mvista.com or support@mvista.com - * - * This program is free software; you can distribute it and/or modify it - * under the terms of the GNU General Public License (Version 2) as - * published by the Free Software Foundation. - * - * This program is distributed in the hope it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. - * - * Ethernet driver definitions for the MIPS GT96100 Advanced - * Communication Controller. - * - * Modified for the Marvellous GT64240 Retarded Communication Controller. - */ -#ifndef _GT64240ETH_H -#define _GT64240ETH_H - -#include - -#define ETHERNET_PORTS_DIFFERENCE_OFFSETS 0x400 - -/* Translate those weanie names from Galileo/VxWorks header files: */ - -#define GT64240_MRR MAIN_ROUTING_REGISTER -#define GT64240_CIU_ARBITER_CONFIG COMM_UNIT_ARBITER_CONFIGURATION_REGISTER -#define GT64240_CIU_ARBITER_CONTROL COMM_UNIT_ARBITER_CONTROL -#define GT64240_MAIN_LOW_CAUSE LOW_INTERRUPT_CAUSE_REGISTER -#define GT64240_MAIN_HIGH_CAUSE HIGH_INTERRUPT_CAUSE_REGISTER -#define GT64240_CPU_LOW_MASK CPU_INTERRUPT_MASK_REGISTER_LOW -#define GT64240_CPU_HIGH_MASK CPU_INTERRUPT_MASK_REGISTER_HIGH -#define GT64240_CPU_SELECT_CAUSE CPU_SELECT_CAUSE_REGISTER - -#define GT64240_ETH_PHY_ADDR_REG ETHERNET_PHY_ADDRESS_REGISTER -#define GT64240_ETH_PORT_CONFIG ETHERNET0_PORT_CONFIGURATION_REGISTER -#define GT64240_ETH_PORT_CONFIG_EXT ETHERNET0_PORT_CONFIGURATION_EXTEND_REGISTER -#define GT64240_ETH_PORT_COMMAND ETHERNET0_PORT_COMMAND_REGISTER -#define GT64240_ETH_PORT_STATUS ETHERNET0_PORT_STATUS_REGISTER -#define GT64240_ETH_IO_SIZE ETHERNET_PORTS_DIFFERENCE_OFFSETS -#define GT64240_ETH_SMI_REG ETHERNET_SMI_REGISTER -#define GT64240_ETH_MIB_COUNT_BASE ETHERNET0_MIB_COUNTER_BASE -#define GT64240_ETH_SDMA_CONFIG ETHERNET0_SDMA_CONFIGURATION_REGISTER -#define GT64240_ETH_SDMA_COMM ETHERNET0_SDMA_COMMAND_REGISTER -#define GT64240_ETH_INT_MASK ETHERNET0_INTERRUPT_MASK_REGISTER -#define GT64240_ETH_INT_CAUSE ETHERNET0_INTERRUPT_CAUSE_REGISTER -#define GT64240_ETH_CURR_TX_DESC_PTR0 ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER0 -#define GT64240_ETH_CURR_TX_DESC_PTR1 ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER1 -#define GT64240_ETH_1ST_RX_DESC_PTR0 ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER0 -#define GT64240_ETH_CURR_RX_DESC_PTR0 ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER0 -#define GT64240_ETH_HASH_TBL_PTR ETHERNET0_HASH_TABLE_POINTER_REGISTER - -/* Turn on NAPI by default */ - -#define GT64240_NAPI 1 - -/* Some 64240 settings that SHOULD eventually be setup in PROM monitor: */ -/* (Board-specific to the DSL3224 Rev A board ONLY!) */ -#define D3224_MPP_CTRL0_SETTING 0x66669900 -#define D3224_MPP_CTRL1_SETTING 0x00000000 -#define D3224_MPP_CTRL2_SETTING 0x00887700 -#define D3224_MPP_CTRL3_SETTING 0x00000044 -#define D3224_GPP_IO_CTRL_SETTING 0x0000e800 -#define D3224_GPP_LEVEL_CTRL_SETTING 0xf001f703 -#define D3224_GPP_VALUE_SETTING 0x00000000 - -/* Keep the ring sizes a power of two for efficiency. */ -//-#define TX_RING_SIZE 16 -#define TX_RING_SIZE 64 /* TESTING !!! */ -#define RX_RING_SIZE 32 -#define PKT_BUF_SZ 1536 /* Size of each temporary Rx buffer. */ - -#define RX_HASH_TABLE_SIZE 16384 -#define HASH_HOP_NUMBER 12 - -#define NUM_INTERFACES 3 - -#define GT64240ETH_TX_TIMEOUT HZ/4 - -#define MIPS_GT64240_BASE 0xf4000000 -#define GT64240_ETH0_BASE (MIPS_GT64240_BASE + GT64240_ETH_PORT_CONFIG) -#define GT64240_ETH1_BASE (GT64240_ETH0_BASE + GT64240_ETH_IO_SIZE) -#define GT64240_ETH2_BASE (GT64240_ETH1_BASE + GT64240_ETH_IO_SIZE) - -#if defined(CONFIG_MIPS_DSL3224) -#define GT64240_ETHER0_IRQ 4 -#define GT64240_ETHER1_IRQ 4 -#else -#define GT64240_ETHER0_IRQ -1 -#define GT64240_ETHER1_IRQ -1 -#endif - -#define REV_GT64240 0x1 -#define REV_GT64240A 0x10 - -#define GT64240ETH_READ(gp, offset) \ - GT_READ((gp)->port_offset + (offset)) - -#define GT64240ETH_WRITE(gp, offset, data) \ - GT_WRITE((gp)->port_offset + (offset), (data)) - -#define GT64240ETH_SETBIT(gp, offset, bits) \ - GT64240ETH_WRITE((gp), (offset), \ - GT64240ETH_READ((gp), (offset)) | (bits)) - -#define GT64240ETH_CLRBIT(gp, offset, bits) \ - GT64240ETH_WRITE((gp), (offset), \ - GT64240ETH_READ((gp), (offset)) & ~(bits)) - -#define GT64240_READ(ofs) GT_READ(ofs) -#define GT64240_WRITE(ofs, data) GT_WRITE((ofs), (data)) - -/* Bit definitions of the SMI Reg */ -enum { - smirDataMask = 0xffff, - smirPhyAdMask = 0x1f << 16, - smirPhyAdBit = 16, - smirRegAdMask = 0x1f << 21, - smirRegAdBit = 21, - smirOpCode = 1 << 26, - smirReadValid = 1 << 27, - smirBusy = 1 << 28 -}; - -/* Bit definitions of the Port Config Reg */ -enum pcr_bits { - pcrPM = 1 << 0, - pcrRBM = 1 << 1, - pcrPBF = 1 << 2, - pcrEN = 1 << 7, - pcrLPBKMask = 0x3 << 8, - pcrLPBKBit = 1 << 8, - pcrFC = 1 << 10, - pcrHS = 1 << 12, - pcrHM = 1 << 13, - pcrHDM = 1 << 14, - pcrHD = 1 << 15, - pcrISLMask = 0x7 << 28, - pcrISLBit = 28, - pcrACCS = 1 << 31 -}; - -/* Bit definitions of the Port Config Extend Reg */ -enum pcxr_bits { - pcxrIGMP = 1, - pcxrSPAN = 2, - pcxrPAR = 4, - pcxrPRIOtxMask = 0x7 << 3, - pcxrPRIOtxBit = 3, - pcxrPRIOrxMask = 0x3 << 6, - pcxrPRIOrxBit = 6, - pcxrPRIOrxOverride = 1 << 8, - pcxrDPLXen = 1 << 9, - pcxrFCTLen = 1 << 10, - pcxrFLP = 1 << 11, - pcxrFCTL = 1 << 12, - pcxrMFLMask = 0x3 << 14, - pcxrMFLBit = 14, - pcxrMIBclrMode = 1 << 16, - pcxrSpeed = 1 << 18, - pcxrSpeeden = 1 << 19, - pcxrRMIIen = 1 << 20, - pcxrDSCPen = 1 << 21 -}; - -/* Bit definitions of the Port Command Reg */ -enum pcmr_bits { - pcmrFJ = 1 << 15 -}; - - -/* Bit definitions of the Port Status Reg */ -enum psr_bits { - psrSpeed = 1, - psrDuplex = 2, - psrFctl = 4, - psrLink = 8, - psrPause = 1 << 4, - psrTxLow = 1 << 5, - psrTxHigh = 1 << 6, - psrTxInProg = 1 << 7 -}; - -/* Bit definitions of the SDMA Config Reg */ -enum sdcr_bits { - sdcrRCMask = 0xf << 2, - sdcrRCBit = 2, - sdcrBLMR = 1 << 6, - sdcrBLMT = 1 << 7, - sdcrPOVR = 1 << 8, - sdcrRIFB = 1 << 9, - sdcrBSZMask = 0x3 << 12, - sdcrBSZBit = 12 -}; - -/* Bit definitions of the SDMA Command Reg */ -enum sdcmr_bits { - sdcmrERD = 1 << 7, - sdcmrAR = 1 << 15, - sdcmrSTDH = 1 << 16, - sdcmrSTDL = 1 << 17, - sdcmrTXDH = 1 << 23, - sdcmrTXDL = 1 << 24, - sdcmrAT = 1 << 31 -}; - -/* Bit definitions of the Interrupt Cause Reg */ -enum icr_bits { - icrRxBuffer = 1, - icrTxBufferHigh = 1 << 2, - icrTxBufferLow = 1 << 3, - icrTxEndHigh = 1 << 6, - icrTxEndLow = 1 << 7, - icrRxError = 1 << 8, - icrTxErrorHigh = 1 << 10, - icrTxErrorLow = 1 << 11, - icrRxOVR = 1 << 12, - icrTxUdr = 1 << 13, - icrRxBufferQ0 = 1 << 16, - icrRxBufferQ1 = 1 << 17, - icrRxBufferQ2 = 1 << 18, - icrRxBufferQ3 = 1 << 19, - icrRxErrorQ0 = 1 << 20, - icrRxErrorQ1 = 1 << 21, - icrRxErrorQ2 = 1 << 22, - icrRxErrorQ3 = 1 << 23, - icrMIIPhySTC = 1 << 28, - icrSMIdone = 1 << 29, - icrEtherIntSum = 1 << 31 -}; - - -/* The Rx and Tx descriptor lists. */ -#ifdef __LITTLE_ENDIAN -typedef struct { - u32 cmdstat; - u16 reserved; //-prk21aug01 u32 reserved:16; - u16 byte_cnt; //-prk21aug01 u32 byte_cnt:16; - u32 buff_ptr; - u32 next; -} gt64240_td_t; - -typedef struct { - u32 cmdstat; - u16 byte_cnt; //-prk21aug01 u32 byte_cnt:16; - u16 buff_sz; //-prk21aug01 u32 buff_sz:16; - u32 buff_ptr; - u32 next; -} gt64240_rd_t; -#elif defined(__BIG_ENDIAN) -typedef struct { - u16 byte_cnt; //-prk21aug01 u32 byte_cnt:16; - u16 reserved; //-prk21aug01 u32 reserved:16; - u32 cmdstat; - u32 next; - u32 buff_ptr; -} gt64240_td_t; - -typedef struct { - u16 buff_sz; //-prk21aug01 u32 buff_sz:16; - u16 byte_cnt; //-prk21aug01 u32 byte_cnt:16; - u32 cmdstat; - u32 next; - u32 buff_ptr; -} gt64240_rd_t; -#else -#error Either __BIG_ENDIAN or __LITTLE_ENDIAN must be defined! -#endif - - -/* Values for the Tx command-status descriptor entry. */ -enum td_cmdstat { - txOwn = 1 << 31, - txAutoMode = 1 << 30, - txEI = 1 << 23, - txGenCRC = 1 << 22, - txPad = 1 << 18, - txFirst = 1 << 17, - txLast = 1 << 16, - txErrorSummary = 1 << 15, - txReTxCntMask = 0x0f << 10, - txReTxCntBit = 10, - txCollision = 1 << 9, - txReTxLimit = 1 << 8, - txUnderrun = 1 << 6, - txLateCollision = 1 << 5 -}; - - -/* Values for the Rx command-status descriptor entry. */ -enum rd_cmdstat { - rxOwn = 1 << 31, - rxAutoMode = 1 << 30, - rxEI = 1 << 23, - rxFirst = 1 << 17, - rxLast = 1 << 16, - rxErrorSummary = 1 << 15, - rxIGMP = 1 << 14, - rxHashExpired = 1 << 13, - rxMissedFrame = 1 << 12, - rxFrameType = 1 << 11, - rxShortFrame = 1 << 8, - rxMaxFrameLen = 1 << 7, - rxOverrun = 1 << 6, - rxCollision = 1 << 4, - rxCRCError = 1 -}; - -/* Bit fields of a Hash Table Entry */ -enum hash_table_entry { - hteValid = 1, - hteSkip = 2, - hteRD = 4 -}; - -// The MIB counters -typedef struct { - u32 byteReceived; - u32 byteSent; - u32 framesReceived; - u32 framesSent; - u32 totalByteReceived; - u32 totalFramesReceived; - u32 broadcastFramesReceived; - u32 multicastFramesReceived; - u32 cRCError; - u32 oversizeFrames; - u32 fragments; - u32 jabber; - u32 collision; - u32 lateCollision; - u32 frames64; - u32 frames65_127; - u32 frames128_255; - u32 frames256_511; - u32 frames512_1023; - u32 frames1024_MaxSize; - u32 macRxError; - u32 droppedFrames; - u32 outMulticastFrames; - u32 outBroadcastFrames; - u32 undersizeFrames; -} mib_counters_t; - - -struct gt64240_private { - gt64240_rd_t *rx_ring; - gt64240_td_t *tx_ring; - // The Rx and Tx rings must be 16-byte aligned - dma_addr_t rx_ring_dma; - dma_addr_t tx_ring_dma; - char *hash_table; - // The Hash Table must be 8-byte aligned - dma_addr_t hash_table_dma; - int hash_mode; - - // The Rx buffers must be 8-byte aligned - char *rx_buff; - dma_addr_t rx_buff_dma; - // Tx buffers (tx_skbuff[i]->data) with less than 8 bytes - // of payload must be 8-byte aligned - struct sk_buff *tx_skbuff[TX_RING_SIZE]; - int rx_next_out; /* The next free ring entry to receive */ - int tx_next_in; /* The next free ring entry to send */ - int tx_next_out; /* The last ring entry the ISR processed */ - int tx_count; /* current # of pkts waiting to be sent in Tx ring */ - int intr_work_done; /* number of Rx and Tx pkts processed in the isr */ - int tx_full; /* Tx ring is full */ - - mib_counters_t mib; - struct net_device_stats stats; - - int io_size; - int port_num; // 0 or 1 - u32 port_offset; - - int phy_addr; // PHY address - u32 last_psr; // last value of the port status register - - int options; /* User-settable misc. driver options. */ - int drv_flags; - spinlock_t lock; /* Serialise access to device */ - struct mii_if_info mii_if; - - u32 msg_enable; -}; - -#endif /* _GT64240ETH_H */ --- a/drivers/net/hamradio/baycom_epp.c +++ b/drivers/net/hamradio/baycom_epp.c @@ -905,7 +905,7 @@ static int epp_open(struct net_device *d /* autoprobe baud rate */ tstart = jiffies; i = 0; - while ((signed)(jiffies-tstart-HZ/3) < 0) { + while (time_before(jiffies, tstart + HZ/3)) { if (pp->ops->epp_read_addr(pp, &stat, 1, 0) != 1) goto epptimeout; if ((stat & (EPP_NRAEF|EPP_NRHF)) == EPP_NRHF) { --- a/drivers/net/hp100.c +++ b/drivers/net/hp100.c @@ -115,6 +115,7 @@ #include #include #include +#include #include @@ -405,7 +406,7 @@ struct net_device * __init hp100_probe(i #ifdef HP100_DEBUG_B hp100_outw(0x4200, TRACE); - printk("hp100: %s: probe\n", dev->name); + printk(KERN_DEBUG "hp100: %s: probe\n", dev->name); #endif if (unit >= 0) { @@ -441,7 +442,7 @@ static int __devinit hp100_probe1(struct #ifdef HP100_DEBUG_B hp100_outw(0x4201, TRACE); - printk("hp100: %s: probe1\n", dev->name); + printk(KERN_DEBUG "hp100: %s: probe1\n", dev->name); #endif /* memory region for programmed i/o */ @@ -454,13 +455,13 @@ static int __devinit hp100_probe1(struct chip = hp100_inw(PAGING) & HP100_CHIPID_MASK; #ifdef HP100_DEBUG if (chip == HP100_CHIPID_SHASTA) - printk("hp100: %s: Shasta Chip detected. (This is a pre 802.12 chip)\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Shasta Chip detected. (This is a pre 802.12 chip)\n", dev->name); else if (chip == HP100_CHIPID_RAINIER) - printk("hp100: %s: Rainier Chip detected. (This is a pre 802.12 chip)\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Rainier Chip detected. (This is a pre 802.12 chip)\n", dev->name); else if (chip == HP100_CHIPID_LASSEN) - printk("hp100: %s: Lassen Chip detected.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Lassen Chip detected.\n", dev->name); else - printk("hp100: %s: Warning: Unknown CASCADE chip (id=0x%.4x).\n", dev->name, chip); + printk(KERN_DEBUG "hp100: %s: Warning: Unknown CASCADE chip (id=0x%.4x).\n", dev->name, chip); #endif dev->base_addr = ioaddr; @@ -517,7 +518,7 @@ static int __devinit hp100_probe1(struct if (local_mode < 1 || local_mode > 4) local_mode = 1; /* default */ #ifdef HP100_DEBUG - printk("hp100: %s: original LSW = 0x%x\n", dev->name, + printk(KERN_DEBUG "hp100: %s: original LSW = 0x%x\n", dev->name, hp100_inw(OPTION_LSW)); #endif @@ -525,17 +526,17 @@ static int __devinit hp100_probe1(struct hp100_outw(HP100_MEM_EN | HP100_RESET_LB, OPTION_LSW); hp100_outw(HP100_IO_EN | HP100_SET_LB, OPTION_LSW); hp100_outw(HP100_BM_WRITE | HP100_BM_READ | HP100_RESET_HB, OPTION_LSW); - printk("hp100: IO mapped mode forced.\n"); + printk(KERN_INFO "hp100: IO mapped mode forced.\n"); } else if (local_mode == 2) { hp100_outw(HP100_MEM_EN | HP100_SET_LB, OPTION_LSW); hp100_outw(HP100_IO_EN | HP100_SET_LB, OPTION_LSW); hp100_outw(HP100_BM_WRITE | HP100_BM_READ | HP100_RESET_HB, OPTION_LSW); - printk("hp100: Shared memory mode requested.\n"); + printk(KERN_INFO "hp100: Shared memory mode requested.\n"); } else if (local_mode == 4) { if (chip == HP100_CHIPID_LASSEN) { hp100_outw(HP100_BM_WRITE | HP100_BM_READ | HP100_SET_HB, OPTION_LSW); hp100_outw(HP100_IO_EN | HP100_MEM_EN | HP100_RESET_LB, OPTION_LSW); - printk("hp100: Busmaster mode requested.\n"); + printk(KERN_INFO "hp100: Busmaster mode requested.\n"); } local_mode = 1; } @@ -546,7 +547,7 @@ static int __devinit hp100_probe1(struct if ((lsw & HP100_IO_EN) && (~lsw & HP100_MEM_EN) && (~lsw & (HP100_BM_WRITE | HP100_BM_READ))) { #ifdef HP100_DEBUG - printk("hp100: %s: IO_EN bit is set on card.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: IO_EN bit is set on card.\n", dev->name); #endif local_mode = 3; } else if (chip == HP100_CHIPID_LASSEN && @@ -561,13 +562,13 @@ static int __devinit hp100_probe1(struct /* Gracefully fallback to shared memory */ goto busmasterfail; } - printk("hp100: Busmaster mode enabled.\n"); + printk(KERN_INFO "hp100: Busmaster mode enabled.\n"); hp100_outw(HP100_MEM_EN | HP100_IO_EN | HP100_RESET_LB, OPTION_LSW); } else { busmasterfail: #ifdef HP100_DEBUG - printk("hp100: %s: Card not configured for BM or BM not supported with this card.\n", dev->name); - printk("hp100: %s: Trying shared memory mode.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Card not configured for BM or BM not supported with this card.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Trying shared memory mode.\n", dev->name); #endif /* In this case, try shared memory mode */ local_mode = 2; @@ -576,7 +577,7 @@ static int __devinit hp100_probe1(struct } } #ifdef HP100_DEBUG - printk("hp100: %s: new LSW = 0x%x\n", dev->name, hp100_inw(OPTION_LSW)); + printk(KERN_DEBUG "hp100: %s: new LSW = 0x%x\n", dev->name, hp100_inw(OPTION_LSW)); #endif /* Check for shared memory on the card, eventually remap it */ @@ -593,7 +594,7 @@ static int __devinit hp100_probe1(struct mem_ptr_phys &= ~0x1fff; /* 8k alignment */ if (bus == HP100_BUS_ISA && (mem_ptr_phys & ~0xfffff) != 0) { - printk("hp100: Can only use programmed i/o mode.\n"); + printk(KERN_INFO "hp100: Can only use programmed i/o mode.\n"); mem_ptr_phys = 0; mem_mapped = 0; local_mode = 3; /* Use programmed i/o */ @@ -606,18 +607,18 @@ static int __devinit hp100_probe1(struct for (virt_memory_size = memory_size; virt_memory_size > 16383; virt_memory_size >>= 1) { if ((mem_ptr_virt = ioremap((u_long) mem_ptr_phys, virt_memory_size)) == NULL) { #ifdef HP100_DEBUG - printk("hp100: %s: ioremap for 0x%x bytes high PCI memory at 0x%lx failed\n", dev->name, virt_memory_size, mem_ptr_phys); + printk(KERN_DEBUG "hp100: %s: ioremap for 0x%x bytes high PCI memory at 0x%lx failed\n", dev->name, virt_memory_size, mem_ptr_phys); #endif } else { #ifdef HP100_DEBUG - printk("hp100: %s: remapped 0x%x bytes high PCI memory at 0x%lx to %p.\n", dev->name, virt_memory_size, mem_ptr_phys, mem_ptr_virt); + printk(KERN_DEBUG "hp100: %s: remapped 0x%x bytes high PCI memory at 0x%lx to %p.\n", dev->name, virt_memory_size, mem_ptr_phys, mem_ptr_virt); #endif break; } } if (mem_ptr_virt == NULL) { /* all ioremap tries failed */ - printk("hp100: Failed to ioremap the PCI card memory. Will have to use i/o mapped mode.\n"); + printk(KERN_WARNING "hp100: Failed to ioremap the PCI card memory. Will have to use i/o mapped mode.\n"); local_mode = 3; virt_memory_size = 0; } @@ -628,7 +629,7 @@ static int __devinit hp100_probe1(struct mem_mapped = 0; mem_ptr_phys = 0; mem_ptr_virt = NULL; - printk("hp100: Using (slow) programmed i/o mode.\n"); + printk(KERN_INFO "hp100: Using (slow) programmed i/o mode.\n"); } /* Initialise the "private" data structure for this card. */ @@ -710,7 +711,7 @@ static int __devinit hp100_probe1(struct lp->whatever_offset = ((u_long) page_baddr) - ((u_long) lp->page_vaddr_algn); #ifdef HP100_DEBUG_BM - printk("hp100: %s: Reserved DMA memory from 0x%x to 0x%x\n", dev->name, (u_int) lp->page_vaddr_algn, (u_int) lp->page_vaddr_algn + MAX_RINGSIZE); + printk(KERN_DEBUG "hp100: %s: Reserved DMA memory from 0x%x to 0x%x\n", dev->name, (u_int) lp->page_vaddr_algn, (u_int) lp->page_vaddr_algn + MAX_RINGSIZE); #endif lp->rxrcommit = lp->txrcommit = 0; lp->rxrhead = lp->rxrtail = &(lp->rxring[0]); @@ -728,7 +729,7 @@ static int __devinit hp100_probe1(struct lp->lan_type = hp100_sense_lan(dev); /* Print out a message what about what we think we have probed. */ - printk("hp100: at 0x%x, IRQ %d, ", ioaddr, dev->irq); + printk(KERN_INFO "hp100: at 0x%x, IRQ %d, ", ioaddr, dev->irq); switch (bus) { case HP100_BUS_EISA: printk("EISA"); @@ -743,7 +744,7 @@ static int __devinit hp100_probe1(struct printk(" bus, %dk SRAM (rx/tx %d%%).\n", lp->memory_size >> 10, lp->rx_ratio); if (lp->mode == 2) { /* memory mapped */ - printk("hp100: Memory area at 0x%lx-0x%lx", mem_ptr_phys, + printk(KERN_INFO "hp100: Memory area at 0x%lx-0x%lx", mem_ptr_phys, (mem_ptr_phys + (mem_ptr_phys > 0x100000 ? (u_long) lp->memory_size : 16 * 1024)) - 1); if (mem_ptr_virt) printk(" (virtual base %p)", mem_ptr_virt); @@ -754,7 +755,7 @@ static int __devinit hp100_probe1(struct dev->mem_end = mem_ptr_phys + lp->memory_size; } - printk("hp100: "); + printk(KERN_INFO "hp100: "); if (lp->lan_type != HP100_LAN_ERR) printk("Adapter is attached to "); switch (lp->lan_type) { @@ -797,7 +798,7 @@ static void hp100_hwinit(struct net_devi #ifdef HP100_DEBUG_B hp100_outw(0x4202, TRACE); - printk("hp100: %s: hwinit\n", dev->name); + printk(KERN_DEBUG "hp100: %s: hwinit\n", dev->name); #endif /* Initialise the card. -------------------------------------------- */ @@ -892,12 +893,12 @@ static void hp100_mmuinit(struct net_dev #ifdef HP100_DEBUG_B hp100_outw(0x4203, TRACE); - printk("hp100: %s: mmuinit\n", dev->name); + printk(KERN_DEBUG "hp100: %s: mmuinit\n", dev->name); #endif #ifdef HP100_DEBUG if (0 != (hp100_inw(OPTION_LSW) & HP100_HW_RST)) { - printk("hp100: %s: Not in reset when entering mmuinit. Fix me.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Not in reset when entering mmuinit. Fix me.\n", dev->name); return; } #endif @@ -990,7 +991,7 @@ static void hp100_mmuinit(struct net_dev recv_stop = (xmit_stop * (lp->rx_ratio) / 100) & ~(0x03ff); hp100_outw((pdl_stop >> 4) - 1, PDL_MEM_STOP); #ifdef HP100_DEBUG_BM - printk("hp100: %s: PDL_STOP = 0x%x\n", dev->name, pdl_stop); + printk(KERN_DEBUG "hp100: %s: PDL_STOP = 0x%x\n", dev->name, pdl_stop); #endif } else { /* ETR chip (Lassen) in busmaster mode */ @@ -1001,16 +1002,16 @@ static void hp100_mmuinit(struct net_dev hp100_outw(xmit_stop >> 4, TX_MEM_STOP); hp100_outw(recv_stop >> 4, RX_MEM_STOP); #ifdef HP100_DEBUG_BM - printk("hp100: %s: TX_STOP = 0x%x\n", dev->name, xmit_stop >> 4); - printk("hp100: %s: RX_STOP = 0x%x\n", dev->name, recv_stop >> 4); + printk(KERN_DEBUG "hp100: %s: TX_STOP = 0x%x\n", dev->name, xmit_stop >> 4); + printk(KERN_DEBUG "hp100: %s: RX_STOP = 0x%x\n", dev->name, recv_stop >> 4); #endif } else { /* Slave modes (memory mapped and programmed io) */ hp100_outw((((lp->memory_size * lp->rx_ratio) / 100) >> 4), RX_MEM_STOP); hp100_outw(((lp->memory_size - 1) >> 4), TX_MEM_STOP); #ifdef HP100_DEBUG - printk("hp100: %s: TX_MEM_STOP: 0x%x\n", dev->name, hp100_inw(TX_MEM_STOP)); - printk("hp100: %s: RX_MEM_STOP: 0x%x\n", dev->name, hp100_inw(RX_MEM_STOP)); + printk(KERN_DEBUG "hp100: %s: TX_MEM_STOP: 0x%x\n", dev->name, hp100_inw(TX_MEM_STOP)); + printk(KERN_DEBUG "hp100: %s: RX_MEM_STOP: 0x%x\n", dev->name, hp100_inw(RX_MEM_STOP)); #endif } @@ -1072,7 +1073,7 @@ static int hp100_open(struct net_device #ifdef HP100_DEBUG_B hp100_outw(0x4204, TRACE); - printk("hp100: %s: open\n", dev->name); + printk(KERN_DEBUG "hp100: %s: open\n", dev->name); #endif /* New: if bus is PCI or EISA, interrupts might be shared interrupts */ @@ -1080,7 +1081,7 @@ static int hp100_open(struct net_device lp->bus == HP100_BUS_PCI || lp->bus == HP100_BUS_EISA ? SA_SHIRQ : SA_INTERRUPT, "hp100", dev)) { - printk("hp100: %s: unable to get IRQ %d\n", dev->name, dev->irq); + printk(KERN_WARNING "hp100: %s: unable to get IRQ %d\n", dev->name, dev->irq); return -EAGAIN; } @@ -1109,7 +1110,7 @@ static int hp100_close(struct net_device #ifdef HP100_DEBUG_B hp100_outw(0x4205, TRACE); - printk("hp100: %s: close\n", dev->name); + printk(KERN_DEBUG "hp100: %s: close\n", dev->name); #endif hp100_page(PERFORMANCE); @@ -1125,7 +1126,7 @@ static int hp100_close(struct net_device free_irq(dev->irq, dev); #ifdef HP100_DEBUG - printk("hp100: %s: close LSW = 0x%x\n", dev->name, + printk(KERN_DEBUG "hp100: %s: close LSW = 0x%x\n", dev->name, hp100_inw(OPTION_LSW)); #endif @@ -1149,11 +1150,11 @@ static void hp100_init_pdls(struct net_d #ifdef HP100_DEBUG_B hp100_outw(0x4206, TRACE); - printk("hp100: %s: init pdls\n", dev->name); + printk(KERN_DEBUG "hp100: %s: init pdls\n", dev->name); #endif if (0 == lp->page_vaddr_algn) - printk("hp100: %s: Warning: lp->page_vaddr_algn not initialised!\n", dev->name); + printk(KERN_WARNING "hp100: %s: Warning: lp->page_vaddr_algn not initialised!\n", dev->name); else { /* pageptr shall point into the DMA accessible memory region */ /* we use this pointer to status the upper limit of allocated */ @@ -1193,7 +1194,7 @@ static int hp100_init_rxpdl(struct net_d /* pdlptr is starting address for this pdl */ if (0 != (((unsigned long) pdlptr) & 0xf)) - printk("hp100: %s: Init rxpdl: Unaligned pdlptr 0x%lx.\n", + printk(KERN_INFO "hp100: %s: Init rxpdl: Unaligned pdlptr 0x%lx.\n", dev->name, (unsigned long) pdlptr); ringptr->pdl = pdlptr + 1; @@ -1220,7 +1221,7 @@ static int hp100_init_txpdl(struct net_d register u32 * pdlptr) { if (0 != (((unsigned long) pdlptr) & 0xf)) - printk("hp100: %s: Init txpdl: Unaligned pdlptr 0x%lx.\n", dev->name, (unsigned long) pdlptr); + printk(KERN_INFO "hp100: %s: Init txpdl: Unaligned pdlptr 0x%lx.\n", dev->name, (unsigned long) pdlptr); ringptr->pdl = pdlptr; /* +1; */ ringptr->pdl_paddr = virt_to_whatever(dev, pdlptr); /* +1 */ @@ -1248,7 +1249,7 @@ static int hp100_build_rx_pdl(hp100_ring #ifdef HP100_DEBUG_B hp100_outw(0x4207, TRACE); - printk("hp100: %s: build rx pdl\n", dev->name); + printk(KERN_DEBUG "hp100: %s: build rx pdl\n", dev->name); #endif /* Allocate skb buffer of maximum size */ @@ -1276,7 +1277,7 @@ static int hp100_build_rx_pdl(hp100_ring * directly before the PDL. */ #ifdef HP100_DEBUG_BM - printk("hp100: %s: build_rx_pdl: PDH@0x%x, skb->data (len %d) at 0x%x\n", + printk(KERN_DEBUG "hp100: %s: build_rx_pdl: PDH@0x%x, skb->data (len %d) at 0x%x\n", dev->name, (u_int) ringptr->pdl, ((MAX_ETHER_SIZE + 2 + 3) / 4) * 4, (unsigned int) ringptr->skb->data); @@ -1291,7 +1292,7 @@ static int hp100_build_rx_pdl(hp100_ring #ifdef HP100_DEBUG_BM for (p = (ringptr->pdl); p < (ringptr->pdl + 5); p++) - printk("hp100: %s: Adr 0x%.8x = 0x%.8x\n", dev->name, (u_int) p, (u_int) * p); + printk(KERN_DEBUG "hp100: %s: Adr 0x%.8x = 0x%.8x\n", dev->name, (u_int) p, (u_int) * p); #endif return (1); } @@ -1301,7 +1302,7 @@ static int hp100_build_rx_pdl(hp100_ring * making the PDL only 1 fragment (i.e. the 4 byte packet status) */ #ifdef HP100_DEBUG_BM - printk("hp100: %s: build_rx_pdl: PDH@0x%x, No space for skb.\n", dev->name, (u_int) ringptr->pdl); + printk(KERN_DEBUG "hp100: %s: build_rx_pdl: PDH@0x%x, No space for skb.\n", dev->name, (u_int) ringptr->pdl); #endif ringptr->pdl[0] = 0x00010000; /* PDH: Count=1 Fragment */ @@ -1328,7 +1329,7 @@ static void hp100_rxfill(struct net_devi #ifdef HP100_DEBUG_B hp100_outw(0x4208, TRACE); - printk("hp100: %s: rxfill\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rxfill\n", dev->name); #endif hp100_page(PERFORMANCE); @@ -1345,7 +1346,7 @@ static void hp100_rxfill(struct net_devi /* Hand this PDL over to the card */ /* Note: This needs performance page selected! */ #ifdef HP100_DEBUG_BM - printk("hp100: %s: rxfill: Hand to card: pdl #%d @0x%x phys:0x%x, buffer: 0x%x\n", + printk(KERN_DEBUG "hp100: %s: rxfill: Hand to card: pdl #%d @0x%x phys:0x%x, buffer: 0x%x\n", dev->name, lp->rxrcommit, (u_int) ringptr->pdl, (u_int) ringptr->pdl_paddr, (u_int) ringptr->pdl[3]); #endif @@ -1369,7 +1370,7 @@ static void hp100_BM_shutdown(struct net #ifdef HP100_DEBUG_B hp100_outw(0x4209, TRACE); - printk("hp100: %s: bm shutdown\n", dev->name); + printk(KERN_DEBUG "hp100: %s: bm shutdown\n", dev->name); #endif hp100_page(PERFORMANCE); @@ -1418,7 +1419,7 @@ static void hp100_BM_shutdown(struct net } if (time >= 10000) - printk("hp100: %s: BM shutdown error.\n", dev->name); + printk(KERN_INFO "hp100: %s: BM shutdown error.\n", dev->name); /* To ensure all bus master outloading activity has ceased, * wait until the Tx PDA count goes to zero or no more Tx space @@ -1450,7 +1451,7 @@ static int hp100_check_lan(struct net_de if (lp->lan_type < 0) { /* no LAN type detected yet? */ hp100_stop_interface(dev); if ((lp->lan_type = hp100_sense_lan(dev)) < 0) { - printk("hp100: %s: no connection found - check wire\n", dev->name); + printk(KERN_INFO "hp100: %s: no connection found - check wire\n", dev->name); hp100_start_interface(dev); /* 10Mb/s RX packets maybe handled */ return -EIO; } @@ -1476,7 +1477,7 @@ static int hp100_start_xmit_bm(struct sk #ifdef HP100_DEBUG_B hp100_outw(0x4210, TRACE); - printk("hp100: %s: start_xmit_bm\n", dev->name); + printk(KERN_DEBUG "hp100: %s: start_xmit_bm\n", dev->name); #endif if (skb == NULL) { @@ -1496,10 +1497,10 @@ static int hp100_start_xmit_bm(struct sk if (lp->txrtail->next == lp->txrhead) { /* No memory. */ #ifdef HP100_DEBUG - printk("hp100: %s: start_xmit_bm: No TX PDL available.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: start_xmit_bm: No TX PDL available.\n", dev->name); #endif /* not waited long enough since last tx? */ - if (jiffies - dev->trans_start < HZ) + if (time_before(jiffies, dev->trans_start + HZ)) return -EAGAIN; if (hp100_check_lan(dev)) @@ -1507,7 +1508,7 @@ static int hp100_start_xmit_bm(struct sk if (lp->lan_type == HP100_LAN_100 && lp->hub_status < 0) { /* we have a 100Mb/s adapter but it isn't connected to hub */ - printk("hp100: %s: login to 100Mb/s hub retry\n", dev->name); + printk(KERN_INFO "hp100: %s: login to 100Mb/s hub retry\n", dev->name); hp100_stop_interface(dev); lp->hub_status = hp100_login_to_vg_hub(dev, 0); hp100_start_interface(dev); @@ -1518,17 +1519,17 @@ static int hp100_start_xmit_bm(struct sk hp100_ints_on(); spin_unlock_irqrestore(&lp->lock, flags); if (i == HP100_LAN_ERR) - printk("hp100: %s: link down detected\n", dev->name); + printk(KERN_INFO "hp100: %s: link down detected\n", dev->name); else if (lp->lan_type != i) { /* cable change! */ /* it's very hard - all network settings must be changed!!! */ - printk("hp100: %s: cable change 10Mb/s <-> 100Mb/s detected\n", dev->name); + printk(KERN_INFO "hp100: %s: cable change 10Mb/s <-> 100Mb/s detected\n", dev->name); lp->lan_type = i; hp100_stop_interface(dev); if (lp->lan_type == HP100_LAN_100) lp->hub_status = hp100_login_to_vg_hub(dev, 0); hp100_start_interface(dev); } else { - printk("hp100: %s: interface reset\n", dev->name); + printk(KERN_INFO "hp100: %s: interface reset\n", dev->name); hp100_stop_interface(dev); if (lp->lan_type == HP100_LAN_100) lp->hub_status = hp100_login_to_vg_hub(dev, 0); @@ -1595,7 +1596,7 @@ static void hp100_clean_txring(struct ne #ifdef HP100_DEBUG_B hp100_outw(0x4211, TRACE); - printk("hp100: %s: clean txring\n", dev->name); + printk(KERN_DEBUG "hp100: %s: clean txring\n", dev->name); #endif /* How many PDLs have been transmitted? */ @@ -1603,12 +1604,12 @@ static void hp100_clean_txring(struct ne #ifdef HP100_DEBUG if (donecount > MAX_TX_PDL) - printk("hp100: %s: Warning: More PDLs transmitted than commited to card???\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Warning: More PDLs transmitted than commited to card???\n", dev->name); #endif for (; 0 != donecount; donecount--) { #ifdef HP100_DEBUG_BM - printk("hp100: %s: Free skb: data @0x%.8x txrcommit=0x%x TXPDL=0x%x, done=0x%x\n", + printk(KERN_DEBUG "hp100: %s: Free skb: data @0x%.8x txrcommit=0x%x TXPDL=0x%x, done=0x%x\n", dev->name, (u_int) lp->txrhead->skb->data, lp->txrcommit, hp100_inb(TX_PDL), donecount); #endif @@ -1632,7 +1633,7 @@ static int hp100_start_xmit(struct sk_bu #ifdef HP100_DEBUG_B hp100_outw(0x4212, TRACE); - printk("hp100: %s: start_xmit\n", dev->name); + printk(KERN_DEBUG "hp100: %s: start_xmit\n", dev->name); #endif if (skb == NULL) { @@ -1649,19 +1650,19 @@ static int hp100_start_xmit(struct sk_bu i = hp100_inl(TX_MEM_FREE) & 0x7fffffff; if (!(((i / 2) - 539) > (skb->len + 16) && (hp100_inb(TX_PKT_CNT) < 255))) { #ifdef HP100_DEBUG - printk("hp100: %s: start_xmit: tx free mem = 0x%x\n", dev->name, i); + printk(KERN_DEBUG "hp100: %s: start_xmit: tx free mem = 0x%x\n", dev->name, i); #endif /* not waited long enough since last failed tx try? */ - if (jiffies - dev->trans_start < HZ) { + if (time_before(jiffies, dev->trans_start + HZ)) { #ifdef HP100_DEBUG - printk("hp100: %s: trans_start timing problem\n", + printk(KERN_DEBUG "hp100: %s: trans_start timing problem\n", dev->name); #endif return -EAGAIN; } if (lp->lan_type == HP100_LAN_100 && lp->hub_status < 0) { /* we have a 100Mb/s adapter but it isn't connected to hub */ - printk("hp100: %s: login to 100Mb/s hub retry\n", dev->name); + printk(KERN_DEBUG "hp100: %s: login to 100Mb/s hub retry\n", dev->name); hp100_stop_interface(dev); lp->hub_status = hp100_login_to_vg_hub(dev, 0); hp100_start_interface(dev); @@ -1672,17 +1673,17 @@ static int hp100_start_xmit(struct sk_bu hp100_ints_on(); spin_unlock_irqrestore(&lp->lock, flags); if (i == HP100_LAN_ERR) - printk("hp100: %s: link down detected\n", dev->name); + printk(KERN_DEBUG "hp100: %s: link down detected\n", dev->name); else if (lp->lan_type != i) { /* cable change! */ /* it's very hard - all network setting must be changed!!! */ - printk("hp100: %s: cable change 10Mb/s <-> 100Mb/s detected\n", dev->name); + printk(KERN_INFO "hp100: %s: cable change 10Mb/s <-> 100Mb/s detected\n", dev->name); lp->lan_type = i; hp100_stop_interface(dev); if (lp->lan_type == HP100_LAN_100) lp->hub_status = hp100_login_to_vg_hub(dev, 0); hp100_start_interface(dev); } else { - printk("hp100: %s: interface reset\n", dev->name); + printk(KERN_INFO "hp100: %s: interface reset\n", dev->name); hp100_stop_interface(dev); if (lp->lan_type == HP100_LAN_100) lp->hub_status = hp100_login_to_vg_hub(dev, 0); @@ -1696,7 +1697,7 @@ static int hp100_start_xmit(struct sk_bu for (i = 0; i < 6000 && (hp100_inb(OPTION_MSW) & HP100_TX_CMD); i++) { #ifdef HP100_DEBUG_TX - printk("hp100: %s: start_xmit: busy\n", dev->name); + printk(KERN_DEBUG "hp100: %s: start_xmit: busy\n", dev->name); #endif } @@ -1707,7 +1708,7 @@ static int hp100_start_xmit(struct sk_bu * when the current packet being transmitted on the wire is completed. */ hp100_outw(HP100_TX_COMPLETE, IRQ_STATUS); #ifdef HP100_DEBUG_TX - printk("hp100: %s: start_xmit: irq_status=0x%.4x, irqmask=0x%.4x, len=%d\n", + printk(KERN_DEBUG "hp100: %s: start_xmit: irq_status=0x%.4x, irqmask=0x%.4x, len=%d\n", dev->name, val, hp100_inw(IRQ_MASK), (int) skb->len); #endif @@ -1748,7 +1749,7 @@ static int hp100_start_xmit(struct sk_bu dev_kfree_skb_any(skb); #ifdef HP100_DEBUG_TX - printk("hp100: %s: start_xmit: end\n", dev->name); + printk(KERN_DEBUG "hp100: %s: start_xmit: end\n", dev->name); #endif return 0; @@ -1774,7 +1775,7 @@ static void hp100_rx(struct net_device * #ifdef DEBUG_B hp100_outw(0x4213, TRACE); - printk("hp100: %s: rx\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rx\n", dev->name); #endif /* First get indication of received lan packet */ @@ -1783,7 +1784,7 @@ static void hp100_rx(struct net_device * packets = hp100_inb(RX_PKT_CNT); #ifdef HP100_DEBUG_RX if (packets > 1) - printk("hp100: %s: rx: waiting packets = %d\n", dev->name, packets); + printk(KERN_DEBUG "hp100: %s: rx: waiting packets = %d\n", dev->name, packets); #endif while (packets-- > 0) { @@ -1791,7 +1792,7 @@ static void hp100_rx(struct net_device * /* really advanced to the next packet. */ for (pkt_len = 0; pkt_len < 6000 && (hp100_inb(OPTION_MSW) & HP100_ADV_NXT_PKT); pkt_len++) { #ifdef HP100_DEBUG_RX - printk ("hp100: %s: rx: busy, remaining packets = %d\n", dev->name, packets); + printk (KERN_DEBUG "hp100: %s: rx: busy, remaining packets = %d\n", dev->name, packets); #endif } @@ -1808,7 +1809,7 @@ static void hp100_rx(struct net_device * pkt_len = ((header & HP100_PKT_LEN_MASK) + 3) & ~3; #ifdef HP100_DEBUG_RX - printk("hp100: %s: rx: new packet - length=%d, errors=0x%x, dest=0x%x\n", + printk(KERN_DEBUG "hp100: %s: rx: new packet - length=%d, errors=0x%x, dest=0x%x\n", dev->name, header & HP100_PKT_LEN_MASK, (header >> 16) & 0xfff8, (header >> 16) & 7); #endif @@ -1817,7 +1818,7 @@ static void hp100_rx(struct net_device * skb = dev_alloc_skb(pkt_len+2); if (skb == NULL) { /* Not enough memory->drop packet */ #ifdef HP100_DEBUG - printk("hp100: %s: rx: couldn't allocate a sk_buff of size %d\n", + printk(KERN_DEBUG "hp100: %s: rx: couldn't allocate a sk_buff of size %d\n", dev->name, pkt_len); #endif lp->stats.rx_dropped++; @@ -1845,7 +1846,7 @@ static void hp100_rx(struct net_device * skb->protocol = eth_type_trans(skb, dev); #ifdef HP100_DEBUG_RX - printk("hp100: %s: rx: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", + printk(KERN_DEBUG "hp100: %s: rx: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", dev->name, ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5], ptr[6], ptr[7], ptr[8], ptr[9], ptr[10], ptr[11]); @@ -1867,7 +1868,7 @@ static void hp100_rx(struct net_device * } } /* end of while(there are packets) loop */ #ifdef HP100_DEBUG_RX - printk("hp100_rx: %s: end\n", dev->name); + printk(KERN_DEBUG "hp100_rx: %s: end\n", dev->name); #endif } @@ -1884,18 +1885,18 @@ static void hp100_rx_bm(struct net_devic #ifdef HP100_DEBUG_B hp100_outw(0x4214, TRACE); - printk("hp100: %s: rx_bm\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rx_bm\n", dev->name); #endif #ifdef HP100_DEBUG if (0 == lp->rxrcommit) { - printk("hp100: %s: rx_bm called although no PDLs were committed to adapter?\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rx_bm called although no PDLs were committed to adapter?\n", dev->name); return; } else /* RX_PKT_CNT states how many PDLs are currently formatted and available to * the cards BM engine */ if ((hp100_inw(RX_PKT_CNT) & 0x00ff) >= lp->rxrcommit) { - printk("hp100: %s: More packets received than commited? RX_PKT_CNT=0x%x, commit=0x%x\n", + printk(KERN_DEBUG "hp100: %s: More packets received than commited? RX_PKT_CNT=0x%x, commit=0x%x\n", dev->name, hp100_inw(RX_PKT_CNT) & 0x00ff, lp->rxrcommit); return; @@ -1920,10 +1921,10 @@ static void hp100_rx_bm(struct net_devic pci_unmap_single(lp->pci_dev, (dma_addr_t) ptr->pdl[3], MAX_ETHER_SIZE, PCI_DMA_FROMDEVICE); #ifdef HP100_DEBUG_BM - printk("hp100: %s: rx_bm: header@0x%x=0x%x length=%d, errors=0x%x, dest=0x%x\n", + printk(KERN_DEBUG "hp100: %s: rx_bm: header@0x%x=0x%x length=%d, errors=0x%x, dest=0x%x\n", dev->name, (u_int) (ptr->pdl - 1), (u_int) header, pkt_len, (header >> 16) & 0xfff8, (header >> 16) & 7); - printk("hp100: %s: RX_PDL_COUNT:0x%x TX_PDL_COUNT:0x%x, RX_PKT_CNT=0x%x PDH=0x%x, Data@0x%x len=0x%x\n", + printk(KERN_DEBUG "hp100: %s: RX_PDL_COUNT:0x%x TX_PDL_COUNT:0x%x, RX_PKT_CNT=0x%x PDH=0x%x, Data@0x%x len=0x%x\n", dev->name, hp100_inb(RX_PDL), hp100_inb(TX_PDL), hp100_inb(RX_PKT_CNT), (u_int) * (ptr->pdl), (u_int) * (ptr->pdl + 3), (u_int) * (ptr->pdl + 4)); @@ -1932,7 +1933,7 @@ static void hp100_rx_bm(struct net_devic if ((pkt_len >= MIN_ETHER_SIZE) && (pkt_len <= MAX_ETHER_SIZE)) { if (ptr->skb == NULL) { - printk("hp100: %s: rx_bm: skb null\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rx_bm: skb null\n", dev->name); /* can happen if we only allocated room for the pdh due to memory shortage. */ lp->stats.rx_dropped++; } else { @@ -1955,7 +1956,7 @@ static void hp100_rx_bm(struct net_devic } } else { #ifdef HP100_DEBUG - printk("hp100: %s: rx_bm: Received bad packet (length=%d)\n", dev->name, pkt_len); + printk(KERN_DEBUG "hp100: %s: rx_bm: Received bad packet (length=%d)\n", dev->name, pkt_len); #endif if (ptr->skb != NULL) dev_kfree_skb_any(ptr->skb); @@ -1968,7 +1969,7 @@ static void hp100_rx_bm(struct net_devic if (0 == hp100_build_rx_pdl(lp->rxrtail, dev)) { /* No space for skb, header can still be received. */ #ifdef HP100_DEBUG - printk("hp100: %s: rx_bm: No space for new PDL.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rx_bm: No space for new PDL.\n", dev->name); #endif return; } else { /* successfully allocated new PDL - put it in ringlist at tail. */ @@ -2008,7 +2009,7 @@ static void hp100_update_stats(struct ne #ifdef HP100_DEBUG_B hp100_outw(0x4216, TRACE); - printk("hp100: %s: update-stats\n", dev->name); + printk(KERN_DEBUG "hp100: %s: update-stats\n", dev->name); #endif /* Note: Statistics counters clear when read. */ @@ -2035,7 +2036,7 @@ static void hp100_misc_interrupt(struct #ifdef HP100_DEBUG_B int ioaddr = dev->base_addr; hp100_outw(0x4216, TRACE); - printk("hp100: %s: misc_interrupt\n", dev->name); + printk(KERN_DEBUG "hp100: %s: misc_interrupt\n", dev->name); #endif /* Note: Statistics counters clear when read. */ @@ -2049,7 +2050,7 @@ static void hp100_clear_stats(struct hp1 #ifdef HP100_DEBUG_B hp100_outw(0x4217, TRACE); - printk("hp100: %s: clear_stats\n", dev->name); + printk(KERN_DEBUG "hp100: %s: clear_stats\n", dev->name); #endif spin_lock_irqsave(&lp->lock, flags); @@ -2078,7 +2079,7 @@ static void hp100_set_multicast_list(str #ifdef HP100_DEBUG_B hp100_outw(0x4218, TRACE); - printk("hp100: %s: set_mc_list\n", dev->name); + printk(KERN_DEBUG "hp100: %s: set_mc_list\n", dev->name); #endif spin_lock_irqsave(&lp->lock, flags); @@ -2104,13 +2105,13 @@ static void hp100_set_multicast_list(str memset(&lp->hash_bytes, 0x00, 8); #ifdef HP100_DEBUG - printk("hp100: %s: computing hash filter - mc_count = %i\n", dev->name, dev->mc_count); + printk(KERN_DEBUG "hp100: %s: computing hash filter - mc_count = %i\n", dev->name, dev->mc_count); #endif for (i = 0, dmi = dev->mc_list; i < dev->mc_count; i++, dmi = dmi->next) { addrs = dmi->dmi_addr; if ((*addrs & 0x01) == 0x01) { /* multicast address? */ #ifdef HP100_DEBUG - printk("hp100: %s: multicast = %02x:%02x:%02x:%02x:%02x:%02x, ", + printk(KERN_DEBUG "hp100: %s: multicast = %02x:%02x:%02x:%02x:%02x:%02x, ", dev->name, addrs[0], addrs[1], addrs[2], addrs[3], addrs[4], addrs[5]); #endif @@ -2119,7 +2120,7 @@ static void hp100_set_multicast_list(str printk(":%02x:", idx); } #ifdef HP100_DEBUG - printk("idx = %i\n", idx); + printk(KERN_DEBUG "idx = %i\n", idx); #endif lp->hash_bytes[idx >> 3] |= (1 << (idx & 7)); } @@ -2146,7 +2147,7 @@ static void hp100_set_multicast_list(str for (i = 0; i < 8; i++) hp100_outb(lp->hash_bytes[i], HASH_BYTE0 + i); #ifdef HP100_DEBUG - printk("hp100: %s: mac1 = 0x%x, mac2 = 0x%x, multicast hash = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n", + printk(KERN_DEBUG "hp100: %s: mac1 = 0x%x, mac2 = 0x%x, multicast hash = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, lp->mac1_mode, lp->mac2_mode, lp->hash_bytes[0], lp->hash_bytes[1], lp->hash_bytes[2], lp->hash_bytes[3], @@ -2156,7 +2157,7 @@ static void hp100_set_multicast_list(str if (lp->lan_type == HP100_LAN_100) { #ifdef HP100_DEBUG - printk("hp100: %s: 100VG MAC settings have changed - relogin.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: 100VG MAC settings have changed - relogin.\n", dev->name); #endif lp->hub_status = hp100_login_to_vg_hub(dev, 1); /* force a relogin to the hub */ } @@ -2171,7 +2172,7 @@ static void hp100_set_multicast_list(str for (i = 0; i < 8; i++) hp100_outb(lp->hash_bytes[i], HASH_BYTE0 + i); #ifdef HP100_DEBUG - printk("hp100: %s: multicast hash = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n", + printk(KERN_DEBUG "hp100: %s: multicast hash = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, lp->hash_bytes[0], lp->hash_bytes[1], lp->hash_bytes[2], lp->hash_bytes[3], lp->hash_bytes[4], @@ -2181,7 +2182,7 @@ static void hp100_set_multicast_list(str if (lp->lan_type == HP100_LAN_100) { #ifdef HP100_DEBUG - printk("hp100: %s: 100VG MAC settings have changed - relogin.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: 100VG MAC settings have changed - relogin.\n", dev->name); #endif lp->hub_status = hp100_login_to_vg_hub(dev, 1); /* force a relogin to the hub */ } @@ -2224,7 +2225,7 @@ static irqreturn_t hp100_interrupt(int i /* hp100_page( PERFORMANCE ); */ val = hp100_inw(IRQ_STATUS); #ifdef HP100_DEBUG_IRQ - printk("hp100: %s: mode=%x,IRQ_STAT=0x%.4x,RXPKTCNT=0x%.2x RXPDL=0x%.2x TXPKTCNT=0x%.2x TXPDL=0x%.2x\n", + printk(KERN_DEBUG "hp100: %s: mode=%x,IRQ_STAT=0x%.4x,RXPKTCNT=0x%.2x RXPDL=0x%.2x TXPKTCNT=0x%.2x TXPDL=0x%.2x\n", dev->name, lp->mode, (u_int) val, hp100_inb(RX_PKT_CNT), hp100_inb(RX_PDL), hp100_inb(TX_PKT_CNT), hp100_inb(TX_PDL)); #endif @@ -2246,7 +2247,7 @@ static irqreturn_t hp100_interrupt(int i if (lp->mode == 1) hp100_rx_bm(dev); else { - printk("hp100: %s: rx_pdl_fill_compl interrupt although not busmaster?\n", dev->name); + printk(KERN_INFO "hp100: %s: rx_pdl_fill_compl interrupt although not busmaster?\n", dev->name); } } @@ -2283,7 +2284,7 @@ static irqreturn_t hp100_interrupt(int i */ if (val & (HP100_TX_ERROR | HP100_RX_ERROR)) { #ifdef HP100_DEBUG_IRQ - printk("hp100: %s: TX/RX Error IRQ\n", dev->name); + printk(KERN_DEBUG "hp100: %s: TX/RX Error IRQ\n", dev->name); #endif hp100_update_stats(dev); if (lp->mode == 1) { @@ -2312,7 +2313,7 @@ static irqreturn_t hp100_interrupt(int i if (val & HP100_MISC_ERROR) { /* New for J2585B */ #ifdef HP100_DEBUG_IRQ printk - ("hp100: %s: Misc. Error Interrupt - Check cabling.\n", + (KERN_DEBUG "hp100: %s: Misc. Error Interrupt - Check cabling.\n", dev->name); #endif if (lp->mode == 1) { @@ -2339,7 +2340,7 @@ static void hp100_start_interface(struct #ifdef HP100_DEBUG_B hp100_outw(0x4220, TRACE); - printk("hp100: %s: hp100_start_interface\n", dev->name); + printk(KERN_DEBUG "hp100: %s: hp100_start_interface\n", dev->name); #endif spin_lock_irqsave(&lp->lock, flags); @@ -2399,7 +2400,7 @@ static void hp100_stop_interface(struct u_int val; #ifdef HP100_DEBUG_B - printk("hp100: %s: hp100_stop_interface\n", dev->name); + printk(KERN_DEBUG "hp100: %s: hp100_stop_interface\n", dev->name); hp100_outw(0x4221, TRACE); #endif @@ -2423,7 +2424,7 @@ static void hp100_stop_interface(struct hp100_page(PERFORMANCE); return; } - printk("hp100: %s: hp100_stop_interface - timeout\n", dev->name); + printk(KERN_INFO "hp100: %s: hp100_stop_interface - timeout\n", dev->name); hp100_page(PERFORMANCE); } } @@ -2443,7 +2444,7 @@ static void hp100_load_eeprom(struct net for (i = 0; i < 10000; i++) if (!(hp100_inb(OPTION_MSW) & HP100_EE_LOAD)) return; - printk("hp100: %s: hp100_load_eeprom - timeout\n", dev->name); + printk(KERN_INFO "hp100: %s: hp100_load_eeprom - timeout\n", dev->name); } /* Sense connection status. @@ -2466,7 +2467,7 @@ static int hp100_sense_lan(struct net_de val_VG = hp100_inb(VG_LAN_CFG_1); hp100_page(PERFORMANCE); #ifdef HP100_DEBUG - printk("hp100: %s: sense_lan: val_VG = 0x%04x, val_10 = 0x%04x\n", + printk(KERN_DEBUG "hp100: %s: sense_lan: val_VG = 0x%04x, val_10 = 0x%04x\n", dev->name, val_VG, val_10); #endif @@ -2508,7 +2509,7 @@ static int hp100_down_vg_link(struct net #ifdef HP100_DEBUG_B hp100_outw(0x4224, TRACE); - printk("hp100: %s: down_vg_link\n", dev->name); + printk(KERN_DEBUG "hp100: %s: down_vg_link\n", dev->name); #endif hp100_page(MAC_CTRL); @@ -2539,7 +2540,7 @@ static int hp100_down_vg_link(struct net #ifdef HP100_DEBUG if (time_after_eq(jiffies, time)) - printk("hp100: %s: down_vg_link: Link does not go down?\n", dev->name); + printk(KERN_DEBUG "hp100: %s: down_vg_link: Link does not go down?\n", dev->name); #endif /* To prevent condition where Rev 1 VG MAC and old hubs do not complete */ @@ -2590,7 +2591,7 @@ static int hp100_down_vg_link(struct net if (time_before_eq(time, jiffies)) { #ifdef HP100_DEBUG - printk("hp100: %s: down_vg_link: timeout\n", dev->name); + printk(KERN_DEBUG "hp100: %s: down_vg_link: timeout\n", dev->name); #endif return -EIO; } @@ -2614,7 +2615,7 @@ static int hp100_login_to_vg_hub(struct #ifdef HP100_DEBUG_B hp100_outw(0x4225, TRACE); - printk("hp100: %s: login_to_vg_hub\n", dev->name); + printk(KERN_DEBUG "hp100: %s: login_to_vg_hub\n", dev->name); #endif /* Initiate a login sequence iff VG MAC is enabled and either Load Address @@ -2625,7 +2626,7 @@ static int hp100_login_to_vg_hub(struct startst = hp100_inb(VG_LAN_CFG_1); if ((force_relogin == 1) || (hp100_inb(MAC_CFG_4) & HP100_MAC_SEL_ST)) { #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: Start training\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Start training\n", dev->name); #endif /* Ensure VG Reset bit is 1 (i.e., do not reset) */ @@ -2640,7 +2641,7 @@ static int hp100_login_to_vg_hub(struct hp100_andb(~(HP100_LINK_CMD /* |HP100_LOAD_ADDR */ ), VG_LAN_CFG_1); #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: Bring down the link\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Bring down the link\n", dev->name); #endif /* Wait for link to drop */ @@ -2690,12 +2691,12 @@ static int hp100_login_to_vg_hub(struct if (time_after_eq(jiffies, time)) { #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: Link cable status not ok? Training aborted.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Link cable status not ok? Training aborted.\n", dev->name); #endif } else { #ifdef HP100_DEBUG_TRAINING printk - ("hp100: %s: HUB tones detected. Trying to train.\n", + (KERN_DEBUG "hp100: %s: HUB tones detected. Trying to train.\n", dev->name); #endif @@ -2704,7 +2705,7 @@ static int hp100_login_to_vg_hub(struct val = hp100_inb(VG_LAN_CFG_1); if ((val & (HP100_LINK_UP_ST))) { #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: Passed training.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Passed training.\n", dev->name); #endif break; } @@ -2716,30 +2717,30 @@ static int hp100_login_to_vg_hub(struct /* If LINK_UP_ST is set, then we are logged into the hub. */ if (time_before_eq(jiffies, time) && (val & HP100_LINK_UP_ST)) { #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: Successfully logged into the HUB.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Successfully logged into the HUB.\n", dev->name); if (lp->chip == HP100_CHIPID_LASSEN) { val = hp100_inw(TRAIN_ALLOW); - printk("hp100: %s: Card supports 100VG MAC Version \"%s\" ", + printk(KERN_DEBUG "hp100: %s: Card supports 100VG MAC Version \"%s\" ", dev->name, (hp100_inw(TRAIN_REQUEST) & HP100_CARD_MACVER) ? "802.12" : "Pre"); printk("Driver will use MAC Version \"%s\"\n", (val & HP100_HUB_MACVER) ? "802.12" : "Pre"); - printk("hp100: %s: Frame format is %s.\n", dev->name, (val & HP100_MALLOW_FRAMEFMT) ? "802.5" : "802.3"); + printk(KERN_DEBUG "hp100: %s: Frame format is %s.\n", dev->name, (val & HP100_MALLOW_FRAMEFMT) ? "802.5" : "802.3"); } #endif } else { /* If LINK_UP_ST is not set, login was not successful */ - printk("hp100: %s: Problem logging into the HUB.\n", dev->name); + printk(KERN_INFO "hp100: %s: Problem logging into the HUB.\n", dev->name); if (lp->chip == HP100_CHIPID_LASSEN) { /* Check allowed Register to find out why there is a problem. */ val = hp100_inw(TRAIN_ALLOW); /* won't work on non-ETR card */ #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: MAC Configuration requested: 0x%04x, HUB allowed: 0x%04x\n", dev->name, hp100_inw(TRAIN_REQUEST), val); + printk(KERN_DEBUG "hp100: %s: MAC Configuration requested: 0x%04x, HUB allowed: 0x%04x\n", dev->name, hp100_inw(TRAIN_REQUEST), val); #endif if (val & HP100_MALLOW_ACCDENIED) - printk("hp100: %s: HUB access denied.\n", dev->name); + printk(KERN_INFO "hp100: %s: HUB access denied.\n", dev->name); if (val & HP100_MALLOW_CONFIGURE) - printk("hp100: %s: MAC Configuration is incompatible with the Network.\n", dev->name); + printk(KERN_INFO "hp100: %s: MAC Configuration is incompatible with the Network.\n", dev->name); if (val & HP100_MALLOW_DUPADDR) - printk("hp100: %s: Duplicate MAC Address on the Network.\n", dev->name); + printk(KERN_INFO "hp100: %s: Duplicate MAC Address on the Network.\n", dev->name); } } @@ -2760,7 +2761,7 @@ static int hp100_login_to_vg_hub(struct if (val & HP100_LINK_UP_ST) return (0); /* login was ok */ else { - printk("hp100: %s: Training failed.\n", dev->name); + printk(KERN_INFO "hp100: %s: Training failed.\n", dev->name); hp100_down_vg_link(dev); return -EIO; } @@ -2776,7 +2777,7 @@ static void hp100_cascade_reset(struct n #ifdef HP100_DEBUG_B hp100_outw(0x4226, TRACE); - printk("hp100: %s: cascade_reset\n", dev->name); + printk(KERN_DEBUG "hp100: %s: cascade_reset\n", dev->name); #endif if (enable) { @@ -2808,21 +2809,21 @@ void hp100_RegisterDump(struct net_devic int Register; /* Dump common registers */ - printk("hp100: %s: Cascade Register Dump\n", dev->name); - printk("hardware id #1: 0x%.2x\n", hp100_inb(HW_ID)); - printk("hardware id #2/paging: 0x%.2x\n", hp100_inb(PAGING)); - printk("option #1: 0x%.4x\n", hp100_inw(OPTION_LSW)); - printk("option #2: 0x%.4x\n", hp100_inw(OPTION_MSW)); + printk(KERN_INFO "hp100: %s: Cascade Register Dump\n", dev->name); + printk(KERN_INFO "hardware id #1: 0x%.2x\n", hp100_inb(HW_ID)); + printk(KERN_INFO "hardware id #2/paging: 0x%.2x\n", hp100_inb(PAGING)); + printk(KERN_INFO "option #1: 0x%.4x\n", hp100_inw(OPTION_LSW)); + printk(KERN_INFO "option #2: 0x%.4x\n", hp100_inw(OPTION_MSW)); /* Dump paged registers */ for (Page = 0; Page < 8; Page++) { /* Dump registers */ - printk("page: 0x%.2x\n", Page); + printk(KERN_INFO "page: 0x%.2x\n", Page); outw(Page, ioaddr + 0x02); for (Register = 0x8; Register < 0x22; Register += 2) { /* Display Register contents except data port */ if (((Register != 0x10) && (Register != 0x12)) || (Page > 0)) { - printk("0x%.2x = 0x%.4x\n", Register, inw(ioaddr + Register)); + printk(KERN_INFO "0x%.2x = 0x%.4x\n", Register, inw(ioaddr + Register)); } } } @@ -2866,7 +2867,7 @@ static int __init hp100_eisa_probe (stru goto out1; #ifdef HP100_DEBUG - printk("hp100: %s: EISA adapter found at 0x%x\n", dev->name, + printk(KERN_DEBUG "hp100: %s: EISA adapter found at 0x%x\n", dev->name, dev->base_addr); #endif gendev->driver_data = dev; @@ -2917,7 +2918,7 @@ static int __devinit hp100_pci_probe (st pci_read_config_word(pdev, PCI_COMMAND, &pci_command); if (!(pci_command & PCI_COMMAND_IO)) { #ifdef HP100_DEBUG - printk("hp100: %s: PCI I/O Bit has not been set. Setting...\n", dev->name); + printk(KERN_DEBUG "hp100: %s: PCI I/O Bit has not been set. Setting...\n", dev->name); #endif pci_command |= PCI_COMMAND_IO; pci_write_config_word(pdev, PCI_COMMAND, pci_command); @@ -2925,7 +2926,7 @@ static int __devinit hp100_pci_probe (st if (!(pci_command & PCI_COMMAND_MASTER)) { #ifdef HP100_DEBUG - printk("hp100: %s: PCI Master Bit has not been set. Setting...\n", dev->name); + printk(KERN_DEBUG "hp100: %s: PCI Master Bit has not been set. Setting...\n", dev->name); #endif pci_command |= PCI_COMMAND_MASTER; pci_write_config_word(pdev, PCI_COMMAND, pci_command); @@ -2937,7 +2938,7 @@ static int __devinit hp100_pci_probe (st goto out1; #ifdef HP100_DEBUG - printk("hp100: %s: PCI adapter found at 0x%x\n", dev->name, ioaddr); + printk(KERN_DEBUG "hp100: %s: PCI adapter found at 0x%x\n", dev->name, ioaddr); #endif pci_set_drvdata(pdev, dev); return 0; @@ -3048,7 +3049,7 @@ static int __init hp100_module_init(void goto out2; #endif #ifdef CONFIG_PCI - err = pci_module_init(&hp100_pci_driver); + err = pci_register_driver(&hp100_pci_driver); if (err && err != -ENODEV) goto out3; #endif --- a/drivers/net/ioc3-eth.c +++ b/drivers/net/ioc3-eth.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -1195,17 +1196,17 @@ static int ioc3_probe(struct pci_dev *pd int err, pci_using_dac; /* Configure DMA attributes. */ - err = pci_set_dma_mask(pdev, 0xffffffffffffffffULL); + err = pci_set_dma_mask(pdev, DMA_64BIT_MASK); if (!err) { pci_using_dac = 1; - err = pci_set_consistent_dma_mask(pdev, 0xffffffffffffffffULL); + err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); if (err < 0) { printk(KERN_ERR "%s: Unable to obtain 64 bit DMA " "for consistent allocations\n", pci_name(pdev)); goto out; } } else { - err = pci_set_dma_mask(pdev, 0xffffffffULL); + err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); if (err) { printk(KERN_ERR "%s: No usable DMA configuration, " "aborting.\n", pci_name(pdev)); --- a/drivers/net/irda/donauboe.c +++ b/drivers/net/irda/donauboe.c @@ -1778,7 +1778,7 @@ static struct pci_driver donauboe_pci_dr static int __init donauboe_init (void) { - return pci_module_init(&donauboe_pci_driver); + return pci_register_driver(&donauboe_pci_driver); } static void __exit --- a/drivers/net/irda/ep7211_ir.c +++ b/drivers/net/irda/ep7211_ir.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -23,6 +24,7 @@ static void ep7211_ir_close(dongle_t *se static int ep7211_ir_change_speed(struct irda_task *task); static int ep7211_ir_reset(struct irda_task *task); +static spinlock_t driver_lock; static struct dongle_reg dongle = { .type = IRDA_EP7211_IR, .open = ep7211_ir_open, @@ -36,7 +38,7 @@ static void ep7211_ir_open(dongle_t *sel { unsigned int syscon1, flags; - save_flags(flags); cli(); + spin_lock_irqsave(&driver_lock, flags); /* Turn on the SIR encoder. */ syscon1 = clps_readl(SYSCON1); @@ -46,14 +48,14 @@ static void ep7211_ir_open(dongle_t *sel /* XXX: We should disable modem status interrupts on the first UART (interrupt #14). */ - restore_flags(flags); + spin_unlock_irqrestore(&driver_lock, flags); } static void ep7211_ir_close(dongle_t *self) { unsigned int syscon1, flags; - save_flags(flags); cli(); + spin_lock_irqsave(&driver_lock, flags); /* Turn off the SIR encoder. */ syscon1 = clps_readl(SYSCON1); @@ -63,7 +65,7 @@ static void ep7211_ir_close(dongle_t *se /* XXX: If we've disabled the modem status interrupts, we should reset them back to their original state. */ - restore_flags(flags); + spin_unlock_irqrestore(&driver_lock, flags); } /* @@ -99,6 +101,7 @@ static int ep7211_ir_reset(struct irda_t */ static int __init ep7211_ir_init(void) { + spin_lock_init(&driver_lock); return irda_device_register_dongle(&dongle); } --- a/drivers/net/irda/ma600.c +++ b/drivers/net/irda/ma600.c @@ -54,10 +54,6 @@ func} #endif -/* convert hex value to ascii hex */ -static const char hexTbl[] = "0123456789ABCDEF"; - - static void ma600_open(dongle_t *self, struct qos_info *qos); static void ma600_close(dongle_t *self); static int ma600_change_speed(struct irda_task *task); @@ -243,10 +239,10 @@ static int ma600_change_speed(struct ird /* if control byte != echo, I don't know what to do */ printk(KERN_WARNING "%s() control byte written != read!\n", __FUNCTION__); printk(KERN_WARNING "control byte = 0x%c%c\n", - hexTbl[(byte>>4)&0x0f], hexTbl[byte&0x0f]); + large_digits[(byte>>4)&0x0f], large_digits[byte&0x0f]); printk(KERN_WARNING "byte echo = 0x%c%c\n", - hexTbl[(byte_echo>>4) & 0x0f], - hexTbl[byte_echo & 0x0f]); + large_digits[(byte_echo>>4) & 0x0f], + large_digits[byte_echo & 0x0f]); #ifndef NDEBUG } else { IRDA_DEBUG(2, "%s() control byte write read OK\n", __FUNCTION__); --- a/drivers/net/irda/sir_kthread.c +++ b/drivers/net/irda/sir_kthread.c @@ -140,9 +140,6 @@ static int irda_thread(void *startup) run_irda_queue(); } -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,35) - reparent_to_init(); -#endif complete_and_exit(&irda_rq_queue.exit, 0); /* never reached */ return 0; --- a/drivers/net/irda/vlsi_ir.c +++ b/drivers/net/irda/vlsi_ir.c @@ -1887,7 +1887,7 @@ static int __init vlsi_mod_init(void) vlsi_proc_root->owner = THIS_MODULE; } - ret = pci_module_init(&vlsi_irda_driver); + ret = pci_register_driver(&vlsi_irda_driver); if (ret && vlsi_proc_root) remove_proc_entry(PROC_DIR, NULL); --- a/drivers/net/irda/vlsi_ir.h +++ b/drivers/net/irda/vlsi_ir.h @@ -41,39 +41,14 @@ #define PCI_CLASS_SUBCLASS_MASK 0xffff #endif -/* in recent 2.5 interrupt handlers have non-void return value */ -#ifndef IRQ_RETVAL -typedef void irqreturn_t; -#define IRQ_NONE -#define IRQ_HANDLED -#define IRQ_RETVAL(x) -#endif - /* some stuff need to check kernelversion. Not all 2.5 stuff was present * in early 2.5.x - the test is merely to separate 2.4 from 2.5 */ #include -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) - -/* PDE() introduced in 2.5.4 */ -#ifdef CONFIG_PROC_FS -#define PDE(inode) ((inode)->u.generic_ip) -#endif - -/* irda crc16 calculation exported in 2.5.42 */ -#define irda_calc_crc16(fcs,buf,len) (GOOD_FCS) - -/* we use this for unified pci device name access */ -#define PCIDEV_NAME(pdev) ((pdev)->name) - -#else /* 2.5 or later */ - /* whatever we get from the associated struct device - bus:slot:dev.fn id */ #define PCIDEV_NAME(pdev) (pci_name(pdev)) -#endif - /* ================================================================ */ /* non-standard PCI registers */ --- a/drivers/net/lasi_82596.c +++ b/drivers/net/lasi_82596.c @@ -177,7 +177,7 @@ static int i596_debug = (DEB_SERIOUS|DEB MODULE_AUTHOR("Richard Hirst"); MODULE_DESCRIPTION("i82596 driver"); MODULE_LICENSE("GPL"); -MODULE_PARM(i596_debug, "i"); +module_param(i596_debug, int, 0644); MODULE_PARM_DESC(i596_debug, "lasi_82596 debug mask"); /* Copy frames shorter than rx_copybreak, otherwise pass on up in @@ -1520,7 +1520,7 @@ static void set_multicast_list(struct ne } } -MODULE_PARM(debug, "i"); +module_param(debug, int, 0644); MODULE_PARM_DESC(debug, "lasi_82596 debug mask"); static int debug = -1; --- a/drivers/net/mac89x0.c +++ b/drivers/net/mac89x0.c @@ -629,7 +629,7 @@ static int set_mac_address(struct net_de static struct net_device *dev_cs89x0; static int debug; -MODULE_PARM(debug, "i"); +module_param(debug, int, 0644); MODULE_PARM_DESC(debug, "CS89[02]0 debug level (0-5)"); MODULE_LICENSE("GPL"); --- a/drivers/net/mace.c +++ b/drivers/net/mace.c @@ -1042,7 +1042,7 @@ static void __exit mace_cleanup(void) MODULE_AUTHOR("Paul Mackerras"); MODULE_DESCRIPTION("PowerMac MACE driver."); -MODULE_PARM(port_aaui, "i"); +module_param(port_aaui, int, 0); MODULE_PARM_DESC(port_aaui, "MACE uses AAUI port (0-1)"); MODULE_LICENSE("GPL"); --- a/drivers/net/meth.c +++ b/drivers/net/meth.c @@ -62,7 +62,7 @@ MODULE_DESCRIPTION("SGI O2 Builtin Fast #ifdef HAVE_TX_TIMEOUT static int timeout = TX_TIMEOUT; -MODULE_PARM(timeout, "i"); +module_param(timeout, int, 0); #endif /* --- a/drivers/net/natsemi.c +++ b/drivers/net/natsemi.c @@ -3260,7 +3260,7 @@ static int __init natsemi_init_mod (void printk(version); #endif - return pci_module_init (&natsemi_driver); + return pci_register_driver (&natsemi_driver); } static void __exit natsemi_exit_mod (void) --- a/drivers/net/ne-h8300.c +++ b/drivers/net/ne-h8300.c @@ -27,6 +27,7 @@ static const char version1[] = #include #include #include +#include #include #include @@ -365,7 +366,7 @@ static void ne_reset_8390(struct net_dev /* This check _should_not_ be necessary, omit eventually. */ while ((inb_p(NE_BASE+EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(KERN_WARNING "%s: ne_reset_8390() did not complete.\n", dev->name); break; } @@ -580,7 +581,7 @@ retry: #endif while ((inb_p(NE_BASE + EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk(KERN_WARNING "%s: timeout waiting for Tx RDC.\n", dev->name); ne_reset_8390(dev); NS8390_init(dev,1); @@ -600,9 +601,9 @@ static int io[MAX_NE_CARDS]; static int irq[MAX_NE_CARDS]; static int bad[MAX_NE_CARDS]; /* 0xbad = bad sig or no reset ack */ -MODULE_PARM(io, "1-" __MODULE_STRING(MAX_NE_CARDS) "i"); -MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_NE_CARDS) "i"); -MODULE_PARM(bad, "1-" __MODULE_STRING(MAX_NE_CARDS) "i"); +module_param_array(io, int, NULL, 0); +module_param_array(irq, int, NULL, 0); +module_param_array(bad, int, NULL, 0); MODULE_PARM_DESC(io, "I/O base address(es)"); MODULE_PARM_DESC(irq, "IRQ number(s)"); MODULE_DESCRIPTION("H8/300 NE2000 Ethernet driver"); --- a/drivers/net/ne.c +++ b/drivers/net/ne.c @@ -50,6 +50,7 @@ static const char version2[] = #include #include #include +#include #include #include @@ -341,7 +342,7 @@ static int __init ne_probe1(struct net_d outb(inb(ioaddr + NE_RESET), ioaddr + NE_RESET); while ((inb_p(ioaddr + EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { if (bad_card) { printk(" (warning: no reset ack)"); break; @@ -580,7 +581,7 @@ static void ne_reset_8390(struct net_dev /* This check _should_not_ be necessary, omit eventually. */ while ((inb_p(NE_BASE+EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(KERN_WARNING "%s: ne_reset_8390() did not complete.\n", dev->name); break; } @@ -787,7 +788,7 @@ retry: #endif while ((inb_p(nic_base + EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk(KERN_WARNING "%s: timeout waiting for Tx RDC.\n", dev->name); ne_reset_8390(dev); NS8390_init(dev,1); --- a/drivers/net/ne2.c +++ b/drivers/net/ne2.c @@ -75,6 +75,7 @@ static const char *version = "ne2.c:v0.9 #include #include #include +#include #include #include @@ -395,7 +396,7 @@ static int __init ne2_probe1(struct net_ outb(inb(base_addr + NE_RESET), base_addr + NE_RESET); while ((inb_p(base_addr + EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(" not found (no reset ack).\n"); retval = -ENODEV; goto out; @@ -548,7 +549,7 @@ static void ne_reset_8390(struct net_dev /* This check _should_not_ be necessary, omit eventually. */ while ((inb_p(NE_BASE+EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk("%s: ne_reset_8390() did not complete.\n", dev->name); break; @@ -749,7 +750,7 @@ retry: #endif while ((inb_p(nic_base + EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk("%s: timeout waiting for Tx RDC.\n", dev->name); ne_reset_8390(dev); NS8390_init(dev,1); --- a/drivers/net/ne2k-pci.c +++ b/drivers/net/ne2k-pci.c @@ -703,7 +703,7 @@ static int __init ne2k_pci_init(void) #ifdef MODULE printk(version); #endif - return pci_module_init (&ne2k_driver); + return pci_register_driver (&ne2k_driver); } --- a/drivers/net/ni5010.c +++ b/drivers/net/ni5010.c @@ -766,8 +766,8 @@ static void ni5010_show_registers(struct #ifdef MODULE static struct net_device *dev_ni5010; -MODULE_PARM(io, "i"); -MODULE_PARM(irq, "i"); +module_param(io, int, 0); +module_param(irq, int, 0); MODULE_PARM_DESC(io, "ni5010 I/O base address"); MODULE_PARM_DESC(irq, "ni5010 IRQ number"); --- a/drivers/net/ns83820.c +++ b/drivers/net/ns83820.c @@ -116,6 +116,7 @@ #include #include #include +#include #include #include @@ -1607,7 +1608,7 @@ static void ns83820_run_bist(struct net_ { struct ns83820 *dev = PRIV(ndev); int timed_out = 0; - long start; + unsigned long start; u32 status; int loops = 0; @@ -1625,7 +1626,7 @@ static void ns83820_run_bist(struct net_ break; if (status & fail) break; - if ((jiffies - start) >= HZ) { + if (time_after_eq(jiffies, start + HZ)) { timed_out = 1; break; } @@ -1828,9 +1829,9 @@ static int __devinit ns83820_init_one(st /* See if we can set the dma mask early on; failure is fatal. */ if (sizeof(dma_addr_t) == 8 && - !pci_set_dma_mask(pci_dev, 0xffffffffffffffffULL)) { + !pci_set_dma_mask(pci_dev, DMA_64BIT_MASK)) { using_dac = 1; - } else if (!pci_set_dma_mask(pci_dev, 0xffffffff)) { + } else if (!pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) { using_dac = 0; } else { printk(KERN_WARNING "ns83820.c: pci_set_dma_mask failed!\n"); @@ -2176,7 +2177,7 @@ static struct pci_driver driver = { static int __init ns83820_init(void) { printk(KERN_INFO "ns83820.c: National Semiconductor DP83820 10/100/1000 driver.\n"); - return pci_module_init(&driver); + return pci_register_driver(&driver); } static void __exit ns83820_exit(void) --- a/drivers/net/oaknet.c +++ b/drivers/net/oaknet.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -606,7 +607,7 @@ retry: #endif while ((ei_ibp(base + EN0_ISR) & ENISR_RDC) == 0) { - if (jiffies - start > OAKNET_WAIT) { + if (time_after(jiffies, start + OAKNET_WAIT)) { printk("%s: timeout waiting for Tx RDC.\n", dev->name); oaknet_reset_8390(dev); NS8390_init(dev, TRUE); --- a/drivers/net/pci-skeleton.c +++ b/drivers/net/pci-skeleton.c @@ -1963,7 +1963,7 @@ static int __init netdrv_init_module (vo #ifdef MODULE printk(version); #endif - return pci_module_init (&netdrv_pci_driver); + return pci_register_driver (&netdrv_pci_driver); } --- a/drivers/net/pcmcia/3c589_cs.c +++ b/drivers/net/pcmcia/3c589_cs.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -796,7 +797,7 @@ static void media_check(unsigned long ar media = inw(ioaddr+WN4_MEDIA) & 0xc810; /* Ignore collisions unless we've had no irq's recently */ - if (jiffies - lp->last_irq < HZ) { + if (time_before(jiffies, lp->last_irq + HZ)) { media &= ~0x0010; } else { /* Try harder to detect carrier errors */ --- a/drivers/net/pcmcia/xirc2ps_cs.c +++ b/drivers/net/pcmcia/xirc2ps_cs.c @@ -1797,7 +1797,7 @@ init_mii(struct net_device *dev) local_info_t *local = netdev_priv(dev); kio_addr_t ioaddr = dev->base_addr; unsigned control, status, linkpartner; - int i; + unsigned long end_time; if (if_port == 4 || if_port == 1) { /* force 100BaseT or 10BaseT */ dev->if_port = if_port; @@ -1831,13 +1831,13 @@ init_mii(struct net_device *dev) if (local->probe_port) { /* according to the DP83840A specs the auto negotiation process * may take up to 3.5 sec, so we use this also for our ML6692 - * Fixme: Better to use a timer here! */ - for (i=0; i < 35; i++) { - msleep(100); /* wait 100 msec */ - status = mii_rd(ioaddr, 0, 1); - if ((status & 0x0020) && (status & 0x0004)) - break; + end_time = jiffies + msecs_to_jiffies(3500); + while (time_before(jiffies, end_time)) { + msleep(100); /* wait 100 msec */ + status = mii_rd(ioaddr, 0, 1); + if ((status & 0x0020) && (status & 0x0004)) + break; } if (!(status & 0x0020)) { --- a/drivers/net/pcnet32.c +++ b/drivers/net/pcnet32.c @@ -2508,7 +2508,7 @@ static int __init pcnet32_init_module(vo tx_start = tx_start_pt; /* find the PCI devices */ - if (!pci_module_init(&pcnet32_driver)) + if (!pci_register_driver(&pcnet32_driver)) pcnet32_have_pci = 1; /* should we find any remaining VLbus devices ? */ --- a/drivers/net/ppp_async.c +++ b/drivers/net/ppp_async.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -570,7 +571,7 @@ ppp_async_encode(struct asyncppp *ap) * character if necessary. */ if (islcp || flag_time == 0 - || jiffies - ap->last_xmit >= flag_time) + || time_after_eq(jiffies, ap->last_xmit + flag_time)) *buf++ = PPP_FLAG; ap->last_xmit = jiffies; fcs = PPP_INITFCS; --- a/drivers/net/ppp_mppe.c +++ b/drivers/net/ppp_mppe.c @@ -46,7 +46,6 @@ #include #include #include -#include #include #include #include --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c @@ -2713,7 +2713,7 @@ static struct pci_driver rtl8169_pci_dri static int __init rtl8169_init_module(void) { - return pci_module_init(&rtl8169_pci_driver); + return pci_register_driver(&rtl8169_pci_driver); } static void __exit --- a/drivers/net/rrunner.c +++ b/drivers/net/rrunner.c @@ -1737,7 +1737,7 @@ static struct pci_driver rr_driver = { static int __init rr_init_module(void) { - return pci_module_init(&rr_driver); + return pci_register_driver(&rr_driver); } static void __exit rr_cleanup_module(void) --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c @@ -835,13 +835,13 @@ static int init_nic(struct s2io_nic *nic struct net_device *dev = nic->dev; register u64 val64 = 0; void __iomem *add; - u32 time; int i, j; mac_info_t *mac_control; struct config_param *config; int mdio_cnt = 0, dtx_cnt = 0; unsigned long long mem_share; int mem_size; + unsigned long end_time; mac_control = &nic->mac_control; config = &nic->config; @@ -1357,19 +1357,18 @@ static int init_nic(struct s2io_nic *nic * We wait for a maximum of 500ms for the operation to complete, * if it's not complete by then we return error. */ - time = 0; + end_time = jiffies + msecs_to_jiffies(500); while (TRUE) { val64 = readq(&bar0->tti_command_mem); if (!(val64 & TTI_CMD_MEM_STROBE_NEW_CMD)) { break; } - if (time > 10) { + if (time_after(jiffies, end_time)) { DBG_PRINT(ERR_DBG, "%s: TTI init Failed\n", dev->name); return -1; } msleep(50); - time++; } if (nic->config.bimodal) { @@ -1385,19 +1384,18 @@ static int init_nic(struct s2io_nic *nic * We wait for a maximum of 500ms for the operation to complete, * if it's not complete by then we return error. */ - time = 0; + end_time = jiffies + msecs_to_jiffies(500); while (TRUE) { val64 = readq(&bar0->tti_command_mem); if (!(val64 & TTI_CMD_MEM_STROBE_NEW_CMD)) { break; } - if (time > 10) { + if (time_after(jiffies, end_time)) { DBG_PRINT(ERR_DBG, "%s: TTI init Failed\n", dev->name); return -1; } - time++; msleep(50); } } @@ -1442,18 +1440,17 @@ static int init_nic(struct s2io_nic *nic * for the operation to complete, if it's not complete * by then we return error. */ - time = 0; + end_time = jiffies + msecs_to_jiffies(500); while (TRUE) { val64 = readq(&bar0->rti_command_mem); if (!(val64 & RTI_CMD_MEM_STROBE_NEW_CMD)) { break; } - if (time > 10) { + if (time_after(jiffies, end_time)) { DBG_PRINT(ERR_DBG, "%s: RTI init Failed\n", dev->name); return -1; } - time++; msleep(50); } } @@ -2825,8 +2822,9 @@ static void alarm_intr_handler(struct s2 static int wait_for_cmd_complete(nic_t * sp) { XENA_dev_config_t __iomem *bar0 = sp->bar0; - int ret = FAILURE, cnt = 0; + int ret = FAILURE; u64 val64; + unsigned long end_time = jiffies + msecs_to_jiffies(500); while (TRUE) { val64 = readq(&bar0->rmac_addr_cmd_mem); @@ -2835,7 +2833,7 @@ static int wait_for_cmd_complete(nic_t * break; } msleep(50); - if (cnt++ > 10) + if (time_after(jiffies, end_time)) break; } @@ -4823,13 +4821,15 @@ static int s2io_eeprom_test(nic_t * sp, static int s2io_bist_test(nic_t * sp, uint64_t * data) { u8 bist = 0; - int cnt = 0, ret = -1; + int ret = -1; + unsigned long end_time; pci_read_config_byte(sp->pdev, PCI_BIST, &bist); bist |= PCI_BIST_START; pci_write_config_word(sp->pdev, PCI_BIST, bist); - while (cnt < 20) { + end_time = jiffies + msecs_to_jiffies(2000); + while (time_before(jiffies, end_time)) { pci_read_config_byte(sp->pdev, PCI_BIST, &bist); if (!(bist & PCI_BIST_START)) { *data = (bist & PCI_BIST_CODE_MASK); @@ -4837,7 +4837,6 @@ static int s2io_bist_test(nic_t * sp, ui break; } msleep(100); - cnt++; } return ret; @@ -4885,7 +4884,8 @@ static int s2io_rldram_test(nic_t * sp, { XENA_dev_config_t __iomem *bar0 = sp->bar0; u64 val64; - int cnt, iteration = 0, test_fail = 0; + int iteration = 0, test_fail = 0; + unsigned long end_time; val64 = readq(&bar0->adapter_control); val64 &= ~ADAPTER_ECC_EN; @@ -4928,27 +4928,29 @@ static int s2io_rldram_test(nic_t * sp, MC_RLDRAM_TEST_GO; SPECIAL_REG_WRITE(val64, &bar0->mc_rldram_test_ctrl, LF); - for (cnt = 0; cnt < 5; cnt++) { + end_time = jiffies + msecs_to_jiffies(1000); + while (time_before(jiffies, end_time)) { val64 = readq(&bar0->mc_rldram_test_ctrl); if (val64 & MC_RLDRAM_TEST_DONE) break; msleep(200); } - if (cnt == 5) + if (time_after_eq(jiffies, end_time)) break; val64 = MC_RLDRAM_TEST_MODE | MC_RLDRAM_TEST_GO; SPECIAL_REG_WRITE(val64, &bar0->mc_rldram_test_ctrl, LF); - for (cnt = 0; cnt < 5; cnt++) { + end_time = jiffies + msecs_to_jiffies(2500); + while (time_before(jiffies, end_time)) { val64 = readq(&bar0->mc_rldram_test_ctrl); if (val64 & MC_RLDRAM_TEST_DONE) break; msleep(500); } - if (cnt == 5) + if (time_after_eq(jiffies, end_time)) break; val64 = readq(&bar0->mc_rldram_test_ctrl); @@ -5411,10 +5413,10 @@ static void s2io_set_link(unsigned long static void s2io_card_down(nic_t * sp) { - int cnt = 0; XENA_dev_config_t __iomem *bar0 = sp->bar0; unsigned long flags; register u64 val64 = 0; + unsigned long end_time; del_timer_sync(&sp->alarm_timer); /* If s2io_set_link task is executing, wait till it completes. */ @@ -5430,6 +5432,7 @@ static void s2io_card_down(nic_t * sp) tasklet_kill(&sp->task); /* Check if the device is Quiescent and then Reset the NIC */ + end_time = jiffies + msecs_to_jiffies(500); do { val64 = readq(&bar0->adapter_status); if (verify_xena_quiescence(sp, val64, sp->device_enabled_once)) { @@ -5437,8 +5440,7 @@ static void s2io_card_down(nic_t * sp) } msleep(50); - cnt++; - if (cnt == 10) { + if (time_after(jiffies, end_time)) { DBG_PRINT(ERR_DBG, "s2io_close:Device not Quiescent "); DBG_PRINT(ERR_DBG, "adaper status reads 0x%llx\n", @@ -5449,13 +5451,12 @@ static void s2io_card_down(nic_t * sp) s2io_reset(sp); /* Waiting till all Interrupt handlers are complete */ - cnt = 0; - do { + end_time = jiffies + msecs_to_jiffies(50); + while (time_before(jiffies, end_time)) { msleep(10); if (!atomic_read(&sp->isr_cnt)) break; - cnt++; - } while(cnt < 5); + } spin_lock_irqsave(&sp->tx_lock, flags); /* Free all Tx buffers */ @@ -6335,7 +6336,7 @@ static void __devexit s2io_rem_nic(struc int __init s2io_starter(void) { - return pci_module_init(&s2io_driver); + return pci_register_driver(&s2io_driver); } /** --- a/drivers/net/saa9730.c +++ b/drivers/net/saa9730.c @@ -1131,7 +1131,7 @@ static struct pci_driver saa9730_driver static int __init saa9730_init(void) { - return pci_module_init(&saa9730_driver); + return pci_register_driver(&saa9730_driver); } static void __exit saa9730_cleanup(void) --- a/drivers/net/seeq8005.c +++ b/drivers/net/seeq8005.c @@ -46,6 +46,7 @@ static const char version[] = #include #include #include +#include #include #include @@ -699,7 +700,7 @@ static void hardware_send_packet(struct int ioaddr = dev->base_addr; int status = inw(SEEQ_STATUS); int transmit_ptr = 0; - int tmp; + unsigned long tmp; if (net_debug>4) { printk("%s: send 0x%04x\n",dev->name,length); @@ -724,7 +725,7 @@ static void hardware_send_packet(struct /* drain FIFO */ tmp = jiffies; - while ( (((status=inw(SEEQ_STATUS)) & SEEQSTAT_FIFO_EMPTY) == 0) && (jiffies - tmp < HZ)) + while ( (((status=inw(SEEQ_STATUS)) & SEEQSTAT_FIFO_EMPTY) == 0) && time_before(jiffies, tmp + HZ)) mb(); /* doit ! */ --- a/drivers/net/shaper.c +++ b/drivers/net/shaper.c @@ -83,6 +83,7 @@ #include #include #include +#include #include #include @@ -168,7 +169,7 @@ static int shaper_start_xmit(struct sk_b /* * Queue over time. Spill packet. */ - if(SHAPERCB(skb)->shapeclock-jiffies > SHAPER_LATENCY) { + if(time_after(SHAPERCB(skb)->shapeclock,jiffies + SHAPER_LATENCY)) { dev_kfree_skb(skb); shaper->stats.tx_dropped++; } else --- a/drivers/net/sis190.c +++ b/drivers/net/sis190.c @@ -370,19 +370,20 @@ static int multicast_filter_limit = 32; static void __mdio_cmd(void __iomem *ioaddr, u32 ctl) { - unsigned int i; + unsigned long end_time; SIS_W32(GMIIControl, ctl); msleep(1); - for (i = 0; i < 100; i++) { + end_time = jiffies + msecs_to_jiffies(100); + while (time_before(jiffies, end_time)) { if (!(SIS_R32(GMIIControl) & EhnMIInotDone)) break; msleep(1); } - if (i > 999) + if (time_after_eq(jiffies, end_time)) printk(KERN_ERR PFX "PHY command failed !\n"); } @@ -424,14 +425,15 @@ static u16 mdio_read_latched(void __iome static u16 __devinit sis190_read_eeprom(void __iomem *ioaddr, u32 reg) { u16 data = 0xffff; - unsigned int i; + unsigned long end_time; if (!(SIS_R32(ROMControl) & 0x0002)) return 0; SIS_W32(ROMInterface, EEREQ | EEROP | (reg << 10)); - for (i = 0; i < 200; i++) { + end_time = jiffies + msecs_to_jiffies(200); + while (time_before(jiffies, end_time)) { if (!(SIS_R32(ROMInterface) & EEREQ)) { data = (SIS_R32(ROMInterface) & 0xffff0000) >> 16; break; --- a/drivers/net/sis900.c +++ b/drivers/net/sis900.c @@ -2479,7 +2479,7 @@ static int __init sis900_init_module(voi printk(version); #endif - return pci_module_init(&sis900_pci_driver); + return pci_register_driver(&sis900_pci_driver); } static void __exit sis900_cleanup_module(void) --- a/drivers/net/sk98lin/skge.c +++ b/drivers/net/sk98lin/skge.c @@ -4670,7 +4670,6 @@ register int i; int haddr, addr; char hex_buffer[180]; char asc_buffer[180]; -char HEXCHAR[] = "0123456789ABCDEF"; addr = 0; haddr = 0; @@ -4683,9 +4682,9 @@ char HEXCHAR[] = "0123456789ABCDEF"; asc_buffer[addr] = '.'; addr++; asc_buffer[addr] = 0; - hex_buffer[haddr] = HEXCHAR[(*p & 0xf0) >> 4]; + hex_buffer[haddr] = large_digits[(*p & 0xf0) >> 4]; haddr++; - hex_buffer[haddr] = HEXCHAR[*p & 0x0f]; + hex_buffer[haddr] = large_digits[*p & 0x0f]; haddr++; hex_buffer[haddr] = ' '; haddr++; @@ -4718,7 +4717,6 @@ register int i; int haddr, addr; char hex_buffer[180]; char asc_buffer[180]; -char HEXCHAR[] = "0123456789ABCDEF"; long *p; int l; @@ -4729,21 +4727,21 @@ int l; p = (long*) pc; for (i=0; i < size; ) { l = (long) *p; - hex_buffer[haddr] = HEXCHAR[(l >> 28) & 0xf]; + hex_buffer[haddr] = large_digits[(l >> 28) & 0xf]; haddr++; - hex_buffer[haddr] = HEXCHAR[(l >> 24) & 0xf]; + hex_buffer[haddr] = large_digits[(l >> 24) & 0xf]; haddr++; - hex_buffer[haddr] = HEXCHAR[(l >> 20) & 0xf]; + hex_buffer[haddr] = large_digits[(l >> 20) & 0xf]; haddr++; - hex_buffer[haddr] = HEXCHAR[(l >> 16) & 0xf]; + hex_buffer[haddr] = large_digits[(l >> 16) & 0xf]; haddr++; - hex_buffer[haddr] = HEXCHAR[(l >> 12) & 0xf]; + hex_buffer[haddr] = large_digits[(l >> 12) & 0xf]; haddr++; - hex_buffer[haddr] = HEXCHAR[(l >> 8) & 0xf]; + hex_buffer[haddr] = large_digits[(l >> 8) & 0xf]; haddr++; - hex_buffer[haddr] = HEXCHAR[(l >> 4) & 0xf]; + hex_buffer[haddr] = large_digits[(l >> 4) & 0xf]; haddr++; - hex_buffer[haddr] = HEXCHAR[l & 0x0f]; + hex_buffer[haddr] = large_digits[l & 0x0f]; haddr++; hex_buffer[haddr] = ' '; haddr++; --- a/drivers/net/skfp/skfddi.c +++ b/drivers/net/skfp/skfddi.c @@ -2280,7 +2280,7 @@ static struct pci_driver skfddi_pci_driv static int __init skfd_init(void) { - return pci_module_init(&skfddi_pci_driver); + return pci_register_driver(&skfddi_pci_driver); } static void __exit skfd_exit(void) --- a/drivers/net/skfp/smt.c +++ b/drivers/net/skfp/smt.c @@ -1731,7 +1731,7 @@ void fddi_send_antc(struct s_smc *smc, s #endif #ifdef DEBUG -#define hextoasc(x) "0123456789abcdef"[x] +#define hextoasc(x) small_digits[x] char *addr_to_string(struct fddi_addr *addr) { --- a/drivers/net/skge.c +++ b/drivers/net/skge.c @@ -670,21 +670,21 @@ static void skge_led(struct skge_port *s static int skge_phys_id(struct net_device *dev, u32 data) { struct skge_port *skge = netdev_priv(dev); - unsigned long ms; + unsigned long end_time; enum led_mode mode = LED_MODE_TST; if (!data || data > (u32)(MAX_SCHEDULE_TIMEOUT / HZ)) - ms = jiffies_to_msecs(MAX_SCHEDULE_TIMEOUT / HZ) * 1000; + end_time = jiffies_to_msecs(MAX_SCHEDULE_TIMEOUT / HZ) * 1000; else - ms = data * 1000; + end_time = data * 1000; - while (ms > 0) { + end_time = jiffies + msecs_to_jiffies(end_time); + while (time_before(jiffies, end_time)) { skge_led(skge, mode); mode ^= LED_MODE_TST; if (msleep_interruptible(BLINK_MS)) break; - ms -= BLINK_MS; } /* back to regular LED state */ --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include --- a/drivers/net/starfire.c +++ b/drivers/net/starfire.c @@ -2137,7 +2137,7 @@ static int __init starfire_init (void) return -ENODEV; } - return pci_module_init (&starfire_driver); + return pci_register_driver (&starfire_driver); } --- a/drivers/net/sun3lance.c +++ b/drivers/net/sun3lance.c @@ -71,7 +71,7 @@ static int lance_debug = LANCE_DEBUG; #else static int lance_debug = 1; #endif -MODULE_PARM(lance_debug, "i"); +module_param(lance_debug, int, 0644); MODULE_PARM_DESC(lance_debug, "SUN3 Lance debug level (0-3)"); MODULE_LICENSE("GPL"); --- a/drivers/net/sundance.c +++ b/drivers/net/sundance.c @@ -1806,7 +1806,7 @@ static int __init sundance_init(void) #ifdef MODULE printk(version); #endif - return pci_module_init(&sundance_driver); + return pci_register_driver(&sundance_driver); } static void __exit sundance_exit(void) --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c @@ -3190,7 +3190,7 @@ static struct pci_driver gem_driver = { static int __init gem_init(void) { - return pci_module_init(&gem_driver); + return pci_register_driver(&gem_driver); } static void __exit gem_cleanup(void) --- a/drivers/net/tc35815.c +++ b/drivers/net/tc35815.c @@ -1725,7 +1725,7 @@ static struct pci_driver tc35815_driver static int __init tc35815_init_module(void) { - return pci_module_init(&tc35815_driver); + return pci_register_driver(&tc35815_driver); } static void __exit tc35815_cleanup_module(void) --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c @@ -6283,7 +6283,8 @@ static void tg3_timer(unsigned long __op static int tg3_test_interrupt(struct tg3 *tp) { struct net_device *dev = tp->dev; - int err, i; + int err; + unsigned long end_time; u32 int_mbox = 0; if (!netif_running(dev)) @@ -6304,7 +6305,8 @@ static int tg3_test_interrupt(struct tg3 tw32_f(HOSTCC_MODE, tp->coalesce_mode | HOSTCC_MODE_ENABLE | HOSTCC_MODE_NOW); - for (i = 0; i < 5; i++) { + end_time = jiffies + msecs_to_jiffies(50); + while (time_before(jiffies, end_time)) { int_mbox = tr32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW); if (int_mbox != 0) @@ -10952,7 +10954,7 @@ static struct pci_driver tg3_driver = { static int __init tg3_init(void) { - return pci_module_init(&tg3_driver); + return pci_register_driver(&tg3_driver); } static void __exit tg3_cleanup(void) --- a/drivers/net/tokenring/3c359.c +++ b/drivers/net/tokenring/3c359.c @@ -1816,7 +1816,7 @@ static struct pci_driver xl_3c359_driver static int __init xl_pci_init (void) { - return pci_module_init (&xl_3c359_driver); + return pci_register_driver (&xl_3c359_driver); } --- a/drivers/net/tokenring/ibmtr.c +++ b/drivers/net/tokenring/ibmtr.c @@ -108,6 +108,7 @@ in the event that chatty debug messages #define IBMTR_DEBUG_MESSAGES 0 #include +#include #ifdef PCMCIA /* required for ibmtr_cs.c to build */ #undef MODULE /* yes, really */ @@ -842,6 +843,7 @@ static int __devinit trdev_init(struct n static int tok_init_card(struct net_device *dev) { + DEFINE_WAIT(wait); struct tok_info *ti; short PIOaddr; unsigned long i; @@ -862,13 +864,16 @@ static int tok_init_card(struct net_devi writeb(SRPR_ENABLE_PAGING,ti->mmio+ACA_OFFSET+ACA_RW+SRPR_EVEN); #endif writeb(INT_ENABLE, ti->mmio + ACA_OFFSET + ACA_SET + ISRP_EVEN); - i = sleep_on_timeout(&ti->wait_for_reset, 4 * HZ); + prepare_to_wait(&ti->wait_for_reset, &wait, TASK_UNINTERRUPTIBLE); + i = schedule_timeout(4 * HZ); + finish_wait(&ti->wait_for_reset, &wait); return i? 0 : -EAGAIN; } /*****************************************************************************/ static int tok_open(struct net_device *dev) { + DEFINE_WAIT(wait); struct tok_info *ti = (struct tok_info *) dev->priv; int i; @@ -893,7 +898,9 @@ static int tok_open(struct net_device *d while (1){ tok_open_adapter((unsigned long) dev); - i= interruptible_sleep_on_timeout(&ti->wait_for_reset, 25 * HZ); + prepare_to_wait(&ti->wait_for_reset, &wait, TASK_INTERRUPTIBLE); + i = schedule_timeout(25 * HZ); + finish_wait(&ti->wait_for_reset, &wait); /* sig catch: estimate opening adapter takes more than .5 sec*/ if (i>(245*HZ)/10) break; /* fancier than if (i==25*HZ) */ if (i==0) break; --- a/drivers/net/tokenring/lanstreamer.c +++ b/drivers/net/tokenring/lanstreamer.c @@ -122,6 +122,8 @@ #include #include #include +#include +#include #include @@ -512,7 +514,7 @@ static int streamer_reset(struct net_dev while (!((readw(streamer_mmio + SISR)) & SISR_SRB_REPLY)) { msleep_interruptible(100); - if (jiffies - t > 40 * HZ) { + if (time_after(jiffies, t + 40 * HZ)) { printk(KERN_ERR "IBM PCI tokenring card not responding\n"); release_region(dev->base_addr, STREAMER_IO_SPACE); @@ -670,17 +672,15 @@ static int streamer_open(struct net_devi writew(LISR_SRB_CMD, streamer_mmio + LISR_SUM); spin_unlock_irqrestore(&streamer_priv->streamer_lock, flags); - while (streamer_priv->srb_queued) { - interruptible_sleep_on_timeout(&streamer_priv->srb_wait, 5 * HZ); - if (signal_pending(current)) { - printk(KERN_WARNING "%s: SRB timed out.\n", dev->name); - printk(KERN_WARNING "SISR=%x MISR=%x, LISR=%x\n", - readw(streamer_mmio + SISR), - readw(streamer_mmio + MISR_RUM), - readw(streamer_mmio + LISR)); - streamer_priv->srb_queued = 0; - break; - } + wait_event_interruptible_timeout(streamer_priv->srb_wait, + !streamer_priv->srb_queued, 5 * HZ); + if (signal_pending(current)) { + printk(KERN_WARNING "%s: SRB timed out.\n", dev->name); + printk(KERN_WARNING "SISR=%x MISR=%x, LISR=%x\n", + readw(streamer_mmio + SISR), + readw(streamer_mmio + MISR_RUM), + readw(streamer_mmio + LISR)); + streamer_priv->srb_queued = 0; } #if STREAMER_DEBUG @@ -1224,20 +1224,15 @@ static int streamer_close(struct net_dev spin_unlock_irqrestore(&streamer_priv->streamer_lock, flags); - while (streamer_priv->srb_queued) - { - interruptible_sleep_on_timeout(&streamer_priv->srb_wait, - jiffies + 60 * HZ); - if (signal_pending(current)) - { - printk(KERN_WARNING "%s: SRB timed out.\n", dev->name); - printk(KERN_WARNING "SISR=%x MISR=%x LISR=%x\n", - readw(streamer_mmio + SISR), - readw(streamer_mmio + MISR_RUM), - readw(streamer_mmio + LISR)); - streamer_priv->srb_queued = 0; - break; - } + wait_event_interruptible_timeout(streamer_priv->srb_wait, + !streamer_priv->srb_queued, 60*HZ); + if (signal_pending(current)) { + printk(KERN_WARNING "%s: SRB timed out.\n", dev->name); + printk(KERN_WARNING "SISR=%x MISR=%x LISR=%x\n", + readw(streamer_mmio + SISR), + readw(streamer_mmio + MISR_RUM), + readw(streamer_mmio + LISR)); + streamer_priv->srb_queued = 0; } streamer_priv->rx_ring_last_received = (streamer_priv->rx_ring_last_received + 1) & (STREAMER_RX_RING_SIZE - 1); @@ -1998,7 +1993,7 @@ static struct pci_driver streamer_pci_dr }; static int __init streamer_init_module(void) { - return pci_module_init(&streamer_pci_driver); + return pci_register_driver(&streamer_pci_driver); } static void __exit streamer_cleanup_module(void) { --- a/drivers/net/tokenring/olympic.c +++ b/drivers/net/tokenring/olympic.c @@ -100,6 +100,7 @@ #include #include #include +#include #include @@ -267,11 +268,16 @@ static int __devinit olympic_probe(struc register_netdev(dev) ; printk("Olympic: %s registered as: %s\n",olympic_priv->olympic_card_name,dev->name); if (olympic_priv->olympic_network_monitor) { /* Must go after register_netdev as we need the device name */ + struct proc_dir_entry *proc_dir_entry; char proc_name[20] ; strcpy(proc_name,"net/olympic_") ; strcat(proc_name,dev->name) ; - create_proc_read_entry(proc_name,0,NULL,olympic_proc_info,(void *)dev) ; - printk("Olympic: Network Monitor information: /proc/%s\n",proc_name); + proc_dir_entry = create_proc_read_entry(proc_name,0,NULL,olympic_proc_info,dev); + + if (proc_dir_entry) + printk(KERN_INFO "Olympic: Network Monitor information: /proc/%s\n",proc_name); + else + printk(KERN_WARNING "Olympic: Network Monitor information: /proc/%s could not be created\n",proc_name); } return 0 ; @@ -307,7 +313,7 @@ static int __devinit olympic_init(struct t=jiffies; while((readl(olympic_mmio+BCTL)) & BCTL_SOFTRESET) { schedule(); - if(jiffies-t > 40*HZ) { + if(time_after(jiffies, t + 40*HZ)) { printk(KERN_ERR "IBM PCI tokenring card not responding.\n"); return -ENODEV; } @@ -359,7 +365,7 @@ static int __devinit olympic_init(struct t=jiffies; while (!readl(olympic_mmio+CLKCTL) & CLKCTL_PAUSE) { schedule() ; - if(jiffies-t > 2*HZ) { + if(time_after(jiffies, t + 2*HZ)) { printk(KERN_ERR "IBM Cardbus tokenring adapter not responsing.\n") ; return -ENODEV; } @@ -373,7 +379,7 @@ static int __devinit olympic_init(struct t=jiffies; while(!((readl(olympic_mmio+SISR_RR)) & SISR_SRB_REPLY)) { schedule(); - if(jiffies-t > 15*HZ) { + if(time_after(jiffies, t + 15*HZ)) { printk(KERN_ERR "IBM PCI tokenring card not responding.\n"); return -ENODEV; } @@ -519,7 +525,7 @@ static int olympic_open(struct net_devic olympic_priv->srb_queued=0; break; } - if ((jiffies-t) > 10*HZ) { + if (time_after(jiffies, t + 10*HZ)) { printk(KERN_WARNING "%s: SRB timed out. \n",dev->name) ; olympic_priv->srb_queued=0; break ; @@ -1771,7 +1777,7 @@ static struct pci_driver olympic_driver static int __init olympic_pci_init(void) { - return pci_module_init (&olympic_driver) ; + return pci_register_driver (&olympic_driver); } static void __exit olympic_pci_cleanup(void) --- a/drivers/net/tulip/de2104x.c +++ b/drivers/net/tulip/de2104x.c @@ -2178,7 +2178,7 @@ static int __init de_init (void) #ifdef MODULE printk("%s", version); #endif - return pci_module_init (&de_driver); + return pci_register_driver (&de_driver); } static void __exit de_exit (void) --- a/drivers/net/tulip/de4x5.c +++ b/drivers/net/tulip/de4x5.c @@ -5755,7 +5755,7 @@ static int __init de4x5_module_init (voi int err = 0; #ifdef CONFIG_PCI - err = pci_module_init (&de4x5_pci_driver); + err = pci_register_driver (&de4x5_pci_driver); #endif #ifdef CONFIG_EISA err |= eisa_driver_register (&de4x5_eisa_driver); --- a/drivers/net/tulip/dmfe.c +++ b/drivers/net/tulip/dmfe.c @@ -2039,7 +2039,7 @@ static int __init dmfe_init_module(void) if (HPNA_NoiseFloor > 15) HPNA_NoiseFloor = 0; - rc = pci_module_init(&dmfe_driver); + rc = pci_register_driver(&dmfe_driver); if (rc < 0) return rc; --- a/drivers/net/tulip/pnic.c +++ b/drivers/net/tulip/pnic.c @@ -16,6 +16,7 @@ #include #include +#include #include "tulip.h" @@ -68,7 +69,7 @@ void pnic_lnk_change(struct net_device * */ if (tulip_media_cap[dev->if_port] & MediaIsMII) return; - if (! tp->nwayset || jiffies - dev->trans_start > 1*HZ) { + if (! tp->nwayset || time_after(jiffies, dev->trans_start + 1*HZ)) { tp->csr6 = 0x00420000 | (tp->csr6 & 0x0000fdff); iowrite32(tp->csr6, ioaddr + CSR6); iowrite32(0x30, ioaddr + CSR12); --- a/drivers/net/tulip/tulip_core.c +++ b/drivers/net/tulip/tulip_core.c @@ -1854,7 +1854,7 @@ static int __init tulip_init (void) tulip_max_interrupt_work = max_interrupt_work; /* probe for and init boards */ - return pci_module_init (&tulip_driver); + return pci_register_driver (&tulip_driver); } --- a/drivers/net/tulip/winbond-840.c +++ b/drivers/net/tulip/winbond-840.c @@ -1705,7 +1705,7 @@ static struct pci_driver w840_driver = { static int __init w840_init(void) { printk(version); - return pci_module_init(&w840_driver); + return pci_register_driver(&w840_driver); } static void __exit w840_exit(void) --- a/drivers/net/tulip/xircom_tulip_cb.c +++ b/drivers/net/tulip/xircom_tulip_cb.c @@ -1727,7 +1727,7 @@ static int __init xircom_init(void) #ifdef MODULE printk(version); #endif - return pci_module_init(&xircom_driver); + return pci_register_driver(&xircom_driver); } --- a/drivers/net/typhoon.c +++ b/drivers/net/typhoon.c @@ -2659,7 +2659,7 @@ static struct pci_driver typhoon_driver static int __init typhoon_init(void) { - return pci_module_init(&typhoon_driver); + return pci_register_driver(&typhoon_driver); } static void __exit --- a/drivers/net/via-rhine.c +++ b/drivers/net/via-rhine.c @@ -2049,7 +2049,7 @@ static int __init rhine_init(void) #ifdef MODULE printk(version); #endif - return pci_module_init(&rhine_driver); + return pci_register_driver(&rhine_driver); } --- a/drivers/net/via-velocity.c +++ b/drivers/net/via-velocity.c @@ -2241,7 +2241,7 @@ static int __init velocity_init_module(v int ret; velocity_register_notifier(); - ret = pci_module_init(&velocity_driver); + ret = pci_register_driver(&velocity_driver); if (ret < 0) velocity_unregister_notifier(); return ret; --- a/drivers/net/wan/cycx_drv.c +++ b/drivers/net/wan/cycx_drv.c @@ -383,7 +383,7 @@ static int cycx_code_boot(void __iomem * * o start adapter up */ static int load_cyc2x(struct cycx_hw *hw, struct cycx_firmware *cfm, u32 len) { - int i, j; + unsigned long end_time, end_time2; struct cycx_fw_header *img_hdr; u8 *reset_image, *data_image, @@ -448,7 +448,8 @@ static int load_cyc2x(struct cycx_hw *hw cfm->descr[0] ? cfm->descr : "unknown firmware", cfm->info.codeid); - for (i = 0 ; i < 5 ; i++) { + end_time = jiffies + msecs_to_jiffies(20000); + while (time_before(jiffies, end_time)) { /* Reset Cyclom hardware */ if (!reset_cyc2x(hw->dpmbase)) { printk(KERN_ERR "%s: dpm problem or board not found\n", @@ -462,7 +463,8 @@ static int load_cyc2x(struct cycx_hw *hw writew(GEN_POWER_ON, pt_cycld); msleep_interruptible(1 * 1000); - for (j = 0 ; j < 3 ; j++) + end_time2 = jiffies + msecs_to_jiffies(3000); + while (time_before(jiffies, end_time2)) if (!readw(pt_cycld)) goto reset_loaded; else --- a/drivers/net/wan/dscc4.c +++ b/drivers/net/wan/dscc4.c @@ -2061,7 +2061,7 @@ static struct pci_driver dscc4_driver = static int __init dscc4_init_module(void) { - return pci_module_init(&dscc4_driver); + return pci_register_driver(&dscc4_driver); } static void __exit dscc4_cleanup_module(void) --- a/drivers/net/wan/farsync.c +++ b/drivers/net/wan/farsync.c @@ -2697,7 +2697,7 @@ fst_init(void) for (i = 0; i < FST_MAX_CARDS; i++) fst_card_array[i] = NULL; spin_lock_init(&fst_work_q_lock); - return pci_module_init(&fst_driver); + return pci_register_driver(&fst_driver); } static void __exit --- a/drivers/net/wan/lmc/lmc_main.c +++ b/drivers/net/wan/lmc/lmc_main.c @@ -1790,7 +1790,7 @@ static struct pci_driver lmc_driver = { static int __init init_lmc(void) { - return pci_module_init(&lmc_driver); + return pci_register_driver(&lmc_driver); } static void __exit exit_lmc(void) --- a/drivers/net/wan/pc300_drv.c +++ b/drivers/net/wan/pc300_drv.c @@ -3677,7 +3677,7 @@ static struct pci_driver cpc_driver = { static int __init cpc_init(void) { - return pci_module_init(&cpc_driver); + return pci_register_driver(&cpc_driver); } static void __exit cpc_cleanup_module(void) --- a/drivers/net/wan/pci200syn.c +++ b/drivers/net/wan/pci200syn.c @@ -468,7 +468,7 @@ static int __init pci200_init_module(voi printk(KERN_ERR "pci200syn: Invalid PCI clock frequency\n"); return -EINVAL; } - return pci_module_init(&pci200_pci_driver); + return pci_register_driver(&pci200_pci_driver); } --- a/drivers/net/wan/wanxl.c +++ b/drivers/net/wan/wanxl.c @@ -577,8 +577,8 @@ static int __devinit wanxl_pci_init_one( We set both dma_mask and consistent_dma_mask to 28 bits and pray pci_alloc_consistent() will use this info. It should work on most platforms */ - if (pci_set_consistent_dma_mask(pdev, 0x0FFFFFFF) || - pci_set_dma_mask(pdev, 0x0FFFFFFF)) { + if (pci_set_consistent_dma_mask(pdev, DMA_28BIT_MASK) || + pci_set_dma_mask(pdev, DMA_28BIT_MASK)) { printk(KERN_ERR "wanXL: No usable DMA configuration\n"); return -EIO; } @@ -822,7 +822,7 @@ static int __init wanxl_init_module(void #ifdef MODULE printk(KERN_INFO "%s\n", version); #endif - return pci_module_init(&wanxl_pci_driver); + return pci_register_driver(&wanxl_pci_driver); } static void __exit wanxl_cleanup_module(void) --- a/drivers/net/wireless/atmel_pci.c +++ b/drivers/net/wireless/atmel_pci.c @@ -77,7 +77,7 @@ static void __devexit atmel_pci_remove(s static int __init atmel_init_module(void) { - return pci_module_init(&atmel_driver); + return pci_register_driver(&atmel_driver); } static void __exit atmel_cleanup_module(void) --- a/drivers/net/wireless/ipw2100.c +++ b/drivers/net/wireless/ipw2100.c @@ -159,7 +159,6 @@ that only one external action is invoked #include #include #include -#include #include #include #include --- a/drivers/net/wireless/ipw2200.c +++ b/drivers/net/wireless/ipw2200.c @@ -31,7 +31,6 @@ ******************************************************************************/ #include "ipw2200.h" -#include #define IPW2200_VERSION "git-1.0.8" #define DRV_DESCRIPTION "Intel(R) PRO/Wireless 2200/2915 Network Driver" --- a/drivers/net/wireless/orinoco_pci.c +++ b/drivers/net/wireless/orinoco_pci.c @@ -379,7 +379,7 @@ MODULE_LICENSE("Dual MPL/GPL"); static int __init orinoco_pci_init(void) { printk(KERN_DEBUG "%s\n", version); - return pci_module_init(&orinoco_pci_driver); + return pci_register_driver(&orinoco_pci_driver); } static void __exit orinoco_pci_exit(void) --- a/drivers/net/wireless/orinoco_plx.c +++ b/drivers/net/wireless/orinoco_plx.c @@ -382,7 +382,7 @@ MODULE_LICENSE("Dual MPL/GPL"); static int __init orinoco_plx_init(void) { printk(KERN_DEBUG "%s\n", version); - return pci_module_init(&orinoco_plx_driver); + return pci_register_driver(&orinoco_plx_driver); } static void __exit orinoco_plx_exit(void) --- a/drivers/net/wireless/orinoco_tmd.c +++ b/drivers/net/wireless/orinoco_tmd.c @@ -239,7 +239,7 @@ MODULE_LICENSE("Dual MPL/GPL"); static int __init orinoco_tmd_init(void) { printk(KERN_DEBUG "%s\n", version); - return pci_module_init(&orinoco_tmd_driver); + return pci_register_driver(&orinoco_tmd_driver); } static void __exit orinoco_tmd_exit(void) --- a/drivers/net/wireless/prism54/islpci_hotplug.c +++ b/drivers/net/wireless/prism54/islpci_hotplug.c @@ -22,6 +22,7 @@ #include #include #include /* For __init, __exit */ +#include #include "prismcompat.h" #include "islpci_dev.h" @@ -124,7 +125,7 @@ prism54_probe(struct pci_dev *pdev, cons } /* enable PCI DMA */ - if (pci_set_dma_mask(pdev, 0xffffffff)) { + if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { printk(KERN_ERR "%s: 32-bit PCI DMA not supported", DRV_NAME); goto do_pci_disable_device; } --- a/drivers/net/wireless/strip.c +++ b/drivers/net/wireless/strip.c @@ -112,7 +112,7 @@ static const char StripVersion[] = "1.3A #include #include #include - +#include /************************************************************************/ /* Useful structures and definitions */ @@ -404,8 +404,6 @@ static const StringDescriptor CommandStr (S)->battery_voltage.c[0] && \ memcmp(&(S)->true_dev_addr, zero_address.c, sizeof(zero_address))) -static const char hextable[16] = "0123456789ABCDEF"; - static const MetricomAddress zero_address; static const MetricomAddress broadcast_address = { {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF} }; @@ -1285,13 +1283,13 @@ static __u8 *add_checksum(__u8 * buffer, __u8 *p = buffer; while (p < end) sum += *p++; - end[3] = hextable[sum & 0xF]; + end[3] = large_digits[sum & 0xF]; sum >>= 4; - end[2] = hextable[sum & 0xF]; + end[2] = large_digits[sum & 0xF]; sum >>= 4; - end[1] = hextable[sum & 0xF]; + end[1] = large_digits[sum & 0xF]; sum >>= 4; - end[0] = hextable[sum & 0xF]; + end[0] = large_digits[sum & 0xF]; return (end + 4); } @@ -1372,15 +1370,15 @@ static unsigned char *strip_make_packet( *ptr++ = 0x0D; *ptr++ = '*'; - *ptr++ = hextable[haddr.c[2] >> 4]; - *ptr++ = hextable[haddr.c[2] & 0xF]; - *ptr++ = hextable[haddr.c[3] >> 4]; - *ptr++ = hextable[haddr.c[3] & 0xF]; + *ptr++ = large_digits[haddr.c[2] >> 4]; + *ptr++ = large_digits[haddr.c[2] & 0xF]; + *ptr++ = large_digits[haddr.c[3] >> 4]; + *ptr++ = large_digits[haddr.c[3] & 0xF]; *ptr++ = '-'; - *ptr++ = hextable[haddr.c[4] >> 4]; - *ptr++ = hextable[haddr.c[4] & 0xF]; - *ptr++ = hextable[haddr.c[5] >> 4]; - *ptr++ = hextable[haddr.c[5] & 0xF]; + *ptr++ = large_digits[haddr.c[4] >> 4]; + *ptr++ = large_digits[haddr.c[4] & 0xF]; + *ptr++ = large_digits[haddr.c[5] >> 4]; + *ptr++ = large_digits[haddr.c[5] & 0xF]; *ptr++ = '*'; *ptr++ = key.c[0]; *ptr++ = key.c[1]; @@ -1569,7 +1567,7 @@ static int strip_xmit(struct sk_buff *sk del_timer(&strip_info->idle_timer); - if (jiffies - strip_info->pps_timer > HZ) { + if (time_after(jiffies, strip_info->pps_timer + HZ)) { unsigned long t = jiffies - strip_info->pps_timer; unsigned long rx_pps_count = (strip_info->rx_pps_count * HZ * 8 + t / 2) / t; unsigned long tx_pps_count = (strip_info->tx_pps_count * HZ * 8 + t / 2) / t; --- a/drivers/net/wireless/wavelan_cs.c +++ b/drivers/net/wireless/wavelan_cs.c @@ -3604,8 +3604,8 @@ wv_82593_config(struct net_device * dev) cfblk.lin_prio = 0; /* conform to 802.3 backoff algoritm */ cfblk.exp_prio = 5; /* conform to 802.3 backoff algoritm */ cfblk.bof_met = 1; /* conform to 802.3 backoff algoritm */ - cfblk.ifrm_spc = 0x20; /* 32 bit times interframe spacing */ - cfblk.slottim_low = 0x20; /* 32 bit times slot time */ + cfblk.ifrm_spc = 0x2; /* 32 bit times interframe spacing */ + cfblk.slottim_low = 0x2; /* 32 bit times slot time */ cfblk.slottim_hi = 0x0; cfblk.max_retr = 15; cfblk.prmisc = ((lp->promiscuous) ? TRUE: FALSE); /* Promiscuous mode */ --- a/drivers/net/yellowfin.c +++ b/drivers/net/yellowfin.c @@ -1474,7 +1474,7 @@ static int __init yellowfin_init (void) #ifdef MODULE printk(version); #endif - return pci_module_init (&yellowfin_driver); + return pci_register_driver (&yellowfin_driver); } --- a/drivers/net/zorro8390.c +++ b/drivers/net/zorro8390.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -151,7 +152,7 @@ static int __devinit zorro8390_init(stru z_writeb(z_readb(ioaddr + NE_RESET), ioaddr + NE_RESET); while ((z_readb(ioaddr + NE_EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(KERN_WARNING " not found (no reset ack).\n"); return -ENODEV; } @@ -273,7 +274,7 @@ static void zorro8390_reset_8390(struct /* This check _should_not_ be necessary, omit eventually. */ while ((z_readb(NE_BASE+NE_EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(KERN_WARNING "%s: ne_reset_8390() did not complete.\n", dev->name); break; @@ -400,7 +401,7 @@ static void zorro8390_block_output(struc dma_start = jiffies; while ((z_readb(NE_BASE + NE_EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk(KERN_ERR "%s: timeout waiting for Tx RDC.\n", dev->name); zorro8390_reset_8390(dev); --- a/drivers/parport/parport_arc.c +++ /dev/null @@ -1,139 +0,0 @@ -/* Low-level parallel port routines for Archimedes onboard hardware - * - * Author: Phil Blundell - */ - -/* This driver is for the parallel port hardware found on Acorn's old - * range of Archimedes machines. The A5000 and newer systems have PC-style - * I/O hardware and should use the parport_pc driver instead. - * - * The Acorn printer port hardware is very simple. There is a single 8-bit - * write-only latch for the data port and control/status bits are handled - * with various auxilliary input and output lines. The port is not - * bidirectional, does not support any modes other than SPP, and has only - * a subset of the standard printer control lines connected. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#define DATA_ADDRESS 0x3350010 - -/* This is equivalent to the above and only used for request_region. */ -#define PORT_BASE 0x80000000 | ((DATA_ADDRESS - IO_BASE) >> 2) - -/* The hardware can't read from the data latch, so we must use a soft - copy. */ -static unsigned char data_copy; - -/* These are pretty simple. We know the irq is never shared and the - kernel does all the magic that's required. */ -static void arc_enable_irq(struct parport *p) -{ - enable_irq(p->irq); -} - -static void arc_disable_irq(struct parport *p) -{ - disable_irq(p->irq); -} - -static void arc_interrupt(int irq, void *dev_id, struct pt_regs *regs) -{ - parport_generic_irq(irq, (struct parport *) dev_id, regs); -} - -static void arc_write_data(struct parport *p, unsigned char data) -{ - data_copy = data; - outb_t(data, DATA_LATCH); -} - -static unsigned char arc_read_data(struct parport *p) -{ - return data_copy; -} - -static struct parport_operations parport_arc_ops = -{ - .write_data = arc_write_data, - .read_data = arc_read_data, - - .write_control = arc_write_control, - .read_control = arc_read_control, - .frob_control = arc_frob_control, - - .read_status = arc_read_status, - - .enable_irq = arc_enable_irq, - .disable_irq = arc_disable_irq, - - .data_forward = arc_data_forward, - .data_reverse = arc_data_reverse, - - .init_state = arc_init_state, - .save_state = arc_save_state, - .restore_state = arc_restore_state, - - .epp_write_data = parport_ieee1284_epp_write_data, - .epp_read_data = parport_ieee1284_epp_read_data, - .epp_write_addr = parport_ieee1284_epp_write_addr, - .epp_read_addr = parport_ieee1284_epp_read_addr, - - .ecp_write_data = parport_ieee1284_ecp_write_data, - .ecp_read_data = parport_ieee1284_ecp_read_data, - .ecp_write_addr = parport_ieee1284_ecp_write_addr, - - .compat_write_data = parport_ieee1284_write_compat, - .nibble_read_data = parport_ieee1284_read_nibble, - .byte_read_data = parport_ieee1284_read_byte, - - .owner = THIS_MODULE, -}; - -/* --- Initialisation code -------------------------------- */ - -static int parport_arc_init(void) -{ - /* Archimedes hardware provides only one port, at a fixed address */ - struct parport *p; - struct resource res; - char *fake_name = "parport probe"); - - res = request_region(PORT_BASE, 1, fake_name); - if (res == NULL) - return 0; - - p = parport_register_port (PORT_BASE, IRQ_PRINTERACK, - PARPORT_DMA_NONE, &parport_arc_ops); - - if (!p) { - release_region(PORT_BASE, 1); - return 0; - } - - p->modes = PARPORT_MODE_ARCSPP; - p->size = 1; - rename_region(res, p->name); - - printk(KERN_INFO "%s: Archimedes on-board port, using irq %d\n", - p->irq); - - /* Tell the high-level drivers about the port. */ - parport_announce_port (p); - - return 1; -} - -module_init(parport_arc_init) --- a/drivers/parport/parport_serial.c +++ b/drivers/parport/parport_serial.c @@ -329,7 +329,7 @@ static int __devinit parport_register (s if (priv->num_par == ARRAY_SIZE (priv->port)) { printk (KERN_WARNING - "parport_serial: %s: only %u parallel ports " + "parport_serial: %s: only %zu parallel ports " "supported (%d reported)\n", pci_name (dev), ARRAY_SIZE (priv->port), card->numports); break; --- a/drivers/pci/hotplug/ibmphp_hpc.c +++ b/drivers/pci/hotplug/ibmphp_hpc.c @@ -150,11 +150,11 @@ void __init ibmphp_hpc_initvars (void) static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 index) { u8 status; - int i; void __iomem *wpg_addr; // base addr + offset unsigned long wpg_data; // data to/from WPG LOHI format unsigned long ultemp; unsigned long data; // actual data HILO format + unsigned long end_time; debug_polling ("%s - Entry WPGBbar[%p] index[%x] \n", __FUNCTION__, WPGBbar, index); @@ -204,33 +204,31 @@ static u8 i2c_ctrl_read (struct controll //-------------------------------------------------------------------- // READ - step 4 : wait until start operation bit clears - i = CMD_COMPLETE_TOUT_SEC; - while (i) { + end_time = jiffies + msecs_to_jiffies(CMD_COMPLETE_TOUT_SEC * 1000); + while (time_before(jiffies, end_time)) { msleep(10); wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET; wpg_data = readl (wpg_addr); data = swab32 (wpg_data); if (!(data & WPG_I2CMCNTL_STARTOP_MASK)) break; - i--; } - if (i == 0) { + if (data & WPG_I2CMCNTL_STARTOP_MASK) { debug ("%s - Error : WPG timeout\n", __FUNCTION__); return HPC_ERROR; } //-------------------------------------------------------------------- // READ - step 5 : read I2C status register - i = CMD_COMPLETE_TOUT_SEC; - while (i) { + end_time = jiffies + msecs_to_jiffies(CMD_COMPLETE_TOUT_SEC * 1000); + while (time_before(jiffies, end_time)) { msleep(10); wpg_addr = WPGBbar + WPG_I2CSTAT_OFFSET; wpg_data = readl (wpg_addr); data = swab32 (wpg_data); if (HPC_I2CSTATUS_CHECK (data)) break; - i--; } - if (i == 0) { + if (!(HPC_I2CSTATUS_CHECK (data))) { debug ("ctrl_read - Exit Error:I2C timeout\n"); return HPC_ERROR; } @@ -315,34 +313,32 @@ static u8 i2c_ctrl_write (struct control //-------------------------------------------------------------------- // WRITE - step 4 : wait until start operation bit clears - i = CMD_COMPLETE_TOUT_SEC; - while (i) { + end_time = jiffies + msecs_to_jiffies(CMD_COMPLETE_TOUT_SEC * 1000); + while (time_before(jiffies, end_time)) { msleep(10); wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET; wpg_data = readl (wpg_addr); data = swab32 (wpg_data); if (!(data & WPG_I2CMCNTL_STARTOP_MASK)) break; - i--; } - if (i == 0) { + if (data & WPG_I2CMCNTL_STARTOP_MASK) { debug ("%s - Exit Error:WPG timeout\n", __FUNCTION__); rc = HPC_ERROR; } //-------------------------------------------------------------------- // WRITE - step 5 : read I2C status register - i = CMD_COMPLETE_TOUT_SEC; - while (i) { + end_time = jiffies + msecs_to_jiffies(CMD_COMPLETE_TOUT_SEC * 1000); + while (time_before(jiffies, end_time)) { msleep(10); wpg_addr = WPGBbar + WPG_I2CSTAT_OFFSET; wpg_data = readl (wpg_addr); data = swab32 (wpg_data); if (HPC_I2CSTATUS_CHECK (data)) break; - i--; } - if (i == 0) { + if (!(HPC_I2CSTATUS_CHECK (data))) { debug ("ctrl_read - Error : I2C timeout\n"); rc = HPC_ERROR; } --- a/drivers/pci/hotplug/shpchp_hpc.c +++ b/drivers/pci/hotplug/shpchp_hpc.c @@ -300,7 +300,7 @@ static int shpc_write_cmd(struct slot *s u16 cmd_status; int retval = 0; u16 temp_word; - int i; + unsigned long end_time; DBG_ENTER_ROUTINE @@ -309,7 +309,8 @@ static int shpc_write_cmd(struct slot *s return -1; } - for (i = 0; i < 10; i++) { + end_time = jiffies + msecs_to_jiffies(1000); + while (time_before(jiffies, end_time)) { cmd_status = readw(php_ctlr->creg + CMD_STATUS); if (!(cmd_status & 0x1)) --- a/drivers/pcmcia/cs.c +++ b/drivers/pcmcia/cs.c @@ -350,7 +350,8 @@ static void socket_remove_drivers(struct static int socket_reset(struct pcmcia_socket *skt) { - int status, i; + int status; + unsigned long end_time; cs_dbg(skt, 4, "reset\n"); @@ -362,7 +363,8 @@ static int socket_reset(struct pcmcia_so skt->ops->set_socket(skt, &skt->socket); msleep(unreset_delay * 10); - for (i = 0; i < unreset_limit; i++) { + end_time = jiffies + msecs_to_jiffies(unreset_limit * unreset_check * 10); + while (time_before(jiffies, end_time)) { skt->ops->get_status(skt, &status); if (!(status & SS_DETECT)) @@ -419,7 +421,8 @@ static void socket_shutdown(struct pcmci static int socket_setup(struct pcmcia_socket *skt, int initial_delay) { - int status, i; + int status; + unsigned long end_time; cs_dbg(skt, 4, "setup\n"); @@ -429,7 +432,8 @@ static int socket_setup(struct pcmcia_so msleep(initial_delay * 10); - for (i = 0; i < 100; i++) { + end_time = jiffies + msecs_to_jiffies(10000); + while (time_before(jiffies, end_time)) { skt->ops->get_status(skt, &status); if (!(status & SS_DETECT)) return CS_NO_CARD; --- a/drivers/pnp/pnpbios/rsparser.c +++ b/drivers/pnp/pnpbios/rsparser.c @@ -477,14 +477,12 @@ pnpbios_parse_resource_option_data(unsig * Compatible Device IDs */ -#define HEX(id,a) hex[((id)>>a) & 15] +#define HEX(id,a) small_digits[((id)>>a) & 15] #define CHAR(id,a) (0x40 + (((id)>>a) & 31)) // void pnpid32_to_pnpid(u32 id, char *str) { - const char *hex = "0123456789abcdef"; - id = be32_to_cpu(id); str[0] = CHAR(id, 26); str[1] = CHAR(id, 21); --- a/drivers/s390/net/lcs.c +++ b/drivers/s390/net/lcs.c @@ -1643,10 +1643,11 @@ lcs_detect(struct lcs_card *card) static int lcs_resetcard(struct lcs_card *card) { - int retries; + unsigned long end_time; LCS_DBF_TEXT(2, trace, "rescard"); - for (retries = 0; retries < 10; retries++) { + end_time = jiffies + msecs_to_jiffies(30000); + while (time_before(jiffies, end_time)) { if (lcs_detect(card) == 0) { netif_wake_queue(card->dev); card->state = DEV_STATE_UP; --- a/drivers/sbus/char/bbc_i2c.c +++ b/drivers/sbus/char/bbc_i2c.c @@ -181,12 +181,13 @@ void bbc_i2c_detach(struct bbc_i2c_clien static int wait_for_pin(struct bbc_i2c_bus *bp, u8 *status) { DECLARE_WAITQUEUE(wait, current); - int limit = 32; int ret = 1; + unsigned long end_time; bp->waiting = 1; add_wait_queue(&bp->wq, &wait); - while (limit-- > 0) { + end_time = jiffies + msecs_to_jiffies(32 * 250); + while (time_before(jiffies, end_time)) { u8 val; set_current_state(TASK_INTERRUPTIBLE); --- a/drivers/scsi/BusLogic.c +++ b/drivers/scsi/BusLogic.c @@ -41,6 +41,8 @@ #include #include #include +#include +#include #include #include @@ -676,7 +678,7 @@ static int __init BusLogic_InitializeMul if (pci_enable_device(PCI_Device)) continue; - if (pci_set_dma_mask(PCI_Device, (u64) 0xffffffff)) + if (pci_set_dma_mask(PCI_Device, DMA_32BIT_MASK)) continue; Bus = PCI_Device->bus->number; @@ -831,7 +833,7 @@ static int __init BusLogic_InitializeMul if (pci_enable_device(PCI_Device)) continue; - if (pci_set_dma_mask(PCI_Device, (u64) 0xffffffff)) + if (pci_set_dma_mask(PCI_Device, DMA_32BIT_MASK)) continue; Bus = PCI_Device->bus->number; @@ -885,7 +887,7 @@ static int __init BusLogic_InitializeFla if (pci_enable_device(PCI_Device)) continue; - if (pci_set_dma_mask(PCI_Device, (u64) 0xffffffff)) + if (pci_set_dma_mask(PCI_Device, DMA_32BIT_MASK)) continue; Bus = PCI_Device->bus->number; @@ -2896,7 +2898,7 @@ static int BusLogic_QueueCommand(struct */ if (HostAdapter->ActiveCommands[TargetID] == 0) HostAdapter->LastSequencePoint[TargetID] = jiffies; - else if (jiffies - HostAdapter->LastSequencePoint[TargetID] > 4 * HZ) { + else if (time_after(jiffies, HostAdapter->LastSequencePoint[TargetID] + 4 * HZ)) { HostAdapter->LastSequencePoint[TargetID] = jiffies; QueueTag = BusLogic_OrderedQueueTag; } --- a/drivers/scsi/FlashPoint.c +++ b/drivers/scsi/FlashPoint.c @@ -15,116 +15,46 @@ */ - #include - #ifndef CONFIG_SCSI_OMIT_FLASHPOINT - #define MAX_CARDS 8 #undef BUSTYPE_PCI - -#define OS_InPortByte(port) inb(port) -#define OS_InPortWord(port) inw(port) -#define OS_InPortLong(port) inl(port) -#define OS_OutPortByte(port, value) outb(value, port) -#define OS_OutPortWord(port, value) outw(value, port) -#define OS_OutPortLong(port, value) outl(value, port) - - -/* - Define name replacements for compatibility with the Linux BusLogic Driver. -*/ - -#define SccbMgr_sense_adapter FlashPoint_ProbeHostAdapter -#define SccbMgr_config_adapter FlashPoint_HardwareResetHostAdapter -#define SccbMgr_unload_card FlashPoint_ReleaseHostAdapter -#define SccbMgr_start_sccb FlashPoint_StartCCB -#define SccbMgr_abort_sccb FlashPoint_AbortCCB -#define SccbMgr_my_int FlashPoint_InterruptPending -#define SccbMgr_isr FlashPoint_HandleInterrupt - - -#define MAX_CDBLEN 12 - -#define SCAM_LEV_2 1 - #define CRCMASK 0xA001 -#define BL_VENDOR_ID 0x104B -#define FP_DEVICE_ID 0x8130 -#define MM_DEVICE_ID 0x1040 - - #define FAILURE 0xFFFFFFFFL +#define BIT(x) ((unsigned char)(1<<(x))) /* single-bit mask in bit position x */ +#define BITW(x) ((unsigned short)(1<<(x))) /* single-bit mask in bit position x */ -typedef unsigned char UCHAR; -typedef unsigned short USHORT; -typedef unsigned int UINT; -typedef unsigned long ULONG; -typedef unsigned char * PUCHAR; -typedef unsigned short* PUSHORT; -typedef unsigned long * PULONG; -typedef void * PVOID; - - -typedef unsigned char * uchar_ptr; -typedef unsigned short * ushort_ptr; -typedef unsigned long * ulong_ptr; - - -#define s08bits char -#define s16bits short -#define s32bits long - -#define u08bits unsigned s08bits -#define u16bits unsigned s16bits -#define u32bits unsigned s32bits - -typedef u08bits * pu08bits; -typedef u16bits * pu16bits; -typedef u32bits * pu32bits; - - -#define BIT(x) ((UCHAR)(1<<(x))) /* single-bit mask in bit position x */ -#define BITW(x) ((USHORT)(1<<(x))) /* single-bit mask in bit position x */ - - - - -typedef struct _SCCB *PSCCB; -typedef void (*CALL_BK_FN)(PSCCB); - - -typedef struct SCCBMgr_info { - ULONG si_baseaddr; - UCHAR si_present; - UCHAR si_intvect; - UCHAR si_id; - UCHAR si_lun; - USHORT si_fw_revision; - USHORT si_per_targ_init_sync; - USHORT si_per_targ_fast_nego; - USHORT si_per_targ_ultra_nego; - USHORT si_per_targ_no_disc; - USHORT si_per_targ_wide_nego; - USHORT si_flags; - UCHAR si_card_family; - UCHAR si_bustype; - UCHAR si_card_model[3]; - UCHAR si_relative_cardnum; - UCHAR si_reserved[4]; - ULONG si_OS_reserved; - UCHAR si_XlatInfo[4]; - ULONG si_reserved2[5]; - ULONG si_secondary_range; -} SCCBMGR_INFO; - -typedef SCCBMGR_INFO * PSCCBMGR_INFO; +struct sccb; +typedef void (*CALL_BK_FN) (struct sccb *); +struct sccb_mgr_info { + unsigned long si_baseaddr; + unsigned char si_present; + unsigned char si_intvect; + unsigned char si_id; + unsigned char si_lun; + unsigned short si_fw_revision; + unsigned short si_per_targ_init_sync; + unsigned short si_per_targ_fast_nego; + unsigned short si_per_targ_ultra_nego; + unsigned short si_per_targ_no_disc; + unsigned short si_per_targ_wide_nego; + unsigned short si_flags; + unsigned char si_card_family; + unsigned char si_bustype; + unsigned char si_card_model[3]; + unsigned char si_relative_cardnum; + unsigned char si_reserved[4]; + unsigned long si_OS_reserved; + unsigned char si_XlatInfo[4]; + unsigned long si_reserved2[5]; + unsigned long si_secondary_range; +}; #define SCSI_PARITY_ENA 0x0001 #define LOW_BYTE_TERM 0x0010 @@ -138,107 +68,81 @@ typedef SCCBMGR_INFO * PSCCBMGR_INF #define FLAG_SCAM_ENABLED 0x0080 #define FLAG_SCAM_LEVEL2 0x0100 - - - #define HARPOON_FAMILY 0x02 - -#define ISA_BUS_CARD 0x01 -#define EISA_BUS_CARD 0x02 -#define PCI_BUS_CARD 0x03 -#define VESA_BUS_CARD 0x04 - /* SCCB struct used for both SCCB and UCB manager compiles! * The UCB Manager treats the SCCB as it's 'native hardware structure' */ - #pragma pack(1) -typedef struct _SCCB { - UCHAR OperationCode; - UCHAR ControlByte; - UCHAR CdbLength; - UCHAR RequestSenseLength; - ULONG DataLength; - ULONG DataPointer; - UCHAR CcbRes[2]; - UCHAR HostStatus; - UCHAR TargetStatus; - UCHAR TargID; - UCHAR Lun; - UCHAR Cdb[12]; - UCHAR CcbRes1; - UCHAR Reserved1; - ULONG Reserved2; - ULONG SensePointer; - - - CALL_BK_FN SccbCallback; /* VOID (*SccbCallback)(); */ - ULONG SccbIOPort; /* Identifies board base port */ - UCHAR SccbStatus; - UCHAR SCCBRes2; - USHORT SccbOSFlags; - - - ULONG Sccb_XferCnt; /* actual transfer count */ - ULONG Sccb_ATC; - ULONG SccbVirtDataPtr; /* virtual addr for OS/2 */ - ULONG Sccb_res1; - USHORT Sccb_MGRFlags; - USHORT Sccb_sgseg; - UCHAR Sccb_scsimsg; /* identify msg for selection */ - UCHAR Sccb_tag; - UCHAR Sccb_scsistat; - UCHAR Sccb_idmsg; /* image of last msg in */ - PSCCB Sccb_forwardlink; - PSCCB Sccb_backlink; - ULONG Sccb_savedATC; - UCHAR Save_Cdb[6]; - UCHAR Save_CdbLen; - UCHAR Sccb_XferState; - ULONG Sccb_SGoffset; - } SCCB; - -#define SCCB_SIZE sizeof(SCCB) +struct sccb { + unsigned char OperationCode; + unsigned char ControlByte; + unsigned char CdbLength; + unsigned char RequestSenseLength; + unsigned long DataLength; + unsigned long DataPointer; + unsigned char CcbRes[2]; + unsigned char HostStatus; + unsigned char TargetStatus; + unsigned char TargID; + unsigned char Lun; + unsigned char Cdb[12]; + unsigned char CcbRes1; + unsigned char Reserved1; + unsigned long Reserved2; + unsigned long SensePointer; + + CALL_BK_FN SccbCallback; /* VOID (*SccbCallback)(); */ + unsigned long SccbIOPort; /* Identifies board base port */ + unsigned char SccbStatus; + unsigned char SCCBRes2; + unsigned short SccbOSFlags; + + unsigned long Sccb_XferCnt; /* actual transfer count */ + unsigned long Sccb_ATC; + unsigned long SccbVirtDataPtr; /* virtual addr for OS/2 */ + unsigned long Sccb_res1; + unsigned short Sccb_MGRFlags; + unsigned short Sccb_sgseg; + unsigned char Sccb_scsimsg; /* identify msg for selection */ + unsigned char Sccb_tag; + unsigned char Sccb_scsistat; + unsigned char Sccb_idmsg; /* image of last msg in */ + struct sccb *Sccb_forwardlink; + struct sccb *Sccb_backlink; + unsigned long Sccb_savedATC; + unsigned char Save_Cdb[6]; + unsigned char Save_CdbLen; + unsigned char Sccb_XferState; + unsigned long Sccb_SGoffset; +}; #pragma pack() - - -#define SCSI_INITIATOR_COMMAND 0x00 -#define TARGET_MODE_COMMAND 0x01 #define SCATTER_GATHER_COMMAND 0x02 #define RESIDUAL_COMMAND 0x03 #define RESIDUAL_SG_COMMAND 0x04 #define RESET_COMMAND 0x81 +#define F_USE_CMD_Q 0x20 /*Inidcates TAGGED command. */ +#define TAG_TYPE_MASK 0xC0 /*Type of tag msg to send. */ +#define SCCB_DATA_XFER_OUT 0x10 /* Write */ +#define SCCB_DATA_XFER_IN 0x08 /* Read */ -#define F_USE_CMD_Q 0x20 /*Inidcates TAGGED command. */ -#define TAG_TYPE_MASK 0xC0 /*Type of tag msg to send. */ -#define TAG_Q_MASK 0xE0 -#define SCCB_DATA_XFER_OUT 0x10 /* Write */ -#define SCCB_DATA_XFER_IN 0x08 /* Read */ - - -#define FOURTEEN_BYTES 0x00 /* Request Sense Buffer size */ -#define NO_AUTO_REQUEST_SENSE 0x01 /* No Request Sense Buffer */ - +#define NO_AUTO_REQUEST_SENSE 0x01 /* No Request Sense Buffer */ -#define BUS_FREE_ST 0 +#define BUS_FREE_ST 0 #define SELECT_ST 1 -#define SELECT_BDR_ST 2 /* Select w\ Bus Device Reset */ -#define SELECT_SN_ST 3 /* Select w\ Sync Nego */ -#define SELECT_WN_ST 4 /* Select w\ Wide Data Nego */ -#define SELECT_Q_ST 5 /* Select w\ Tagged Q'ing */ +#define SELECT_BDR_ST 2 /* Select w\ Bus Device Reset */ +#define SELECT_SN_ST 3 /* Select w\ Sync Nego */ +#define SELECT_WN_ST 4 /* Select w\ Wide Data Nego */ +#define SELECT_Q_ST 5 /* Select w\ Tagged Q'ing */ #define COMMAND_ST 6 #define DATA_OUT_ST 7 #define DATA_IN_ST 8 #define DISCONNECT_ST 9 -#define STATUS_ST 10 #define ABORT_ST 11 -#define MESSAGE_ST 12 - #define F_HOST_XFER_DIR 0x01 #define F_ALL_XFERRED 0x02 @@ -247,163 +151,115 @@ typedef struct _SCCB { #define F_ODD_BALL_CNT 0x10 #define F_NO_DATA_YET 0x80 - #define F_STATUSLOADED 0x01 -#define F_MSGLOADED 0x02 #define F_DEV_SELECTED 0x04 - -#define SCCB_COMPLETE 0x00 /* SCCB completed without error */ +#define SCCB_COMPLETE 0x00 /* SCCB completed without error */ #define SCCB_DATA_UNDER_RUN 0x0C -#define SCCB_SELECTION_TIMEOUT 0x11 /* Set SCSI selection timed out */ +#define SCCB_SELECTION_TIMEOUT 0x11 /* Set SCSI selection timed out */ #define SCCB_DATA_OVER_RUN 0x12 -#define SCCB_UNEXPECTED_BUS_FREE 0x13 /* Target dropped SCSI BSY */ -#define SCCB_PHASE_SEQUENCE_FAIL 0x14 /* Target bus phase sequence failure */ - -#define SCCB_INVALID_OP_CODE 0x16 /* SCCB invalid operation code */ -#define SCCB_INVALID_SCCB 0x1A /* Invalid SCCB - bad parameter */ -#define SCCB_GROSS_FW_ERR 0x27 /* Major problem! */ -#define SCCB_BM_ERR 0x30 /* BusMaster error. */ -#define SCCB_PARITY_ERR 0x34 /* SCSI parity error */ - - - -#define SCCB_INVALID_DIRECTION 0x18 /* Invalid target direction */ -#define SCCB_DUPLICATE_SCCB 0x19 /* Duplicate SCCB */ -#define SCCB_SCSI_RST 0x35 /* SCSI RESET detected. */ +#define SCCB_PHASE_SEQUENCE_FAIL 0x14 /* Target bus phase sequence failure */ +#define SCCB_GROSS_FW_ERR 0x27 /* Major problem! */ +#define SCCB_BM_ERR 0x30 /* BusMaster error. */ +#define SCCB_PARITY_ERR 0x34 /* SCSI parity error */ #define SCCB_IN_PROCESS 0x00 #define SCCB_SUCCESS 0x01 #define SCCB_ABORT 0x02 -#define SCCB_NOT_FOUND 0x03 #define SCCB_ERROR 0x04 -#define SCCB_INVALID 0x05 - -#define SCCB_SIZE sizeof(SCCB) - #define ORION_FW_REV 3110 -#define HARP_REVD 1 - - -#define QUEUE_DEPTH 254+1 /*1 for Normal disconnect 32 for Q'ing. */ - -#define MAX_MB_CARDS 4 /* Max. no of cards suppoerted on Mother Board */ +#define QUEUE_DEPTH 254+1 /*1 for Normal disconnect 32 for Q'ing. */ -#define WIDE_SCSI 1 +#define MAX_MB_CARDS 4 /* Max. no of cards suppoerted on Mother Board */ #define MAX_SCSI_TAR 16 #define MAX_LUN 32 #define LUN_MASK 0x1f -#if defined(HARP_REVA) -#define SG_BUF_CNT 15 /*Number of prefetched elements. */ -#else -#define SG_BUF_CNT 16 /*Number of prefetched elements. */ -#endif - -#define SG_ELEMENT_SIZE 8 /*Eight byte per element. */ -#define SG_LOCAL_MASK 0x00000000L -#define SG_ELEMENT_MASK 0xFFFFFFFFL - - -#define RD_HARPOON(ioport) OS_InPortByte((u32bits)ioport) -#define RDW_HARPOON(ioport) OS_InPortWord((u32bits)ioport) -#define RD_HARP32(ioport,offset,data) (data = OS_InPortLong((u32bits)(ioport + offset))) -#define WR_HARPOON(ioport,val) OS_OutPortByte((u32bits)ioport,(u08bits) val) -#define WRW_HARPOON(ioport,val) OS_OutPortWord((u32bits)ioport,(u16bits)val) -#define WR_HARP32(ioport,offset,data) OS_OutPortLong((u32bits)(ioport + offset), data) +#define SG_BUF_CNT 16 /*Number of prefetched elements. */ +#define SG_ELEMENT_SIZE 8 /*Eight byte per element. */ + +#define RD_HARPOON(ioport) inb((u32)ioport) +#define RDW_HARPOON(ioport) inw((u32)ioport) +#define RD_HARP32(ioport,offset,data) (data = inl((u32)(ioport + offset))) +#define WR_HARPOON(ioport,val) outb((u8) val, (u32)ioport) +#define WRW_HARPOON(ioport,val) outw((u16)val, (u32)ioport) +#define WR_HARP32(ioport,offset,data) outl(data, (u32)(ioport + offset)) #define TAR_SYNC_MASK (BIT(7)+BIT(6)) -#define SYNC_UNKNOWN 0x00 #define SYNC_TRYING BIT(6) #define SYNC_SUPPORTED (BIT(7)+BIT(6)) #define TAR_WIDE_MASK (BIT(5)+BIT(4)) -#define WIDE_DISABLED 0x00 #define WIDE_ENABLED BIT(4) #define WIDE_NEGOCIATED BIT(5) #define TAR_TAG_Q_MASK (BIT(3)+BIT(2)) -#define TAG_Q_UNKNOWN 0x00 #define TAG_Q_TRYING BIT(2) #define TAG_Q_REJECT BIT(3) -#define TAG_Q_SUPPORTED (BIT(3)+BIT(2)) #define TAR_ALLOW_DISC BIT(0) - #define EE_SYNC_MASK (BIT(0)+BIT(1)) -#define EE_SYNC_ASYNC 0x00 #define EE_SYNC_5MB BIT(0) #define EE_SYNC_10MB BIT(1) #define EE_SYNC_20MB (BIT(0)+BIT(1)) -#define EE_ALLOW_DISC BIT(6) #define EE_WIDE_SCSI BIT(7) +struct sccb_mgr_tar_info { -typedef struct SCCBMgr_tar_info *PSCCBMgr_tar_info; - - -typedef struct SCCBMgr_tar_info { - - PSCCB TarSelQ_Head; - PSCCB TarSelQ_Tail; - UCHAR TarLUN_CA; /*Contingent Allgiance */ - UCHAR TarTagQ_Cnt; - UCHAR TarSelQ_Cnt; - UCHAR TarStatus; - UCHAR TarEEValue; - UCHAR TarSyncCtrl; - UCHAR TarReserved[2]; /* for alignment */ - UCHAR LunDiscQ_Idx[MAX_LUN]; - UCHAR TarLUNBusy[MAX_LUN]; -} SCCBMGR_TAR_INFO; - -typedef struct NVRAMInfo { - UCHAR niModel; /* Model No. of card */ - UCHAR niCardNo; /* Card no. */ - ULONG niBaseAddr; /* Port Address of card */ - UCHAR niSysConf; /* Adapter Configuration byte - Byte 16 of eeprom map */ - UCHAR niScsiConf; /* SCSI Configuration byte - Byte 17 of eeprom map */ - UCHAR niScamConf; /* SCAM Configuration byte - Byte 20 of eeprom map */ - UCHAR niAdapId; /* Host Adapter ID - Byte 24 of eerpom map */ - UCHAR niSyncTbl[MAX_SCSI_TAR / 2]; /* Sync/Wide byte of targets */ - UCHAR niScamTbl[MAX_SCSI_TAR][4]; /* Compressed Scam name string of Targets */ -}NVRAMINFO; - -typedef NVRAMINFO *PNVRamInfo; + struct sccb *TarSelQ_Head; + struct sccb *TarSelQ_Tail; + unsigned char TarLUN_CA; /*Contingent Allgiance */ + unsigned char TarTagQ_Cnt; + unsigned char TarSelQ_Cnt; + unsigned char TarStatus; + unsigned char TarEEValue; + unsigned char TarSyncCtrl; + unsigned char TarReserved[2]; /* for alignment */ + unsigned char LunDiscQ_Idx[MAX_LUN]; + unsigned char TarLUNBusy[MAX_LUN]; +}; + +struct nvram_info { + unsigned char niModel; /* Model No. of card */ + unsigned char niCardNo; /* Card no. */ + unsigned long niBaseAddr; /* Port Address of card */ + unsigned char niSysConf; /* Adapter Configuration byte - Byte 16 of eeprom map */ + unsigned char niScsiConf; /* SCSI Configuration byte - Byte 17 of eeprom map */ + unsigned char niScamConf; /* SCAM Configuration byte - Byte 20 of eeprom map */ + unsigned char niAdapId; /* Host Adapter ID - Byte 24 of eerpom map */ + unsigned char niSyncTbl[MAX_SCSI_TAR / 2]; /* Sync/Wide byte of targets */ + unsigned char niScamTbl[MAX_SCSI_TAR][4]; /* Compressed Scam name string of Targets */ +}; #define MODEL_LT 1 #define MODEL_DL 2 #define MODEL_LW 3 #define MODEL_DW 4 +struct sccb_card { + struct sccb *currentSCCB; + struct sccb_mgr_info *cardInfo; + + unsigned long ioPort; + + unsigned short cmdCounter; + unsigned char discQCount; + unsigned char tagQ_Lst; + unsigned char cardIndex; + unsigned char scanIndex; + unsigned char globalFlags; + unsigned char ourId; + struct nvram_info *pNvRamInfo; + struct sccb *discQ_Tbl[QUEUE_DEPTH]; -typedef struct SCCBcard { - PSCCB currentSCCB; - PSCCBMGR_INFO cardInfo; - - ULONG ioPort; - - USHORT cmdCounter; - UCHAR discQCount; - UCHAR tagQ_Lst; - UCHAR cardIndex; - UCHAR scanIndex; - UCHAR globalFlags; - UCHAR ourId; - PNVRamInfo pNvRamInfo; - PSCCB discQ_Tbl[QUEUE_DEPTH]; - -}SCCBCARD; - -typedef struct SCCBcard *PSCCBcard; - +}; #define F_TAG_STARTED 0x01 #define F_CONLUN_IO 0x02 @@ -414,13 +270,10 @@ typedef struct SCCBcard *PSCCBcard; #define F_NEW_SCCB_CMD 0x40 #define F_UPDATE_EEPROM 0x80 - #define ID_STRING_LENGTH 32 -#define TYPE_CODE0 0x63 /*Level2 Mstr (bits 7-6), */ - -#define TYPE_CODE1 00 /*No ID yet */ +#define TYPE_CODE0 0x63 /*Level2 Mstr (bits 7-6), */ -#define SLV_TYPE_CODE0 0xA3 /*Priority Bit set (bits 7-6), */ +#define SLV_TYPE_CODE0 0xA3 /*Priority Bit set (bits 7-6), */ #define ASSIGN_ID 0x00 #define SET_P_FLAG 0x01 @@ -430,97 +283,42 @@ typedef struct SCCBcard *PSCCBcard; #define ID_0_7 0x18 #define ID_8_F 0x11 -#define ID_10_17 0x12 -#define ID_18_1F 0x0B #define MISC_CODE 0x14 #define CLR_P_FLAG 0x18 -#define LOCATE_ON 0x12 -#define LOCATE_OFF 0x0B - -#define LVL_1_MST 0x00 -#define LVL_2_MST 0x40 -#define DOM_LVL_2 0xC0 - #define INIT_SELTD 0x01 #define LEVEL2_TAR 0x02 - -enum scam_id_st { ID0,ID1,ID2,ID3,ID4,ID5,ID6,ID7,ID8,ID9,ID10,ID11,ID12, - ID13,ID14,ID15,ID_UNUSED,ID_UNASSIGNED,ID_ASSIGNED,LEGACY, - CLR_PRIORITY,NO_ID_AVAIL }; +enum scam_id_st { ID0, ID1, ID2, ID3, ID4, ID5, ID6, ID7, ID8, ID9, ID10, ID11, + ID12, + ID13, ID14, ID15, ID_UNUSED, ID_UNASSIGNED, ID_ASSIGNED, LEGACY, + CLR_PRIORITY, NO_ID_AVAIL +}; typedef struct SCCBscam_info { - UCHAR id_string[ID_STRING_LENGTH]; - enum scam_id_st state; - -} SCCBSCAM_INFO, *PSCCBSCAM_INFO; + unsigned char id_string[ID_STRING_LENGTH]; + enum scam_id_st state; +} SCCBSCAM_INFO; -#define SCSI_TEST_UNIT_READY 0x00 -#define SCSI_REZERO_UNIT 0x01 #define SCSI_REQUEST_SENSE 0x03 -#define SCSI_FORMAT_UNIT 0x04 -#define SCSI_REASSIGN 0x07 #define SCSI_READ 0x08 #define SCSI_WRITE 0x0A -#define SCSI_SEEK 0x0B -#define SCSI_INQUIRY 0x12 -#define SCSI_MODE_SELECT 0x15 -#define SCSI_RESERVE_UNIT 0x16 -#define SCSI_RELEASE_UNIT 0x17 -#define SCSI_MODE_SENSE 0x1A #define SCSI_START_STOP_UNIT 0x1B -#define SCSI_SEND_DIAGNOSTIC 0x1D -#define SCSI_READ_CAPACITY 0x25 #define SCSI_READ_EXTENDED 0x28 #define SCSI_WRITE_EXTENDED 0x2A -#define SCSI_SEEK_EXTENDED 0x2B #define SCSI_WRITE_AND_VERIFY 0x2E -#define SCSI_VERIFY 0x2F -#define SCSI_READ_DEFECT_DATA 0x37 -#define SCSI_WRITE_BUFFER 0x3B -#define SCSI_READ_BUFFER 0x3C -#define SCSI_RECV_DIAGNOSTIC 0x1C -#define SCSI_READ_LONG 0x3E -#define SCSI_WRITE_LONG 0x3F -#define SCSI_LAST_SCSI_CMND SCSI_WRITE_LONG -#define SCSI_INVALID_CMND 0xFF - - #define SSGOOD 0x00 #define SSCHECK 0x02 -#define SSCOND_MET 0x04 -#define SSBUSY 0x08 -#define SSRESERVATION_CONFLICT 0x18 -#define SSCMD_TERM 0x22 #define SSQ_FULL 0x28 - -#define SKNO_SEN 0x00 -#define SKRECOV_ERR 0x01 -#define SKNOT_RDY 0x02 -#define SKMED_ERR 0x03 -#define SKHW_ERR 0x04 -#define SKILL_REQ 0x05 -#define SKUNIT_ATTN 0x06 -#define SKDATA_PROTECT 0x07 -#define SKBLNK_CHK 0x08 -#define SKCPY_ABORT 0x0A -#define SKABORT_CMD 0x0B -#define SKEQUAL 0x0C -#define SKVOL_OVF 0x0D -#define SKMIS_CMP 0x0E - - #define SMCMD_COMP 0x00 #define SMEXT 0x01 #define SMSAVE_DATA_PTR 0x02 #define SMREST_DATA_PTR 0x03 #define SMDISC 0x04 -#define SMINIT_DETEC_ERR 0x05 #define SMABORT 0x06 #define SMREJECT 0x07 #define SMNO_OP 0x08 @@ -533,62 +331,31 @@ typedef struct SCCBscam_info { #define SMIDENT 0x80 #define DISC_PRIV 0x40 - #define SMSYNC 0x01 -#define SM10MBS 0x19 /* 100ns */ -#define SM5MBS 0x32 /* 200ns */ -#define SMOFFSET 0x0F /* Maxoffset value */ #define SMWDTR 0x03 #define SM8BIT 0x00 #define SM16BIT 0x01 -#define SM32BIT 0x02 -#define SMIGNORWR 0x23 /* Ignore Wide Residue */ - - -#define ARBITRATION_DELAY 0x01 /* 2.4us using a 40Mhz clock */ -#define BUS_SETTLE_DELAY 0x01 /* 400ns */ -#define BUS_CLEAR_DELAY 0x01 /* 800ns */ - - - -#define SPHASE_TO 0x0A /* 10 second timeout waiting for */ -#define SCMD_TO 0x0F /* Overall command timeout */ - - +#define SMIGNORWR 0x23 /* Ignore Wide Residue */ #define SIX_BYTE_CMD 0x06 -#define TEN_BYTE_CMD 0x0A #define TWELVE_BYTE_CMD 0x0C #define ASYNC 0x00 -#define PERI25NS 0x06 /* 25/4ns to next clock for xbow. */ -#define SYNC10MBS 0x19 -#define SYNC5MBS 0x32 -#define MAX_OFFSET 0x0F /* Maxbyteoffset for Sync Xfers */ - +#define MAX_OFFSET 0x0F /* Maxbyteoffset for Sync Xfers */ #define EEPROM_WD_CNT 256 #define EEPROM_CHECK_SUM 0 #define FW_SIGNATURE 2 #define MODEL_NUMB_0 4 -#define MODEL_NUMB_1 5 #define MODEL_NUMB_2 6 -#define MODEL_NUMB_3 7 #define MODEL_NUMB_4 8 -#define MODEL_NUMB_5 9 -#define IO_BASE_ADDR 10 -#define IRQ_NUMBER 12 -#define PCI_INT_PIN 13 -#define BUS_DELAY 14 /*On time in byte 14 off delay in 15 */ #define SYSTEM_CONFIG 16 #define SCSI_CONFIG 17 #define BIOS_CONFIG 18 -#define SPIN_UP_DELAY 19 #define SCAM_CONFIG 20 #define ADAPTER_SCSI_ID 24 - #define IGNORE_B_SCAN 32 #define SEND_START_ENA 34 #define DEVICE_ENABLE 36 @@ -603,717 +370,405 @@ typedef struct SCCBscam_info { #define SYNC_RATE_TBLcd 50 #define SYNC_RATE_TBLef 52 +#define EE_SCAMBASE 256 +#define SCAM_ENABLED BIT(2) +#define SCAM_LEVEL2 BIT(3) -#define EE_SCAMBASE 256 +#define RENEGO_ENA BITW(10) +#define CONNIO_ENA BITW(11) +#define GREEN_PC_ENA BITW(12) +#define AUTO_RATE_00 00 +#define AUTO_RATE_05 01 +#define AUTO_RATE_10 02 +#define AUTO_RATE_20 03 +#define WIDE_NEGO_BIT BIT(7) +#define DISC_ENABLE_BIT BIT(6) - #define DOM_MASTER (BIT(0) + BIT(1)) - #define SCAM_ENABLED BIT(2) - #define SCAM_LEVEL2 BIT(3) +#define hp_vendor_id_0 0x00 /* LSB */ +#define ORION_VEND_0 0x4B +#define hp_vendor_id_1 0x01 /* MSB */ +#define ORION_VEND_1 0x10 - #define RENEGO_ENA BITW(10) - #define CONNIO_ENA BITW(11) - #define GREEN_PC_ENA BITW(12) +#define hp_device_id_0 0x02 /* LSB */ +#define ORION_DEV_0 0x30 - - #define AUTO_RATE_00 00 - #define AUTO_RATE_05 01 - #define AUTO_RATE_10 02 - #define AUTO_RATE_20 03 - - #define WIDE_NEGO_BIT BIT(7) - #define DISC_ENABLE_BIT BIT(6) - - - - #define hp_vendor_id_0 0x00 /* LSB */ - #define ORION_VEND_0 0x4B - - #define hp_vendor_id_1 0x01 /* MSB */ - #define ORION_VEND_1 0x10 - - #define hp_device_id_0 0x02 /* LSB */ - #define ORION_DEV_0 0x30 - - #define hp_device_id_1 0x03 /* MSB */ - #define ORION_DEV_1 0x81 +#define hp_device_id_1 0x03 /* MSB */ +#define ORION_DEV_1 0x81 /* Sub Vendor ID and Sub Device ID only available in - Harpoon Version 2 and higher */ - - #define hp_sub_vendor_id_0 0x04 /* LSB */ - #define hp_sub_vendor_id_1 0x05 /* MSB */ - #define hp_sub_device_id_0 0x06 /* LSB */ - #define hp_sub_device_id_1 0x07 /* MSB */ - - - #define hp_dual_addr_lo 0x08 - #define hp_dual_addr_lmi 0x09 - #define hp_dual_addr_hmi 0x0A - #define hp_dual_addr_hi 0x0B - - #define hp_semaphore 0x0C - #define SCCB_MGR_ACTIVE BIT(0) - #define TICKLE_ME BIT(1) - #define SCCB_MGR_PRESENT BIT(3) - #define BIOS_IN_USE BIT(4) - - #define hp_user_defined_D 0x0D - - #define hp_reserved_E 0x0E - - #define hp_sys_ctrl 0x0F - - #define STOP_CLK BIT(0) /*Turn off BusMaster Clock */ - #define DRVR_RST BIT(1) /*Firmware Reset to 80C15 chip */ - #define HALT_MACH BIT(3) /*Halt State Machine */ - #define HARD_ABORT BIT(4) /*Hard Abort */ - #define DIAG_MODE BIT(5) /*Diagnostic Mode */ - - #define BM_ABORT_TMOUT 0x50 /*Halt State machine time out */ - - #define hp_sys_cfg 0x10 - - #define DONT_RST_FIFO BIT(7) /*Don't reset FIFO */ - - - #define hp_host_ctrl0 0x11 - - #define DUAL_ADDR_MODE BIT(0) /*Enable 64-bit addresses */ - #define IO_MEM_SPACE BIT(1) /*I/O Memory Space */ - #define RESOURCE_LOCK BIT(2) /*Enable Resource Lock */ - #define IGNOR_ACCESS_ERR BIT(3) /*Ignore Access Error */ - #define HOST_INT_EDGE BIT(4) /*Host interrupt level/edge mode sel */ - #define SIX_CLOCKS BIT(5) /*6 Clocks between Strobe */ - #define DMA_EVEN_PARITY BIT(6) /*Enable DMA Enen Parity */ - -/* - #define BURST_MODE BIT(0) -*/ + Harpoon Version 2 and higher */ - #define hp_reserved_12 0x12 +#define hp_sub_device_id_0 0x06 /* LSB */ - #define hp_host_blk_cnt 0x13 +#define hp_semaphore 0x0C +#define SCCB_MGR_ACTIVE BIT(0) +#define TICKLE_ME BIT(1) +#define SCCB_MGR_PRESENT BIT(3) +#define BIOS_IN_USE BIT(4) - #define XFER_BLK1 0x00 /* 0 0 0 1 byte per block*/ - #define XFER_BLK2 0x01 /* 0 0 1 2 byte per block*/ - #define XFER_BLK4 0x02 /* 0 1 0 4 byte per block*/ - #define XFER_BLK8 0x03 /* 0 1 1 8 byte per block*/ - #define XFER_BLK16 0x04 /* 1 0 0 16 byte per block*/ - #define XFER_BLK32 0x05 /* 1 0 1 32 byte per block*/ - #define XFER_BLK64 0x06 /* 1 1 0 64 byte per block*/ - - #define BM_THRESHOLD 0x40 /* PCI mode can only xfer 16 bytes*/ +#define hp_sys_ctrl 0x0F +#define STOP_CLK BIT(0) /*Turn off BusMaster Clock */ +#define DRVR_RST BIT(1) /*Firmware Reset to 80C15 chip */ +#define HALT_MACH BIT(3) /*Halt State Machine */ +#define HARD_ABORT BIT(4) /*Hard Abort */ - #define hp_reserved_14 0x14 - #define hp_reserved_15 0x15 - #define hp_reserved_16 0x16 +#define hp_host_blk_cnt 0x13 - #define hp_int_mask 0x17 +#define XFER_BLK64 0x06 /* 1 1 0 64 byte per block */ - #define INT_CMD_COMPL BIT(0) /* DMA command complete */ - #define INT_EXT_STATUS BIT(1) /* Extended Status Set */ - #define INT_SCSI BIT(2) /* Scsi block interrupt */ - #define INT_FIFO_RDY BIT(4) /* FIFO data ready */ +#define BM_THRESHOLD 0x40 /* PCI mode can only xfer 16 bytes */ +#define hp_int_mask 0x17 - #define hp_xfer_cnt_lo 0x18 - #define hp_xfer_cnt_mi 0x19 - #define hp_xfer_cnt_hi 0x1A - #define hp_xfer_cmd 0x1B +#define INT_CMD_COMPL BIT(0) /* DMA command complete */ +#define INT_EXT_STATUS BIT(1) /* Extended Status Set */ - #define XFER_HOST_DMA 0x00 /* 0 0 0 Transfer Host -> DMA */ - #define XFER_DMA_HOST 0x01 /* 0 0 1 Transfer DMA -> Host */ - #define XFER_HOST_MPU 0x02 /* 0 1 0 Transfer Host -> MPU */ - #define XFER_MPU_HOST 0x03 /* 0 1 1 Transfer MPU -> Host */ - #define XFER_DMA_MPU 0x04 /* 1 0 0 Transfer DMA -> MPU */ - #define XFER_MPU_DMA 0x05 /* 1 0 1 Transfer MPU -> DMA */ - #define SET_SEMAPHORE 0x06 /* 1 1 0 Set Semaphore */ - #define XFER_NOP 0x07 /* 1 1 1 Transfer NOP */ - #define XFER_MB_MPU 0x06 /* 1 1 0 Transfer MB -> MPU */ - #define XFER_MB_DMA 0x07 /* 1 1 1 Transfer MB -> DMA */ +#define hp_xfer_cnt_lo 0x18 +#define hp_xfer_cnt_hi 0x1A +#define hp_xfer_cmd 0x1B +#define XFER_HOST_DMA 0x00 /* 0 0 0 Transfer Host -> DMA */ +#define XFER_DMA_HOST 0x01 /* 0 0 1 Transfer DMA -> Host */ - #define XFER_HOST_AUTO 0x00 /* 0 0 Auto Transfer Size */ - #define XFER_HOST_8BIT 0x08 /* 0 1 8 BIT Transfer Size */ - #define XFER_HOST_16BIT 0x10 /* 1 0 16 BIT Transfer Size */ - #define XFER_HOST_32BIT 0x18 /* 1 1 32 BIT Transfer Size */ +#define XFER_HOST_AUTO 0x00 /* 0 0 Auto Transfer Size */ - #define XFER_DMA_8BIT 0x20 /* 0 1 8 BIT Transfer Size */ - #define XFER_DMA_16BIT 0x40 /* 1 0 16 BIT Transfer Size */ +#define XFER_DMA_8BIT 0x20 /* 0 1 8 BIT Transfer Size */ - #define DISABLE_INT BIT(7) /*Do not interrupt at end of cmd. */ +#define DISABLE_INT BIT(7) /*Do not interrupt at end of cmd. */ - #define HOST_WRT_CMD ((DISABLE_INT + XFER_HOST_DMA + XFER_HOST_AUTO + XFER_DMA_8BIT)) - #define HOST_RD_CMD ((DISABLE_INT + XFER_DMA_HOST + XFER_HOST_AUTO + XFER_DMA_8BIT)) - #define WIDE_HOST_WRT_CMD ((DISABLE_INT + XFER_HOST_DMA + XFER_HOST_AUTO + XFER_DMA_16BIT)) - #define WIDE_HOST_RD_CMD ((DISABLE_INT + XFER_DMA_HOST + XFER_HOST_AUTO + XFER_DMA_16BIT)) +#define HOST_WRT_CMD ((DISABLE_INT + XFER_HOST_DMA + XFER_HOST_AUTO + XFER_DMA_8BIT)) +#define HOST_RD_CMD ((DISABLE_INT + XFER_DMA_HOST + XFER_HOST_AUTO + XFER_DMA_8BIT)) - #define hp_host_addr_lo 0x1C - #define hp_host_addr_lmi 0x1D - #define hp_host_addr_hmi 0x1E - #define hp_host_addr_hi 0x1F +#define hp_host_addr_lo 0x1C +#define hp_host_addr_hmi 0x1E - #define hp_pio_data 0x20 - #define hp_reserved_21 0x21 - #define hp_ee_ctrl 0x22 +#define hp_ee_ctrl 0x22 - #define EXT_ARB_ACK BIT(7) - #define SCSI_TERM_ENA_H BIT(6) /* SCSI high byte terminator */ - #define SEE_MS BIT(5) - #define SEE_CS BIT(3) - #define SEE_CLK BIT(2) - #define SEE_DO BIT(1) - #define SEE_DI BIT(0) +#define EXT_ARB_ACK BIT(7) +#define SCSI_TERM_ENA_H BIT(6) /* SCSI high byte terminator */ +#define SEE_MS BIT(5) +#define SEE_CS BIT(3) +#define SEE_CLK BIT(2) +#define SEE_DO BIT(1) +#define SEE_DI BIT(0) - #define EE_READ 0x06 - #define EE_WRITE 0x05 - #define EWEN 0x04 - #define EWEN_ADDR 0x03C0 - #define EWDS 0x04 - #define EWDS_ADDR 0x0000 +#define EE_READ 0x06 +#define EE_WRITE 0x05 +#define EWEN 0x04 +#define EWEN_ADDR 0x03C0 +#define EWDS 0x04 +#define EWDS_ADDR 0x0000 - #define hp_brdctl 0x23 +#define hp_bm_ctrl 0x26 - #define DAT_7 BIT(7) - #define DAT_6 BIT(6) - #define DAT_5 BIT(5) - #define BRD_STB BIT(4) - #define BRD_CS BIT(3) - #define BRD_WR BIT(2) +#define SCSI_TERM_ENA_L BIT(0) /*Enable/Disable external terminators */ +#define FLUSH_XFER_CNTR BIT(1) /*Flush transfer counter */ +#define FORCE1_XFER BIT(5) /*Always xfer one byte in byte mode */ +#define FAST_SINGLE BIT(6) /*?? */ - #define hp_reserved_24 0x24 - #define hp_reserved_25 0x25 +#define BMCTRL_DEFAULT (FORCE1_XFER|FAST_SINGLE|SCSI_TERM_ENA_L) +#define hp_sg_addr 0x28 +#define hp_page_ctrl 0x29 +#define SCATTER_EN BIT(0) +#define SGRAM_ARAM BIT(1) +#define G_INT_DISABLE BIT(3) /* Enable/Disable all Interrupts */ +#define NARROW_SCSI_CARD BIT(4) /* NARROW/WIDE SCSI config pin */ +#define hp_pci_stat_cfg 0x2D - #define hp_bm_ctrl 0x26 +#define REC_MASTER_ABORT BIT(5) /*received Master abort */ - #define SCSI_TERM_ENA_L BIT(0) /*Enable/Disable external terminators */ - #define FLUSH_XFER_CNTR BIT(1) /*Flush transfer counter */ - #define BM_XFER_MIN_8 BIT(2) /*Enable bus master transfer of 9 */ - #define BIOS_ENA BIT(3) /*Enable BIOS/FLASH Enable */ - #define FORCE1_XFER BIT(5) /*Always xfer one byte in byte mode */ - #define FAST_SINGLE BIT(6) /*?? */ +#define hp_rev_num 0x33 - #define BMCTRL_DEFAULT (FORCE1_XFER|FAST_SINGLE|SCSI_TERM_ENA_L) +#define hp_stack_data 0x34 +#define hp_stack_addr 0x35 - #define hp_reserved_27 0x27 +#define hp_ext_status 0x36 - #define hp_sg_addr 0x28 - #define hp_page_ctrl 0x29 - - #define SCATTER_EN BIT(0) - #define SGRAM_ARAM BIT(1) - #define BIOS_SHADOW BIT(2) - #define G_INT_DISABLE BIT(3) /* Enable/Disable all Interrupts */ - #define NARROW_SCSI_CARD BIT(4) /* NARROW/WIDE SCSI config pin */ - - #define hp_reserved_2A 0x2A - #define hp_pci_cmd_cfg 0x2B - - #define IO_SPACE_ENA BIT(0) /*enable I/O space */ - #define MEM_SPACE_ENA BIT(1) /*enable memory space */ - #define BUS_MSTR_ENA BIT(2) /*enable bus master operation */ - #define MEM_WI_ENA BIT(4) /*enable Write and Invalidate */ - #define PAR_ERR_RESP BIT(6) /*enable parity error responce. */ - - #define hp_reserved_2C 0x2C - - #define hp_pci_stat_cfg 0x2D - - #define DATA_PARITY_ERR BIT(0) - #define REC_TARGET_ABORT BIT(4) /*received Target abort */ - #define REC_MASTER_ABORT BIT(5) /*received Master abort */ - #define SIG_SYSTEM_ERR BIT(6) - #define DETECTED_PAR_ERR BIT(7) - - #define hp_reserved_2E 0x2E - - #define hp_sys_status 0x2F - - #define SLV_DATA_RDY BIT(0) /*Slave data ready */ - #define XFER_CNT_ZERO BIT(1) /*Transfer counter = 0 */ - #define BM_FIFO_EMPTY BIT(2) /*FIFO empty */ - #define BM_FIFO_FULL BIT(3) /*FIFO full */ - #define HOST_OP_DONE BIT(4) /*host operation done */ - #define DMA_OP_DONE BIT(5) /*DMA operation done */ - #define SLV_OP_DONE BIT(6) /*Slave operation done */ - #define PWR_ON_FLAG BIT(7) /*Power on flag */ - - #define hp_reserved_30 0x30 - - #define hp_host_status0 0x31 - - #define HOST_TERM BIT(5) /*Host Terminal Count */ - #define HOST_TRSHLD BIT(6) /*Host Threshold */ - #define CONNECTED_2_HOST BIT(7) /*Connected to Host */ - - #define hp_reserved_32 0x32 - - #define hp_rev_num 0x33 - - #define REV_A_CONST 0x0E - #define REV_B_CONST 0x0E - - #define hp_stack_data 0x34 - #define hp_stack_addr 0x35 - - #define hp_ext_status 0x36 - - #define BM_FORCE_OFF BIT(0) /*Bus Master is forced to get off */ - #define PCI_TGT_ABORT BIT(0) /*PCI bus master transaction aborted */ - #define PCI_DEV_TMOUT BIT(1) /*PCI Device Time out */ - #define FIFO_TC_NOT_ZERO BIT(2) /*FIFO or transfer counter not zero */ - #define CHIP_RST_OCCUR BIT(3) /*Chip reset occurs */ - #define CMD_ABORTED BIT(4) /*Command aborted */ - #define BM_PARITY_ERR BIT(5) /*parity error on data received */ - #define PIO_OVERRUN BIT(6) /*Slave data overrun */ - #define BM_CMD_BUSY BIT(7) /*Bus master transfer command busy */ - #define BAD_EXT_STATUS (BM_FORCE_OFF | PCI_DEV_TMOUT | CMD_ABORTED | \ +#define BM_FORCE_OFF BIT(0) /*Bus Master is forced to get off */ +#define PCI_TGT_ABORT BIT(0) /*PCI bus master transaction aborted */ +#define PCI_DEV_TMOUT BIT(1) /*PCI Device Time out */ +#define CMD_ABORTED BIT(4) /*Command aborted */ +#define BM_PARITY_ERR BIT(5) /*parity error on data received */ +#define PIO_OVERRUN BIT(6) /*Slave data overrun */ +#define BM_CMD_BUSY BIT(7) /*Bus master transfer command busy */ +#define BAD_EXT_STATUS (BM_FORCE_OFF | PCI_DEV_TMOUT | CMD_ABORTED | \ BM_PARITY_ERR | PIO_OVERRUN) - #define hp_int_status 0x37 - - #define BM_CMD_CMPL BIT(0) /*Bus Master command complete */ - #define EXT_STATUS_ON BIT(1) /*Extended status is valid */ - #define SCSI_INTERRUPT BIT(2) /*Global indication of a SCSI int. */ - #define BM_FIFO_RDY BIT(4) - #define INT_ASSERTED BIT(5) /* */ - #define SRAM_BUSY BIT(6) /*Scatter/Gather RAM busy */ - #define CMD_REG_BUSY BIT(7) - - - #define hp_fifo_cnt 0x38 - #define hp_curr_host_cnt 0x39 - #define hp_reserved_3A 0x3A - #define hp_fifo_in_addr 0x3B - - #define hp_fifo_out_addr 0x3C - #define hp_reserved_3D 0x3D - #define hp_reserved_3E 0x3E - #define hp_reserved_3F 0x3F - - - - #define hp_intena 0x40 - - #define RESET BITW(7) - #define PROG_HLT BITW(6) - #define PARITY BITW(5) - #define FIFO BITW(4) - #define SEL BITW(3) - #define SCAM_SEL BITW(2) - #define RSEL BITW(1) - #define TIMEOUT BITW(0) - #define BUS_FREE BITW(15) - #define XFER_CNT_0 BITW(14) - #define PHASE BITW(13) - #define IUNKWN BITW(12) - #define ICMD_COMP BITW(11) - #define ITICKLE BITW(10) - #define IDO_STRT BITW(9) - #define ITAR_DISC BITW(8) - #define AUTO_INT (BITW(12)+BITW(11)+BITW(10)+BITW(9)+BITW(8)) - #define CLR_ALL_INT 0xFFFF - #define CLR_ALL_INT_1 0xFF00 - - #define hp_intstat 0x42 - - #define hp_scsisig 0x44 - - #define SCSI_SEL BIT(7) - #define SCSI_BSY BIT(6) - #define SCSI_REQ BIT(5) - #define SCSI_ACK BIT(4) - #define SCSI_ATN BIT(3) - #define SCSI_CD BIT(2) - #define SCSI_MSG BIT(1) - #define SCSI_IOBIT BIT(0) - - #define S_SCSI_PHZ (BIT(2)+BIT(1)+BIT(0)) - #define S_CMD_PH (BIT(2) ) - #define S_MSGO_PH (BIT(2)+BIT(1) ) - #define S_STAT_PH (BIT(2) +BIT(0)) - #define S_MSGI_PH (BIT(2)+BIT(1)+BIT(0)) - #define S_DATAI_PH ( BIT(0)) - #define S_DATAO_PH 0x00 - #define S_ILL_PH ( BIT(1) ) - - #define hp_scsictrl_0 0x45 - - #define NO_ARB BIT(7) - #define SEL_TAR BIT(6) - #define ENA_ATN BIT(4) - #define ENA_RESEL BIT(2) - #define SCSI_RST BIT(1) - #define ENA_SCAM_SEL BIT(0) - +#define hp_int_status 0x37 +#define EXT_STATUS_ON BIT(1) /*Extended status is valid */ +#define SCSI_INTERRUPT BIT(2) /*Global indication of a SCSI int. */ +#define INT_ASSERTED BIT(5) /* */ - #define hp_portctrl_0 0x46 +#define hp_fifo_cnt 0x38 - #define SCSI_PORT BIT(7) - #define SCSI_INBIT BIT(6) - #define DMA_PORT BIT(5) - #define DMA_RD BIT(4) - #define HOST_PORT BIT(3) - #define HOST_WRT BIT(2) - #define SCSI_BUS_EN BIT(1) - #define START_TO BIT(0) +#define hp_intena 0x40 - #define hp_scsireset 0x47 +#define RESET BITW(7) +#define PROG_HLT BITW(6) +#define PARITY BITW(5) +#define FIFO BITW(4) +#define SEL BITW(3) +#define SCAM_SEL BITW(2) +#define RSEL BITW(1) +#define TIMEOUT BITW(0) +#define BUS_FREE BITW(15) +#define XFER_CNT_0 BITW(14) +#define PHASE BITW(13) +#define IUNKWN BITW(12) +#define ICMD_COMP BITW(11) +#define ITICKLE BITW(10) +#define IDO_STRT BITW(9) +#define ITAR_DISC BITW(8) +#define AUTO_INT (BITW(12)+BITW(11)+BITW(10)+BITW(9)+BITW(8)) +#define CLR_ALL_INT 0xFFFF +#define CLR_ALL_INT_1 0xFF00 - #define SCSI_TAR BIT(7) - #define SCSI_INI BIT(6) - #define SCAM_EN BIT(5) - #define ACK_HOLD BIT(4) - #define DMA_RESET BIT(3) - #define HPSCSI_RESET BIT(2) - #define PROG_RESET BIT(1) - #define FIFO_CLR BIT(0) +#define hp_intstat 0x42 - #define hp_xfercnt_0 0x48 - #define hp_xfercnt_1 0x49 - #define hp_xfercnt_2 0x4A - #define hp_xfercnt_3 0x4B +#define hp_scsisig 0x44 - #define hp_fifodata_0 0x4C - #define hp_fifodata_1 0x4D - #define hp_addstat 0x4E +#define SCSI_SEL BIT(7) +#define SCSI_BSY BIT(6) +#define SCSI_REQ BIT(5) +#define SCSI_ACK BIT(4) +#define SCSI_ATN BIT(3) +#define SCSI_CD BIT(2) +#define SCSI_MSG BIT(1) +#define SCSI_IOBIT BIT(0) - #define SCAM_TIMER BIT(7) - #define AUTO_RUNNING BIT(6) - #define FAST_SYNC BIT(5) - #define SCSI_MODE8 BIT(3) - #define SCSI_PAR_ERR BIT(0) +#define S_SCSI_PHZ (BIT(2)+BIT(1)+BIT(0)) +#define S_MSGO_PH (BIT(2)+BIT(1) ) +#define S_MSGI_PH (BIT(2)+BIT(1)+BIT(0)) +#define S_DATAI_PH ( BIT(0)) +#define S_DATAO_PH 0x00 +#define S_ILL_PH ( BIT(1) ) - #define hp_prgmcnt_0 0x4F +#define hp_scsictrl_0 0x45 - #define AUTO_PC_MASK 0x3F +#define SEL_TAR BIT(6) +#define ENA_ATN BIT(4) +#define ENA_RESEL BIT(2) +#define SCSI_RST BIT(1) +#define ENA_SCAM_SEL BIT(0) - #define hp_selfid_0 0x50 - #define hp_selfid_1 0x51 - #define hp_arb_id 0x52 +#define hp_portctrl_0 0x46 - #define ARB_ID (BIT(3) + BIT(2) + BIT(1) + BIT(0)) +#define SCSI_PORT BIT(7) +#define SCSI_INBIT BIT(6) +#define DMA_PORT BIT(5) +#define DMA_RD BIT(4) +#define HOST_PORT BIT(3) +#define HOST_WRT BIT(2) +#define SCSI_BUS_EN BIT(1) +#define START_TO BIT(0) - #define hp_select_id 0x53 +#define hp_scsireset 0x47 - #define RESEL_ID (BIT(7) + BIT(6) + BIT(5) + BIT(4)) - #define SELECT_ID (BIT(3) + BIT(2) + BIT(1) + BIT(0)) +#define SCSI_INI BIT(6) +#define SCAM_EN BIT(5) +#define DMA_RESET BIT(3) +#define HPSCSI_RESET BIT(2) +#define PROG_RESET BIT(1) +#define FIFO_CLR BIT(0) - #define hp_synctarg_base 0x54 - #define hp_synctarg_12 0x54 - #define hp_synctarg_13 0x55 - #define hp_synctarg_14 0x56 - #define hp_synctarg_15 0x57 +#define hp_xfercnt_0 0x48 +#define hp_xfercnt_2 0x4A - #define hp_synctarg_8 0x58 - #define hp_synctarg_9 0x59 - #define hp_synctarg_10 0x5A - #define hp_synctarg_11 0x5B +#define hp_fifodata_0 0x4C +#define hp_addstat 0x4E - #define hp_synctarg_4 0x5C - #define hp_synctarg_5 0x5D - #define hp_synctarg_6 0x5E - #define hp_synctarg_7 0x5F +#define SCAM_TIMER BIT(7) +#define SCSI_MODE8 BIT(3) +#define SCSI_PAR_ERR BIT(0) - #define hp_synctarg_0 0x60 - #define hp_synctarg_1 0x61 - #define hp_synctarg_2 0x62 - #define hp_synctarg_3 0x63 +#define hp_prgmcnt_0 0x4F - #define RATE_20MB 0x00 - #define RATE_10MB ( BIT(5)) - #define RATE_6_6MB ( BIT(6) ) - #define RATE_5MB ( BIT(6)+BIT(5)) - #define RATE_4MB (BIT(7) ) - #define RATE_3_33MB (BIT(7) +BIT(5)) - #define RATE_2_85MB (BIT(7)+BIT(6) ) - #define RATE_2_5MB (BIT(7)+BIT(5)+BIT(6)) - #define NEXT_CLK BIT(5) - #define SLOWEST_SYNC (BIT(7)+BIT(6)+BIT(5)) - #define NARROW_SCSI BIT(4) - #define SYNC_OFFSET (BIT(3) + BIT(2) + BIT(1) + BIT(0)) - #define DEFAULT_ASYNC 0x00 - #define DEFAULT_OFFSET 0x0F +#define hp_selfid_0 0x50 +#define hp_selfid_1 0x51 +#define hp_arb_id 0x52 - #define hp_autostart_0 0x64 - #define hp_autostart_1 0x65 - #define hp_autostart_2 0x66 - #define hp_autostart_3 0x67 +#define hp_select_id 0x53 +#define hp_synctarg_base 0x54 +#define hp_synctarg_12 0x54 +#define hp_synctarg_13 0x55 +#define hp_synctarg_14 0x56 +#define hp_synctarg_15 0x57 +#define hp_synctarg_8 0x58 +#define hp_synctarg_9 0x59 +#define hp_synctarg_10 0x5A +#define hp_synctarg_11 0x5B - #define DISABLE 0x00 - #define AUTO_IMMED BIT(5) - #define SELECT BIT(6) - #define RESELECT (BIT(6)+BIT(5)) - #define BUSFREE BIT(7) - #define XFER_0 (BIT(7)+BIT(5)) - #define END_DATA (BIT(7)+BIT(6)) - #define MSG_PHZ (BIT(7)+BIT(6)+BIT(5)) +#define hp_synctarg_4 0x5C +#define hp_synctarg_5 0x5D +#define hp_synctarg_6 0x5E +#define hp_synctarg_7 0x5F - #define hp_gp_reg_0 0x68 - #define hp_gp_reg_1 0x69 - #define hp_gp_reg_2 0x6A - #define hp_gp_reg_3 0x6B +#define hp_synctarg_0 0x60 +#define hp_synctarg_1 0x61 +#define hp_synctarg_2 0x62 +#define hp_synctarg_3 0x63 - #define hp_seltimeout 0x6C +#define NARROW_SCSI BIT(4) +#define DEFAULT_OFFSET 0x0F +#define hp_autostart_0 0x64 +#define hp_autostart_1 0x65 +#define hp_autostart_3 0x67 - #define TO_2ms 0x54 /* 2.0503ms */ - #define TO_4ms 0x67 /* 3.9959ms */ +#define AUTO_IMMED BIT(5) +#define SELECT BIT(6) +#define END_DATA (BIT(7)+BIT(6)) - #define TO_5ms 0x03 /* 4.9152ms */ - #define TO_10ms 0x07 /* 11.xxxms */ - #define TO_250ms 0x99 /* 250.68ms */ - #define TO_290ms 0xB1 /* 289.99ms */ - #define TO_350ms 0xD6 /* 350.62ms */ - #define TO_417ms 0xFF /* 417.79ms */ +#define hp_gp_reg_0 0x68 +#define hp_gp_reg_1 0x69 +#define hp_gp_reg_3 0x6B - #define hp_clkctrl_0 0x6D +#define hp_seltimeout 0x6C - #define PWR_DWN BIT(6) - #define ACTdeassert BIT(4) - #define ATNonErr BIT(3) - #define CLK_30MHZ BIT(1) - #define CLK_40MHZ (BIT(1) + BIT(0)) - #define CLK_50MHZ BIT(2) +#define TO_4ms 0x67 /* 3.9959ms */ - #define CLKCTRL_DEFAULT (ACTdeassert | CLK_40MHZ) +#define TO_5ms 0x03 /* 4.9152ms */ +#define TO_10ms 0x07 /* 11.xxxms */ +#define TO_250ms 0x99 /* 250.68ms */ +#define TO_290ms 0xB1 /* 289.99ms */ - #define hp_fiforead 0x6E - #define hp_fifowrite 0x6F +#define hp_clkctrl_0 0x6D - #define hp_offsetctr 0x70 - #define hp_xferstat 0x71 +#define PWR_DWN BIT(6) +#define ACTdeassert BIT(4) +#define CLK_40MHZ (BIT(1) + BIT(0)) - #define FIFO_FULL BIT(7) - #define FIFO_EMPTY BIT(6) - #define FIFO_MASK 0x3F /* Mask for the FIFO count value. */ - #define FIFO_LEN 0x20 +#define CLKCTRL_DEFAULT (ACTdeassert | CLK_40MHZ) - #define hp_portctrl_1 0x72 +#define hp_fiforead 0x6E +#define hp_fifowrite 0x6F - #define EVEN_HOST_P BIT(5) - #define INVT_SCSI BIT(4) - #define CHK_SCSI_P BIT(3) - #define HOST_MODE8 BIT(0) - #define HOST_MODE16 0x00 +#define hp_offsetctr 0x70 +#define hp_xferstat 0x71 - #define hp_xfer_pad 0x73 +#define FIFO_EMPTY BIT(6) - #define ID_UNLOCK BIT(3) - #define XFER_PAD BIT(2) +#define hp_portctrl_1 0x72 - #define hp_scsidata_0 0x74 - #define hp_scsidata_1 0x75 - #define hp_timer_0 0x76 - #define hp_timer_1 0x77 +#define CHK_SCSI_P BIT(3) +#define HOST_MODE8 BIT(0) - #define hp_reserved_78 0x78 - #define hp_reserved_79 0x79 - #define hp_reserved_7A 0x7A - #define hp_reserved_7B 0x7B +#define hp_xfer_pad 0x73 - #define hp_reserved_7C 0x7C - #define hp_reserved_7D 0x7D - #define hp_reserved_7E 0x7E - #define hp_reserved_7F 0x7F +#define ID_UNLOCK BIT(3) - #define hp_aramBase 0x80 - #define BIOS_DATA_OFFSET 0x60 - #define BIOS_RELATIVE_CARD 0x64 +#define hp_scsidata_0 0x74 +#define hp_scsidata_1 0x75 +#define hp_aramBase 0x80 +#define BIOS_DATA_OFFSET 0x60 +#define BIOS_RELATIVE_CARD 0x64 +#define AR3 (BITW(9) + BITW(8)) +#define SDATA BITW(10) +#define CRD_OP BITW(11) /* Cmp Reg. w/ Data */ - #define AUTO_LEN 0x80 - #define AR0 0x00 - #define AR1 BITW(8) - #define AR2 BITW(9) - #define AR3 (BITW(9) + BITW(8)) - #define SDATA BITW(10) +#define CRR_OP BITW(12) /* Cmp Reg. w. Reg. */ - #define NOP_OP 0x00 /* Nop command */ +#define CPE_OP (BITW(14)+BITW(11)) /* Cmp SCSI phs & Branch EQ */ - #define CRD_OP BITW(11) /* Cmp Reg. w/ Data */ +#define CPN_OP (BITW(14)+BITW(12)) /* Cmp SCSI phs & Branch NOT EQ */ - #define CRR_OP BITW(12) /* Cmp Reg. w. Reg. */ +#define ADATA_OUT 0x00 +#define ADATA_IN BITW(8) +#define ACOMMAND BITW(10) +#define ASTATUS (BITW(10)+BITW(8)) +#define AMSG_OUT (BITW(10)+BITW(9)) +#define AMSG_IN (BITW(10)+BITW(9)+BITW(8)) - #define CBE_OP (BITW(14)+BITW(12)+BITW(11)) /* Cmp SCSI cmd class & Branch EQ */ - - #define CBN_OP (BITW(14)+BITW(13)) /* Cmp SCSI cmd class & Branch NOT EQ */ - - #define CPE_OP (BITW(14)+BITW(11)) /* Cmp SCSI phs & Branch EQ */ +#define BRH_OP BITW(13) /* Branch */ - #define CPN_OP (BITW(14)+BITW(12)) /* Cmp SCSI phs & Branch NOT EQ */ +#define ALWAYS 0x00 +#define EQUAL BITW(8) +#define NOT_EQ BITW(9) +#define TCB_OP (BITW(13)+BITW(11)) /* Test condition & branch */ - #define ADATA_OUT 0x00 - #define ADATA_IN BITW(8) - #define ACOMMAND BITW(10) - #define ASTATUS (BITW(10)+BITW(8)) - #define AMSG_OUT (BITW(10)+BITW(9)) - #define AMSG_IN (BITW(10)+BITW(9)+BITW(8)) - #define AILLEGAL (BITW(9)+BITW(8)) +#define FIFO_0 BITW(10) +#define MPM_OP BITW(15) /* Match phase and move data */ - #define BRH_OP BITW(13) /* Branch */ +#define MRR_OP BITW(14) /* Move DReg. to Reg. */ - - #define ALWAYS 0x00 - #define EQUAL BITW(8) - #define NOT_EQ BITW(9) +#define S_IDREG (BIT(2)+BIT(1)+BIT(0)) - #define TCB_OP (BITW(13)+BITW(11)) /* Test condition & branch */ +#define D_AR0 0x00 +#define D_AR1 BIT(0) +#define D_BUCKET (BIT(2) + BIT(1) + BIT(0)) - - #define ATN_SET BITW(8) - #define ATN_RESET BITW(9) - #define XFER_CNT (BITW(9)+BITW(8)) - #define FIFO_0 BITW(10) - #define FIFO_NOT0 (BITW(10)+BITW(8)) - #define T_USE_SYNC0 (BITW(10)+BITW(9)) +#define RAT_OP (BITW(14)+BITW(13)+BITW(11)) +#define SSI_OP (BITW(15)+BITW(11)) - #define MPM_OP BITW(15) /* Match phase and move data */ +#define SSI_ITAR_DISC (ITAR_DISC >> 8) +#define SSI_IDO_STRT (IDO_STRT >> 8) - #define MDR_OP (BITW(12)+BITW(11)) /* Move data to Reg. */ +#define SSI_ICMD_COMP (ICMD_COMP >> 8) +#define SSI_ITICKLE (ITICKLE >> 8) - #define MRR_OP BITW(14) /* Move DReg. to Reg. */ +#define SSI_IUNKWN (IUNKWN >> 8) +#define SSI_INO_CC (IUNKWN >> 8) +#define SSI_IRFAIL (IUNKWN >> 8) +#define NP 0x10 /*Next Phase */ +#define NTCMD 0x02 /*Non- Tagged Command start */ +#define CMDPZ 0x04 /*Command phase */ +#define DINT 0x12 /*Data Out/In interrupt */ +#define DI 0x13 /*Data Out */ +#define DC 0x19 /*Disconnect Message */ +#define ST 0x1D /*Status Phase */ +#define UNKNWN 0x24 /*Unknown bus action */ +#define CC 0x25 /*Command Completion failure */ +#define TICK 0x26 /*New target reselected us. */ +#define SELCHK 0x28 /*Select & Check SCSI ID latch reg */ - #define S_IDREG (BIT(2)+BIT(1)+BIT(0)) +#define ID_MSG_STRT hp_aramBase + 0x00 +#define NON_TAG_ID_MSG hp_aramBase + 0x06 +#define CMD_STRT hp_aramBase + 0x08 +#define SYNC_MSGS hp_aramBase + 0x08 - - #define D_AR0 0x00 - #define D_AR1 BIT(0) - #define D_AR2 BIT(1) - #define D_AR3 (BIT(1) + BIT(0)) - #define D_SDATA BIT(2) - #define D_BUCKET (BIT(2) + BIT(1) + BIT(0)) - - - #define ADR_OP (BITW(13)+BITW(12)) /* Logical AND Reg. w. Data */ - - #define ADS_OP (BITW(14)+BITW(13)+BITW(12)) - - #define ODR_OP (BITW(13)+BITW(12)+BITW(11)) - - #define ODS_OP (BITW(14)+BITW(13)+BITW(12)+BITW(11)) - - #define STR_OP (BITW(15)+BITW(14)) /* Store to A_Reg. */ - - #define AINT_ENA1 0x00 - #define AINT_STAT1 BITW(8) - #define ASCSI_SIG BITW(9) - #define ASCSI_CNTL (BITW(9)+BITW(8)) - #define APORT_CNTL BITW(10) - #define ARST_CNTL (BITW(10)+BITW(8)) - #define AXFERCNT0 (BITW(10)+BITW(9)) - #define AXFERCNT1 (BITW(10)+BITW(9)+BITW(8)) - #define AXFERCNT2 BITW(11) - #define AFIFO_DATA (BITW(11)+BITW(8)) - #define ASCSISELID (BITW(11)+BITW(9)) - #define ASCSISYNC0 (BITW(11)+BITW(9)+BITW(8)) - - - #define RAT_OP (BITW(14)+BITW(13)+BITW(11)) - - #define SSI_OP (BITW(15)+BITW(11)) - - - #define SSI_ITAR_DISC (ITAR_DISC >> 8) - #define SSI_IDO_STRT (IDO_STRT >> 8) - #define SSI_IDI_STRT (IDO_STRT >> 8) - - #define SSI_ICMD_COMP (ICMD_COMP >> 8) - #define SSI_ITICKLE (ITICKLE >> 8) - - #define SSI_IUNKWN (IUNKWN >> 8) - #define SSI_INO_CC (IUNKWN >> 8) - #define SSI_IRFAIL (IUNKWN >> 8) - - - #define NP 0x10 /*Next Phase */ - #define NTCMD 0x02 /*Non- Tagged Command start */ - #define CMDPZ 0x04 /*Command phase */ - #define DINT 0x12 /*Data Out/In interrupt */ - #define DI 0x13 /*Data Out */ - #define MI 0x14 /*Message In */ - #define DC 0x19 /*Disconnect Message */ - #define ST 0x1D /*Status Phase */ - #define UNKNWN 0x24 /*Unknown bus action */ - #define CC 0x25 /*Command Completion failure */ - #define TICK 0x26 /*New target reselected us. */ - #define RFAIL 0x27 /*Reselection failed */ - #define SELCHK 0x28 /*Select & Check SCSI ID latch reg */ - - - #define ID_MSG_STRT hp_aramBase + 0x00 - #define NON_TAG_ID_MSG hp_aramBase + 0x06 - #define CMD_STRT hp_aramBase + 0x08 - #define SYNC_MSGS hp_aramBase + 0x08 - - - - - - #define TAG_STRT 0x00 - #define SELECTION_START 0x00 - #define DISCONNECT_START 0x10/2 - #define END_DATA_START 0x14/2 - #define NONTAG_STRT 0x02/2 - #define CMD_ONLY_STRT CMDPZ/2 - #define TICKLE_STRT TICK/2 - #define SELCHK_STRT SELCHK/2 - - - - -#define mEEPROM_CLK_DELAY(port) (RD_HARPOON(port+hp_intstat_1)) - -#define mWAIT_10MS(port) (RD_HARPOON(port+hp_intstat_1)) - - -#define CLR_XFER_CNT(port) (WR_HARPOON(port+hp_xfercnt_0, 0x00)) - -#define SET_XFER_CNT(port, data) (WR_HARP32(port,hp_xfercnt_0,data)) +#define TAG_STRT 0x00 +#define DISCONNECT_START 0x10/2 +#define END_DATA_START 0x14/2 +#define CMD_ONLY_STRT CMDPZ/2 +#define SELCHK_STRT SELCHK/2 #define GET_XFER_CNT(port, xfercnt) {RD_HARP32(port,hp_xfercnt_0,xfercnt); xfercnt &= 0xFFFFFF;} /* #define GET_XFER_CNT(port, xfercnt) (xfercnt = RD_HARPOON(port+hp_xfercnt_2), \ xfercnt <<= 16,\ - xfercnt |= RDW_HARPOON((USHORT)(port+hp_xfercnt_0))) + xfercnt |= RDW_HARPOON((unsigned short)(port+hp_xfercnt_0))) */ -#define HP_SETUP_ADDR_CNT(port,addr,count) (WRW_HARPOON((port+hp_host_addr_lo), (USHORT)(addr & 0x0000FFFFL)),\ +#define HP_SETUP_ADDR_CNT(port,addr,count) (WRW_HARPOON((port+hp_host_addr_lo), (unsigned short)(addr & 0x0000FFFFL)),\ addr >>= 16,\ - WRW_HARPOON((port+hp_host_addr_hmi), (USHORT)(addr & 0x0000FFFFL)),\ + WRW_HARPOON((port+hp_host_addr_hmi), (unsigned short)(addr & 0x0000FFFFL)),\ WR_HARP32(port,hp_xfercnt_0,count),\ - WRW_HARPOON((port+hp_xfer_cnt_lo), (USHORT)(count & 0x0000FFFFL)),\ + WRW_HARPOON((port+hp_xfer_cnt_lo), (unsigned short)(count & 0x0000FFFFL)),\ count >>= 16,\ WR_HARPOON(port+hp_xfer_cnt_hi, (count & 0xFF))) #define ACCEPT_MSG(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\ WR_HARPOON(port+hp_scsisig, S_ILL_PH);} - #define ACCEPT_MSG_ATN(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\ WR_HARPOON(port+hp_scsisig, (S_ILL_PH|SCSI_ATN));} -#define ACCEPT_STAT(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\ - WR_HARPOON(port+hp_scsisig, S_ILL_PH);} - -#define ACCEPT_STAT_ATN(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\ - WR_HARPOON(port+hp_scsisig, (S_ILL_PH|SCSI_ATN));} - #define DISABLE_AUTO(port) (WR_HARPOON(port+hp_scsireset, PROG_RESET),\ WR_HARPOON(port+hp_scsireset, 0x00)) @@ -1329,1194 +784,1220 @@ typedef struct SCCBscam_info { #define MENABLE_INT(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \ (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE))) +static unsigned char FPT_sisyncn(unsigned long port, unsigned char p_card, + unsigned char syncFlag); +static void FPT_ssel(unsigned long port, unsigned char p_card); +static void FPT_sres(unsigned long port, unsigned char p_card, + struct sccb_card *pCurrCard); +static void FPT_shandem(unsigned long port, unsigned char p_card, + struct sccb *pCurrSCCB); +static void FPT_stsyncn(unsigned long port, unsigned char p_card); +static void FPT_sisyncr(unsigned long port, unsigned char sync_pulse, + unsigned char offset); +static void FPT_sssyncv(unsigned long p_port, unsigned char p_id, + unsigned char p_sync_value, + struct sccb_mgr_tar_info *currTar_Info); +static void FPT_sresb(unsigned long port, unsigned char p_card); +static void FPT_sxfrp(unsigned long p_port, unsigned char p_card); +static void FPT_schkdd(unsigned long port, unsigned char p_card); +static unsigned char FPT_RdStack(unsigned long port, unsigned char index); +static void FPT_WrStack(unsigned long portBase, unsigned char index, + unsigned char data); +static unsigned char FPT_ChkIfChipInitialized(unsigned long ioPort); + +static void FPT_SendMsg(unsigned long port, unsigned char message); +static void FPT_queueFlushTargSccb(unsigned char p_card, unsigned char thisTarg, + unsigned char error_code); + +static void FPT_sinits(struct sccb *p_sccb, unsigned char p_card); +static void FPT_RNVRamData(struct nvram_info *pNvRamInfo); + +static unsigned char FPT_siwidn(unsigned long port, unsigned char p_card); +static void FPT_stwidn(unsigned long port, unsigned char p_card); +static void FPT_siwidr(unsigned long port, unsigned char width); + +static void FPT_queueSelectFail(struct sccb_card *pCurrCard, + unsigned char p_card); +static void FPT_queueDisconnect(struct sccb *p_SCCB, unsigned char p_card); +static void FPT_queueCmdComplete(struct sccb_card *pCurrCard, + struct sccb *p_SCCB, unsigned char p_card); +static void FPT_queueSearchSelect(struct sccb_card *pCurrCard, + unsigned char p_card); +static void FPT_queueFlushSccb(unsigned char p_card, unsigned char error_code); +static void FPT_queueAddSccb(struct sccb *p_SCCB, unsigned char card); +static unsigned char FPT_queueFindSccb(struct sccb *p_SCCB, + unsigned char p_card); +static void FPT_utilUpdateResidual(struct sccb *p_SCCB); +static unsigned short FPT_CalcCrc16(unsigned char buffer[]); +static unsigned char FPT_CalcLrc(unsigned char buffer[]); + +static void FPT_Wait1Second(unsigned long p_port); +static void FPT_Wait(unsigned long p_port, unsigned char p_delay); +static void FPT_utilEEWriteOnOff(unsigned long p_port, unsigned char p_mode); +static void FPT_utilEEWrite(unsigned long p_port, unsigned short ee_data, + unsigned short ee_addr); +static unsigned short FPT_utilEERead(unsigned long p_port, + unsigned short ee_addr); +static unsigned short FPT_utilEEReadOrg(unsigned long p_port, + unsigned short ee_addr); +static void FPT_utilEESendCmdAddr(unsigned long p_port, unsigned char ee_cmd, + unsigned short ee_addr); + +static void FPT_phaseDataOut(unsigned long port, unsigned char p_card); +static void FPT_phaseDataIn(unsigned long port, unsigned char p_card); +static void FPT_phaseCommand(unsigned long port, unsigned char p_card); +static void FPT_phaseStatus(unsigned long port, unsigned char p_card); +static void FPT_phaseMsgOut(unsigned long port, unsigned char p_card); +static void FPT_phaseMsgIn(unsigned long port, unsigned char p_card); +static void FPT_phaseIllegal(unsigned long port, unsigned char p_card); + +static void FPT_phaseDecode(unsigned long port, unsigned char p_card); +static void FPT_phaseChkFifo(unsigned long port, unsigned char p_card); +static void FPT_phaseBusFree(unsigned long p_port, unsigned char p_card); + +static void FPT_XbowInit(unsigned long port, unsigned char scamFlg); +static void FPT_BusMasterInit(unsigned long p_port); +static void FPT_DiagEEPROM(unsigned long p_port); + +static void FPT_dataXferProcessor(unsigned long port, + struct sccb_card *pCurrCard); +static void FPT_busMstrSGDataXferStart(unsigned long port, + struct sccb *pCurrSCCB); +static void FPT_busMstrDataXferStart(unsigned long port, + struct sccb *pCurrSCCB); +static void FPT_hostDataXferAbort(unsigned long port, unsigned char p_card, + struct sccb *pCurrSCCB); +static void FPT_hostDataXferRestart(struct sccb *currSCCB); + +static unsigned char FPT_SccbMgr_bad_isr(unsigned long p_port, + unsigned char p_card, + struct sccb_card *pCurrCard, + unsigned short p_int); + +static void FPT_SccbMgrTableInitAll(void); +static void FPT_SccbMgrTableInitCard(struct sccb_card *pCurrCard, + unsigned char p_card); +static void FPT_SccbMgrTableInitTarget(unsigned char p_card, + unsigned char target); + +static void FPT_scini(unsigned char p_card, unsigned char p_our_id, + unsigned char p_power_up); + +static int FPT_scarb(unsigned long p_port, unsigned char p_sel_type); +static void FPT_scbusf(unsigned long p_port); +static void FPT_scsel(unsigned long p_port); +static void FPT_scasid(unsigned char p_card, unsigned long p_port); +static unsigned char FPT_scxferc(unsigned long p_port, unsigned char p_data); +static unsigned char FPT_scsendi(unsigned long p_port, + unsigned char p_id_string[]); +static unsigned char FPT_sciso(unsigned long p_port, + unsigned char p_id_string[]); +static void FPT_scwirod(unsigned long p_port, unsigned char p_data_bit); +static void FPT_scwiros(unsigned long p_port, unsigned char p_data_bit); +static unsigned char FPT_scvalq(unsigned char p_quintet); +static unsigned char FPT_scsell(unsigned long p_port, unsigned char targ_id); +static void FPT_scwtsel(unsigned long p_port); +static void FPT_inisci(unsigned char p_card, unsigned long p_port, + unsigned char p_our_id); +static void FPT_scsavdi(unsigned char p_card, unsigned long p_port); +static unsigned char FPT_scmachid(unsigned char p_card, + unsigned char p_id_string[]); + +static void FPT_autoCmdCmplt(unsigned long p_port, unsigned char p_card); +static void FPT_autoLoadDefaultMap(unsigned long p_port); + +static struct sccb_mgr_tar_info FPT_sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR] = + { {{0}} }; +static struct sccb_card FPT_BL_Card[MAX_CARDS] = { {0} }; +static SCCBSCAM_INFO FPT_scamInfo[MAX_SCSI_TAR] = { {{0}} }; +static struct nvram_info FPT_nvRamInfo[MAX_MB_CARDS] = { {0} }; + +static unsigned char FPT_mbCards = 0; +static unsigned char FPT_scamHAString[] = + { 0x63, 0x07, 'B', 'U', 'S', 'L', 'O', 'G', 'I', 'C', + ' ', 'B', 'T', '-', '9', '3', '0', + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 +}; +static unsigned short FPT_default_intena = 0; - -void scsiStartAuto(ULONG port); -static UCHAR FPT_sisyncn(ULONG port, UCHAR p_card, UCHAR syncFlag); -static void FPT_ssel(ULONG port, UCHAR p_card); -static void FPT_sres(ULONG port, UCHAR p_card, PSCCBcard pCurrCard); -static void FPT_shandem(ULONG port, UCHAR p_card,PSCCB pCurrSCCB); -static void FPT_stsyncn(ULONG port, UCHAR p_card); -static void FPT_sisyncr(ULONG port,UCHAR sync_pulse, UCHAR offset); -static void FPT_sssyncv(ULONG p_port, UCHAR p_id, UCHAR p_sync_value, - PSCCBMgr_tar_info currTar_Info); -static void FPT_sresb(ULONG port, UCHAR p_card); -static void FPT_sxfrp(ULONG p_port, UCHAR p_card); -static void FPT_schkdd(ULONG port, UCHAR p_card); -static UCHAR FPT_RdStack(ULONG port, UCHAR index); -static void FPT_WrStack(ULONG portBase, UCHAR index, UCHAR data); -static UCHAR FPT_ChkIfChipInitialized(ULONG ioPort); - -static void FPT_SendMsg(ULONG port, UCHAR message); -static void FPT_queueFlushTargSccb(UCHAR p_card, UCHAR thisTarg, - UCHAR error_code); - -static void FPT_sinits(PSCCB p_sccb, UCHAR p_card); -static void FPT_RNVRamData(PNVRamInfo pNvRamInfo); - -static UCHAR FPT_siwidn(ULONG port, UCHAR p_card); -static void FPT_stwidn(ULONG port, UCHAR p_card); -static void FPT_siwidr(ULONG port, UCHAR width); - - -static void FPT_queueSelectFail(PSCCBcard pCurrCard, UCHAR p_card); -static void FPT_queueDisconnect(PSCCB p_SCCB, UCHAR p_card); -static void FPT_queueCmdComplete(PSCCBcard pCurrCard, PSCCB p_SCCB, - UCHAR p_card); -static void FPT_queueSearchSelect(PSCCBcard pCurrCard, UCHAR p_card); -static void FPT_queueFlushSccb(UCHAR p_card, UCHAR error_code); -static void FPT_queueAddSccb(PSCCB p_SCCB, UCHAR card); -static UCHAR FPT_queueFindSccb(PSCCB p_SCCB, UCHAR p_card); -static void FPT_utilUpdateResidual(PSCCB p_SCCB); -static USHORT FPT_CalcCrc16(UCHAR buffer[]); -static UCHAR FPT_CalcLrc(UCHAR buffer[]); - - -static void FPT_Wait1Second(ULONG p_port); -static void FPT_Wait(ULONG p_port, UCHAR p_delay); -static void FPT_utilEEWriteOnOff(ULONG p_port,UCHAR p_mode); -static void FPT_utilEEWrite(ULONG p_port, USHORT ee_data, USHORT ee_addr); -static USHORT FPT_utilEERead(ULONG p_port, USHORT ee_addr); -static USHORT FPT_utilEEReadOrg(ULONG p_port, USHORT ee_addr); -static void FPT_utilEESendCmdAddr(ULONG p_port, UCHAR ee_cmd, USHORT ee_addr); - - - -static void FPT_phaseDataOut(ULONG port, UCHAR p_card); -static void FPT_phaseDataIn(ULONG port, UCHAR p_card); -static void FPT_phaseCommand(ULONG port, UCHAR p_card); -static void FPT_phaseStatus(ULONG port, UCHAR p_card); -static void FPT_phaseMsgOut(ULONG port, UCHAR p_card); -static void FPT_phaseMsgIn(ULONG port, UCHAR p_card); -static void FPT_phaseIllegal(ULONG port, UCHAR p_card); - -static void FPT_phaseDecode(ULONG port, UCHAR p_card); -static void FPT_phaseChkFifo(ULONG port, UCHAR p_card); -static void FPT_phaseBusFree(ULONG p_port, UCHAR p_card); - - - - -static void FPT_XbowInit(ULONG port, UCHAR scamFlg); -static void FPT_BusMasterInit(ULONG p_port); -static void FPT_DiagEEPROM(ULONG p_port); - - - - -void busMstrAbort(ULONG port); -static void FPT_dataXferProcessor(ULONG port, PSCCBcard pCurrCard); -static void FPT_busMstrSGDataXferStart(ULONG port, PSCCB pCurrSCCB); -static void FPT_busMstrDataXferStart(ULONG port, PSCCB pCurrSCCB); -static void FPT_hostDataXferAbort(ULONG port, UCHAR p_card, PSCCB pCurrSCCB); -static void FPT_hostDataXferRestart(PSCCB currSCCB); - - -static UCHAR FPT_SccbMgr_bad_isr(ULONG p_port, UCHAR p_card, - PSCCBcard pCurrCard, USHORT p_int); - -static void FPT_SccbMgrTableInitAll(void); -static void FPT_SccbMgrTableInitCard(PSCCBcard pCurrCard, UCHAR p_card); -static void FPT_SccbMgrTableInitTarget(UCHAR p_card, UCHAR target); - - - -static void FPT_scini(UCHAR p_card, UCHAR p_our_id, UCHAR p_power_up); - -static int FPT_scarb(ULONG p_port, UCHAR p_sel_type); -static void FPT_scbusf(ULONG p_port); -static void FPT_scsel(ULONG p_port); -static void FPT_scasid(UCHAR p_card, ULONG p_port); -static UCHAR FPT_scxferc(ULONG p_port, UCHAR p_data); -static UCHAR FPT_scsendi(ULONG p_port, UCHAR p_id_string[]); -static UCHAR FPT_sciso(ULONG p_port, UCHAR p_id_string[]); -static void FPT_scwirod(ULONG p_port, UCHAR p_data_bit); -static void FPT_scwiros(ULONG p_port, UCHAR p_data_bit); -static UCHAR FPT_scvalq(UCHAR p_quintet); -static UCHAR FPT_scsell(ULONG p_port, UCHAR targ_id); -static void FPT_scwtsel(ULONG p_port); -static void FPT_inisci(UCHAR p_card, ULONG p_port, UCHAR p_our_id); -static void FPT_scsavdi(UCHAR p_card, ULONG p_port); -static UCHAR FPT_scmachid(UCHAR p_card, UCHAR p_id_string[]); - - -static void FPT_autoCmdCmplt(ULONG p_port, UCHAR p_card); -static void FPT_autoLoadDefaultMap(ULONG p_port); - - - -void OS_start_timer(unsigned long ioport, unsigned long timeout); -void OS_stop_timer(unsigned long ioport, unsigned long timeout); -void OS_disable_int(unsigned char intvec); -void OS_enable_int(unsigned char intvec); -void OS_delay(unsigned long count); -int OS_VirtToPhys(u32bits CardHandle, u32bits *physaddr, u32bits *virtaddr); - -static SCCBMGR_TAR_INFO FPT_sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR] = { { { 0 } } }; -static SCCBCARD FPT_BL_Card[MAX_CARDS] = { { 0 } }; -static SCCBSCAM_INFO FPT_scamInfo[MAX_SCSI_TAR] = { { { 0 } } }; -static NVRAMINFO FPT_nvRamInfo[MAX_MB_CARDS] = { { 0 } }; - - -static UCHAR FPT_mbCards = 0; -static UCHAR FPT_scamHAString[] = {0x63, 0x07, 'B', 'U', 'S', 'L', 'O', 'G', 'I', 'C', \ - ' ', 'B', 'T', '-', '9', '3', '0', \ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20}; - -static USHORT FPT_default_intena = 0; - - -static void (*FPT_s_PhaseTbl[8]) (ULONG, UCHAR)= { 0 }; - +static void (*FPT_s_PhaseTbl[8]) (unsigned long, unsigned char) = { +0}; /*--------------------------------------------------------------------- * - * Function: SccbMgr_sense_adapter + * Function: FlashPoint_ProbeHostAdapter * * Description: Setup and/or Search for cards and return info to caller. * *---------------------------------------------------------------------*/ -static int SccbMgr_sense_adapter(PSCCBMGR_INFO pCardInfo) +static int FlashPoint_ProbeHostAdapter(struct sccb_mgr_info *pCardInfo) { - static UCHAR first_time = 1; + static unsigned char first_time = 1; - UCHAR i,j,id,ScamFlg; - USHORT temp,temp2,temp3,temp4,temp5,temp6; - ULONG ioport; - PNVRamInfo pCurrNvRam; + unsigned char i, j, id, ScamFlg; + unsigned short temp, temp2, temp3, temp4, temp5, temp6; + unsigned long ioport; + struct nvram_info *pCurrNvRam; - ioport = pCardInfo->si_baseaddr; + ioport = pCardInfo->si_baseaddr; + if (RD_HARPOON(ioport + hp_vendor_id_0) != ORION_VEND_0) + return (int)FAILURE; - if (RD_HARPOON(ioport+hp_vendor_id_0) != ORION_VEND_0) - return((int)FAILURE); + if ((RD_HARPOON(ioport + hp_vendor_id_1) != ORION_VEND_1)) + return (int)FAILURE; - if ((RD_HARPOON(ioport+hp_vendor_id_1) != ORION_VEND_1)) - return((int)FAILURE); + if ((RD_HARPOON(ioport + hp_device_id_0) != ORION_DEV_0)) + return (int)FAILURE; - if ((RD_HARPOON(ioport+hp_device_id_0) != ORION_DEV_0)) - return((int)FAILURE); + if ((RD_HARPOON(ioport + hp_device_id_1) != ORION_DEV_1)) + return (int)FAILURE; - if ((RD_HARPOON(ioport+hp_device_id_1) != ORION_DEV_1)) - return((int)FAILURE); - - - if (RD_HARPOON(ioport+hp_rev_num) != 0x0f){ + if (RD_HARPOON(ioport + hp_rev_num) != 0x0f) { /* For new Harpoon then check for sub_device ID LSB the bits(0-3) must be all ZERO for compatible with current version of SCCBMgr, else skip this Harpoon device. */ - if (RD_HARPOON(ioport+hp_sub_device_id_0) & 0x0f) - return((int)FAILURE); + if (RD_HARPOON(ioport + hp_sub_device_id_0) & 0x0f) + return (int)FAILURE; } - if (first_time) - { - FPT_SccbMgrTableInitAll(); - first_time = 0; + if (first_time) { + FPT_SccbMgrTableInitAll(); + first_time = 0; FPT_mbCards = 0; - } + } - if(FPT_RdStack(ioport, 0) != 0x00) { - if(FPT_ChkIfChipInitialized(ioport) == 0) - { + if (FPT_RdStack(ioport, 0) != 0x00) { + if (FPT_ChkIfChipInitialized(ioport) == 0) { pCurrNvRam = NULL; - WR_HARPOON(ioport+hp_semaphore, 0x00); - FPT_XbowInit(ioport, 0); /*Must Init the SCSI before attempting */ + WR_HARPOON(ioport + hp_semaphore, 0x00); + FPT_XbowInit(ioport, 0); /*Must Init the SCSI before attempting */ FPT_DiagEEPROM(ioport); - } - else - { - if(FPT_mbCards < MAX_MB_CARDS) { + } else { + if (FPT_mbCards < MAX_MB_CARDS) { pCurrNvRam = &FPT_nvRamInfo[FPT_mbCards]; FPT_mbCards++; pCurrNvRam->niBaseAddr = ioport; FPT_RNVRamData(pCurrNvRam); - }else - return((int) FAILURE); + } else + return (int)FAILURE; } - }else + } else pCurrNvRam = NULL; - WR_HARPOON(ioport+hp_clkctrl_0, CLKCTRL_DEFAULT); - WR_HARPOON(ioport+hp_sys_ctrl, 0x00); + WR_HARPOON(ioport + hp_clkctrl_0, CLKCTRL_DEFAULT); + WR_HARPOON(ioport + hp_sys_ctrl, 0x00); - if(pCurrNvRam) + if (pCurrNvRam) pCardInfo->si_id = pCurrNvRam->niAdapId; else - pCardInfo->si_id = (UCHAR)(FPT_utilEERead(ioport, (ADAPTER_SCSI_ID/2)) & - (UCHAR)0x0FF); - - pCardInfo->si_lun = 0x00; - pCardInfo->si_fw_revision = ORION_FW_REV; - temp2 = 0x0000; - temp3 = 0x0000; - temp4 = 0x0000; - temp5 = 0x0000; - temp6 = 0x0000; + pCardInfo->si_id = + (unsigned + char)(FPT_utilEERead(ioport, + (ADAPTER_SCSI_ID / + 2)) & (unsigned char)0x0FF); + + pCardInfo->si_lun = 0x00; + pCardInfo->si_fw_revision = ORION_FW_REV; + temp2 = 0x0000; + temp3 = 0x0000; + temp4 = 0x0000; + temp5 = 0x0000; + temp6 = 0x0000; - for (id = 0; id < (16/2); id++) { + for (id = 0; id < (16 / 2); id++) { - if(pCurrNvRam){ - temp = (USHORT) pCurrNvRam->niSyncTbl[id]; + if (pCurrNvRam) { + temp = (unsigned short)pCurrNvRam->niSyncTbl[id]; temp = ((temp & 0x03) + ((temp << 4) & 0xc0)) + - (((temp << 4) & 0x0300) + ((temp << 8) & 0xc000)); - }else - temp = FPT_utilEERead(ioport, (USHORT)((SYNC_RATE_TBL/2)+id)); - - for (i = 0; i < 2; temp >>=8,i++) { - - temp2 >>= 1; - temp3 >>= 1; - temp4 >>= 1; - temp5 >>= 1; - temp6 >>= 1; - switch (temp & 0x3) - { - case AUTO_RATE_20: /* Synchronous, 20 mega-transfers/second */ - temp6 |= 0x8000; /* Fall through */ - case AUTO_RATE_10: /* Synchronous, 10 mega-transfers/second */ - temp5 |= 0x8000; /* Fall through */ - case AUTO_RATE_05: /* Synchronous, 5 mega-transfers/second */ - temp2 |= 0x8000; /* Fall through */ - case AUTO_RATE_00: /* Asynchronous */ - break; - } + (((temp << 4) & 0x0300) + ((temp << 8) & 0xc000)); + } else + temp = + FPT_utilEERead(ioport, + (unsigned short)((SYNC_RATE_TBL / 2) + + id)); + + for (i = 0; i < 2; temp >>= 8, i++) { + + temp2 >>= 1; + temp3 >>= 1; + temp4 >>= 1; + temp5 >>= 1; + temp6 >>= 1; + switch (temp & 0x3) { + case AUTO_RATE_20: /* Synchronous, 20 mega-transfers/second */ + temp6 |= 0x8000; /* Fall through */ + case AUTO_RATE_10: /* Synchronous, 10 mega-transfers/second */ + temp5 |= 0x8000; /* Fall through */ + case AUTO_RATE_05: /* Synchronous, 5 mega-transfers/second */ + temp2 |= 0x8000; /* Fall through */ + case AUTO_RATE_00: /* Asynchronous */ + break; + } - if (temp & DISC_ENABLE_BIT) - temp3 |= 0x8000; + if (temp & DISC_ENABLE_BIT) + temp3 |= 0x8000; - if (temp & WIDE_NEGO_BIT) - temp4 |= 0x8000; + if (temp & WIDE_NEGO_BIT) + temp4 |= 0x8000; - } - } + } + } - pCardInfo->si_per_targ_init_sync = temp2; - pCardInfo->si_per_targ_no_disc = temp3; - pCardInfo->si_per_targ_wide_nego = temp4; - pCardInfo->si_per_targ_fast_nego = temp5; - pCardInfo->si_per_targ_ultra_nego = temp6; + pCardInfo->si_per_targ_init_sync = temp2; + pCardInfo->si_per_targ_no_disc = temp3; + pCardInfo->si_per_targ_wide_nego = temp4; + pCardInfo->si_per_targ_fast_nego = temp5; + pCardInfo->si_per_targ_ultra_nego = temp6; - if(pCurrNvRam) + if (pCurrNvRam) i = pCurrNvRam->niSysConf; else - i = (UCHAR)(FPT_utilEERead(ioport, (SYSTEM_CONFIG/2))); + i = (unsigned + char)(FPT_utilEERead(ioport, (SYSTEM_CONFIG / 2))); - if(pCurrNvRam) + if (pCurrNvRam) ScamFlg = pCurrNvRam->niScamConf; else - ScamFlg = (UCHAR) FPT_utilEERead(ioport, SCAM_CONFIG/2); - - pCardInfo->si_flags = 0x0000; - - if (i & 0x01) - pCardInfo->si_flags |= SCSI_PARITY_ENA; - - if (!(i & 0x02)) - pCardInfo->si_flags |= SOFT_RESET; - - if (i & 0x10) - pCardInfo->si_flags |= EXTENDED_TRANSLATION; - - if (ScamFlg & SCAM_ENABLED) - pCardInfo->si_flags |= FLAG_SCAM_ENABLED; + ScamFlg = + (unsigned char)FPT_utilEERead(ioport, SCAM_CONFIG / 2); - if (ScamFlg & SCAM_LEVEL2) - pCardInfo->si_flags |= FLAG_SCAM_LEVEL2; + pCardInfo->si_flags = 0x0000; - j = (RD_HARPOON(ioport+hp_bm_ctrl) & ~SCSI_TERM_ENA_L); - if (i & 0x04) { - j |= SCSI_TERM_ENA_L; - } - WR_HARPOON(ioport+hp_bm_ctrl, j ); - - j = (RD_HARPOON(ioport+hp_ee_ctrl) & ~SCSI_TERM_ENA_H); - if (i & 0x08) { - j |= SCSI_TERM_ENA_H; - } - WR_HARPOON(ioport+hp_ee_ctrl, j ); - - if (!(RD_HARPOON(ioport+hp_page_ctrl) & NARROW_SCSI_CARD)) - - pCardInfo->si_flags |= SUPPORT_16TAR_32LUN; - - pCardInfo->si_card_family = HARPOON_FAMILY; - pCardInfo->si_bustype = BUSTYPE_PCI; - - if(pCurrNvRam){ - pCardInfo->si_card_model[0] = '9'; - switch(pCurrNvRam->niModel & 0x0f){ - case MODEL_LT: - pCardInfo->si_card_model[1] = '3'; - pCardInfo->si_card_model[2] = '0'; - break; - case MODEL_LW: - pCardInfo->si_card_model[1] = '5'; - pCardInfo->si_card_model[2] = '0'; - break; - case MODEL_DL: - pCardInfo->si_card_model[1] = '3'; - pCardInfo->si_card_model[2] = '2'; - break; - case MODEL_DW: - pCardInfo->si_card_model[1] = '5'; - pCardInfo->si_card_model[2] = '2'; - break; - } - }else{ - temp = FPT_utilEERead(ioport, (MODEL_NUMB_0/2)); - pCardInfo->si_card_model[0] = (UCHAR)(temp >> 8); - temp = FPT_utilEERead(ioport, (MODEL_NUMB_2/2)); - - pCardInfo->si_card_model[1] = (UCHAR)(temp & 0x00FF); - pCardInfo->si_card_model[2] = (UCHAR)(temp >> 8); - } - - if (pCardInfo->si_card_model[1] == '3') - { - if (RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7)) - pCardInfo->si_flags |= LOW_BYTE_TERM; - } - else if (pCardInfo->si_card_model[2] == '0') - { - temp = RD_HARPOON(ioport+hp_xfer_pad); - WR_HARPOON(ioport+hp_xfer_pad, (temp & ~BIT(4))); - if (RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7)) - pCardInfo->si_flags |= LOW_BYTE_TERM; - WR_HARPOON(ioport+hp_xfer_pad, (temp | BIT(4))); - if (RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7)) - pCardInfo->si_flags |= HIGH_BYTE_TERM; - WR_HARPOON(ioport+hp_xfer_pad, temp); - } - else - { - temp = RD_HARPOON(ioport+hp_ee_ctrl); - temp2 = RD_HARPOON(ioport+hp_xfer_pad); - WR_HARPOON(ioport+hp_ee_ctrl, (temp | SEE_CS)); - WR_HARPOON(ioport+hp_xfer_pad, (temp2 | BIT(4))); - temp3 = 0; - for (i = 0; i < 8; i++) - { - temp3 <<= 1; - if (!(RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7))) - temp3 |= 1; - WR_HARPOON(ioport+hp_xfer_pad, (temp2 & ~BIT(4))); - WR_HARPOON(ioport+hp_xfer_pad, (temp2 | BIT(4))); - } - WR_HARPOON(ioport+hp_ee_ctrl, temp); - WR_HARPOON(ioport+hp_xfer_pad, temp2); - if (!(temp3 & BIT(7))) - pCardInfo->si_flags |= LOW_BYTE_TERM; - if (!(temp3 & BIT(6))) - pCardInfo->si_flags |= HIGH_BYTE_TERM; - } + if (i & 0x01) + pCardInfo->si_flags |= SCSI_PARITY_ENA; + if (!(i & 0x02)) + pCardInfo->si_flags |= SOFT_RESET; + + if (i & 0x10) + pCardInfo->si_flags |= EXTENDED_TRANSLATION; + + if (ScamFlg & SCAM_ENABLED) + pCardInfo->si_flags |= FLAG_SCAM_ENABLED; + + if (ScamFlg & SCAM_LEVEL2) + pCardInfo->si_flags |= FLAG_SCAM_LEVEL2; + + j = (RD_HARPOON(ioport + hp_bm_ctrl) & ~SCSI_TERM_ENA_L); + if (i & 0x04) { + j |= SCSI_TERM_ENA_L; + } + WR_HARPOON(ioport + hp_bm_ctrl, j); + + j = (RD_HARPOON(ioport + hp_ee_ctrl) & ~SCSI_TERM_ENA_H); + if (i & 0x08) { + j |= SCSI_TERM_ENA_H; + } + WR_HARPOON(ioport + hp_ee_ctrl, j); + + if (!(RD_HARPOON(ioport + hp_page_ctrl) & NARROW_SCSI_CARD)) + + pCardInfo->si_flags |= SUPPORT_16TAR_32LUN; + + pCardInfo->si_card_family = HARPOON_FAMILY; + pCardInfo->si_bustype = BUSTYPE_PCI; + + if (pCurrNvRam) { + pCardInfo->si_card_model[0] = '9'; + switch (pCurrNvRam->niModel & 0x0f) { + case MODEL_LT: + pCardInfo->si_card_model[1] = '3'; + pCardInfo->si_card_model[2] = '0'; + break; + case MODEL_LW: + pCardInfo->si_card_model[1] = '5'; + pCardInfo->si_card_model[2] = '0'; + break; + case MODEL_DL: + pCardInfo->si_card_model[1] = '3'; + pCardInfo->si_card_model[2] = '2'; + break; + case MODEL_DW: + pCardInfo->si_card_model[1] = '5'; + pCardInfo->si_card_model[2] = '2'; + break; + } + } else { + temp = FPT_utilEERead(ioport, (MODEL_NUMB_0 / 2)); + pCardInfo->si_card_model[0] = (unsigned char)(temp >> 8); + temp = FPT_utilEERead(ioport, (MODEL_NUMB_2 / 2)); + + pCardInfo->si_card_model[1] = (unsigned char)(temp & 0x00FF); + pCardInfo->si_card_model[2] = (unsigned char)(temp >> 8); + } + + if (pCardInfo->si_card_model[1] == '3') { + if (RD_HARPOON(ioport + hp_ee_ctrl) & BIT(7)) + pCardInfo->si_flags |= LOW_BYTE_TERM; + } else if (pCardInfo->si_card_model[2] == '0') { + temp = RD_HARPOON(ioport + hp_xfer_pad); + WR_HARPOON(ioport + hp_xfer_pad, (temp & ~BIT(4))); + if (RD_HARPOON(ioport + hp_ee_ctrl) & BIT(7)) + pCardInfo->si_flags |= LOW_BYTE_TERM; + WR_HARPOON(ioport + hp_xfer_pad, (temp | BIT(4))); + if (RD_HARPOON(ioport + hp_ee_ctrl) & BIT(7)) + pCardInfo->si_flags |= HIGH_BYTE_TERM; + WR_HARPOON(ioport + hp_xfer_pad, temp); + } else { + temp = RD_HARPOON(ioport + hp_ee_ctrl); + temp2 = RD_HARPOON(ioport + hp_xfer_pad); + WR_HARPOON(ioport + hp_ee_ctrl, (temp | SEE_CS)); + WR_HARPOON(ioport + hp_xfer_pad, (temp2 | BIT(4))); + temp3 = 0; + for (i = 0; i < 8; i++) { + temp3 <<= 1; + if (!(RD_HARPOON(ioport + hp_ee_ctrl) & BIT(7))) + temp3 |= 1; + WR_HARPOON(ioport + hp_xfer_pad, (temp2 & ~BIT(4))); + WR_HARPOON(ioport + hp_xfer_pad, (temp2 | BIT(4))); + } + WR_HARPOON(ioport + hp_ee_ctrl, temp); + WR_HARPOON(ioport + hp_xfer_pad, temp2); + if (!(temp3 & BIT(7))) + pCardInfo->si_flags |= LOW_BYTE_TERM; + if (!(temp3 & BIT(6))) + pCardInfo->si_flags |= HIGH_BYTE_TERM; + } - ARAM_ACCESS(ioport); + ARAM_ACCESS(ioport); - for ( i = 0; i < 4; i++ ) { + for (i = 0; i < 4; i++) { - pCardInfo->si_XlatInfo[i] = - RD_HARPOON(ioport+hp_aramBase+BIOS_DATA_OFFSET+i); - } + pCardInfo->si_XlatInfo[i] = + RD_HARPOON(ioport + hp_aramBase + BIOS_DATA_OFFSET + i); + } /* return with -1 if no sort, else return with logical card number sorted by BIOS (zero-based) */ pCardInfo->si_relative_cardnum = - (UCHAR)(RD_HARPOON(ioport+hp_aramBase+BIOS_RELATIVE_CARD)-1); + (unsigned + char)(RD_HARPOON(ioport + hp_aramBase + BIOS_RELATIVE_CARD) - 1); - SGRAM_ACCESS(ioport); + SGRAM_ACCESS(ioport); - FPT_s_PhaseTbl[0] = FPT_phaseDataOut; - FPT_s_PhaseTbl[1] = FPT_phaseDataIn; - FPT_s_PhaseTbl[2] = FPT_phaseIllegal; - FPT_s_PhaseTbl[3] = FPT_phaseIllegal; - FPT_s_PhaseTbl[4] = FPT_phaseCommand; - FPT_s_PhaseTbl[5] = FPT_phaseStatus; - FPT_s_PhaseTbl[6] = FPT_phaseMsgOut; - FPT_s_PhaseTbl[7] = FPT_phaseMsgIn; + FPT_s_PhaseTbl[0] = FPT_phaseDataOut; + FPT_s_PhaseTbl[1] = FPT_phaseDataIn; + FPT_s_PhaseTbl[2] = FPT_phaseIllegal; + FPT_s_PhaseTbl[3] = FPT_phaseIllegal; + FPT_s_PhaseTbl[4] = FPT_phaseCommand; + FPT_s_PhaseTbl[5] = FPT_phaseStatus; + FPT_s_PhaseTbl[6] = FPT_phaseMsgOut; + FPT_s_PhaseTbl[7] = FPT_phaseMsgIn; - pCardInfo->si_present = 0x01; + pCardInfo->si_present = 0x01; - return(0); + return 0; } - /*--------------------------------------------------------------------- * - * Function: SccbMgr_config_adapter + * Function: FlashPoint_HardwareResetHostAdapter * * Description: Setup adapter for normal operation (hard reset). * *---------------------------------------------------------------------*/ -static ULONG SccbMgr_config_adapter(PSCCBMGR_INFO pCardInfo) +static unsigned long FlashPoint_HardwareResetHostAdapter(struct sccb_mgr_info + *pCardInfo) { - PSCCBcard CurrCard = NULL; - PNVRamInfo pCurrNvRam; - UCHAR i,j,thisCard, ScamFlg; - USHORT temp,sync_bit_map,id; - ULONG ioport; + struct sccb_card *CurrCard = NULL; + struct nvram_info *pCurrNvRam; + unsigned char i, j, thisCard, ScamFlg; + unsigned short temp, sync_bit_map, id; + unsigned long ioport; - ioport = pCardInfo->si_baseaddr; + ioport = pCardInfo->si_baseaddr; - for(thisCard =0; thisCard <= MAX_CARDS; thisCard++) { + for (thisCard = 0; thisCard <= MAX_CARDS; thisCard++) { - if (thisCard == MAX_CARDS) { + if (thisCard == MAX_CARDS) { - return(FAILURE); - } + return FAILURE; + } - if (FPT_BL_Card[thisCard].ioPort == ioport) { + if (FPT_BL_Card[thisCard].ioPort == ioport) { - CurrCard = &FPT_BL_Card[thisCard]; - FPT_SccbMgrTableInitCard(CurrCard,thisCard); - break; - } + CurrCard = &FPT_BL_Card[thisCard]; + FPT_SccbMgrTableInitCard(CurrCard, thisCard); + break; + } - else if (FPT_BL_Card[thisCard].ioPort == 0x00) { + else if (FPT_BL_Card[thisCard].ioPort == 0x00) { - FPT_BL_Card[thisCard].ioPort = ioport; - CurrCard = &FPT_BL_Card[thisCard]; + FPT_BL_Card[thisCard].ioPort = ioport; + CurrCard = &FPT_BL_Card[thisCard]; - if(FPT_mbCards) - for(i = 0; i < FPT_mbCards; i++){ - if(CurrCard->ioPort == FPT_nvRamInfo[i].niBaseAddr) - CurrCard->pNvRamInfo = &FPT_nvRamInfo[i]; + if (FPT_mbCards) + for (i = 0; i < FPT_mbCards; i++) { + if (CurrCard->ioPort == + FPT_nvRamInfo[i].niBaseAddr) + CurrCard->pNvRamInfo = + &FPT_nvRamInfo[i]; } - FPT_SccbMgrTableInitCard(CurrCard,thisCard); - CurrCard->cardIndex = thisCard; - CurrCard->cardInfo = pCardInfo; + FPT_SccbMgrTableInitCard(CurrCard, thisCard); + CurrCard->cardIndex = thisCard; + CurrCard->cardInfo = pCardInfo; - break; - } - } + break; + } + } pCurrNvRam = CurrCard->pNvRamInfo; - if(pCurrNvRam){ + if (pCurrNvRam) { ScamFlg = pCurrNvRam->niScamConf; + } else { + ScamFlg = + (unsigned char)FPT_utilEERead(ioport, SCAM_CONFIG / 2); } - else{ - ScamFlg = (UCHAR) FPT_utilEERead(ioport, SCAM_CONFIG/2); - } - - FPT_BusMasterInit(ioport); - FPT_XbowInit(ioport, ScamFlg); + FPT_BusMasterInit(ioport); + FPT_XbowInit(ioport, ScamFlg); - FPT_autoLoadDefaultMap(ioport); + FPT_autoLoadDefaultMap(ioport); + for (i = 0, id = 0x01; i != pCardInfo->si_id; i++, id <<= 1) { + } - for (i = 0,id = 0x01; i != pCardInfo->si_id; i++,id <<= 1){} - - WR_HARPOON(ioport+hp_selfid_0, id); - WR_HARPOON(ioport+hp_selfid_1, 0x00); - WR_HARPOON(ioport+hp_arb_id, pCardInfo->si_id); - CurrCard->ourId = pCardInfo->si_id; - - i = (UCHAR) pCardInfo->si_flags; - if (i & SCSI_PARITY_ENA) - WR_HARPOON(ioport+hp_portctrl_1,(HOST_MODE8 | CHK_SCSI_P)); - - j = (RD_HARPOON(ioport+hp_bm_ctrl) & ~SCSI_TERM_ENA_L); - if (i & LOW_BYTE_TERM) - j |= SCSI_TERM_ENA_L; - WR_HARPOON(ioport+hp_bm_ctrl, j); - - j = (RD_HARPOON(ioport+hp_ee_ctrl) & ~SCSI_TERM_ENA_H); - if (i & HIGH_BYTE_TERM) - j |= SCSI_TERM_ENA_H; - WR_HARPOON(ioport+hp_ee_ctrl, j ); + WR_HARPOON(ioport + hp_selfid_0, id); + WR_HARPOON(ioport + hp_selfid_1, 0x00); + WR_HARPOON(ioport + hp_arb_id, pCardInfo->si_id); + CurrCard->ourId = pCardInfo->si_id; + i = (unsigned char)pCardInfo->si_flags; + if (i & SCSI_PARITY_ENA) + WR_HARPOON(ioport + hp_portctrl_1, (HOST_MODE8 | CHK_SCSI_P)); - if (!(pCardInfo->si_flags & SOFT_RESET)) { + j = (RD_HARPOON(ioport + hp_bm_ctrl) & ~SCSI_TERM_ENA_L); + if (i & LOW_BYTE_TERM) + j |= SCSI_TERM_ENA_L; + WR_HARPOON(ioport + hp_bm_ctrl, j); - FPT_sresb(ioport,thisCard); + j = (RD_HARPOON(ioport + hp_ee_ctrl) & ~SCSI_TERM_ENA_H); + if (i & HIGH_BYTE_TERM) + j |= SCSI_TERM_ENA_H; + WR_HARPOON(ioport + hp_ee_ctrl, j); - FPT_scini(thisCard, pCardInfo->si_id, 0); - } + if (!(pCardInfo->si_flags & SOFT_RESET)) { + FPT_sresb(ioport, thisCard); + FPT_scini(thisCard, pCardInfo->si_id, 0); + } - if (pCardInfo->si_flags & POST_ALL_UNDERRRUNS) - CurrCard->globalFlags |= F_NO_FILTER; + if (pCardInfo->si_flags & POST_ALL_UNDERRRUNS) + CurrCard->globalFlags |= F_NO_FILTER; - if(pCurrNvRam){ - if(pCurrNvRam->niSysConf & 0x10) + if (pCurrNvRam) { + if (pCurrNvRam->niSysConf & 0x10) + CurrCard->globalFlags |= F_GREEN_PC; + } else { + if (FPT_utilEERead(ioport, (SYSTEM_CONFIG / 2)) & GREEN_PC_ENA) CurrCard->globalFlags |= F_GREEN_PC; } - else{ - if (FPT_utilEERead(ioport, (SYSTEM_CONFIG/2)) & GREEN_PC_ENA) - CurrCard->globalFlags |= F_GREEN_PC; - } /* Set global flag to indicate Re-Negotiation to be done on all - ckeck condition */ - if(pCurrNvRam){ - if(pCurrNvRam->niScsiConf & 0x04) + ckeck condition */ + if (pCurrNvRam) { + if (pCurrNvRam->niScsiConf & 0x04) + CurrCard->globalFlags |= F_DO_RENEGO; + } else { + if (FPT_utilEERead(ioport, (SCSI_CONFIG / 2)) & RENEGO_ENA) CurrCard->globalFlags |= F_DO_RENEGO; - } - else{ - if (FPT_utilEERead(ioport, (SCSI_CONFIG/2)) & RENEGO_ENA) - CurrCard->globalFlags |= F_DO_RENEGO; } - if(pCurrNvRam){ - if(pCurrNvRam->niScsiConf & 0x08) + if (pCurrNvRam) { + if (pCurrNvRam->niScsiConf & 0x08) + CurrCard->globalFlags |= F_CONLUN_IO; + } else { + if (FPT_utilEERead(ioport, (SCSI_CONFIG / 2)) & CONNIO_ENA) CurrCard->globalFlags |= F_CONLUN_IO; } - else{ - if (FPT_utilEERead(ioport, (SCSI_CONFIG/2)) & CONNIO_ENA) - CurrCard->globalFlags |= F_CONLUN_IO; - } - - temp = pCardInfo->si_per_targ_no_disc; + temp = pCardInfo->si_per_targ_no_disc; - for (i = 0,id = 1; i < MAX_SCSI_TAR; i++, id <<= 1) { + for (i = 0, id = 1; i < MAX_SCSI_TAR; i++, id <<= 1) { - if (temp & id) - FPT_sccbMgrTbl[thisCard][i].TarStatus |= TAR_ALLOW_DISC; - } + if (temp & id) + FPT_sccbMgrTbl[thisCard][i].TarStatus |= TAR_ALLOW_DISC; + } - sync_bit_map = 0x0001; + sync_bit_map = 0x0001; - for (id = 0; id < (MAX_SCSI_TAR/2); id++) { + for (id = 0; id < (MAX_SCSI_TAR / 2); id++) { - if(pCurrNvRam){ - temp = (USHORT) pCurrNvRam->niSyncTbl[id]; + if (pCurrNvRam) { + temp = (unsigned short)pCurrNvRam->niSyncTbl[id]; temp = ((temp & 0x03) + ((temp << 4) & 0xc0)) + - (((temp << 4) & 0x0300) + ((temp << 8) & 0xc000)); - }else - temp = FPT_utilEERead(ioport, (USHORT)((SYNC_RATE_TBL/2)+id)); - - for (i = 0; i < 2; temp >>=8,i++) { - - if (pCardInfo->si_per_targ_init_sync & sync_bit_map) { - - FPT_sccbMgrTbl[thisCard][id*2+i].TarEEValue = (UCHAR)temp; - } - - else { - FPT_sccbMgrTbl[thisCard][id*2+i].TarStatus |= SYNC_SUPPORTED; - FPT_sccbMgrTbl[thisCard][id*2+i].TarEEValue = - (UCHAR)(temp & ~EE_SYNC_MASK); - } + (((temp << 4) & 0x0300) + ((temp << 8) & 0xc000)); + } else + temp = + FPT_utilEERead(ioport, + (unsigned short)((SYNC_RATE_TBL / 2) + + id)); + + for (i = 0; i < 2; temp >>= 8, i++) { + + if (pCardInfo->si_per_targ_init_sync & sync_bit_map) { + + FPT_sccbMgrTbl[thisCard][id * 2 + + i].TarEEValue = + (unsigned char)temp; + } + + else { + FPT_sccbMgrTbl[thisCard][id * 2 + + i].TarStatus |= + SYNC_SUPPORTED; + FPT_sccbMgrTbl[thisCard][id * 2 + + i].TarEEValue = + (unsigned char)(temp & ~EE_SYNC_MASK); + } /* if ((pCardInfo->si_per_targ_wide_nego & sync_bit_map) || (id*2+i >= 8)){ */ - if (pCardInfo->si_per_targ_wide_nego & sync_bit_map){ - - FPT_sccbMgrTbl[thisCard][id*2+i].TarEEValue |= EE_WIDE_SCSI; - - } - - else { /* NARROW SCSI */ - FPT_sccbMgrTbl[thisCard][id*2+i].TarStatus |= WIDE_NEGOCIATED; - } + if (pCardInfo->si_per_targ_wide_nego & sync_bit_map) { + FPT_sccbMgrTbl[thisCard][id * 2 + + i].TarEEValue |= + EE_WIDE_SCSI; - sync_bit_map <<= 1; + } + else { /* NARROW SCSI */ + FPT_sccbMgrTbl[thisCard][id * 2 + + i].TarStatus |= + WIDE_NEGOCIATED; + } + sync_bit_map <<= 1; - } - } + } + } - WR_HARPOON((ioport+hp_semaphore), - (UCHAR)(RD_HARPOON((ioport+hp_semaphore)) | SCCB_MGR_PRESENT)); + WR_HARPOON((ioport + hp_semaphore), + (unsigned char)(RD_HARPOON((ioport + hp_semaphore)) | + SCCB_MGR_PRESENT)); - return((ULONG)CurrCard); + return (unsigned long)CurrCard; } -static void SccbMgr_unload_card(ULONG pCurrCard) +static void FlashPoint_ReleaseHostAdapter(unsigned long pCurrCard) { - UCHAR i; - ULONG portBase; - ULONG regOffset; - ULONG scamData; - ULONG *pScamTbl; - PNVRamInfo pCurrNvRam; + unsigned char i; + unsigned long portBase; + unsigned long regOffset; + unsigned long scamData; + unsigned long *pScamTbl; + struct nvram_info *pCurrNvRam; - pCurrNvRam = ((PSCCBcard)pCurrCard)->pNvRamInfo; + pCurrNvRam = ((struct sccb_card *)pCurrCard)->pNvRamInfo; - if(pCurrNvRam){ + if (pCurrNvRam) { FPT_WrStack(pCurrNvRam->niBaseAddr, 0, pCurrNvRam->niModel); FPT_WrStack(pCurrNvRam->niBaseAddr, 1, pCurrNvRam->niSysConf); FPT_WrStack(pCurrNvRam->niBaseAddr, 2, pCurrNvRam->niScsiConf); FPT_WrStack(pCurrNvRam->niBaseAddr, 3, pCurrNvRam->niScamConf); FPT_WrStack(pCurrNvRam->niBaseAddr, 4, pCurrNvRam->niAdapId); - for(i = 0; i < MAX_SCSI_TAR / 2; i++) - FPT_WrStack(pCurrNvRam->niBaseAddr, (UCHAR)(i+5), pCurrNvRam->niSyncTbl[i]); + for (i = 0; i < MAX_SCSI_TAR / 2; i++) + FPT_WrStack(pCurrNvRam->niBaseAddr, + (unsigned char)(i + 5), + pCurrNvRam->niSyncTbl[i]); portBase = pCurrNvRam->niBaseAddr; - for(i = 0; i < MAX_SCSI_TAR; i++){ - regOffset = hp_aramBase + 64 + i*4; - pScamTbl = (ULONG *) &pCurrNvRam->niScamTbl[i]; + for (i = 0; i < MAX_SCSI_TAR; i++) { + regOffset = hp_aramBase + 64 + i * 4; + pScamTbl = (unsigned long *)&pCurrNvRam->niScamTbl[i]; scamData = *pScamTbl; WR_HARP32(portBase, regOffset, scamData); } - }else{ - FPT_WrStack(((PSCCBcard)pCurrCard)->ioPort, 0, 0); + } else { + FPT_WrStack(((struct sccb_card *)pCurrCard)->ioPort, 0, 0); } } - -static void FPT_RNVRamData(PNVRamInfo pNvRamInfo) +static void FPT_RNVRamData(struct nvram_info *pNvRamInfo) { - UCHAR i; - ULONG portBase; - ULONG regOffset; - ULONG scamData; - ULONG *pScamTbl; + unsigned char i; + unsigned long portBase; + unsigned long regOffset; + unsigned long scamData; + unsigned long *pScamTbl; - pNvRamInfo->niModel = FPT_RdStack(pNvRamInfo->niBaseAddr, 0); - pNvRamInfo->niSysConf = FPT_RdStack(pNvRamInfo->niBaseAddr, 1); + pNvRamInfo->niModel = FPT_RdStack(pNvRamInfo->niBaseAddr, 0); + pNvRamInfo->niSysConf = FPT_RdStack(pNvRamInfo->niBaseAddr, 1); pNvRamInfo->niScsiConf = FPT_RdStack(pNvRamInfo->niBaseAddr, 2); pNvRamInfo->niScamConf = FPT_RdStack(pNvRamInfo->niBaseAddr, 3); - pNvRamInfo->niAdapId = FPT_RdStack(pNvRamInfo->niBaseAddr, 4); + pNvRamInfo->niAdapId = FPT_RdStack(pNvRamInfo->niBaseAddr, 4); - for(i = 0; i < MAX_SCSI_TAR / 2; i++) - pNvRamInfo->niSyncTbl[i] = FPT_RdStack(pNvRamInfo->niBaseAddr, (UCHAR)(i+5)); + for (i = 0; i < MAX_SCSI_TAR / 2; i++) + pNvRamInfo->niSyncTbl[i] = + FPT_RdStack(pNvRamInfo->niBaseAddr, (unsigned char)(i + 5)); portBase = pNvRamInfo->niBaseAddr; - for(i = 0; i < MAX_SCSI_TAR; i++){ - regOffset = hp_aramBase + 64 + i*4; + for (i = 0; i < MAX_SCSI_TAR; i++) { + regOffset = hp_aramBase + 64 + i * 4; RD_HARP32(portBase, regOffset, scamData); - pScamTbl = (ULONG *) &pNvRamInfo->niScamTbl[i]; + pScamTbl = (unsigned long *)&pNvRamInfo->niScamTbl[i]; *pScamTbl = scamData; } } -static UCHAR FPT_RdStack(ULONG portBase, UCHAR index) +static unsigned char FPT_RdStack(unsigned long portBase, unsigned char index) { WR_HARPOON(portBase + hp_stack_addr, index); - return(RD_HARPOON(portBase + hp_stack_data)); + return RD_HARPOON(portBase + hp_stack_data); } -static void FPT_WrStack(ULONG portBase, UCHAR index, UCHAR data) +static void FPT_WrStack(unsigned long portBase, unsigned char index, + unsigned char data) { WR_HARPOON(portBase + hp_stack_addr, index); WR_HARPOON(portBase + hp_stack_data, data); } - -static UCHAR FPT_ChkIfChipInitialized(ULONG ioPort) +static unsigned char FPT_ChkIfChipInitialized(unsigned long ioPort) { - if((RD_HARPOON(ioPort + hp_arb_id) & 0x0f) != FPT_RdStack(ioPort, 4)) - return(0); - if((RD_HARPOON(ioPort + hp_clkctrl_0) & CLKCTRL_DEFAULT) - != CLKCTRL_DEFAULT) - return(0); - if((RD_HARPOON(ioPort + hp_seltimeout) == TO_250ms) || - (RD_HARPOON(ioPort + hp_seltimeout) == TO_290ms)) - return(1); - return(0); + if ((RD_HARPOON(ioPort + hp_arb_id) & 0x0f) != FPT_RdStack(ioPort, 4)) + return 0; + if ((RD_HARPOON(ioPort + hp_clkctrl_0) & CLKCTRL_DEFAULT) + != CLKCTRL_DEFAULT) + return 0; + if ((RD_HARPOON(ioPort + hp_seltimeout) == TO_250ms) || + (RD_HARPOON(ioPort + hp_seltimeout) == TO_290ms)) + return 1; + return 0; } + /*--------------------------------------------------------------------- * - * Function: SccbMgr_start_sccb + * Function: FlashPoint_StartCCB * * Description: Start a command pointed to by p_Sccb. When the * command is completed it will be returned via the * callback function. * *---------------------------------------------------------------------*/ -static void SccbMgr_start_sccb(ULONG pCurrCard, PSCCB p_Sccb) +static void FlashPoint_StartCCB(unsigned long pCurrCard, struct sccb *p_Sccb) { - ULONG ioport; - UCHAR thisCard, lun; - PSCCB pSaveSccb; - CALL_BK_FN callback; + unsigned long ioport; + unsigned char thisCard, lun; + struct sccb *pSaveSccb; + CALL_BK_FN callback; - thisCard = ((PSCCBcard) pCurrCard)->cardIndex; - ioport = ((PSCCBcard) pCurrCard)->ioPort; + thisCard = ((struct sccb_card *)pCurrCard)->cardIndex; + ioport = ((struct sccb_card *)pCurrCard)->ioPort; - if((p_Sccb->TargID > MAX_SCSI_TAR) || (p_Sccb->Lun > MAX_LUN)) - { + if ((p_Sccb->TargID > MAX_SCSI_TAR) || (p_Sccb->Lun > MAX_LUN)) { p_Sccb->HostStatus = SCCB_COMPLETE; p_Sccb->SccbStatus = SCCB_ERROR; - callback = (CALL_BK_FN)p_Sccb->SccbCallback; + callback = (CALL_BK_FN) p_Sccb->SccbCallback; if (callback) callback(p_Sccb); return; } - FPT_sinits(p_Sccb,thisCard); + FPT_sinits(p_Sccb, thisCard); + if (!((struct sccb_card *)pCurrCard)->cmdCounter) { + WR_HARPOON(ioport + hp_semaphore, + (RD_HARPOON(ioport + hp_semaphore) + | SCCB_MGR_ACTIVE)); - if (!((PSCCBcard) pCurrCard)->cmdCounter) - { - WR_HARPOON(ioport+hp_semaphore, (RD_HARPOON(ioport+hp_semaphore) - | SCCB_MGR_ACTIVE)); - - if (((PSCCBcard) pCurrCard)->globalFlags & F_GREEN_PC) - { - WR_HARPOON(ioport+hp_clkctrl_0, CLKCTRL_DEFAULT); - WR_HARPOON(ioport+hp_sys_ctrl, 0x00); - } - } + if (((struct sccb_card *)pCurrCard)->globalFlags & F_GREEN_PC) { + WR_HARPOON(ioport + hp_clkctrl_0, CLKCTRL_DEFAULT); + WR_HARPOON(ioport + hp_sys_ctrl, 0x00); + } + } - ((PSCCBcard)pCurrCard)->cmdCounter++; + ((struct sccb_card *)pCurrCard)->cmdCounter++; - if (RD_HARPOON(ioport+hp_semaphore) & BIOS_IN_USE) { + if (RD_HARPOON(ioport + hp_semaphore) & BIOS_IN_USE) { - WR_HARPOON(ioport+hp_semaphore, (RD_HARPOON(ioport+hp_semaphore) - | TICKLE_ME)); - if(p_Sccb->OperationCode == RESET_COMMAND) - { - pSaveSccb = ((PSCCBcard) pCurrCard)->currentSCCB; - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_queueSelectFail(&FPT_BL_Card[thisCard], thisCard); - ((PSCCBcard) pCurrCard)->currentSCCB = pSaveSccb; - } - else - { - FPT_queueAddSccb(p_Sccb,thisCard); - } - } + WR_HARPOON(ioport + hp_semaphore, + (RD_HARPOON(ioport + hp_semaphore) + | TICKLE_ME)); + if (p_Sccb->OperationCode == RESET_COMMAND) { + pSaveSccb = + ((struct sccb_card *)pCurrCard)->currentSCCB; + ((struct sccb_card *)pCurrCard)->currentSCCB = p_Sccb; + FPT_queueSelectFail(&FPT_BL_Card[thisCard], thisCard); + ((struct sccb_card *)pCurrCard)->currentSCCB = + pSaveSccb; + } else { + FPT_queueAddSccb(p_Sccb, thisCard); + } + } - else if ((RD_HARPOON(ioport+hp_page_ctrl) & G_INT_DISABLE)) { + else if ((RD_HARPOON(ioport + hp_page_ctrl) & G_INT_DISABLE)) { - if(p_Sccb->OperationCode == RESET_COMMAND) - { - pSaveSccb = ((PSCCBcard) pCurrCard)->currentSCCB; - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_queueSelectFail(&FPT_BL_Card[thisCard], thisCard); - ((PSCCBcard) pCurrCard)->currentSCCB = pSaveSccb; - } - else - { - FPT_queueAddSccb(p_Sccb,thisCard); - } - } + if (p_Sccb->OperationCode == RESET_COMMAND) { + pSaveSccb = + ((struct sccb_card *)pCurrCard)->currentSCCB; + ((struct sccb_card *)pCurrCard)->currentSCCB = p_Sccb; + FPT_queueSelectFail(&FPT_BL_Card[thisCard], thisCard); + ((struct sccb_card *)pCurrCard)->currentSCCB = + pSaveSccb; + } else { + FPT_queueAddSccb(p_Sccb, thisCard); + } + } - else { + else { - MDISABLE_INT(ioport); + MDISABLE_INT(ioport); - if((((PSCCBcard) pCurrCard)->globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[thisCard][p_Sccb->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) + if ((((struct sccb_card *)pCurrCard)->globalFlags & F_CONLUN_IO) + && + ((FPT_sccbMgrTbl[thisCard][p_Sccb->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) lun = p_Sccb->Lun; else lun = 0; - if ((((PSCCBcard) pCurrCard)->currentSCCB == NULL) && - (FPT_sccbMgrTbl[thisCard][p_Sccb->TargID].TarSelQ_Cnt == 0) && - (FPT_sccbMgrTbl[thisCard][p_Sccb->TargID].TarLUNBusy[lun] - == 0)) { - - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_ssel(p_Sccb->SccbIOPort,thisCard); - } + if ((((struct sccb_card *)pCurrCard)->currentSCCB == NULL) && + (FPT_sccbMgrTbl[thisCard][p_Sccb->TargID].TarSelQ_Cnt == 0) + && (FPT_sccbMgrTbl[thisCard][p_Sccb->TargID].TarLUNBusy[lun] + == 0)) { - else { + ((struct sccb_card *)pCurrCard)->currentSCCB = p_Sccb; + FPT_ssel(p_Sccb->SccbIOPort, thisCard); + } - if(p_Sccb->OperationCode == RESET_COMMAND) - { - pSaveSccb = ((PSCCBcard) pCurrCard)->currentSCCB; - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_queueSelectFail(&FPT_BL_Card[thisCard], thisCard); - ((PSCCBcard) pCurrCard)->currentSCCB = pSaveSccb; - } - else - { - FPT_queueAddSccb(p_Sccb,thisCard); - } - } + else { + if (p_Sccb->OperationCode == RESET_COMMAND) { + pSaveSccb = + ((struct sccb_card *)pCurrCard)-> + currentSCCB; + ((struct sccb_card *)pCurrCard)->currentSCCB = + p_Sccb; + FPT_queueSelectFail(&FPT_BL_Card[thisCard], + thisCard); + ((struct sccb_card *)pCurrCard)->currentSCCB = + pSaveSccb; + } else { + FPT_queueAddSccb(p_Sccb, thisCard); + } + } - MENABLE_INT(ioport); - } + MENABLE_INT(ioport); + } } - /*--------------------------------------------------------------------- * - * Function: SccbMgr_abort_sccb + * Function: FlashPoint_AbortCCB * * Description: Abort the command pointed to by p_Sccb. When the * command is completed it will be returned via the * callback function. * *---------------------------------------------------------------------*/ -static int SccbMgr_abort_sccb(ULONG pCurrCard, PSCCB p_Sccb) +static int FlashPoint_AbortCCB(unsigned long pCurrCard, struct sccb *p_Sccb) { - ULONG ioport; + unsigned long ioport; - UCHAR thisCard; + unsigned char thisCard; CALL_BK_FN callback; - UCHAR TID; - PSCCB pSaveSCCB; - PSCCBMgr_tar_info currTar_Info; + unsigned char TID; + struct sccb *pSaveSCCB; + struct sccb_mgr_tar_info *currTar_Info; + ioport = ((struct sccb_card *)pCurrCard)->ioPort; - ioport = ((PSCCBcard) pCurrCard)->ioPort; + thisCard = ((struct sccb_card *)pCurrCard)->cardIndex; - thisCard = ((PSCCBcard)pCurrCard)->cardIndex; - - if (!(RD_HARPOON(ioport+hp_page_ctrl) & G_INT_DISABLE)) - { + if (!(RD_HARPOON(ioport + hp_page_ctrl) & G_INT_DISABLE)) { - if (FPT_queueFindSccb(p_Sccb,thisCard)) - { + if (FPT_queueFindSccb(p_Sccb, thisCard)) { - ((PSCCBcard)pCurrCard)->cmdCounter--; + ((struct sccb_card *)pCurrCard)->cmdCounter--; - if (!((PSCCBcard)pCurrCard)->cmdCounter) - WR_HARPOON(ioport+hp_semaphore,(RD_HARPOON(ioport+hp_semaphore) - & (UCHAR)(~(SCCB_MGR_ACTIVE | TICKLE_ME)) )); + if (!((struct sccb_card *)pCurrCard)->cmdCounter) + WR_HARPOON(ioport + hp_semaphore, + (RD_HARPOON(ioport + hp_semaphore) + & (unsigned + char)(~(SCCB_MGR_ACTIVE | + TICKLE_ME)))); p_Sccb->SccbStatus = SCCB_ABORT; callback = p_Sccb->SccbCallback; callback(p_Sccb); - return(0); + return 0; } - else - { - if (((PSCCBcard)pCurrCard)->currentSCCB == p_Sccb) - { + else { + if (((struct sccb_card *)pCurrCard)->currentSCCB == + p_Sccb) { p_Sccb->SccbStatus = SCCB_ABORT; - return(0); + return 0; } - else - { + else { TID = p_Sccb->TargID; - - if(p_Sccb->Sccb_tag) - { + if (p_Sccb->Sccb_tag) { MDISABLE_INT(ioport); - if (((PSCCBcard) pCurrCard)->discQ_Tbl[p_Sccb->Sccb_tag]==p_Sccb) - { + if (((struct sccb_card *)pCurrCard)-> + discQ_Tbl[p_Sccb->Sccb_tag] == + p_Sccb) { p_Sccb->SccbStatus = SCCB_ABORT; - p_Sccb->Sccb_scsistat = ABORT_ST; - p_Sccb->Sccb_scsimsg = SMABORT_TAG; - - if(((PSCCBcard) pCurrCard)->currentSCCB == NULL) - { - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_ssel(ioport, thisCard); - } - else - { - pSaveSCCB = ((PSCCBcard) pCurrCard)->currentSCCB; - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_queueSelectFail((PSCCBcard) pCurrCard, thisCard); - ((PSCCBcard) pCurrCard)->currentSCCB = pSaveSCCB; + p_Sccb->Sccb_scsistat = + ABORT_ST; + p_Sccb->Sccb_scsimsg = + SMABORT_TAG; + + if (((struct sccb_card *) + pCurrCard)->currentSCCB == + NULL) { + ((struct sccb_card *) + pCurrCard)-> + currentSCCB = p_Sccb; + FPT_ssel(ioport, + thisCard); + } else { + pSaveSCCB = + ((struct sccb_card + *)pCurrCard)-> + currentSCCB; + ((struct sccb_card *) + pCurrCard)-> + currentSCCB = p_Sccb; + FPT_queueSelectFail((struct sccb_card *)pCurrCard, thisCard); + ((struct sccb_card *) + pCurrCard)-> + currentSCCB = pSaveSCCB; } } MENABLE_INT(ioport); - return(0); - } - else - { - currTar_Info = &FPT_sccbMgrTbl[thisCard][p_Sccb->TargID]; - - if(FPT_BL_Card[thisCard].discQ_Tbl[currTar_Info->LunDiscQ_Idx[p_Sccb->Lun]] - == p_Sccb) - { + return 0; + } else { + currTar_Info = + &FPT_sccbMgrTbl[thisCard][p_Sccb-> + TargID]; + + if (FPT_BL_Card[thisCard]. + discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[p_Sccb->Lun]] + == p_Sccb) { p_Sccb->SccbStatus = SCCB_ABORT; - return(0); + return 0; } } } } } - return(-1); + return -1; } - /*--------------------------------------------------------------------- * - * Function: SccbMgr_my_int + * Function: FlashPoint_InterruptPending * * Description: Do a quick check to determine if there is a pending * interrupt for this card and disable the IRQ Pin if so. * *---------------------------------------------------------------------*/ -static UCHAR SccbMgr_my_int(ULONG pCurrCard) +static unsigned char FlashPoint_InterruptPending(unsigned long pCurrCard) { - ULONG ioport; + unsigned long ioport; - ioport = ((PSCCBcard)pCurrCard)->ioPort; + ioport = ((struct sccb_card *)pCurrCard)->ioPort; - if (RD_HARPOON(ioport+hp_int_status) & INT_ASSERTED) - { - return(1); - } + if (RD_HARPOON(ioport + hp_int_status) & INT_ASSERTED) { + return 1; + } - else + else - return(0); + return 0; } - - /*--------------------------------------------------------------------- * - * Function: SccbMgr_isr + * Function: FlashPoint_HandleInterrupt * * Description: This is our entry point when an interrupt is generated * by the card and the upper level driver passes it on to * us. * *---------------------------------------------------------------------*/ -static int SccbMgr_isr(ULONG pCurrCard) +static int FlashPoint_HandleInterrupt(unsigned long pCurrCard) { - PSCCB currSCCB; - UCHAR thisCard,result,bm_status, bm_int_st; - USHORT hp_int; - UCHAR i, target; - ULONG ioport; - - thisCard = ((PSCCBcard)pCurrCard)->cardIndex; - ioport = ((PSCCBcard)pCurrCard)->ioPort; - - MDISABLE_INT(ioport); - - if ((bm_int_st=RD_HARPOON(ioport+hp_int_status)) & EXT_STATUS_ON) - bm_status = RD_HARPOON(ioport+hp_ext_status) & (UCHAR)BAD_EXT_STATUS; - else - bm_status = 0; - - WR_HARPOON(ioport+hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); + struct sccb *currSCCB; + unsigned char thisCard, result, bm_status, bm_int_st; + unsigned short hp_int; + unsigned char i, target; + unsigned long ioport; + + thisCard = ((struct sccb_card *)pCurrCard)->cardIndex; + ioport = ((struct sccb_card *)pCurrCard)->ioPort; + + MDISABLE_INT(ioport); + + if ((bm_int_st = RD_HARPOON(ioport + hp_int_status)) & EXT_STATUS_ON) + bm_status = + RD_HARPOON(ioport + + hp_ext_status) & (unsigned char)BAD_EXT_STATUS; + else + bm_status = 0; - while ((hp_int = RDW_HARPOON((ioport+hp_intstat)) & FPT_default_intena) | - bm_status) - { + WR_HARPOON(ioport + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); - currSCCB = ((PSCCBcard)pCurrCard)->currentSCCB; + while ((hp_int = + RDW_HARPOON((ioport + + hp_intstat)) & FPT_default_intena) | bm_status) { - if (hp_int & (FIFO | TIMEOUT | RESET | SCAM_SEL) || bm_status) { - result = FPT_SccbMgr_bad_isr(ioport,thisCard,((PSCCBcard)pCurrCard),hp_int); - WRW_HARPOON((ioport+hp_intstat), (FIFO | TIMEOUT | RESET | SCAM_SEL)); - bm_status = 0; + currSCCB = ((struct sccb_card *)pCurrCard)->currentSCCB; - if (result) { + if (hp_int & (FIFO | TIMEOUT | RESET | SCAM_SEL) || bm_status) { + result = + FPT_SccbMgr_bad_isr(ioport, thisCard, + ((struct sccb_card *)pCurrCard), + hp_int); + WRW_HARPOON((ioport + hp_intstat), + (FIFO | TIMEOUT | RESET | SCAM_SEL)); + bm_status = 0; - MENABLE_INT(ioport); - return(result); - } - } + if (result) { + MENABLE_INT(ioport); + return result; + } + } - else if (hp_int & ICMD_COMP) { + else if (hp_int & ICMD_COMP) { - if ( !(hp_int & BUS_FREE) ) { - /* Wait for the BusFree before starting a new command. We - must also check for being reselected since the BusFree - may not show up if another device reselects us in 1.5us or - less. SRR Wednesday, 3/8/1995. - */ - while (!(RDW_HARPOON((ioport+hp_intstat)) & (BUS_FREE | RSEL))) ; - } + if (!(hp_int & BUS_FREE)) { + /* Wait for the BusFree before starting a new command. We + must also check for being reselected since the BusFree + may not show up if another device reselects us in 1.5us or + less. SRR Wednesday, 3/8/1995. + */ + while (! + (RDW_HARPOON((ioport + hp_intstat)) & + (BUS_FREE | RSEL))) ; + } - if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT) + if (((struct sccb_card *)pCurrCard)-> + globalFlags & F_HOST_XFER_ACT) - FPT_phaseChkFifo(ioport, thisCard); + FPT_phaseChkFifo(ioport, thisCard); /* WRW_HARPOON((ioport+hp_intstat), (BUS_FREE | ICMD_COMP | ITAR_DISC | XFER_CNT_0)); */ - WRW_HARPOON((ioport+hp_intstat), CLR_ALL_INT_1); - - FPT_autoCmdCmplt(ioport,thisCard); + WRW_HARPOON((ioport + hp_intstat), CLR_ALL_INT_1); - } + FPT_autoCmdCmplt(ioport, thisCard); + } - else if (hp_int & ITAR_DISC) - { - - if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT) { - - FPT_phaseChkFifo(ioport, thisCard); - - } - - if (RD_HARPOON(ioport+hp_gp_reg_1) == SMSAVE_DATA_PTR) { - - WR_HARPOON(ioport+hp_gp_reg_1, 0x00); - currSCCB->Sccb_XferState |= F_NO_DATA_YET; - - currSCCB->Sccb_savedATC = currSCCB->Sccb_ATC; - } + else if (hp_int & ITAR_DISC) { - currSCCB->Sccb_scsistat = DISCONNECT_ST; - FPT_queueDisconnect(currSCCB,thisCard); + if (((struct sccb_card *)pCurrCard)-> + globalFlags & F_HOST_XFER_ACT) { - /* Wait for the BusFree before starting a new command. We - must also check for being reselected since the BusFree - may not show up if another device reselects us in 1.5us or - less. SRR Wednesday, 3/8/1995. - */ - while (!(RDW_HARPOON((ioport+hp_intstat)) & (BUS_FREE | RSEL)) && - !((RDW_HARPOON((ioport+hp_intstat)) & PHASE) && - RD_HARPOON((ioport+hp_scsisig)) == - (SCSI_BSY | SCSI_REQ | SCSI_CD | SCSI_MSG | SCSI_IOBIT))) ; + FPT_phaseChkFifo(ioport, thisCard); - /* - The additional loop exit condition above detects a timing problem - with the revision D/E harpoon chips. The caller should reset the - host adapter to recover when 0xFE is returned. - */ - if (!(RDW_HARPOON((ioport+hp_intstat)) & (BUS_FREE | RSEL))) - { - MENABLE_INT(ioport); - return 0xFE; - } + } - WRW_HARPOON((ioport+hp_intstat), (BUS_FREE | ITAR_DISC)); + if (RD_HARPOON(ioport + hp_gp_reg_1) == SMSAVE_DATA_PTR) { + WR_HARPOON(ioport + hp_gp_reg_1, 0x00); + currSCCB->Sccb_XferState |= F_NO_DATA_YET; - ((PSCCBcard)pCurrCard)->globalFlags |= F_NEW_SCCB_CMD; + currSCCB->Sccb_savedATC = currSCCB->Sccb_ATC; + } - } + currSCCB->Sccb_scsistat = DISCONNECT_ST; + FPT_queueDisconnect(currSCCB, thisCard); + /* Wait for the BusFree before starting a new command. We + must also check for being reselected since the BusFree + may not show up if another device reselects us in 1.5us or + less. SRR Wednesday, 3/8/1995. + */ + while (! + (RDW_HARPOON((ioport + hp_intstat)) & + (BUS_FREE | RSEL)) + && !((RDW_HARPOON((ioport + hp_intstat)) & PHASE) + && RD_HARPOON((ioport + hp_scsisig)) == + (SCSI_BSY | SCSI_REQ | SCSI_CD | SCSI_MSG | + SCSI_IOBIT))) ; - else if (hp_int & RSEL) { + /* + The additional loop exit condition above detects a timing problem + with the revision D/E harpoon chips. The caller should reset the + host adapter to recover when 0xFE is returned. + */ + if (! + (RDW_HARPOON((ioport + hp_intstat)) & + (BUS_FREE | RSEL))) { + MENABLE_INT(ioport); + return 0xFE; + } - WRW_HARPOON((ioport+hp_intstat), (PROG_HLT | RSEL | PHASE | BUS_FREE)); + WRW_HARPOON((ioport + hp_intstat), + (BUS_FREE | ITAR_DISC)); - if (RDW_HARPOON((ioport+hp_intstat)) & ITAR_DISC) - { - if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT) - { - FPT_phaseChkFifo(ioport, thisCard); - } + ((struct sccb_card *)pCurrCard)->globalFlags |= + F_NEW_SCCB_CMD; - if (RD_HARPOON(ioport+hp_gp_reg_1) == SMSAVE_DATA_PTR) - { - WR_HARPOON(ioport+hp_gp_reg_1, 0x00); - currSCCB->Sccb_XferState |= F_NO_DATA_YET; - currSCCB->Sccb_savedATC = currSCCB->Sccb_ATC; - } + } - WRW_HARPOON((ioport+hp_intstat), (BUS_FREE | ITAR_DISC)); - currSCCB->Sccb_scsistat = DISCONNECT_ST; - FPT_queueDisconnect(currSCCB,thisCard); - } + else if (hp_int & RSEL) { - FPT_sres(ioport,thisCard,((PSCCBcard)pCurrCard)); - FPT_phaseDecode(ioport,thisCard); + WRW_HARPOON((ioport + hp_intstat), + (PROG_HLT | RSEL | PHASE | BUS_FREE)); - } + if (RDW_HARPOON((ioport + hp_intstat)) & ITAR_DISC) { + if (((struct sccb_card *)pCurrCard)-> + globalFlags & F_HOST_XFER_ACT) { + FPT_phaseChkFifo(ioport, thisCard); + } + if (RD_HARPOON(ioport + hp_gp_reg_1) == + SMSAVE_DATA_PTR) { + WR_HARPOON(ioport + hp_gp_reg_1, 0x00); + currSCCB->Sccb_XferState |= + F_NO_DATA_YET; + currSCCB->Sccb_savedATC = + currSCCB->Sccb_ATC; + } - else if ((hp_int & IDO_STRT) && (!(hp_int & BUS_FREE))) - { + WRW_HARPOON((ioport + hp_intstat), + (BUS_FREE | ITAR_DISC)); + currSCCB->Sccb_scsistat = DISCONNECT_ST; + FPT_queueDisconnect(currSCCB, thisCard); + } - WRW_HARPOON((ioport+hp_intstat), (IDO_STRT | XFER_CNT_0)); - FPT_phaseDecode(ioport,thisCard); + FPT_sres(ioport, thisCard, + ((struct sccb_card *)pCurrCard)); + FPT_phaseDecode(ioport, thisCard); - } + } + else if ((hp_int & IDO_STRT) && (!(hp_int & BUS_FREE))) { - else if ( (hp_int & IUNKWN) || (hp_int & PROG_HLT) ) - { - WRW_HARPOON((ioport+hp_intstat), (PHASE | IUNKWN | PROG_HLT)); - if ((RD_HARPOON(ioport+hp_prgmcnt_0) & (UCHAR)0x3f)< (UCHAR)SELCHK) - { - FPT_phaseDecode(ioport,thisCard); - } - else - { - /* Harpoon problem some SCSI target device respond to selection - with short BUSY pulse (<400ns) this will make the Harpoon is not able - to latch the correct Target ID into reg. x53. - The work around require to correct this reg. But when write to this - reg. (0x53) also increment the FIFO write addr reg (0x6f), thus we - need to read this reg first then restore it later. After update to 0x53 */ + WRW_HARPOON((ioport + hp_intstat), + (IDO_STRT | XFER_CNT_0)); + FPT_phaseDecode(ioport, thisCard); - i = (UCHAR)(RD_HARPOON(ioport+hp_fifowrite)); - target = (UCHAR)(RD_HARPOON(ioport+hp_gp_reg_3)); - WR_HARPOON(ioport+hp_xfer_pad, (UCHAR) ID_UNLOCK); - WR_HARPOON(ioport+hp_select_id, (UCHAR)(target | target<<4)); - WR_HARPOON(ioport+hp_xfer_pad, (UCHAR) 0x00); - WR_HARPOON(ioport+hp_fifowrite, i); - WR_HARPOON(ioport+hp_autostart_3, (AUTO_IMMED+TAG_STRT)); - } - } + } - else if (hp_int & XFER_CNT_0) { + else if ((hp_int & IUNKWN) || (hp_int & PROG_HLT)) { + WRW_HARPOON((ioport + hp_intstat), + (PHASE | IUNKWN | PROG_HLT)); + if ((RD_HARPOON(ioport + hp_prgmcnt_0) & (unsigned char) + 0x3f) < (unsigned char)SELCHK) { + FPT_phaseDecode(ioport, thisCard); + } else { + /* Harpoon problem some SCSI target device respond to selection + with short BUSY pulse (<400ns) this will make the Harpoon is not able + to latch the correct Target ID into reg. x53. + The work around require to correct this reg. But when write to this + reg. (0x53) also increment the FIFO write addr reg (0x6f), thus we + need to read this reg first then restore it later. After update to 0x53 */ - WRW_HARPOON((ioport+hp_intstat), XFER_CNT_0); + i = (unsigned + char)(RD_HARPOON(ioport + hp_fifowrite)); + target = + (unsigned + char)(RD_HARPOON(ioport + hp_gp_reg_3)); + WR_HARPOON(ioport + hp_xfer_pad, + (unsigned char)ID_UNLOCK); + WR_HARPOON(ioport + hp_select_id, + (unsigned char)(target | target << + 4)); + WR_HARPOON(ioport + hp_xfer_pad, + (unsigned char)0x00); + WR_HARPOON(ioport + hp_fifowrite, i); + WR_HARPOON(ioport + hp_autostart_3, + (AUTO_IMMED + TAG_STRT)); + } + } - FPT_schkdd(ioport,thisCard); + else if (hp_int & XFER_CNT_0) { - } + WRW_HARPOON((ioport + hp_intstat), XFER_CNT_0); + FPT_schkdd(ioport, thisCard); - else if (hp_int & BUS_FREE) { + } - WRW_HARPOON((ioport+hp_intstat), BUS_FREE); + else if (hp_int & BUS_FREE) { - if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT) { + WRW_HARPOON((ioport + hp_intstat), BUS_FREE); - FPT_hostDataXferAbort(ioport,thisCard,currSCCB); - } + if (((struct sccb_card *)pCurrCard)-> + globalFlags & F_HOST_XFER_ACT) { - FPT_phaseBusFree(ioport,thisCard); + FPT_hostDataXferAbort(ioport, thisCard, + currSCCB); } + FPT_phaseBusFree(ioport, thisCard); + } - else if (hp_int & ITICKLE) { - - WRW_HARPOON((ioport+hp_intstat), ITICKLE); - ((PSCCBcard)pCurrCard)->globalFlags |= F_NEW_SCCB_CMD; - } - - - - if (((PSCCBcard)pCurrCard)->globalFlags & F_NEW_SCCB_CMD) { + else if (hp_int & ITICKLE) { + WRW_HARPOON((ioport + hp_intstat), ITICKLE); + ((struct sccb_card *)pCurrCard)->globalFlags |= + F_NEW_SCCB_CMD; + } - ((PSCCBcard)pCurrCard)->globalFlags &= ~F_NEW_SCCB_CMD; + if (((struct sccb_card *)pCurrCard)-> + globalFlags & F_NEW_SCCB_CMD) { + ((struct sccb_card *)pCurrCard)->globalFlags &= + ~F_NEW_SCCB_CMD; - if (((PSCCBcard)pCurrCard)->currentSCCB == NULL) { + if (((struct sccb_card *)pCurrCard)->currentSCCB == + NULL) { - FPT_queueSearchSelect(((PSCCBcard)pCurrCard),thisCard); - } + FPT_queueSearchSelect(((struct sccb_card *) + pCurrCard), thisCard); + } - if (((PSCCBcard)pCurrCard)->currentSCCB != NULL) { - ((PSCCBcard)pCurrCard)->globalFlags &= ~F_NEW_SCCB_CMD; - FPT_ssel(ioport,thisCard); - } + if (((struct sccb_card *)pCurrCard)->currentSCCB != + NULL) { + ((struct sccb_card *)pCurrCard)->globalFlags &= + ~F_NEW_SCCB_CMD; + FPT_ssel(ioport, thisCard); + } - break; + break; - } + } - } /*end while */ + } /*end while */ - MENABLE_INT(ioport); + MENABLE_INT(ioport); - return(0); + return 0; } /*--------------------------------------------------------------------- @@ -2529,150 +2010,149 @@ static int SccbMgr_isr(ULONG pCurrCard) * processing time. * *---------------------------------------------------------------------*/ -static UCHAR FPT_SccbMgr_bad_isr(ULONG p_port, UCHAR p_card, - PSCCBcard pCurrCard, USHORT p_int) +static unsigned char FPT_SccbMgr_bad_isr(unsigned long p_port, + unsigned char p_card, + struct sccb_card *pCurrCard, + unsigned short p_int) { - UCHAR temp, ScamFlg; - PSCCBMgr_tar_info currTar_Info; - PNVRamInfo pCurrNvRam; - - - if (RD_HARPOON(p_port+hp_ext_status) & - (BM_FORCE_OFF | PCI_DEV_TMOUT | BM_PARITY_ERR | PIO_OVERRUN) ) - { + unsigned char temp, ScamFlg; + struct sccb_mgr_tar_info *currTar_Info; + struct nvram_info *pCurrNvRam; - if (pCurrCard->globalFlags & F_HOST_XFER_ACT) - { + if (RD_HARPOON(p_port + hp_ext_status) & + (BM_FORCE_OFF | PCI_DEV_TMOUT | BM_PARITY_ERR | PIO_OVERRUN)) { - FPT_hostDataXferAbort(p_port,p_card, pCurrCard->currentSCCB); - } + if (pCurrCard->globalFlags & F_HOST_XFER_ACT) { - if (RD_HARPOON(p_port+hp_pci_stat_cfg) & REC_MASTER_ABORT) - - { - WR_HARPOON(p_port+hp_pci_stat_cfg, - (RD_HARPOON(p_port+hp_pci_stat_cfg) & ~REC_MASTER_ABORT)); - - WR_HARPOON(p_port+hp_host_blk_cnt, 0x00); - - } - - if (pCurrCard->currentSCCB != NULL) - { + FPT_hostDataXferAbort(p_port, p_card, + pCurrCard->currentSCCB); + } - if (!pCurrCard->currentSCCB->HostStatus) - pCurrCard->currentSCCB->HostStatus = SCCB_BM_ERR; + if (RD_HARPOON(p_port + hp_pci_stat_cfg) & REC_MASTER_ABORT) + { + WR_HARPOON(p_port + hp_pci_stat_cfg, + (RD_HARPOON(p_port + hp_pci_stat_cfg) & + ~REC_MASTER_ABORT)); - FPT_sxfrp(p_port,p_card); + WR_HARPOON(p_port + hp_host_blk_cnt, 0x00); - temp = (UCHAR)(RD_HARPOON(p_port+hp_ee_ctrl) & - (EXT_ARB_ACK | SCSI_TERM_ENA_H)); - WR_HARPOON(p_port+hp_ee_ctrl, ((UCHAR)temp | SEE_MS | SEE_CS)); - WR_HARPOON(p_port+hp_ee_ctrl, temp); + } - if (!(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET))) - { - FPT_phaseDecode(p_port,p_card); - } - } - } + if (pCurrCard->currentSCCB != NULL) { + if (!pCurrCard->currentSCCB->HostStatus) + pCurrCard->currentSCCB->HostStatus = + SCCB_BM_ERR; - else if (p_int & RESET) - { + FPT_sxfrp(p_port, p_card); - WR_HARPOON(p_port+hp_clkctrl_0, CLKCTRL_DEFAULT); - WR_HARPOON(p_port+hp_sys_ctrl, 0x00); - if (pCurrCard->currentSCCB != NULL) { + temp = (unsigned char)(RD_HARPOON(p_port + hp_ee_ctrl) & + (EXT_ARB_ACK | SCSI_TERM_ENA_H)); + WR_HARPOON(p_port + hp_ee_ctrl, + ((unsigned char)temp | SEE_MS | SEE_CS)); + WR_HARPOON(p_port + hp_ee_ctrl, temp); - if (pCurrCard->globalFlags & F_HOST_XFER_ACT) + if (! + (RDW_HARPOON((p_port + hp_intstat)) & + (BUS_FREE | RESET))) { + FPT_phaseDecode(p_port, p_card); + } + } + } - FPT_hostDataXferAbort(p_port,p_card, pCurrCard->currentSCCB); - } + else if (p_int & RESET) { + WR_HARPOON(p_port + hp_clkctrl_0, CLKCTRL_DEFAULT); + WR_HARPOON(p_port + hp_sys_ctrl, 0x00); + if (pCurrCard->currentSCCB != NULL) { - DISABLE_AUTO(p_port); + if (pCurrCard->globalFlags & F_HOST_XFER_ACT) - FPT_sresb(p_port,p_card); + FPT_hostDataXferAbort(p_port, p_card, + pCurrCard->currentSCCB); + } - while(RD_HARPOON(p_port+hp_scsictrl_0) & SCSI_RST) {} + DISABLE_AUTO(p_port); - pCurrNvRam = pCurrCard->pNvRamInfo; - if(pCurrNvRam){ - ScamFlg = pCurrNvRam->niScamConf; - } - else{ - ScamFlg = (UCHAR) FPT_utilEERead(p_port, SCAM_CONFIG/2); - } + FPT_sresb(p_port, p_card); - FPT_XbowInit(p_port, ScamFlg); + while (RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST) { + } - FPT_scini(p_card, pCurrCard->ourId, 0); + pCurrNvRam = pCurrCard->pNvRamInfo; + if (pCurrNvRam) { + ScamFlg = pCurrNvRam->niScamConf; + } else { + ScamFlg = + (unsigned char)FPT_utilEERead(p_port, + SCAM_CONFIG / 2); + } - return(0xFF); - } + FPT_XbowInit(p_port, ScamFlg); + FPT_scini(p_card, pCurrCard->ourId, 0); - else if (p_int & FIFO) { + return 0xFF; + } - WRW_HARPOON((p_port+hp_intstat), FIFO); + else if (p_int & FIFO) { - if (pCurrCard->currentSCCB != NULL) - FPT_sxfrp(p_port,p_card); - } + WRW_HARPOON((p_port + hp_intstat), FIFO); - else if (p_int & TIMEOUT) - { + if (pCurrCard->currentSCCB != NULL) + FPT_sxfrp(p_port, p_card); + } - DISABLE_AUTO(p_port); + else if (p_int & TIMEOUT) { - WRW_HARPOON((p_port+hp_intstat), - (PROG_HLT | TIMEOUT | SEL |BUS_FREE | PHASE | IUNKWN)); + DISABLE_AUTO(p_port); - pCurrCard->currentSCCB->HostStatus = SCCB_SELECTION_TIMEOUT; + WRW_HARPOON((p_port + hp_intstat), + (PROG_HLT | TIMEOUT | SEL | BUS_FREE | PHASE | + IUNKWN)); + pCurrCard->currentSCCB->HostStatus = SCCB_SELECTION_TIMEOUT; - currTar_Info = &FPT_sccbMgrTbl[p_card][pCurrCard->currentSCCB->TargID]; - if((pCurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - currTar_Info->TarLUNBusy[pCurrCard->currentSCCB->Lun] = 0; + currTar_Info = + &FPT_sccbMgrTbl[p_card][pCurrCard->currentSCCB->TargID]; + if ((pCurrCard->globalFlags & F_CONLUN_IO) + && ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING)) + currTar_Info->TarLUNBusy[pCurrCard->currentSCCB->Lun] = + 0; else - currTar_Info->TarLUNBusy[0] = 0; - + currTar_Info->TarLUNBusy[0] = 0; - if (currTar_Info->TarEEValue & EE_SYNC_MASK) - { - currTar_Info->TarSyncCtrl = 0; - currTar_Info->TarStatus &= ~TAR_SYNC_MASK; - } + if (currTar_Info->TarEEValue & EE_SYNC_MASK) { + currTar_Info->TarSyncCtrl = 0; + currTar_Info->TarStatus &= ~TAR_SYNC_MASK; + } - if (currTar_Info->TarEEValue & EE_WIDE_SCSI) - { - currTar_Info->TarStatus &= ~TAR_WIDE_MASK; - } + if (currTar_Info->TarEEValue & EE_WIDE_SCSI) { + currTar_Info->TarStatus &= ~TAR_WIDE_MASK; + } - FPT_sssyncv(p_port, pCurrCard->currentSCCB->TargID, NARROW_SCSI,currTar_Info); + FPT_sssyncv(p_port, pCurrCard->currentSCCB->TargID, NARROW_SCSI, + currTar_Info); - FPT_queueCmdComplete(pCurrCard, pCurrCard->currentSCCB, p_card); + FPT_queueCmdComplete(pCurrCard, pCurrCard->currentSCCB, p_card); - } + } - else if (p_int & SCAM_SEL) - { + else if (p_int & SCAM_SEL) { - FPT_scarb(p_port,LEVEL2_TAR); - FPT_scsel(p_port); - FPT_scasid(p_card, p_port); + FPT_scarb(p_port, LEVEL2_TAR); + FPT_scsel(p_port); + FPT_scasid(p_card, p_port); - FPT_scbusf(p_port); + FPT_scbusf(p_port); - WRW_HARPOON((p_port+hp_intstat), SCAM_SEL); - } + WRW_HARPOON((p_port + hp_intstat), SCAM_SEL); + } - return(0x00); + return 0x00; } - /*--------------------------------------------------------------------- * * Function: SccbMgrTableInit @@ -2683,21 +2163,19 @@ static UCHAR FPT_SccbMgr_bad_isr(ULONG p static void FPT_SccbMgrTableInitAll() { - UCHAR thisCard; + unsigned char thisCard; - for (thisCard = 0; thisCard < MAX_CARDS; thisCard++) - { - FPT_SccbMgrTableInitCard(&FPT_BL_Card[thisCard],thisCard); + for (thisCard = 0; thisCard < MAX_CARDS; thisCard++) { + FPT_SccbMgrTableInitCard(&FPT_BL_Card[thisCard], thisCard); - FPT_BL_Card[thisCard].ioPort = 0x00; - FPT_BL_Card[thisCard].cardInfo = NULL; - FPT_BL_Card[thisCard].cardIndex = 0xFF; - FPT_BL_Card[thisCard].ourId = 0x00; - FPT_BL_Card[thisCard].pNvRamInfo = NULL; - } + FPT_BL_Card[thisCard].ioPort = 0x00; + FPT_BL_Card[thisCard].cardInfo = NULL; + FPT_BL_Card[thisCard].cardIndex = 0xFF; + FPT_BL_Card[thisCard].ourId = 0x00; + FPT_BL_Card[thisCard].pNvRamInfo = NULL; + } } - /*--------------------------------------------------------------------- * * Function: SccbMgrTableInit @@ -2706,33 +2184,30 @@ static void FPT_SccbMgrTableInitAll() * *---------------------------------------------------------------------*/ -static void FPT_SccbMgrTableInitCard(PSCCBcard pCurrCard, UCHAR p_card) +static void FPT_SccbMgrTableInitCard(struct sccb_card *pCurrCard, + unsigned char p_card) { - UCHAR scsiID, qtag; + unsigned char scsiID, qtag; - for (qtag = 0; qtag < QUEUE_DEPTH; qtag++) - { + for (qtag = 0; qtag < QUEUE_DEPTH; qtag++) { FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; } - for (scsiID = 0; scsiID < MAX_SCSI_TAR; scsiID++) - { - FPT_sccbMgrTbl[p_card][scsiID].TarStatus = 0; - FPT_sccbMgrTbl[p_card][scsiID].TarEEValue = 0; - FPT_SccbMgrTableInitTarget(p_card, scsiID); - } + for (scsiID = 0; scsiID < MAX_SCSI_TAR; scsiID++) { + FPT_sccbMgrTbl[p_card][scsiID].TarStatus = 0; + FPT_sccbMgrTbl[p_card][scsiID].TarEEValue = 0; + FPT_SccbMgrTableInitTarget(p_card, scsiID); + } - pCurrCard->scanIndex = 0x00; - pCurrCard->currentSCCB = NULL; - pCurrCard->globalFlags = 0x00; - pCurrCard->cmdCounter = 0x00; + pCurrCard->scanIndex = 0x00; + pCurrCard->currentSCCB = NULL; + pCurrCard->globalFlags = 0x00; + pCurrCard->cmdCounter = 0x00; pCurrCard->tagQ_Lst = 0x01; - pCurrCard->discQCount = 0; - + pCurrCard->discQCount = 0; } - /*--------------------------------------------------------------------- * * Function: SccbMgrTableInit @@ -2741,11 +2216,12 @@ static void FPT_SccbMgrTableInitCard(PSC * *---------------------------------------------------------------------*/ -static void FPT_SccbMgrTableInitTarget(UCHAR p_card, UCHAR target) +static void FPT_SccbMgrTableInitTarget(unsigned char p_card, + unsigned char target) { - UCHAR lun, qtag; - PSCCBMgr_tar_info currTar_Info; + unsigned char lun, qtag; + struct sccb_mgr_tar_info *currTar_Info; currTar_Info = &FPT_sccbMgrTbl[p_card][target]; @@ -2757,19 +2233,15 @@ static void FPT_SccbMgrTableInitTarget(U currTar_Info->TarTagQ_Cnt = 0; currTar_Info->TarLUN_CA = 0; - - for (lun = 0; lun < MAX_LUN; lun++) - { + for (lun = 0; lun < MAX_LUN; lun++) { currTar_Info->TarLUNBusy[lun] = 0; currTar_Info->LunDiscQ_Idx[lun] = 0; } - for (qtag = 0; qtag < QUEUE_DEPTH; qtag++) - { - if(FPT_BL_Card[p_card].discQ_Tbl[qtag] != NULL) - { - if(FPT_BL_Card[p_card].discQ_Tbl[qtag]->TargID == target) - { + for (qtag = 0; qtag < QUEUE_DEPTH; qtag++) { + if (FPT_BL_Card[p_card].discQ_Tbl[qtag] != NULL) { + if (FPT_BL_Card[p_card].discQ_Tbl[qtag]->TargID == + target) { FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; FPT_BL_Card[p_card].discQCount--; } @@ -2777,7 +2249,6 @@ static void FPT_SccbMgrTableInitTarget(U } } - /*--------------------------------------------------------------------- * * Function: sfetm @@ -2787,71 +2258,66 @@ static void FPT_SccbMgrTableInitTarget(U * *---------------------------------------------------------------------*/ -static UCHAR FPT_sfm(ULONG port, PSCCB pCurrSCCB) +static unsigned char FPT_sfm(unsigned long port, struct sccb *pCurrSCCB) { - UCHAR message; - USHORT TimeOutLoop; + unsigned char message; + unsigned short TimeOutLoop; TimeOutLoop = 0; - while( (!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) && - (TimeOutLoop++ < 20000) ){} - - - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); + while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) && + (TimeOutLoop++ < 20000)) { + } - message = RD_HARPOON(port+hp_scsidata_0); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); - WR_HARPOON(port+hp_scsisig, SCSI_ACK + S_MSGI_PH); + message = RD_HARPOON(port + hp_scsidata_0); + WR_HARPOON(port + hp_scsisig, SCSI_ACK + S_MSGI_PH); if (TimeOutLoop > 20000) - message = 0x00; /* force message byte = 0 if Time Out on Req */ + message = 0x00; /* force message byte = 0 if Time Out on Req */ - if ((RDW_HARPOON((port+hp_intstat)) & PARITY) && - (RD_HARPOON(port+hp_addstat) & SCSI_PAR_ERR)) - { - WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); - WR_HARPOON(port+hp_xferstat, 0); - WR_HARPOON(port+hp_fiforead, 0); - WR_HARPOON(port+hp_fifowrite, 0); - if (pCurrSCCB != NULL) - { + if ((RDW_HARPOON((port + hp_intstat)) & PARITY) && + (RD_HARPOON(port + hp_addstat) & SCSI_PAR_ERR)) { + WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH)); + WR_HARPOON(port + hp_xferstat, 0); + WR_HARPOON(port + hp_fiforead, 0); + WR_HARPOON(port + hp_fifowrite, 0); + if (pCurrSCCB != NULL) { pCurrSCCB->Sccb_scsimsg = SMPARITY; } message = 0x00; - do - { + do { ACCEPT_MSG_ATN(port); TimeOutLoop = 0; - while( (!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) && - (TimeOutLoop++ < 20000) ){} - if (TimeOutLoop > 20000) - { - WRW_HARPOON((port+hp_intstat), PARITY); - return(message); + while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) && + (TimeOutLoop++ < 20000)) { } - if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) != S_MSGI_PH) - { - WRW_HARPOON((port+hp_intstat), PARITY); - return(message); + if (TimeOutLoop > 20000) { + WRW_HARPOON((port + hp_intstat), PARITY); + return message; + } + if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) != + S_MSGI_PH) { + WRW_HARPOON((port + hp_intstat), PARITY); + return message; } - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); - RD_HARPOON(port+hp_scsidata_0); + RD_HARPOON(port + hp_scsidata_0); - WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); + WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH)); - }while(1); + } while (1); } - WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); - WR_HARPOON(port+hp_xferstat, 0); - WR_HARPOON(port+hp_fiforead, 0); - WR_HARPOON(port+hp_fifowrite, 0); - return(message); + WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH)); + WR_HARPOON(port + hp_xferstat, 0); + WR_HARPOON(port + hp_fiforead, 0); + WR_HARPOON(port + hp_fifowrite, 0); + return message; } - /*--------------------------------------------------------------------- * * Function: FPT_ssel @@ -2860,102 +2326,90 @@ static UCHAR FPT_sfm(ULONG port, PSCCB p * *---------------------------------------------------------------------*/ -static void FPT_ssel(ULONG port, UCHAR p_card) +static void FPT_ssel(unsigned long port, unsigned char p_card) { - UCHAR auto_loaded, i, target, *theCCB; - - ULONG cdb_reg; - PSCCBcard CurrCard; - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; - UCHAR lastTag, lun; + unsigned char auto_loaded, i, target, *theCCB; - CurrCard = &FPT_BL_Card[p_card]; - currSCCB = CurrCard->currentSCCB; - target = currSCCB->TargID; - currTar_Info = &FPT_sccbMgrTbl[p_card][target]; - lastTag = CurrCard->tagQ_Lst; + unsigned long cdb_reg; + struct sccb_card *CurrCard; + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; + unsigned char lastTag, lun; - ARAM_ACCESS(port); + CurrCard = &FPT_BL_Card[p_card]; + currSCCB = CurrCard->currentSCCB; + target = currSCCB->TargID; + currTar_Info = &FPT_sccbMgrTbl[p_card][target]; + lastTag = CurrCard->tagQ_Lst; + ARAM_ACCESS(port); if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_REJECT) currSCCB->ControlByte &= ~F_USE_CMD_Q; - if(((CurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) + if (((CurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - lun = currSCCB->Lun; + lun = currSCCB->Lun; else lun = 0; + if (CurrCard->globalFlags & F_TAG_STARTED) { + if (!(currSCCB->ControlByte & F_USE_CMD_Q)) { + if ((currTar_Info->TarLUN_CA == 0) + && ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) + == TAG_Q_TRYING)) { + + if (currTar_Info->TarTagQ_Cnt != 0) { + currTar_Info->TarLUNBusy[lun] = 1; + FPT_queueSelectFail(CurrCard, p_card); + SGRAM_ACCESS(port); + return; + } - if (CurrCard->globalFlags & F_TAG_STARTED) - { - if (!(currSCCB->ControlByte & F_USE_CMD_Q)) - { - if ((currTar_Info->TarLUN_CA == 0) - && ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) - == TAG_Q_TRYING)) - { - - if (currTar_Info->TarTagQ_Cnt !=0) - { - currTar_Info->TarLUNBusy[lun] = 1; - FPT_queueSelectFail(CurrCard,p_card); - SGRAM_ACCESS(port); - return; - } - - else { - currTar_Info->TarLUNBusy[lun] = 1; - } - - } /*End non-tagged */ - - else { - currTar_Info->TarLUNBusy[lun] = 1; - } - - } /*!Use cmd Q Tagged */ - - else { - if (currTar_Info->TarLUN_CA == 1) - { - FPT_queueSelectFail(CurrCard,p_card); - SGRAM_ACCESS(port); - return; - } - - currTar_Info->TarLUNBusy[lun] = 1; + else { + currTar_Info->TarLUNBusy[lun] = 1; + } - } /*else use cmd Q tagged */ + } + /*End non-tagged */ + else { + currTar_Info->TarLUNBusy[lun] = 1; + } - } /*if glob tagged started */ + } + /*!Use cmd Q Tagged */ + else { + if (currTar_Info->TarLUN_CA == 1) { + FPT_queueSelectFail(CurrCard, p_card); + SGRAM_ACCESS(port); + return; + } - else { - currTar_Info->TarLUNBusy[lun] = 1; - } + currTar_Info->TarLUNBusy[lun] = 1; + } /*else use cmd Q tagged */ + } + /*if glob tagged started */ + else { + currTar_Info->TarLUNBusy[lun] = 1; + } - if((((CurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - || (!(currSCCB->ControlByte & F_USE_CMD_Q)))) - { - if(CurrCard->discQCount >= QUEUE_DEPTH) - { + if ((((CurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) + || (!(currSCCB->ControlByte & F_USE_CMD_Q)))) { + if (CurrCard->discQCount >= QUEUE_DEPTH) { currTar_Info->TarLUNBusy[lun] = 1; - FPT_queueSelectFail(CurrCard,p_card); + FPT_queueSelectFail(CurrCard, p_card); SGRAM_ACCESS(port); return; } - for (i = 1; i < QUEUE_DEPTH; i++) - { - if (++lastTag >= QUEUE_DEPTH) lastTag = 1; - if (CurrCard->discQ_Tbl[lastTag] == NULL) - { + for (i = 1; i < QUEUE_DEPTH; i++) { + if (++lastTag >= QUEUE_DEPTH) + lastTag = 1; + if (CurrCard->discQ_Tbl[lastTag] == NULL) { CurrCard->tagQ_Lst = lastTag; currTar_Info->LunDiscQ_Idx[lun] = lastTag; CurrCard->discQ_Tbl[lastTag] = currSCCB; @@ -2963,206 +2417,206 @@ static void FPT_ssel(ULONG port, UCHAR p break; } } - if(i == QUEUE_DEPTH) - { + if (i == QUEUE_DEPTH) { currTar_Info->TarLUNBusy[lun] = 1; - FPT_queueSelectFail(CurrCard,p_card); + FPT_queueSelectFail(CurrCard, p_card); SGRAM_ACCESS(port); return; } } + auto_loaded = 0; + WR_HARPOON(port + hp_select_id, target); + WR_HARPOON(port + hp_gp_reg_3, target); /* Use by new automation logic */ - auto_loaded = 0; + if (currSCCB->OperationCode == RESET_COMMAND) { + WRW_HARPOON((port + ID_MSG_STRT), (MPM_OP + AMSG_OUT + + (currSCCB-> + Sccb_idmsg & ~DISC_PRIV))); - WR_HARPOON(port+hp_select_id, target); - WR_HARPOON(port+hp_gp_reg_3, target); /* Use by new automation logic */ + WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + NP); - if (currSCCB->OperationCode == RESET_COMMAND) { - WRW_HARPOON((port+ID_MSG_STRT), (MPM_OP+AMSG_OUT+ - (currSCCB->Sccb_idmsg & ~DISC_PRIV))); + currSCCB->Sccb_scsimsg = SMDEV_RESET; - WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+NP); + WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT)); + auto_loaded = 1; + currSCCB->Sccb_scsistat = SELECT_BDR_ST; - currSCCB->Sccb_scsimsg = SMDEV_RESET; + if (currTar_Info->TarEEValue & EE_SYNC_MASK) { + currTar_Info->TarSyncCtrl = 0; + currTar_Info->TarStatus &= ~TAR_SYNC_MASK; + } - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); - auto_loaded = 1; - currSCCB->Sccb_scsistat = SELECT_BDR_ST; + if (currTar_Info->TarEEValue & EE_WIDE_SCSI) { + currTar_Info->TarStatus &= ~TAR_WIDE_MASK; + } - if (currTar_Info->TarEEValue & EE_SYNC_MASK) - { - currTar_Info->TarSyncCtrl = 0; - currTar_Info->TarStatus &= ~TAR_SYNC_MASK; - } + FPT_sssyncv(port, target, NARROW_SCSI, currTar_Info); + FPT_SccbMgrTableInitTarget(p_card, target); - if (currTar_Info->TarEEValue & EE_WIDE_SCSI) - { - currTar_Info->TarStatus &= ~TAR_WIDE_MASK; - } + } - FPT_sssyncv(port, target, NARROW_SCSI,currTar_Info); - FPT_SccbMgrTableInitTarget(p_card, target); + else if (currSCCB->Sccb_scsistat == ABORT_ST) { + WRW_HARPOON((port + ID_MSG_STRT), (MPM_OP + AMSG_OUT + + (currSCCB-> + Sccb_idmsg & ~DISC_PRIV))); - } + WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ); - else if(currSCCB->Sccb_scsistat == ABORT_ST) - { - WRW_HARPOON((port+ID_MSG_STRT), (MPM_OP+AMSG_OUT+ - (currSCCB->Sccb_idmsg & ~DISC_PRIV))); + WRW_HARPOON((port + SYNC_MSGS + 0), (MPM_OP + AMSG_OUT + + (((unsigned + char)(currSCCB-> + ControlByte & + TAG_TYPE_MASK) + >> 6) | (unsigned char) + 0x20))); + WRW_HARPOON((port + SYNC_MSGS + 2), + (MPM_OP + AMSG_OUT + currSCCB->Sccb_tag)); + WRW_HARPOON((port + SYNC_MSGS + 4), (BRH_OP + ALWAYS + NP)); - WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+CMDPZ); + WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT)); + auto_loaded = 1; - WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+ - (((UCHAR)(currSCCB->ControlByte & TAG_TYPE_MASK) - >> 6) | (UCHAR)0x20))); - WRW_HARPOON((port+SYNC_MSGS+2), - (MPM_OP+AMSG_OUT+currSCCB->Sccb_tag)); - WRW_HARPOON((port+SYNC_MSGS+4), (BRH_OP+ALWAYS+NP )); - - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); - auto_loaded = 1; - - } - - else if (!(currTar_Info->TarStatus & WIDE_NEGOCIATED)) { - auto_loaded = FPT_siwidn(port,p_card); - currSCCB->Sccb_scsistat = SELECT_WN_ST; - } + } - else if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) - == SYNC_SUPPORTED)) { - auto_loaded = FPT_sisyncn(port,p_card, 0); - currSCCB->Sccb_scsistat = SELECT_SN_ST; - } + else if (!(currTar_Info->TarStatus & WIDE_NEGOCIATED)) { + auto_loaded = FPT_siwidn(port, p_card); + currSCCB->Sccb_scsistat = SELECT_WN_ST; + } + else if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) + == SYNC_SUPPORTED)) { + auto_loaded = FPT_sisyncn(port, p_card, 0); + currSCCB->Sccb_scsistat = SELECT_SN_ST; + } - if (!auto_loaded) - { + if (!auto_loaded) { - if (currSCCB->ControlByte & F_USE_CMD_Q) - { + if (currSCCB->ControlByte & F_USE_CMD_Q) { - CurrCard->globalFlags |= F_TAG_STARTED; + CurrCard->globalFlags |= F_TAG_STARTED; - if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) - == TAG_Q_REJECT) - { - currSCCB->ControlByte &= ~F_USE_CMD_Q; + if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) + == TAG_Q_REJECT) { + currSCCB->ControlByte &= ~F_USE_CMD_Q; - /* Fix up the start instruction with a jump to - Non-Tag-CMD handling */ - WRW_HARPOON((port+ID_MSG_STRT),BRH_OP+ALWAYS+NTCMD); + /* Fix up the start instruction with a jump to + Non-Tag-CMD handling */ + WRW_HARPOON((port + ID_MSG_STRT), + BRH_OP + ALWAYS + NTCMD); - WRW_HARPOON((port+NON_TAG_ID_MSG), - (MPM_OP+AMSG_OUT+currSCCB->Sccb_idmsg)); + WRW_HARPOON((port + NON_TAG_ID_MSG), + (MPM_OP + AMSG_OUT + + currSCCB->Sccb_idmsg)); - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); + WR_HARPOON(port + hp_autostart_3, + (SELECT + SELCHK_STRT)); - /* Setup our STATE so we know what happend when - the wheels fall off. */ - currSCCB->Sccb_scsistat = SELECT_ST; + /* Setup our STATE so we know what happend when + the wheels fall off. */ + currSCCB->Sccb_scsistat = SELECT_ST; - currTar_Info->TarLUNBusy[lun] = 1; - } + currTar_Info->TarLUNBusy[lun] = 1; + } - else - { - WRW_HARPOON((port+ID_MSG_STRT), (MPM_OP+AMSG_OUT+currSCCB->Sccb_idmsg)); + else { + WRW_HARPOON((port + ID_MSG_STRT), + (MPM_OP + AMSG_OUT + + currSCCB->Sccb_idmsg)); - WRW_HARPOON((port+ID_MSG_STRT+2), (MPM_OP+AMSG_OUT+ - (((UCHAR)(currSCCB->ControlByte & TAG_TYPE_MASK) - >> 6) | (UCHAR)0x20))); + WRW_HARPOON((port + ID_MSG_STRT + 2), + (MPM_OP + AMSG_OUT + + (((unsigned char)(currSCCB-> + ControlByte & + TAG_TYPE_MASK) + >> 6) | (unsigned char)0x20))); - for (i = 1; i < QUEUE_DEPTH; i++) - { - if (++lastTag >= QUEUE_DEPTH) lastTag = 1; - if (CurrCard->discQ_Tbl[lastTag] == NULL) - { - WRW_HARPOON((port+ID_MSG_STRT+6), - (MPM_OP+AMSG_OUT+lastTag)); + for (i = 1; i < QUEUE_DEPTH; i++) { + if (++lastTag >= QUEUE_DEPTH) + lastTag = 1; + if (CurrCard->discQ_Tbl[lastTag] == + NULL) { + WRW_HARPOON((port + + ID_MSG_STRT + 6), + (MPM_OP + AMSG_OUT + + lastTag)); CurrCard->tagQ_Lst = lastTag; currSCCB->Sccb_tag = lastTag; - CurrCard->discQ_Tbl[lastTag] = currSCCB; + CurrCard->discQ_Tbl[lastTag] = + currSCCB; CurrCard->discQCount++; break; } } + if (i == QUEUE_DEPTH) { + currTar_Info->TarLUNBusy[lun] = 1; + FPT_queueSelectFail(CurrCard, p_card); + SGRAM_ACCESS(port); + return; + } - if ( i == QUEUE_DEPTH ) - { - currTar_Info->TarLUNBusy[lun] = 1; - FPT_queueSelectFail(CurrCard,p_card); - SGRAM_ACCESS(port); - return; - } - - currSCCB->Sccb_scsistat = SELECT_Q_ST; - - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); - } - } - - else - { - - WRW_HARPOON((port+ID_MSG_STRT),BRH_OP+ALWAYS+NTCMD); + currSCCB->Sccb_scsistat = SELECT_Q_ST; - WRW_HARPOON((port+NON_TAG_ID_MSG), - (MPM_OP+AMSG_OUT+currSCCB->Sccb_idmsg)); + WR_HARPOON(port + hp_autostart_3, + (SELECT + SELCHK_STRT)); + } + } - currSCCB->Sccb_scsistat = SELECT_ST; + else { - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); - } + WRW_HARPOON((port + ID_MSG_STRT), + BRH_OP + ALWAYS + NTCMD); + WRW_HARPOON((port + NON_TAG_ID_MSG), + (MPM_OP + AMSG_OUT + currSCCB->Sccb_idmsg)); - theCCB = (UCHAR *)&currSCCB->Cdb[0]; + currSCCB->Sccb_scsistat = SELECT_ST; - cdb_reg = port + CMD_STRT; + WR_HARPOON(port + hp_autostart_3, + (SELECT + SELCHK_STRT)); + } - for (i=0; i < currSCCB->CdbLength; i++) - { - WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + *theCCB)); - cdb_reg +=2; - theCCB++; - } + theCCB = (unsigned char *)&currSCCB->Cdb[0]; - if (currSCCB->CdbLength != TWELVE_BYTE_CMD) - WRW_HARPOON(cdb_reg, (BRH_OP+ALWAYS+ NP)); + cdb_reg = port + CMD_STRT; - } /* auto_loaded */ + for (i = 0; i < currSCCB->CdbLength; i++) { + WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + *theCCB)); + cdb_reg += 2; + theCCB++; + } - WRW_HARPOON((port+hp_fiforead), (USHORT) 0x00); - WR_HARPOON(port+hp_xferstat, 0x00); + if (currSCCB->CdbLength != TWELVE_BYTE_CMD) + WRW_HARPOON(cdb_reg, (BRH_OP + ALWAYS + NP)); - WRW_HARPOON((port+hp_intstat), (PROG_HLT | TIMEOUT | SEL | BUS_FREE)); + } + /* auto_loaded */ + WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00); + WR_HARPOON(port + hp_xferstat, 0x00); - WR_HARPOON(port+hp_portctrl_0,(SCSI_PORT)); + WRW_HARPOON((port + hp_intstat), (PROG_HLT | TIMEOUT | SEL | BUS_FREE)); + WR_HARPOON(port + hp_portctrl_0, (SCSI_PORT)); - if (!(currSCCB->Sccb_MGRFlags & F_DEV_SELECTED)) - { - WR_HARPOON(port+hp_scsictrl_0, (SEL_TAR | ENA_ATN | ENA_RESEL | ENA_SCAM_SEL)); - } - else - { + if (!(currSCCB->Sccb_MGRFlags & F_DEV_SELECTED)) { + WR_HARPOON(port + hp_scsictrl_0, + (SEL_TAR | ENA_ATN | ENA_RESEL | ENA_SCAM_SEL)); + } else { -/* auto_loaded = (RD_HARPOON(port+hp_autostart_3) & (UCHAR)0x1F); +/* auto_loaded = (RD_HARPOON(port+hp_autostart_3) & (unsigned char)0x1F); auto_loaded |= AUTO_IMMED; */ - auto_loaded = AUTO_IMMED; + auto_loaded = AUTO_IMMED; - DISABLE_AUTO(port); + DISABLE_AUTO(port); - WR_HARPOON(port+hp_autostart_3, auto_loaded); - } + WR_HARPOON(port + hp_autostart_3, auto_loaded); + } - SGRAM_ACCESS(port); + SGRAM_ACCESS(port); } - /*--------------------------------------------------------------------- * * Function: FPT_sres @@ -3171,303 +2625,276 @@ static void FPT_ssel(ULONG port, UCHAR p * *---------------------------------------------------------------------*/ -static void FPT_sres(ULONG port, UCHAR p_card, PSCCBcard pCurrCard) +static void FPT_sres(unsigned long port, unsigned char p_card, + struct sccb_card *pCurrCard) { - UCHAR our_target, message, lun = 0, tag, msgRetryCount; - - - PSCCBMgr_tar_info currTar_Info; - PSCCB currSCCB; - + unsigned char our_target, message, lun = 0, tag, msgRetryCount; + struct sccb_mgr_tar_info *currTar_Info; + struct sccb *currSCCB; - - if(pCurrCard->currentSCCB != NULL) - { - currTar_Info = &FPT_sccbMgrTbl[p_card][pCurrCard->currentSCCB->TargID]; + if (pCurrCard->currentSCCB != NULL) { + currTar_Info = + &FPT_sccbMgrTbl[p_card][pCurrCard->currentSCCB->TargID]; DISABLE_AUTO(port); - - WR_HARPOON((port+hp_scsictrl_0),(ENA_RESEL | ENA_SCAM_SEL)); - + WR_HARPOON((port + hp_scsictrl_0), (ENA_RESEL | ENA_SCAM_SEL)); currSCCB = pCurrCard->currentSCCB; - if(currSCCB->Sccb_scsistat == SELECT_WN_ST) - { + if (currSCCB->Sccb_scsistat == SELECT_WN_ST) { currTar_Info->TarStatus &= ~TAR_WIDE_MASK; currSCCB->Sccb_scsistat = BUS_FREE_ST; } - if(currSCCB->Sccb_scsistat == SELECT_SN_ST) - { + if (currSCCB->Sccb_scsistat == SELECT_SN_ST) { currTar_Info->TarStatus &= ~TAR_SYNC_MASK; currSCCB->Sccb_scsistat = BUS_FREE_ST; } - if(((pCurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - currTar_Info->TarLUNBusy[currSCCB->Lun] = 0; - if(currSCCB->Sccb_scsistat != ABORT_ST) - { + if (((pCurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING))) { + currTar_Info->TarLUNBusy[currSCCB->Lun] = 0; + if (currSCCB->Sccb_scsistat != ABORT_ST) { pCurrCard->discQCount--; - pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[currSCCB->Lun]] - = NULL; - } - } - else - { - currTar_Info->TarLUNBusy[0] = 0; - if(currSCCB->Sccb_tag) - { - if(currSCCB->Sccb_scsistat != ABORT_ST) - { - pCurrCard->discQCount--; - pCurrCard->discQ_Tbl[currSCCB->Sccb_tag] = NULL; - } - }else - { - if(currSCCB->Sccb_scsistat != ABORT_ST) - { - pCurrCard->discQCount--; - pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]] = NULL; - } + pCurrCard->discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[currSCCB-> + Lun]] + = NULL; + } + } else { + currTar_Info->TarLUNBusy[0] = 0; + if (currSCCB->Sccb_tag) { + if (currSCCB->Sccb_scsistat != ABORT_ST) { + pCurrCard->discQCount--; + pCurrCard->discQ_Tbl[currSCCB-> + Sccb_tag] = NULL; + } + } else { + if (currSCCB->Sccb_scsistat != ABORT_ST) { + pCurrCard->discQCount--; + pCurrCard->discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[0]] = + NULL; + } } } - FPT_queueSelectFail(&FPT_BL_Card[p_card],p_card); + FPT_queueSelectFail(&FPT_BL_Card[p_card], p_card); } - WRW_HARPOON((port+hp_fiforead), (USHORT) 0x00); + WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00); - - our_target = (UCHAR)(RD_HARPOON(port+hp_select_id) >> 4); + our_target = (unsigned char)(RD_HARPOON(port + hp_select_id) >> 4); currTar_Info = &FPT_sccbMgrTbl[p_card][our_target]; - msgRetryCount = 0; - do - { + do { currTar_Info = &FPT_sccbMgrTbl[p_card][our_target]; tag = 0; + while (!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) { + if (!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) { - while(!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) - { - if (! (RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) - { - - WRW_HARPOON((port+hp_intstat), PHASE); + WRW_HARPOON((port + hp_intstat), PHASE); return; } } - WRW_HARPOON((port+hp_intstat), PHASE); - if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) == S_MSGI_PH) - { - - message = FPT_sfm(port,pCurrCard->currentSCCB); - if (message) - { - - if (message <= (0x80 | LUN_MASK)) - { - lun = message & (UCHAR)LUN_MASK; - - if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_TRYING) - { - if (currTar_Info->TarTagQ_Cnt != 0) - { + WRW_HARPOON((port + hp_intstat), PHASE); + if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) == S_MSGI_PH) { - if (!(currTar_Info->TarLUN_CA)) - { - ACCEPT_MSG(port); /*Release the ACK for ID msg. */ + message = FPT_sfm(port, pCurrCard->currentSCCB); + if (message) { + if (message <= (0x80 | LUN_MASK)) { + lun = message & (unsigned char)LUN_MASK; - message = FPT_sfm(port,pCurrCard->currentSCCB); - if (message) - { - ACCEPT_MSG(port); + if ((currTar_Info-> + TarStatus & TAR_TAG_Q_MASK) == + TAG_Q_TRYING) { + if (currTar_Info->TarTagQ_Cnt != + 0) { + + if (! + (currTar_Info-> + TarLUN_CA)) { + ACCEPT_MSG(port); /*Release the ACK for ID msg. */ + + message = + FPT_sfm + (port, + pCurrCard-> + currentSCCB); + if (message) { + ACCEPT_MSG + (port); } else - message = 0; - - if(message != 0) - { - tag = FPT_sfm(port,pCurrCard->currentSCCB); + message + = 0; - if (!(tag)) - message = 0; + if (message != + 0) { + tag = + FPT_sfm + (port, + pCurrCard-> + currentSCCB); + + if (! + (tag)) + message + = + 0; } - } /*C.A. exists! */ - - } /*End Q cnt != 0 */ - - } /*End Tag cmds supported! */ - - } /*End valid ID message. */ - - else - { + } + /*C.A. exists! */ + } + /*End Q cnt != 0 */ + } + /*End Tag cmds supported! */ + } + /*End valid ID message. */ + else { ACCEPT_MSG_ATN(port); } - } /* End good id message. */ - - else - { + } + /* End good id message. */ + else { message = 0; } - } - else - { + } else { ACCEPT_MSG_ATN(port); - while (!(RDW_HARPOON((port+hp_intstat)) & (PHASE | RESET)) && - !(RD_HARPOON(port+hp_scsisig) & SCSI_REQ) && - (RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) ; + while (! + (RDW_HARPOON((port + hp_intstat)) & + (PHASE | RESET)) + && !(RD_HARPOON(port + hp_scsisig) & SCSI_REQ) + && (RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) ; return; } - if(message == 0) - { + if (message == 0) { msgRetryCount++; - if(msgRetryCount == 1) - { + if (msgRetryCount == 1) { FPT_SendMsg(port, SMPARITY); - } - else - { + } else { FPT_SendMsg(port, SMDEV_RESET); - FPT_sssyncv(port, our_target, NARROW_SCSI,currTar_Info); + FPT_sssyncv(port, our_target, NARROW_SCSI, + currTar_Info); - if (FPT_sccbMgrTbl[p_card][our_target].TarEEValue & EE_SYNC_MASK) - { - - FPT_sccbMgrTbl[p_card][our_target].TarStatus &= ~TAR_SYNC_MASK; + if (FPT_sccbMgrTbl[p_card][our_target]. + TarEEValue & EE_SYNC_MASK) { + + FPT_sccbMgrTbl[p_card][our_target]. + TarStatus &= ~TAR_SYNC_MASK; } - if (FPT_sccbMgrTbl[p_card][our_target].TarEEValue & EE_WIDE_SCSI) - { + if (FPT_sccbMgrTbl[p_card][our_target]. + TarEEValue & EE_WIDE_SCSI) { - FPT_sccbMgrTbl[p_card][our_target].TarStatus &= ~TAR_WIDE_MASK; + FPT_sccbMgrTbl[p_card][our_target]. + TarStatus &= ~TAR_WIDE_MASK; } - - FPT_queueFlushTargSccb(p_card, our_target, SCCB_COMPLETE); - FPT_SccbMgrTableInitTarget(p_card,our_target); + FPT_queueFlushTargSccb(p_card, our_target, + SCCB_COMPLETE); + FPT_SccbMgrTableInitTarget(p_card, our_target); return; } } - }while(message == 0); + } while (message == 0); - - - if(((pCurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { + if (((pCurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) { currTar_Info->TarLUNBusy[lun] = 1; - pCurrCard->currentSCCB = pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[lun]]; - if(pCurrCard->currentSCCB != NULL) - { + pCurrCard->currentSCCB = + pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[lun]]; + if (pCurrCard->currentSCCB != NULL) { ACCEPT_MSG(port); - } - else - { + } else { ACCEPT_MSG_ATN(port); } - } - else - { + } else { currTar_Info->TarLUNBusy[0] = 1; - - if (tag) - { - if (pCurrCard->discQ_Tbl[tag] != NULL) - { - pCurrCard->currentSCCB = pCurrCard->discQ_Tbl[tag]; - currTar_Info->TarTagQ_Cnt--; + if (tag) { + if (pCurrCard->discQ_Tbl[tag] != NULL) { + pCurrCard->currentSCCB = + pCurrCard->discQ_Tbl[tag]; + currTar_Info->TarTagQ_Cnt--; ACCEPT_MSG(port); + } else { + ACCEPT_MSG_ATN(port); } - else - { - ACCEPT_MSG_ATN(port); - } - }else - { - pCurrCard->currentSCCB = pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]]; - if(pCurrCard->currentSCCB != NULL) - { + } else { + pCurrCard->currentSCCB = + pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]]; + if (pCurrCard->currentSCCB != NULL) { ACCEPT_MSG(port); - } - else - { + } else { ACCEPT_MSG_ATN(port); } } } - if(pCurrCard->currentSCCB != NULL) - { - if(pCurrCard->currentSCCB->Sccb_scsistat == ABORT_ST) - { - /* During Abort Tag command, the target could have got re-selected - and completed the command. Check the select Q and remove the CCB - if it is in the Select Q */ + if (pCurrCard->currentSCCB != NULL) { + if (pCurrCard->currentSCCB->Sccb_scsistat == ABORT_ST) { + /* During Abort Tag command, the target could have got re-selected + and completed the command. Check the select Q and remove the CCB + if it is in the Select Q */ FPT_queueFindSccb(pCurrCard->currentSCCB, p_card); } } - - while (!(RDW_HARPOON((port+hp_intstat)) & (PHASE | RESET)) && - !(RD_HARPOON(port+hp_scsisig) & SCSI_REQ) && - (RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) ; + while (!(RDW_HARPOON((port + hp_intstat)) & (PHASE | RESET)) && + !(RD_HARPOON(port + hp_scsisig) & SCSI_REQ) && + (RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) ; } -static void FPT_SendMsg(ULONG port, UCHAR message) +static void FPT_SendMsg(unsigned long port, unsigned char message) { - while(!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) - { - if (! (RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) - { + while (!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) { + if (!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) { - WRW_HARPOON((port+hp_intstat), PHASE); + WRW_HARPOON((port + hp_intstat), PHASE); return; } } - WRW_HARPOON((port+hp_intstat), PHASE); - if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) == S_MSGO_PH) - { - WRW_HARPOON((port+hp_intstat), (BUS_FREE | PHASE | XFER_CNT_0)); - + WRW_HARPOON((port + hp_intstat), PHASE); + if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) == S_MSGO_PH) { + WRW_HARPOON((port + hp_intstat), + (BUS_FREE | PHASE | XFER_CNT_0)); - WR_HARPOON(port+hp_portctrl_0, SCSI_BUS_EN); + WR_HARPOON(port + hp_portctrl_0, SCSI_BUS_EN); - WR_HARPOON(port+hp_scsidata_0,message); + WR_HARPOON(port + hp_scsidata_0, message); - WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); + WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH)); ACCEPT_MSG(port); - WR_HARPOON(port+hp_portctrl_0, 0x00); + WR_HARPOON(port + hp_portctrl_0, 0x00); if ((message == SMABORT) || (message == SMDEV_RESET) || - (message == SMABORT_TAG) ) - { - while(!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | PHASE))) {} + (message == SMABORT_TAG)) { + while (! + (RDW_HARPOON((port + hp_intstat)) & + (BUS_FREE | PHASE))) { + } - if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) - { - WRW_HARPOON((port+hp_intstat), BUS_FREE); + if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) { + WRW_HARPOON((port + hp_intstat), BUS_FREE); } } } @@ -3481,178 +2908,180 @@ static void FPT_SendMsg(ULONG port, UCHA * target device. * *---------------------------------------------------------------------*/ -static void FPT_sdecm(UCHAR message, ULONG port, UCHAR p_card) +static void FPT_sdecm(unsigned char message, unsigned long port, + unsigned char p_card) { - PSCCB currSCCB; - PSCCBcard CurrCard; - PSCCBMgr_tar_info currTar_Info; + struct sccb *currSCCB; + struct sccb_card *CurrCard; + struct sccb_mgr_tar_info *currTar_Info; CurrCard = &FPT_BL_Card[p_card]; currSCCB = CurrCard->currentSCCB; currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - if (message == SMREST_DATA_PTR) - { - if (!(currSCCB->Sccb_XferState & F_NO_DATA_YET)) - { + if (message == SMREST_DATA_PTR) { + if (!(currSCCB->Sccb_XferState & F_NO_DATA_YET)) { currSCCB->Sccb_ATC = currSCCB->Sccb_savedATC; FPT_hostDataXferRestart(currSCCB); } ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - else if (message == SMCMD_COMP) - { - + else if (message == SMCMD_COMP) { - if (currSCCB->Sccb_scsistat == SELECT_Q_ST) - { - currTar_Info->TarStatus &= ~(UCHAR)TAR_TAG_Q_MASK; - currTar_Info->TarStatus |= (UCHAR)TAG_Q_REJECT; + if (currSCCB->Sccb_scsistat == SELECT_Q_ST) { + currTar_Info->TarStatus &= + ~(unsigned char)TAR_TAG_Q_MASK; + currTar_Info->TarStatus |= (unsigned char)TAG_Q_REJECT; } ACCEPT_MSG(port); } - else if ((message == SMNO_OP) || (message >= SMIDENT) - || (message == SMINIT_RECOVERY) || (message == SMREL_RECOVERY)) - { + else if ((message == SMNO_OP) || (message >= SMIDENT) + || (message == SMINIT_RECOVERY) || (message == SMREL_RECOVERY)) { ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - else if (message == SMREJECT) - { + else if (message == SMREJECT) { if ((currSCCB->Sccb_scsistat == SELECT_SN_ST) || - (currSCCB->Sccb_scsistat == SELECT_WN_ST) || - ((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_TRYING ) || - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_TRYING ) ) - + (currSCCB->Sccb_scsistat == SELECT_WN_ST) || + ((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_TRYING) + || ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == + TAG_Q_TRYING)) { - WRW_HARPOON((port+hp_intstat), BUS_FREE); + WRW_HARPOON((port + hp_intstat), BUS_FREE); ACCEPT_MSG(port); - - while ((!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) && - (!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE))) {} - - if(currSCCB->Lun == 0x00) + while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) && + (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE))) { - if ((currSCCB->Sccb_scsistat == SELECT_SN_ST)) - { + } - currTar_Info->TarStatus |= (UCHAR)SYNC_SUPPORTED; + if (currSCCB->Lun == 0x00) { + if ((currSCCB->Sccb_scsistat == SELECT_SN_ST)) { - currTar_Info->TarEEValue &= ~EE_SYNC_MASK; - } + currTar_Info->TarStatus |= + (unsigned char)SYNC_SUPPORTED; - else if ((currSCCB->Sccb_scsistat == SELECT_WN_ST)) - { + currTar_Info->TarEEValue &= + ~EE_SYNC_MASK; + } + else if ((currSCCB->Sccb_scsistat == + SELECT_WN_ST)) { - currTar_Info->TarStatus = (currTar_Info->TarStatus & - ~WIDE_ENABLED) | WIDE_NEGOCIATED; + currTar_Info->TarStatus = + (currTar_Info-> + TarStatus & ~WIDE_ENABLED) | + WIDE_NEGOCIATED; - currTar_Info->TarEEValue &= ~EE_WIDE_SCSI; + currTar_Info->TarEEValue &= + ~EE_WIDE_SCSI; } - else if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_TRYING ) - { - currTar_Info->TarStatus = (currTar_Info->TarStatus & - ~(UCHAR)TAR_TAG_Q_MASK) | TAG_Q_REJECT; - + else if ((currTar_Info-> + TarStatus & TAR_TAG_Q_MASK) == + TAG_Q_TRYING) { + currTar_Info->TarStatus = + (currTar_Info-> + TarStatus & ~(unsigned char) + TAR_TAG_Q_MASK) | TAG_Q_REJECT; currSCCB->ControlByte &= ~F_USE_CMD_Q; CurrCard->discQCount--; - CurrCard->discQ_Tbl[currSCCB->Sccb_tag] = NULL; + CurrCard->discQ_Tbl[currSCCB-> + Sccb_tag] = NULL; currSCCB->Sccb_tag = 0x00; } } - if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) - { - + if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) { - if(currSCCB->Lun == 0x00) - { - WRW_HARPOON((port+hp_intstat), BUS_FREE); + if (currSCCB->Lun == 0x00) { + WRW_HARPOON((port + hp_intstat), + BUS_FREE); CurrCard->globalFlags |= F_NEW_SCCB_CMD; } } - else - { + else { - if((CurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - currTar_Info->TarLUNBusy[currSCCB->Lun] = 1; + if ((CurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info-> + TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING)) + currTar_Info->TarLUNBusy[currSCCB-> + Lun] = 1; else currTar_Info->TarLUNBusy[0] = 1; + currSCCB->ControlByte &= + ~(unsigned char)F_USE_CMD_Q; - currSCCB->ControlByte &= ~(UCHAR)F_USE_CMD_Q; - - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } } - else - { + else { ACCEPT_MSG(port); - while ((!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) && - (!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE))) {} - - if (!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE)) + while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) && + (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE))) { - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + } + + if (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE)) { + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } } } - else if (message == SMEXT) - { + else if (message == SMEXT) { ACCEPT_MSG(port); - FPT_shandem(port,p_card,currSCCB); + FPT_shandem(port, p_card, currSCCB); } - else if (message == SMIGNORWR) - { + else if (message == SMIGNORWR) { - ACCEPT_MSG(port); /* ACK the RESIDUE MSG */ + ACCEPT_MSG(port); /* ACK the RESIDUE MSG */ - message = FPT_sfm(port,currSCCB); + message = FPT_sfm(port, currSCCB); - if(currSCCB->Sccb_scsimsg != SMPARITY) + if (currSCCB->Sccb_scsimsg != SMPARITY) ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - - else - { + else { currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; currSCCB->Sccb_scsimsg = SMREJECT; ACCEPT_MSG_ATN(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } } - /*--------------------------------------------------------------------- * * Function: FPT_shandem @@ -3660,76 +3089,65 @@ static void FPT_sdecm(UCHAR message, ULO * Description: Decide what to do with the extended message. * *---------------------------------------------------------------------*/ -static void FPT_shandem(ULONG port, UCHAR p_card, PSCCB pCurrSCCB) +static void FPT_shandem(unsigned long port, unsigned char p_card, + struct sccb *pCurrSCCB) { - UCHAR length,message; + unsigned char length, message; - length = FPT_sfm(port,pCurrSCCB); - if (length) - { + length = FPT_sfm(port, pCurrSCCB); + if (length) { ACCEPT_MSG(port); - message = FPT_sfm(port,pCurrSCCB); - if (message) - { + message = FPT_sfm(port, pCurrSCCB); + if (message) { - if (message == SMSYNC) - { + if (message == SMSYNC) { - if (length == 0x03) - { + if (length == 0x03) { ACCEPT_MSG(port); - FPT_stsyncn(port,p_card); - } - else - { + FPT_stsyncn(port, p_card); + } else { pCurrSCCB->Sccb_scsimsg = SMREJECT; ACCEPT_MSG_ATN(port); } - } - else if (message == SMWDTR) - { + } else if (message == SMWDTR) { - if (length == 0x02) - { + if (length == 0x02) { ACCEPT_MSG(port); - FPT_stwidn(port,p_card); - } - else - { + FPT_stwidn(port, p_card); + } else { pCurrSCCB->Sccb_scsimsg = SMREJECT; ACCEPT_MSG_ATN(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + + DISCONNECT_START)); } - } - else - { + } else { pCurrSCCB->Sccb_scsimsg = SMREJECT; ACCEPT_MSG_ATN(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - } - else - { - if(pCurrSCCB->Sccb_scsimsg != SMPARITY) + } else { + if (pCurrSCCB->Sccb_scsimsg != SMPARITY) ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - }else - { - if(pCurrSCCB->Sccb_scsimsg == SMPARITY) - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + } else { + if (pCurrSCCB->Sccb_scsimsg == SMPARITY) + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } } - /*--------------------------------------------------------------------- * * Function: FPT_sisyncn @@ -3739,73 +3157,79 @@ static void FPT_shandem(ULONG port, UCHA * *---------------------------------------------------------------------*/ -static UCHAR FPT_sisyncn(ULONG port, UCHAR p_card, UCHAR syncFlag) +static unsigned char FPT_sisyncn(unsigned long port, unsigned char p_card, + unsigned char syncFlag) { - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - - if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_TRYING)) { - - - WRW_HARPOON((port+ID_MSG_STRT), - (MPM_OP+AMSG_OUT+(currSCCB->Sccb_idmsg & ~(UCHAR)DISC_PRIV))); - - WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+CMDPZ); - - WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT )); - WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x03 )); - WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMSYNC)); + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; + currSCCB = FPT_BL_Card[p_card].currentSCCB; + currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_20MB) + if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_TRYING)) { - WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 12)); + WRW_HARPOON((port + ID_MSG_STRT), + (MPM_OP + AMSG_OUT + + (currSCCB-> + Sccb_idmsg & ~(unsigned char)DISC_PRIV))); - else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_10MB) + WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ); - WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 25)); + WRW_HARPOON((port + SYNC_MSGS + 0), + (MPM_OP + AMSG_OUT + SMEXT)); + WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x03)); + WRW_HARPOON((port + SYNC_MSGS + 4), + (MPM_OP + AMSG_OUT + SMSYNC)); - else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_5MB) + if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_20MB) - WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 50)); + WRW_HARPOON((port + SYNC_MSGS + 6), + (MPM_OP + AMSG_OUT + 12)); - else - WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 00)); + else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == + EE_SYNC_10MB) + WRW_HARPOON((port + SYNC_MSGS + 6), + (MPM_OP + AMSG_OUT + 25)); - WRW_HARPOON((port+SYNC_MSGS+8), (RAT_OP )); - WRW_HARPOON((port+SYNC_MSGS+10),(MPM_OP+AMSG_OUT+DEFAULT_OFFSET)); - WRW_HARPOON((port+SYNC_MSGS+12),(BRH_OP+ALWAYS+NP )); + else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == + EE_SYNC_5MB) + WRW_HARPOON((port + SYNC_MSGS + 6), + (MPM_OP + AMSG_OUT + 50)); - if(syncFlag == 0) - { - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); - currTar_Info->TarStatus = ((currTar_Info->TarStatus & - ~(UCHAR)TAR_SYNC_MASK) | (UCHAR)SYNC_TRYING); - } else - { - WR_HARPOON(port+hp_autostart_3, (AUTO_IMMED + CMD_ONLY_STRT)); - } - - - return(1); - } + WRW_HARPOON((port + SYNC_MSGS + 6), + (MPM_OP + AMSG_OUT + 00)); - else { - - currTar_Info->TarStatus |= (UCHAR)SYNC_SUPPORTED; - currTar_Info->TarEEValue &= ~EE_SYNC_MASK; - return(0); - } + WRW_HARPOON((port + SYNC_MSGS + 8), (RAT_OP)); + WRW_HARPOON((port + SYNC_MSGS + 10), + (MPM_OP + AMSG_OUT + DEFAULT_OFFSET)); + WRW_HARPOON((port + SYNC_MSGS + 12), (BRH_OP + ALWAYS + NP)); + + if (syncFlag == 0) { + WR_HARPOON(port + hp_autostart_3, + (SELECT + SELCHK_STRT)); + currTar_Info->TarStatus = + ((currTar_Info-> + TarStatus & ~(unsigned char)TAR_SYNC_MASK) | + (unsigned char)SYNC_TRYING); + } else { + WR_HARPOON(port + hp_autostart_3, + (AUTO_IMMED + CMD_ONLY_STRT)); + } + + return 1; + } + + else { + + currTar_Info->TarStatus |= (unsigned char)SYNC_SUPPORTED; + currTar_Info->TarEEValue &= ~EE_SYNC_MASK; + return 0; + } } - - /*--------------------------------------------------------------------- * * Function: FPT_stsyncn @@ -3814,131 +3238,128 @@ static UCHAR FPT_sisyncn(ULONG port, UCH * necessary. * *---------------------------------------------------------------------*/ -static void FPT_stsyncn(ULONG port, UCHAR p_card) +static void FPT_stsyncn(unsigned long port, unsigned char p_card) { - UCHAR sync_msg,offset,sync_reg,our_sync_msg; - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; + unsigned char sync_msg, offset, sync_reg, our_sync_msg; + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; - currSCCB = FPT_BL_Card[p_card].currentSCCB; - currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; + currSCCB = FPT_BL_Card[p_card].currentSCCB; + currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - sync_msg = FPT_sfm(port,currSCCB); + sync_msg = FPT_sfm(port, currSCCB); - if((sync_msg == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) - { - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + if ((sync_msg == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) { + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); return; } - ACCEPT_MSG(port); - + ACCEPT_MSG(port); - offset = FPT_sfm(port,currSCCB); + offset = FPT_sfm(port, currSCCB); - if((offset == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) - { - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + if ((offset == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) { + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); return; } - if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_20MB) - - our_sync_msg = 12; /* Setup our Message to 20mb/s */ + if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_20MB) - else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_10MB) + our_sync_msg = 12; /* Setup our Message to 20mb/s */ - our_sync_msg = 25; /* Setup our Message to 10mb/s */ + else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_10MB) - else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_5MB) + our_sync_msg = 25; /* Setup our Message to 10mb/s */ - our_sync_msg = 50; /* Setup our Message to 5mb/s */ - else - - our_sync_msg = 0; /* Message = Async */ - - if (sync_msg < our_sync_msg) { - sync_msg = our_sync_msg; /*if faster, then set to max. */ - } + else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_5MB) - if (offset == ASYNC) - sync_msg = ASYNC; - - if (offset > MAX_OFFSET) - offset = MAX_OFFSET; + our_sync_msg = 50; /* Setup our Message to 5mb/s */ + else - sync_reg = 0x00; + our_sync_msg = 0; /* Message = Async */ - if (sync_msg > 12) + if (sync_msg < our_sync_msg) { + sync_msg = our_sync_msg; /*if faster, then set to max. */ + } - sync_reg = 0x20; /* Use 10MB/s */ + if (offset == ASYNC) + sync_msg = ASYNC; - if (sync_msg > 25) + if (offset > MAX_OFFSET) + offset = MAX_OFFSET; - sync_reg = 0x40; /* Use 6.6MB/s */ + sync_reg = 0x00; - if (sync_msg > 38) + if (sync_msg > 12) - sync_reg = 0x60; /* Use 5MB/s */ + sync_reg = 0x20; /* Use 10MB/s */ - if (sync_msg > 50) + if (sync_msg > 25) - sync_reg = 0x80; /* Use 4MB/s */ + sync_reg = 0x40; /* Use 6.6MB/s */ - if (sync_msg > 62) + if (sync_msg > 38) - sync_reg = 0xA0; /* Use 3.33MB/s */ + sync_reg = 0x60; /* Use 5MB/s */ - if (sync_msg > 75) + if (sync_msg > 50) - sync_reg = 0xC0; /* Use 2.85MB/s */ + sync_reg = 0x80; /* Use 4MB/s */ - if (sync_msg > 87) + if (sync_msg > 62) - sync_reg = 0xE0; /* Use 2.5MB/s */ + sync_reg = 0xA0; /* Use 3.33MB/s */ - if (sync_msg > 100) { + if (sync_msg > 75) - sync_reg = 0x00; /* Use ASYNC */ - offset = 0x00; - } + sync_reg = 0xC0; /* Use 2.85MB/s */ + if (sync_msg > 87) - if (currTar_Info->TarStatus & WIDE_ENABLED) + sync_reg = 0xE0; /* Use 2.5MB/s */ - sync_reg |= offset; + if (sync_msg > 100) { - else + sync_reg = 0x00; /* Use ASYNC */ + offset = 0x00; + } - sync_reg |= (offset | NARROW_SCSI); + if (currTar_Info->TarStatus & WIDE_ENABLED) - FPT_sssyncv(port,currSCCB->TargID,sync_reg,currTar_Info); + sync_reg |= offset; + else - if (currSCCB->Sccb_scsistat == SELECT_SN_ST) { + sync_reg |= (offset | NARROW_SCSI); + FPT_sssyncv(port, currSCCB->TargID, sync_reg, currTar_Info); - ACCEPT_MSG(port); + if (currSCCB->Sccb_scsistat == SELECT_SN_ST) { - currTar_Info->TarStatus = ((currTar_Info->TarStatus & - ~(UCHAR)TAR_SYNC_MASK) | (UCHAR)SYNC_SUPPORTED); + ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); - } + currTar_Info->TarStatus = ((currTar_Info->TarStatus & + ~(unsigned char)TAR_SYNC_MASK) | + (unsigned char)SYNC_SUPPORTED); - else { + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); + } + else { - ACCEPT_MSG_ATN(port); + ACCEPT_MSG_ATN(port); - FPT_sisyncr(port,sync_msg,offset); + FPT_sisyncr(port, sync_msg, offset); - currTar_Info->TarStatus = ((currTar_Info->TarStatus & - ~(UCHAR)TAR_SYNC_MASK) | (UCHAR)SYNC_SUPPORTED); - } + currTar_Info->TarStatus = ((currTar_Info->TarStatus & + ~(unsigned char)TAR_SYNC_MASK) | + (unsigned char)SYNC_SUPPORTED); + } } - /*--------------------------------------------------------------------- * * Function: FPT_sisyncr @@ -3946,28 +3367,28 @@ static void FPT_stsyncn(ULONG port, UCHA * Description: Answer the targets sync message. * *---------------------------------------------------------------------*/ -static void FPT_sisyncr(ULONG port,UCHAR sync_pulse, UCHAR offset) +static void FPT_sisyncr(unsigned long port, unsigned char sync_pulse, + unsigned char offset) { - ARAM_ACCESS(port); - WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT )); - WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x03 )); - WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMSYNC)); - WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+sync_pulse)); - WRW_HARPOON((port+SYNC_MSGS+8), (RAT_OP )); - WRW_HARPOON((port+SYNC_MSGS+10),(MPM_OP+AMSG_OUT+offset)); - WRW_HARPOON((port+SYNC_MSGS+12),(BRH_OP+ALWAYS+NP )); - SGRAM_ACCESS(port); + ARAM_ACCESS(port); + WRW_HARPOON((port + SYNC_MSGS + 0), (MPM_OP + AMSG_OUT + SMEXT)); + WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x03)); + WRW_HARPOON((port + SYNC_MSGS + 4), (MPM_OP + AMSG_OUT + SMSYNC)); + WRW_HARPOON((port + SYNC_MSGS + 6), (MPM_OP + AMSG_OUT + sync_pulse)); + WRW_HARPOON((port + SYNC_MSGS + 8), (RAT_OP)); + WRW_HARPOON((port + SYNC_MSGS + 10), (MPM_OP + AMSG_OUT + offset)); + WRW_HARPOON((port + SYNC_MSGS + 12), (BRH_OP + ALWAYS + NP)); + SGRAM_ACCESS(port); - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); - WRW_HARPOON((port+hp_intstat), CLR_ALL_INT_1); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); + WRW_HARPOON((port + hp_intstat), CLR_ALL_INT_1); - WR_HARPOON(port+hp_autostart_3, (AUTO_IMMED+CMD_ONLY_STRT)); + WR_HARPOON(port + hp_autostart_3, (AUTO_IMMED + CMD_ONLY_STRT)); - while (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | AUTO_INT))) {} + while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | AUTO_INT))) { + } } - - /*--------------------------------------------------------------------- * * Function: FPT_siwidn @@ -3977,50 +3398,53 @@ static void FPT_sisyncr(ULONG port,UCHAR * *---------------------------------------------------------------------*/ -static UCHAR FPT_siwidn(ULONG port, UCHAR p_card) +static unsigned char FPT_siwidn(unsigned long port, unsigned char p_card) { - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - - if (!((currTar_Info->TarStatus & TAR_WIDE_MASK) == WIDE_NEGOCIATED)) { + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; + currSCCB = FPT_BL_Card[p_card].currentSCCB; + currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - WRW_HARPOON((port+ID_MSG_STRT), - (MPM_OP+AMSG_OUT+(currSCCB->Sccb_idmsg & ~(UCHAR)DISC_PRIV))); + if (!((currTar_Info->TarStatus & TAR_WIDE_MASK) == WIDE_NEGOCIATED)) { - WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+CMDPZ); + WRW_HARPOON((port + ID_MSG_STRT), + (MPM_OP + AMSG_OUT + + (currSCCB-> + Sccb_idmsg & ~(unsigned char)DISC_PRIV))); - WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT )); - WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x02 )); - WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMWDTR)); - WRW_HARPOON((port+SYNC_MSGS+6), (RAT_OP )); - WRW_HARPOON((port+SYNC_MSGS+8), (MPM_OP+AMSG_OUT+ SM16BIT)); - WRW_HARPOON((port+SYNC_MSGS+10),(BRH_OP+ALWAYS+NP )); + WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ); - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); + WRW_HARPOON((port + SYNC_MSGS + 0), + (MPM_OP + AMSG_OUT + SMEXT)); + WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x02)); + WRW_HARPOON((port + SYNC_MSGS + 4), + (MPM_OP + AMSG_OUT + SMWDTR)); + WRW_HARPOON((port + SYNC_MSGS + 6), (RAT_OP)); + WRW_HARPOON((port + SYNC_MSGS + 8), + (MPM_OP + AMSG_OUT + SM16BIT)); + WRW_HARPOON((port + SYNC_MSGS + 10), (BRH_OP + ALWAYS + NP)); + WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT)); - currTar_Info->TarStatus = ((currTar_Info->TarStatus & - ~(UCHAR)TAR_WIDE_MASK) | (UCHAR)WIDE_ENABLED); + currTar_Info->TarStatus = ((currTar_Info->TarStatus & + ~(unsigned char)TAR_WIDE_MASK) | + (unsigned char)WIDE_ENABLED); - return(1); - } + return 1; + } - else { + else { - currTar_Info->TarStatus = ((currTar_Info->TarStatus & - ~(UCHAR)TAR_WIDE_MASK) | WIDE_NEGOCIATED); + currTar_Info->TarStatus = ((currTar_Info->TarStatus & + ~(unsigned char)TAR_WIDE_MASK) | + WIDE_NEGOCIATED); - currTar_Info->TarEEValue &= ~EE_WIDE_SCSI; - return(0); - } + currTar_Info->TarEEValue &= ~EE_WIDE_SCSI; + return 0; + } } - - /*--------------------------------------------------------------------- * * Function: FPT_stwidn @@ -4029,79 +3453,70 @@ static UCHAR FPT_siwidn(ULONG port, UCHA * necessary. * *---------------------------------------------------------------------*/ -static void FPT_stwidn(ULONG port, UCHAR p_card) +static void FPT_stwidn(unsigned long port, unsigned char p_card) { - UCHAR width; - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; + unsigned char width; + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; - currSCCB = FPT_BL_Card[p_card].currentSCCB; - currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; + currSCCB = FPT_BL_Card[p_card].currentSCCB; + currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - width = FPT_sfm(port,currSCCB); + width = FPT_sfm(port, currSCCB); - if((width == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) - { - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + if ((width == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) { + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); return; } + if (!(currTar_Info->TarEEValue & EE_WIDE_SCSI)) + width = 0; - if (!(currTar_Info->TarEEValue & EE_WIDE_SCSI)) - width = 0; - - if (width) { - currTar_Info->TarStatus |= WIDE_ENABLED; - width = 0; - } - else { - width = NARROW_SCSI; - currTar_Info->TarStatus &= ~WIDE_ENABLED; - } - - - FPT_sssyncv(port,currSCCB->TargID,width,currTar_Info); - - - if (currSCCB->Sccb_scsistat == SELECT_WN_ST) - { + if (width) { + currTar_Info->TarStatus |= WIDE_ENABLED; + width = 0; + } else { + width = NARROW_SCSI; + currTar_Info->TarStatus &= ~WIDE_ENABLED; + } + FPT_sssyncv(port, currSCCB->TargID, width, currTar_Info); + if (currSCCB->Sccb_scsistat == SELECT_WN_ST) { - currTar_Info->TarStatus |= WIDE_NEGOCIATED; + currTar_Info->TarStatus |= WIDE_NEGOCIATED; - if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_SUPPORTED)) - { - ACCEPT_MSG_ATN(port); - ARAM_ACCESS(port); - FPT_sisyncn(port,p_card, 1); - currSCCB->Sccb_scsistat = SELECT_SN_ST; - SGRAM_ACCESS(port); - } - else - { - ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + if (! + ((currTar_Info->TarStatus & TAR_SYNC_MASK) == + SYNC_SUPPORTED)) { + ACCEPT_MSG_ATN(port); + ARAM_ACCESS(port); + FPT_sisyncn(port, p_card, 1); + currSCCB->Sccb_scsistat = SELECT_SN_ST; + SGRAM_ACCESS(port); + } else { + ACCEPT_MSG(port); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - } - - else { + } + else { - ACCEPT_MSG_ATN(port); + ACCEPT_MSG_ATN(port); - if (currTar_Info->TarEEValue & EE_WIDE_SCSI) - width = SM16BIT; - else - width = SM8BIT; + if (currTar_Info->TarEEValue & EE_WIDE_SCSI) + width = SM16BIT; + else + width = SM8BIT; - FPT_siwidr(port,width); + FPT_siwidr(port, width); - currTar_Info->TarStatus |= (WIDE_NEGOCIATED | WIDE_ENABLED); - } + currTar_Info->TarStatus |= (WIDE_NEGOCIATED | WIDE_ENABLED); + } } - /*--------------------------------------------------------------------- * * Function: FPT_siwidr @@ -4109,27 +3524,26 @@ static void FPT_stwidn(ULONG port, UCHAR * Description: Answer the targets Wide nego message. * *---------------------------------------------------------------------*/ -static void FPT_siwidr(ULONG port, UCHAR width) +static void FPT_siwidr(unsigned long port, unsigned char width) { - ARAM_ACCESS(port); - WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT )); - WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x02 )); - WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMWDTR)); - WRW_HARPOON((port+SYNC_MSGS+6), (RAT_OP )); - WRW_HARPOON((port+SYNC_MSGS+8),(MPM_OP+AMSG_OUT+width)); - WRW_HARPOON((port+SYNC_MSGS+10),(BRH_OP+ALWAYS+NP )); - SGRAM_ACCESS(port); + ARAM_ACCESS(port); + WRW_HARPOON((port + SYNC_MSGS + 0), (MPM_OP + AMSG_OUT + SMEXT)); + WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x02)); + WRW_HARPOON((port + SYNC_MSGS + 4), (MPM_OP + AMSG_OUT + SMWDTR)); + WRW_HARPOON((port + SYNC_MSGS + 6), (RAT_OP)); + WRW_HARPOON((port + SYNC_MSGS + 8), (MPM_OP + AMSG_OUT + width)); + WRW_HARPOON((port + SYNC_MSGS + 10), (BRH_OP + ALWAYS + NP)); + SGRAM_ACCESS(port); - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); - WRW_HARPOON((port+hp_intstat), CLR_ALL_INT_1); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); + WRW_HARPOON((port + hp_intstat), CLR_ALL_INT_1); - WR_HARPOON(port+hp_autostart_3, (AUTO_IMMED+CMD_ONLY_STRT)); + WR_HARPOON(port + hp_autostart_3, (AUTO_IMMED + CMD_ONLY_STRT)); - while (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | AUTO_INT))) {} + while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | AUTO_INT))) { + } } - - /*--------------------------------------------------------------------- * * Function: FPT_sssyncv @@ -4138,71 +3552,71 @@ static void FPT_siwidr(ULONG port, UCHAR * ID specified. * *---------------------------------------------------------------------*/ -static void FPT_sssyncv(ULONG p_port, UCHAR p_id, UCHAR p_sync_value, - PSCCBMgr_tar_info currTar_Info) -{ - UCHAR index; - - index = p_id; - - switch (index) { - - case 0: - index = 12; /* hp_synctarg_0 */ - break; - case 1: - index = 13; /* hp_synctarg_1 */ - break; - case 2: - index = 14; /* hp_synctarg_2 */ - break; - case 3: - index = 15; /* hp_synctarg_3 */ - break; - case 4: - index = 8; /* hp_synctarg_4 */ - break; - case 5: - index = 9; /* hp_synctarg_5 */ - break; - case 6: - index = 10; /* hp_synctarg_6 */ - break; - case 7: - index = 11; /* hp_synctarg_7 */ - break; - case 8: - index = 4; /* hp_synctarg_8 */ - break; - case 9: - index = 5; /* hp_synctarg_9 */ - break; - case 10: - index = 6; /* hp_synctarg_10 */ - break; - case 11: - index = 7; /* hp_synctarg_11 */ - break; - case 12: - index = 0; /* hp_synctarg_12 */ - break; - case 13: - index = 1; /* hp_synctarg_13 */ - break; - case 14: - index = 2; /* hp_synctarg_14 */ - break; - case 15: - index = 3; /* hp_synctarg_15 */ +static void FPT_sssyncv(unsigned long p_port, unsigned char p_id, + unsigned char p_sync_value, + struct sccb_mgr_tar_info *currTar_Info) +{ + unsigned char index; + + index = p_id; + + switch (index) { + + case 0: + index = 12; /* hp_synctarg_0 */ + break; + case 1: + index = 13; /* hp_synctarg_1 */ + break; + case 2: + index = 14; /* hp_synctarg_2 */ + break; + case 3: + index = 15; /* hp_synctarg_3 */ + break; + case 4: + index = 8; /* hp_synctarg_4 */ + break; + case 5: + index = 9; /* hp_synctarg_5 */ + break; + case 6: + index = 10; /* hp_synctarg_6 */ + break; + case 7: + index = 11; /* hp_synctarg_7 */ + break; + case 8: + index = 4; /* hp_synctarg_8 */ + break; + case 9: + index = 5; /* hp_synctarg_9 */ + break; + case 10: + index = 6; /* hp_synctarg_10 */ + break; + case 11: + index = 7; /* hp_synctarg_11 */ + break; + case 12: + index = 0; /* hp_synctarg_12 */ + break; + case 13: + index = 1; /* hp_synctarg_13 */ + break; + case 14: + index = 2; /* hp_synctarg_14 */ + break; + case 15: + index = 3; /* hp_synctarg_15 */ - } + } - WR_HARPOON(p_port+hp_synctarg_base+index, p_sync_value); + WR_HARPOON(p_port + hp_synctarg_base + index, p_sync_value); currTar_Info->TarSyncCtrl = p_sync_value; } - /*--------------------------------------------------------------------- * * Function: FPT_sresb @@ -4210,69 +3624,67 @@ static void FPT_sssyncv(ULONG p_port, UC * Description: Reset the desired card's SCSI bus. * *---------------------------------------------------------------------*/ -static void FPT_sresb(ULONG port, UCHAR p_card) +static void FPT_sresb(unsigned long port, unsigned char p_card) { - UCHAR scsiID, i; + unsigned char scsiID, i; + + struct sccb_mgr_tar_info *currTar_Info; - PSCCBMgr_tar_info currTar_Info; + WR_HARPOON(port + hp_page_ctrl, + (RD_HARPOON(port + hp_page_ctrl) | G_INT_DISABLE)); + WRW_HARPOON((port + hp_intstat), CLR_ALL_INT); - WR_HARPOON(port+hp_page_ctrl, - (RD_HARPOON(port+hp_page_ctrl) | G_INT_DISABLE)); - WRW_HARPOON((port+hp_intstat), CLR_ALL_INT); + WR_HARPOON(port + hp_scsictrl_0, SCSI_RST); - WR_HARPOON(port+hp_scsictrl_0, SCSI_RST); + scsiID = RD_HARPOON(port + hp_seltimeout); + WR_HARPOON(port + hp_seltimeout, TO_5ms); + WRW_HARPOON((port + hp_intstat), TIMEOUT); - scsiID = RD_HARPOON(port+hp_seltimeout); - WR_HARPOON(port+hp_seltimeout,TO_5ms); - WRW_HARPOON((port+hp_intstat), TIMEOUT); + WR_HARPOON(port + hp_portctrl_0, (SCSI_PORT | START_TO)); - WR_HARPOON(port+hp_portctrl_0,(SCSI_PORT | START_TO)); + while (!(RDW_HARPOON((port + hp_intstat)) & TIMEOUT)) { + } - while (!(RDW_HARPOON((port+hp_intstat)) & TIMEOUT)) {} + WR_HARPOON(port + hp_seltimeout, scsiID); - WR_HARPOON(port+hp_seltimeout,scsiID); + WR_HARPOON(port + hp_scsictrl_0, ENA_SCAM_SEL); - WR_HARPOON(port+hp_scsictrl_0, ENA_SCAM_SEL); + FPT_Wait(port, TO_5ms); - FPT_Wait(port, TO_5ms); + WRW_HARPOON((port + hp_intstat), CLR_ALL_INT); - WRW_HARPOON((port+hp_intstat), CLR_ALL_INT); + WR_HARPOON(port + hp_int_mask, (RD_HARPOON(port + hp_int_mask) | 0x00)); - WR_HARPOON(port+hp_int_mask, (RD_HARPOON(port+hp_int_mask) | 0x00)); + for (scsiID = 0; scsiID < MAX_SCSI_TAR; scsiID++) { + currTar_Info = &FPT_sccbMgrTbl[p_card][scsiID]; - for (scsiID = 0; scsiID < MAX_SCSI_TAR; scsiID++) - { - currTar_Info = &FPT_sccbMgrTbl[p_card][scsiID]; + if (currTar_Info->TarEEValue & EE_SYNC_MASK) { + currTar_Info->TarSyncCtrl = 0; + currTar_Info->TarStatus &= ~TAR_SYNC_MASK; + } - if (currTar_Info->TarEEValue & EE_SYNC_MASK) - { - currTar_Info->TarSyncCtrl = 0; - currTar_Info->TarStatus &= ~TAR_SYNC_MASK; - } - - if (currTar_Info->TarEEValue & EE_WIDE_SCSI) - { - currTar_Info->TarStatus &= ~TAR_WIDE_MASK; - } + if (currTar_Info->TarEEValue & EE_WIDE_SCSI) { + currTar_Info->TarStatus &= ~TAR_WIDE_MASK; + } - FPT_sssyncv(port, scsiID, NARROW_SCSI,currTar_Info); + FPT_sssyncv(port, scsiID, NARROW_SCSI, currTar_Info); - FPT_SccbMgrTableInitTarget(p_card, scsiID); - } + FPT_SccbMgrTableInitTarget(p_card, scsiID); + } - FPT_BL_Card[p_card].scanIndex = 0x00; - FPT_BL_Card[p_card].currentSCCB = NULL; - FPT_BL_Card[p_card].globalFlags &= ~(F_TAG_STARTED | F_HOST_XFER_ACT - | F_NEW_SCCB_CMD); - FPT_BL_Card[p_card].cmdCounter = 0x00; + FPT_BL_Card[p_card].scanIndex = 0x00; + FPT_BL_Card[p_card].currentSCCB = NULL; + FPT_BL_Card[p_card].globalFlags &= ~(F_TAG_STARTED | F_HOST_XFER_ACT + | F_NEW_SCCB_CMD); + FPT_BL_Card[p_card].cmdCounter = 0x00; FPT_BL_Card[p_card].discQCount = 0x00; - FPT_BL_Card[p_card].tagQ_Lst = 0x01; + FPT_BL_Card[p_card].tagQ_Lst = 0x01; - for(i = 0; i < QUEUE_DEPTH; i++) + for (i = 0; i < QUEUE_DEPTH; i++) FPT_BL_Card[p_card].discQ_Tbl[i] = NULL; - WR_HARPOON(port+hp_page_ctrl, - (RD_HARPOON(port+hp_page_ctrl) & ~G_INT_DISABLE)); + WR_HARPOON(port + hp_page_ctrl, + (RD_HARPOON(port + hp_page_ctrl) & ~G_INT_DISABLE)); } @@ -4283,46 +3695,43 @@ static void FPT_sresb(ULONG port, UCHAR * Description: Setup for the Auto Sense command. * *---------------------------------------------------------------------*/ -static void FPT_ssenss(PSCCBcard pCurrCard) +static void FPT_ssenss(struct sccb_card *pCurrCard) { - UCHAR i; - PSCCB currSCCB; + unsigned char i; + struct sccb *currSCCB; - currSCCB = pCurrCard->currentSCCB; + currSCCB = pCurrCard->currentSCCB; + currSCCB->Save_CdbLen = currSCCB->CdbLength; - currSCCB->Save_CdbLen = currSCCB->CdbLength; + for (i = 0; i < 6; i++) { - for (i = 0; i < 6; i++) { - - currSCCB->Save_Cdb[i] = currSCCB->Cdb[i]; - } + currSCCB->Save_Cdb[i] = currSCCB->Cdb[i]; + } - currSCCB->CdbLength = SIX_BYTE_CMD; - currSCCB->Cdb[0] = SCSI_REQUEST_SENSE; - currSCCB->Cdb[1] = currSCCB->Cdb[1] & (UCHAR)0xE0; /*Keep LUN. */ - currSCCB->Cdb[2] = 0x00; - currSCCB->Cdb[3] = 0x00; - currSCCB->Cdb[4] = currSCCB->RequestSenseLength; - currSCCB->Cdb[5] = 0x00; + currSCCB->CdbLength = SIX_BYTE_CMD; + currSCCB->Cdb[0] = SCSI_REQUEST_SENSE; + currSCCB->Cdb[1] = currSCCB->Cdb[1] & (unsigned char)0xE0; /*Keep LUN. */ + currSCCB->Cdb[2] = 0x00; + currSCCB->Cdb[3] = 0x00; + currSCCB->Cdb[4] = currSCCB->RequestSenseLength; + currSCCB->Cdb[5] = 0x00; - currSCCB->Sccb_XferCnt = (unsigned long)currSCCB->RequestSenseLength; + currSCCB->Sccb_XferCnt = (unsigned long)currSCCB->RequestSenseLength; - currSCCB->Sccb_ATC = 0x00; + currSCCB->Sccb_ATC = 0x00; - currSCCB->Sccb_XferState |= F_AUTO_SENSE; + currSCCB->Sccb_XferState |= F_AUTO_SENSE; - currSCCB->Sccb_XferState &= ~F_SG_XFER; + currSCCB->Sccb_XferState &= ~F_SG_XFER; - currSCCB->Sccb_idmsg = currSCCB->Sccb_idmsg & ~(UCHAR)DISC_PRIV; + currSCCB->Sccb_idmsg = currSCCB->Sccb_idmsg & ~(unsigned char)DISC_PRIV; - currSCCB->ControlByte = 0x00; + currSCCB->ControlByte = 0x00; - currSCCB->Sccb_MGRFlags &= F_STATUSLOADED; + currSCCB->Sccb_MGRFlags &= F_STATUSLOADED; } - - /*--------------------------------------------------------------------- * * Function: FPT_sxfrp @@ -4332,81 +3741,81 @@ static void FPT_ssenss(PSCCBcard pCurrCa * *---------------------------------------------------------------------*/ -static void FPT_sxfrp(ULONG p_port, UCHAR p_card) +static void FPT_sxfrp(unsigned long p_port, unsigned char p_card) { - UCHAR curr_phz; + unsigned char curr_phz; + DISABLE_AUTO(p_port); - DISABLE_AUTO(p_port); + if (FPT_BL_Card[p_card].globalFlags & F_HOST_XFER_ACT) { - if (FPT_BL_Card[p_card].globalFlags & F_HOST_XFER_ACT) { + FPT_hostDataXferAbort(p_port, p_card, + FPT_BL_Card[p_card].currentSCCB); - FPT_hostDataXferAbort(p_port,p_card,FPT_BL_Card[p_card].currentSCCB); + } - } + /* If the Automation handled the end of the transfer then do not + match the phase or we will get out of sync with the ISR. */ - /* If the Automation handled the end of the transfer then do not - match the phase or we will get out of sync with the ISR. */ + if (RDW_HARPOON((p_port + hp_intstat)) & + (BUS_FREE | XFER_CNT_0 | AUTO_INT)) + return; - if (RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | XFER_CNT_0 | AUTO_INT)) - return; + WR_HARPOON(p_port + hp_xfercnt_0, 0x00); - WR_HARPOON(p_port+hp_xfercnt_0, 0x00); + curr_phz = RD_HARPOON(p_port + hp_scsisig) & (unsigned char)S_SCSI_PHZ; - curr_phz = RD_HARPOON(p_port+hp_scsisig) & (UCHAR)S_SCSI_PHZ; + WRW_HARPOON((p_port + hp_intstat), XFER_CNT_0); - WRW_HARPOON((p_port+hp_intstat), XFER_CNT_0); + WR_HARPOON(p_port + hp_scsisig, curr_phz); + while (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET)) && + (curr_phz == + (RD_HARPOON(p_port + hp_scsisig) & (unsigned char)S_SCSI_PHZ))) + { + if (curr_phz & (unsigned char)SCSI_IOBIT) { + WR_HARPOON(p_port + hp_portctrl_0, + (SCSI_PORT | HOST_PORT | SCSI_INBIT)); - WR_HARPOON(p_port+hp_scsisig, curr_phz); + if (!(RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY)) { + RD_HARPOON(p_port + hp_fifodata_0); + } + } else { + WR_HARPOON(p_port + hp_portctrl_0, + (SCSI_PORT | HOST_PORT | HOST_WRT)); + if (RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY) { + WR_HARPOON(p_port + hp_fifodata_0, 0xFA); + } + } + } /* End of While loop for padding data I/O phase */ - while ( !(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET)) && - (curr_phz == (RD_HARPOON(p_port+hp_scsisig) & (UCHAR)S_SCSI_PHZ)) ) - { - if (curr_phz & (UCHAR)SCSI_IOBIT) - { - WR_HARPOON(p_port+hp_portctrl_0, (SCSI_PORT | HOST_PORT | SCSI_INBIT)); - - if (!(RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY)) - { - RD_HARPOON(p_port+hp_fifodata_0); - } - } - else - { - WR_HARPOON(p_port+hp_portctrl_0, (SCSI_PORT | HOST_PORT | HOST_WRT)); - if (RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY) - { - WR_HARPOON(p_port+hp_fifodata_0,0xFA); - } - } - } /* End of While loop for padding data I/O phase */ - - while ( !(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET))) - { - if (RD_HARPOON(p_port+hp_scsisig) & SCSI_REQ) - break; - } - - WR_HARPOON(p_port+hp_portctrl_0, (SCSI_PORT | HOST_PORT | SCSI_INBIT)); - while (!(RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY)) - { - RD_HARPOON(p_port+hp_fifodata_0); - } - - if ( !(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET))) - { - WR_HARPOON(p_port+hp_autostart_0, (AUTO_IMMED+DISCONNECT_START)); - while (!(RDW_HARPOON((p_port+hp_intstat)) & AUTO_INT)) {} - - if (RDW_HARPOON((p_port+hp_intstat)) & (ICMD_COMP | ITAR_DISC)) - while (!(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RSEL))) ; - } -} + while (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET))) { + if (RD_HARPOON(p_port + hp_scsisig) & SCSI_REQ) + break; + } + WR_HARPOON(p_port + hp_portctrl_0, + (SCSI_PORT | HOST_PORT | SCSI_INBIT)); + while (!(RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY)) { + RD_HARPOON(p_port + hp_fifodata_0); + } -/*--------------------------------------------------------------------- - * + if (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET))) { + WR_HARPOON(p_port + hp_autostart_0, + (AUTO_IMMED + DISCONNECT_START)); + while (!(RDW_HARPOON((p_port + hp_intstat)) & AUTO_INT)) { + } + + if (RDW_HARPOON((p_port + hp_intstat)) & + (ICMD_COMP | ITAR_DISC)) + while (! + (RDW_HARPOON((p_port + hp_intstat)) & + (BUS_FREE | RSEL))) ; + } +} + +/*--------------------------------------------------------------------- + * * Function: FPT_schkdd * * Description: Make sure data has been flushed from both FIFOs and abort @@ -4414,111 +3823,99 @@ static void FPT_sxfrp(ULONG p_port, UCHA * *---------------------------------------------------------------------*/ -static void FPT_schkdd(ULONG port, UCHAR p_card) +static void FPT_schkdd(unsigned long port, unsigned char p_card) { - USHORT TimeOutLoop; - UCHAR sPhase; - - PSCCB currSCCB; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - - - if ((currSCCB->Sccb_scsistat != DATA_OUT_ST) && - (currSCCB->Sccb_scsistat != DATA_IN_ST)) { - return; - } + unsigned short TimeOutLoop; + unsigned char sPhase; + struct sccb *currSCCB; + currSCCB = FPT_BL_Card[p_card].currentSCCB; - if (currSCCB->Sccb_XferState & F_ODD_BALL_CNT) - { + if ((currSCCB->Sccb_scsistat != DATA_OUT_ST) && + (currSCCB->Sccb_scsistat != DATA_IN_ST)) { + return; + } - currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt-1); + if (currSCCB->Sccb_XferState & F_ODD_BALL_CNT) { - currSCCB->Sccb_XferCnt = 1; + currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt - 1); - currSCCB->Sccb_XferState &= ~F_ODD_BALL_CNT; - WRW_HARPOON((port+hp_fiforead), (USHORT) 0x00); - WR_HARPOON(port+hp_xferstat, 0x00); - } + currSCCB->Sccb_XferCnt = 1; - else - { + currSCCB->Sccb_XferState &= ~F_ODD_BALL_CNT; + WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00); + WR_HARPOON(port + hp_xferstat, 0x00); + } - currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt; + else { - currSCCB->Sccb_XferCnt = 0; - } + currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt; - if ((RDW_HARPOON((port+hp_intstat)) & PARITY) && - (currSCCB->HostStatus == SCCB_COMPLETE)) { + currSCCB->Sccb_XferCnt = 0; + } - currSCCB->HostStatus = SCCB_PARITY_ERR; - WRW_HARPOON((port+hp_intstat), PARITY); - } + if ((RDW_HARPOON((port + hp_intstat)) & PARITY) && + (currSCCB->HostStatus == SCCB_COMPLETE)) { + currSCCB->HostStatus = SCCB_PARITY_ERR; + WRW_HARPOON((port + hp_intstat), PARITY); + } - FPT_hostDataXferAbort(port,p_card,currSCCB); + FPT_hostDataXferAbort(port, p_card, currSCCB); + while (RD_HARPOON(port + hp_scsisig) & SCSI_ACK) { + } - while (RD_HARPOON(port+hp_scsisig) & SCSI_ACK) {} + TimeOutLoop = 0; - TimeOutLoop = 0; + while (RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY) { + if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) { + return; + } + if (RD_HARPOON(port + hp_offsetctr) & (unsigned char)0x1F) { + break; + } + if (RDW_HARPOON((port + hp_intstat)) & RESET) { + return; + } + if ((RD_HARPOON(port + hp_scsisig) & SCSI_REQ) + || (TimeOutLoop++ > 0x3000)) + break; + } - while(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY) - { - if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) { - return; - } - if (RD_HARPOON(port+hp_offsetctr) & (UCHAR)0x1F) { - break; - } - if (RDW_HARPOON((port+hp_intstat)) & RESET) { - return; - } - if ((RD_HARPOON(port+hp_scsisig) & SCSI_REQ) || (TimeOutLoop++>0x3000) ) - break; - } + sPhase = RD_HARPOON(port + hp_scsisig) & (SCSI_BSY | S_SCSI_PHZ); + if ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) || + (RD_HARPOON(port + hp_offsetctr) & (unsigned char)0x1F) || + (sPhase == (SCSI_BSY | S_DATAO_PH)) || + (sPhase == (SCSI_BSY | S_DATAI_PH))) { - sPhase = RD_HARPOON(port+hp_scsisig) & (SCSI_BSY | S_SCSI_PHZ); - if ((!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)) || - (RD_HARPOON(port+hp_offsetctr) & (UCHAR)0x1F) || - (sPhase == (SCSI_BSY | S_DATAO_PH)) || - (sPhase == (SCSI_BSY | S_DATAI_PH))) - { + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); + if (!(currSCCB->Sccb_XferState & F_ALL_XFERRED)) { + if (currSCCB->Sccb_XferState & F_HOST_XFER_DIR) { + FPT_phaseDataIn(port, p_card); + } - if (!(currSCCB->Sccb_XferState & F_ALL_XFERRED)) - { - if (currSCCB->Sccb_XferState & F_HOST_XFER_DIR) { - FPT_phaseDataIn(port,p_card); - } - - else { - FPT_phaseDataOut(port,p_card); - } - } - else - { - FPT_sxfrp(port,p_card); - if (!(RDW_HARPOON((port+hp_intstat)) & - (BUS_FREE | ICMD_COMP | ITAR_DISC | RESET))) - { - WRW_HARPOON((port+hp_intstat), AUTO_INT); - FPT_phaseDecode(port,p_card); - } - } + else { + FPT_phaseDataOut(port, p_card); + } + } else { + FPT_sxfrp(port, p_card); + if (!(RDW_HARPOON((port + hp_intstat)) & + (BUS_FREE | ICMD_COMP | ITAR_DISC | RESET))) { + WRW_HARPOON((port + hp_intstat), AUTO_INT); + FPT_phaseDecode(port, p_card); + } + } - } + } - else { - WR_HARPOON(port+hp_portctrl_0, 0x00); - } + else { + WR_HARPOON(port + hp_portctrl_0, 0x00); + } } - /*--------------------------------------------------------------------- * * Function: FPT_sinits @@ -4527,39 +3924,37 @@ static void FPT_schkdd(ULONG port, UCHAR * *---------------------------------------------------------------------*/ -static void FPT_sinits(PSCCB p_sccb, UCHAR p_card) +static void FPT_sinits(struct sccb *p_sccb, unsigned char p_card) { - PSCCBMgr_tar_info currTar_Info; + struct sccb_mgr_tar_info *currTar_Info; - if((p_sccb->TargID > MAX_SCSI_TAR) || (p_sccb->Lun > MAX_LUN)) - { + if ((p_sccb->TargID > MAX_SCSI_TAR) || (p_sccb->Lun > MAX_LUN)) { return; } - currTar_Info = &FPT_sccbMgrTbl[p_card][p_sccb->TargID]; + currTar_Info = &FPT_sccbMgrTbl[p_card][p_sccb->TargID]; - p_sccb->Sccb_XferState = 0x00; - p_sccb->Sccb_XferCnt = p_sccb->DataLength; + p_sccb->Sccb_XferState = 0x00; + p_sccb->Sccb_XferCnt = p_sccb->DataLength; - if ((p_sccb->OperationCode == SCATTER_GATHER_COMMAND) || - (p_sccb->OperationCode == RESIDUAL_SG_COMMAND)) { + if ((p_sccb->OperationCode == SCATTER_GATHER_COMMAND) || + (p_sccb->OperationCode == RESIDUAL_SG_COMMAND)) { - p_sccb->Sccb_SGoffset = 0; - p_sccb->Sccb_XferState = F_SG_XFER; - p_sccb->Sccb_XferCnt = 0x00; - } + p_sccb->Sccb_SGoffset = 0; + p_sccb->Sccb_XferState = F_SG_XFER; + p_sccb->Sccb_XferCnt = 0x00; + } - if (p_sccb->DataLength == 0x00) + if (p_sccb->DataLength == 0x00) - p_sccb->Sccb_XferState |= F_ALL_XFERRED; + p_sccb->Sccb_XferState |= F_ALL_XFERRED; - if (p_sccb->ControlByte & F_USE_CMD_Q) - { - if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_REJECT) - p_sccb->ControlByte &= ~F_USE_CMD_Q; + if (p_sccb->ControlByte & F_USE_CMD_Q) { + if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_REJECT) + p_sccb->ControlByte &= ~F_USE_CMD_Q; - else - currTar_Info->TarStatus |= TAG_Q_TRYING; - } + else + currTar_Info->TarStatus |= TAG_Q_TRYING; + } /* For !single SCSI device in system & device allow Disconnect or command is tag_q type then send Cmd with Disconnect Enable @@ -4570,35 +3965,35 @@ static void FPT_sinits(PSCCB p_sccb, UCH (currTar_Info->TarStatus & TAR_ALLOW_DISC)) || (currTar_Info->TarStatus & TAG_Q_TRYING)) { */ - if ((currTar_Info->TarStatus & TAR_ALLOW_DISC) || - (currTar_Info->TarStatus & TAG_Q_TRYING)) { - p_sccb->Sccb_idmsg = (UCHAR)(SMIDENT | DISC_PRIV) | p_sccb->Lun; - } + if ((currTar_Info->TarStatus & TAR_ALLOW_DISC) || + (currTar_Info->TarStatus & TAG_Q_TRYING)) { + p_sccb->Sccb_idmsg = + (unsigned char)(SMIDENT | DISC_PRIV) | p_sccb->Lun; + } - else { + else { - p_sccb->Sccb_idmsg = (UCHAR)SMIDENT | p_sccb->Lun; - } + p_sccb->Sccb_idmsg = (unsigned char)SMIDENT | p_sccb->Lun; + } - p_sccb->HostStatus = 0x00; - p_sccb->TargetStatus = 0x00; - p_sccb->Sccb_tag = 0x00; - p_sccb->Sccb_MGRFlags = 0x00; - p_sccb->Sccb_sgseg = 0x00; - p_sccb->Sccb_ATC = 0x00; - p_sccb->Sccb_savedATC = 0x00; + p_sccb->HostStatus = 0x00; + p_sccb->TargetStatus = 0x00; + p_sccb->Sccb_tag = 0x00; + p_sccb->Sccb_MGRFlags = 0x00; + p_sccb->Sccb_sgseg = 0x00; + p_sccb->Sccb_ATC = 0x00; + p_sccb->Sccb_savedATC = 0x00; /* p_sccb->SccbVirtDataPtr = 0x00; p_sccb->Sccb_forwardlink = NULL; p_sccb->Sccb_backlink = NULL; */ - p_sccb->Sccb_scsistat = BUS_FREE_ST; - p_sccb->SccbStatus = SCCB_IN_PROCESS; - p_sccb->Sccb_scsimsg = SMNO_OP; + p_sccb->Sccb_scsistat = BUS_FREE_ST; + p_sccb->SccbStatus = SCCB_IN_PROCESS; + p_sccb->Sccb_scsimsg = SMNO_OP; } - /*--------------------------------------------------------------------- * * Function: Phase Decode @@ -4607,23 +4002,21 @@ static void FPT_sinits(PSCCB p_sccb, UCH * *---------------------------------------------------------------------*/ -static void FPT_phaseDecode(ULONG p_port, UCHAR p_card) +static void FPT_phaseDecode(unsigned long p_port, unsigned char p_card) { - unsigned char phase_ref; - void (*phase) (ULONG, UCHAR); - + unsigned char phase_ref; + void (*phase) (unsigned long, unsigned char); - DISABLE_AUTO(p_port); + DISABLE_AUTO(p_port); - phase_ref = (UCHAR) (RD_HARPOON(p_port+hp_scsisig) & S_SCSI_PHZ); + phase_ref = + (unsigned char)(RD_HARPOON(p_port + hp_scsisig) & S_SCSI_PHZ); - phase = FPT_s_PhaseTbl[phase_ref]; + phase = FPT_s_PhaseTbl[phase_ref]; - (*phase)(p_port, p_card); /* Call the correct phase func */ + (*phase) (p_port, p_card); /* Call the correct phase func */ } - - /*--------------------------------------------------------------------- * * Function: Data Out Phase @@ -4632,42 +4025,39 @@ static void FPT_phaseDecode(ULONG p_port * *---------------------------------------------------------------------*/ -static void FPT_phaseDataOut(ULONG port, UCHAR p_card) +static void FPT_phaseDataOut(unsigned long port, unsigned char p_card) { - PSCCB currSCCB; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - if (currSCCB == NULL) - { - return; /* Exit if No SCCB record */ - } + struct sccb *currSCCB; - currSCCB->Sccb_scsistat = DATA_OUT_ST; - currSCCB->Sccb_XferState &= ~(F_HOST_XFER_DIR | F_NO_DATA_YET); + currSCCB = FPT_BL_Card[p_card].currentSCCB; + if (currSCCB == NULL) { + return; /* Exit if No SCCB record */ + } - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); + currSCCB->Sccb_scsistat = DATA_OUT_ST; + currSCCB->Sccb_XferState &= ~(F_HOST_XFER_DIR | F_NO_DATA_YET); - WRW_HARPOON((port+hp_intstat), XFER_CNT_0); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); - WR_HARPOON(port+hp_autostart_0, (END_DATA+END_DATA_START)); + WRW_HARPOON((port + hp_intstat), XFER_CNT_0); - FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); + WR_HARPOON(port + hp_autostart_0, (END_DATA + END_DATA_START)); - if (currSCCB->Sccb_XferCnt == 0) { + FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); + if (currSCCB->Sccb_XferCnt == 0) { - if ((currSCCB->ControlByte & SCCB_DATA_XFER_OUT) && - (currSCCB->HostStatus == SCCB_COMPLETE)) - currSCCB->HostStatus = SCCB_DATA_OVER_RUN; + if ((currSCCB->ControlByte & SCCB_DATA_XFER_OUT) && + (currSCCB->HostStatus == SCCB_COMPLETE)) + currSCCB->HostStatus = SCCB_DATA_OVER_RUN; - FPT_sxfrp(port,p_card); - if (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | RESET))) - FPT_phaseDecode(port,p_card); - } + FPT_sxfrp(port, p_card); + if (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | RESET))) + FPT_phaseDecode(port, p_card); + } } - /*--------------------------------------------------------------------- * * Function: Data In Phase @@ -4676,43 +4066,40 @@ static void FPT_phaseDataOut(ULONG port, * *---------------------------------------------------------------------*/ -static void FPT_phaseDataIn(ULONG port, UCHAR p_card) +static void FPT_phaseDataIn(unsigned long port, unsigned char p_card) { - PSCCB currSCCB; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - - if (currSCCB == NULL) - { - return; /* Exit if No SCCB record */ - } + struct sccb *currSCCB; + currSCCB = FPT_BL_Card[p_card].currentSCCB; - currSCCB->Sccb_scsistat = DATA_IN_ST; - currSCCB->Sccb_XferState |= F_HOST_XFER_DIR; - currSCCB->Sccb_XferState &= ~F_NO_DATA_YET; + if (currSCCB == NULL) { + return; /* Exit if No SCCB record */ + } - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); + currSCCB->Sccb_scsistat = DATA_IN_ST; + currSCCB->Sccb_XferState |= F_HOST_XFER_DIR; + currSCCB->Sccb_XferState &= ~F_NO_DATA_YET; - WRW_HARPOON((port+hp_intstat), XFER_CNT_0); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); - WR_HARPOON(port+hp_autostart_0, (END_DATA+END_DATA_START)); + WRW_HARPOON((port + hp_intstat), XFER_CNT_0); - FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); + WR_HARPOON(port + hp_autostart_0, (END_DATA + END_DATA_START)); - if (currSCCB->Sccb_XferCnt == 0) { + FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); + if (currSCCB->Sccb_XferCnt == 0) { - if ((currSCCB->ControlByte & SCCB_DATA_XFER_IN) && - (currSCCB->HostStatus == SCCB_COMPLETE)) - currSCCB->HostStatus = SCCB_DATA_OVER_RUN; + if ((currSCCB->ControlByte & SCCB_DATA_XFER_IN) && + (currSCCB->HostStatus == SCCB_COMPLETE)) + currSCCB->HostStatus = SCCB_DATA_OVER_RUN; - FPT_sxfrp(port,p_card); - if (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | RESET))) - FPT_phaseDecode(port,p_card); + FPT_sxfrp(port, p_card); + if (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | RESET))) + FPT_phaseDecode(port, p_card); - } + } } /*--------------------------------------------------------------------- @@ -4723,50 +4110,49 @@ static void FPT_phaseDataIn(ULONG port, * *---------------------------------------------------------------------*/ -static void FPT_phaseCommand(ULONG p_port, UCHAR p_card) +static void FPT_phaseCommand(unsigned long p_port, unsigned char p_card) { - PSCCB currSCCB; - ULONG cdb_reg; - UCHAR i; + struct sccb *currSCCB; + unsigned long cdb_reg; + unsigned char i; - currSCCB = FPT_BL_Card[p_card].currentSCCB; - - if (currSCCB->OperationCode == RESET_COMMAND) { + currSCCB = FPT_BL_Card[p_card].currentSCCB; - currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; - currSCCB->CdbLength = SIX_BYTE_CMD; - } + if (currSCCB->OperationCode == RESET_COMMAND) { - WR_HARPOON(p_port+hp_scsisig, 0x00); + currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; + currSCCB->CdbLength = SIX_BYTE_CMD; + } - ARAM_ACCESS(p_port); + WR_HARPOON(p_port + hp_scsisig, 0x00); + ARAM_ACCESS(p_port); - cdb_reg = p_port + CMD_STRT; + cdb_reg = p_port + CMD_STRT; - for (i=0; i < currSCCB->CdbLength; i++) { + for (i = 0; i < currSCCB->CdbLength; i++) { - if (currSCCB->OperationCode == RESET_COMMAND) + if (currSCCB->OperationCode == RESET_COMMAND) - WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + 0x00)); + WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + 0x00)); - else - WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + currSCCB->Cdb[i])); - cdb_reg +=2; - } + else + WRW_HARPOON(cdb_reg, + (MPM_OP + ACOMMAND + currSCCB->Cdb[i])); + cdb_reg += 2; + } - if (currSCCB->CdbLength != TWELVE_BYTE_CMD) - WRW_HARPOON(cdb_reg, (BRH_OP+ALWAYS+ NP)); + if (currSCCB->CdbLength != TWELVE_BYTE_CMD) + WRW_HARPOON(cdb_reg, (BRH_OP + ALWAYS + NP)); - WR_HARPOON(p_port+hp_portctrl_0,(SCSI_PORT)); + WR_HARPOON(p_port + hp_portctrl_0, (SCSI_PORT)); - currSCCB->Sccb_scsistat = COMMAND_ST; + currSCCB->Sccb_scsistat = COMMAND_ST; - WR_HARPOON(p_port+hp_autostart_3, (AUTO_IMMED | CMD_ONLY_STRT)); - SGRAM_ACCESS(p_port); + WR_HARPOON(p_port + hp_autostart_3, (AUTO_IMMED | CMD_ONLY_STRT)); + SGRAM_ACCESS(p_port); } - /*--------------------------------------------------------------------- * * Function: Status phase @@ -4775,19 +4161,18 @@ static void FPT_phaseCommand(ULONG p_por * *---------------------------------------------------------------------*/ -static void FPT_phaseStatus(ULONG port, UCHAR p_card) +static void FPT_phaseStatus(unsigned long port, unsigned char p_card) { - /* Start-up the automation to finish off this command and let the - isr handle the interrupt for command complete when it comes in. - We could wait here for the interrupt to be generated? - */ + /* Start-up the automation to finish off this command and let the + isr handle the interrupt for command complete when it comes in. + We could wait here for the interrupt to be generated? + */ - WR_HARPOON(port+hp_scsisig, 0x00); + WR_HARPOON(port + hp_scsisig, 0x00); - WR_HARPOON(port+hp_autostart_0, (AUTO_IMMED+END_DATA_START)); + WR_HARPOON(port + hp_autostart_0, (AUTO_IMMED + END_DATA_START)); } - /*--------------------------------------------------------------------- * * Function: Phase Message Out @@ -4797,11 +4182,11 @@ static void FPT_phaseStatus(ULONG port, * *---------------------------------------------------------------------*/ -static void FPT_phaseMsgOut(ULONG port, UCHAR p_card) +static void FPT_phaseMsgOut(unsigned long port, unsigned char p_card) { - UCHAR message,scsiID; - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; + unsigned char message, scsiID; + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; currSCCB = FPT_BL_Card[p_card].currentSCCB; @@ -4810,133 +4195,124 @@ static void FPT_phaseMsgOut(ULONG port, message = currSCCB->Sccb_scsimsg; scsiID = currSCCB->TargID; - if (message == SMDEV_RESET) - { - + if (message == SMDEV_RESET) { currTar_Info = &FPT_sccbMgrTbl[p_card][scsiID]; currTar_Info->TarSyncCtrl = 0; - FPT_sssyncv(port, scsiID, NARROW_SCSI,currTar_Info); + FPT_sssyncv(port, scsiID, NARROW_SCSI, currTar_Info); - if (FPT_sccbMgrTbl[p_card][scsiID].TarEEValue & EE_SYNC_MASK) - { + if (FPT_sccbMgrTbl[p_card][scsiID]. + TarEEValue & EE_SYNC_MASK) { - FPT_sccbMgrTbl[p_card][scsiID].TarStatus &= ~TAR_SYNC_MASK; + FPT_sccbMgrTbl[p_card][scsiID].TarStatus &= + ~TAR_SYNC_MASK; } - if (FPT_sccbMgrTbl[p_card][scsiID].TarEEValue & EE_WIDE_SCSI) - { + if (FPT_sccbMgrTbl[p_card][scsiID]. + TarEEValue & EE_WIDE_SCSI) { - FPT_sccbMgrTbl[p_card][scsiID].TarStatus &= ~TAR_WIDE_MASK; + FPT_sccbMgrTbl[p_card][scsiID].TarStatus &= + ~TAR_WIDE_MASK; } - - FPT_queueFlushSccb(p_card,SCCB_COMPLETE); - FPT_SccbMgrTableInitTarget(p_card,scsiID); - } - else if (currSCCB->Sccb_scsistat == ABORT_ST) - { + FPT_queueFlushSccb(p_card, SCCB_COMPLETE); + FPT_SccbMgrTableInitTarget(p_card, scsiID); + } else if (currSCCB->Sccb_scsistat == ABORT_ST) { currSCCB->HostStatus = SCCB_COMPLETE; - if(FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] != NULL) - { - FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL; + if (FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] != + NULL) { + FPT_BL_Card[p_card].discQ_Tbl[currSCCB-> + Sccb_tag] = NULL; FPT_sccbMgrTbl[p_card][scsiID].TarTagQ_Cnt--; } - - } - else if (currSCCB->Sccb_scsistat < COMMAND_ST) - { + } + else if (currSCCB->Sccb_scsistat < COMMAND_ST) { - if(message == SMNO_OP) - { + if (message == SMNO_OP) { currSCCB->Sccb_MGRFlags |= F_DEV_SELECTED; - - FPT_ssel(port,p_card); + + FPT_ssel(port, p_card); return; } - } - else - { - + } else { if (message == SMABORT) - FPT_queueFlushSccb(p_card,SCCB_COMPLETE); + FPT_queueFlushSccb(p_card, SCCB_COMPLETE); } - } - else - { + } else { message = SMABORT; } - WRW_HARPOON((port+hp_intstat), (BUS_FREE | PHASE | XFER_CNT_0)); - + WRW_HARPOON((port + hp_intstat), (BUS_FREE | PHASE | XFER_CNT_0)); - WR_HARPOON(port+hp_portctrl_0, SCSI_BUS_EN); + WR_HARPOON(port + hp_portctrl_0, SCSI_BUS_EN); - WR_HARPOON(port+hp_scsidata_0,message); + WR_HARPOON(port + hp_scsidata_0, message); - WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); + WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH)); ACCEPT_MSG(port); - WR_HARPOON(port+hp_portctrl_0, 0x00); + WR_HARPOON(port + hp_portctrl_0, 0x00); - if ((message == SMABORT) || (message == SMDEV_RESET) || - (message == SMABORT_TAG) ) - { + if ((message == SMABORT) || (message == SMDEV_RESET) || + (message == SMABORT_TAG)) { - while(!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | PHASE))) {} + while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | PHASE))) { + } - if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) - { - WRW_HARPOON((port+hp_intstat), BUS_FREE); + if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) { + WRW_HARPOON((port + hp_intstat), BUS_FREE); - if (currSCCB != NULL) - { + if (currSCCB != NULL) { - if((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 0; + if ((FPT_BL_Card[p_card]. + globalFlags & F_CONLUN_IO) + && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING)) + FPT_sccbMgrTbl[p_card][currSCCB-> + TargID]. + TarLUNBusy[currSCCB->Lun] = 0; else - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 0; + FPT_sccbMgrTbl[p_card][currSCCB-> + TargID]. + TarLUNBusy[0] = 0; - FPT_queueCmdComplete(&FPT_BL_Card[p_card],currSCCB, p_card); + FPT_queueCmdComplete(&FPT_BL_Card[p_card], + currSCCB, p_card); } - else - { - FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + else { + FPT_BL_Card[p_card].globalFlags |= + F_NEW_SCCB_CMD; } } - else - { + else { - FPT_sxfrp(port,p_card); + FPT_sxfrp(port, p_card); } } - else - { + else { - if(message == SMPARITY) - { + if (message == SMPARITY) { currSCCB->Sccb_scsimsg = SMNO_OP; - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); - } - else - { - FPT_sxfrp(port,p_card); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); + } else { + FPT_sxfrp(port, p_card); } } } - /*--------------------------------------------------------------------- * * Function: Message In phase @@ -4945,49 +4321,43 @@ static void FPT_phaseMsgOut(ULONG port, * *---------------------------------------------------------------------*/ -static void FPT_phaseMsgIn(ULONG port, UCHAR p_card) +static void FPT_phaseMsgIn(unsigned long port, unsigned char p_card) { - UCHAR message; - PSCCB currSCCB; + unsigned char message; + struct sccb *currSCCB; currSCCB = FPT_BL_Card[p_card].currentSCCB; - if (FPT_BL_Card[p_card].globalFlags & F_HOST_XFER_ACT) - { + if (FPT_BL_Card[p_card].globalFlags & F_HOST_XFER_ACT) { FPT_phaseChkFifo(port, p_card); } - message = RD_HARPOON(port+hp_scsidata_0); - if ((message == SMDISC) || (message == SMSAVE_DATA_PTR)) - { + message = RD_HARPOON(port + hp_scsidata_0); + if ((message == SMDISC) || (message == SMSAVE_DATA_PTR)) { - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+END_DATA_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + END_DATA_START)); } - else - { - - message = FPT_sfm(port,currSCCB); - if (message) - { + else { + message = FPT_sfm(port, currSCCB); + if (message) { - FPT_sdecm(message,port,p_card); + FPT_sdecm(message, port, p_card); - } - else - { - if(currSCCB->Sccb_scsimsg != SMPARITY) + } else { + if (currSCCB->Sccb_scsimsg != SMPARITY) ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } } } - /*--------------------------------------------------------------------- * * Function: Illegal phase @@ -4998,25 +4368,23 @@ static void FPT_phaseMsgIn(ULONG port, U * *---------------------------------------------------------------------*/ -static void FPT_phaseIllegal(ULONG port, UCHAR p_card) +static void FPT_phaseIllegal(unsigned long port, unsigned char p_card) { - PSCCB currSCCB; + struct sccb *currSCCB; - currSCCB = FPT_BL_Card[p_card].currentSCCB; + currSCCB = FPT_BL_Card[p_card].currentSCCB; - WR_HARPOON(port+hp_scsisig, RD_HARPOON(port+hp_scsisig)); - if (currSCCB != NULL) { + WR_HARPOON(port + hp_scsisig, RD_HARPOON(port + hp_scsisig)); + if (currSCCB != NULL) { - currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; - currSCCB->Sccb_scsistat = ABORT_ST; - currSCCB->Sccb_scsimsg = SMABORT; - } + currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; + currSCCB->Sccb_scsistat = ABORT_ST; + currSCCB->Sccb_scsimsg = SMABORT; + } - ACCEPT_MSG_ATN(port); + ACCEPT_MSG_ATN(port); } - - /*--------------------------------------------------------------------- * * Function: Phase Check FIFO @@ -5026,76 +4394,69 @@ static void FPT_phaseIllegal(ULONG port, * *---------------------------------------------------------------------*/ -static void FPT_phaseChkFifo(ULONG port, UCHAR p_card) +static void FPT_phaseChkFifo(unsigned long port, unsigned char p_card) { - ULONG xfercnt; - PSCCB currSCCB; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - - if (currSCCB->Sccb_scsistat == DATA_IN_ST) - { - - while((!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)) && - (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY)) {} - - - if (!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)) - { - currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt; + unsigned long xfercnt; + struct sccb *currSCCB; - currSCCB->Sccb_XferCnt = 0; - - if ((RDW_HARPOON((port+hp_intstat)) & PARITY) && - (currSCCB->HostStatus == SCCB_COMPLETE)) - { - currSCCB->HostStatus = SCCB_PARITY_ERR; - WRW_HARPOON((port+hp_intstat), PARITY); - } - - FPT_hostDataXferAbort(port,p_card,currSCCB); + currSCCB = FPT_BL_Card[p_card].currentSCCB; - FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); + if (currSCCB->Sccb_scsistat == DATA_IN_ST) { - while((!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)) && - (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY)) {} + while ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) && + (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY)) { + } - } - } /*End Data In specific code. */ + if (!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) { + currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt; + currSCCB->Sccb_XferCnt = 0; + if ((RDW_HARPOON((port + hp_intstat)) & PARITY) && + (currSCCB->HostStatus == SCCB_COMPLETE)) { + currSCCB->HostStatus = SCCB_PARITY_ERR; + WRW_HARPOON((port + hp_intstat), PARITY); + } - GET_XFER_CNT(port,xfercnt); + FPT_hostDataXferAbort(port, p_card, currSCCB); + FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); - WR_HARPOON(port+hp_xfercnt_0, 0x00); + while ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) + && (RD_HARPOON(port + hp_ext_status) & + BM_CMD_BUSY)) { + } + } + } - WR_HARPOON(port+hp_portctrl_0, 0x00); + /*End Data In specific code. */ + GET_XFER_CNT(port, xfercnt); - currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt - xfercnt); + WR_HARPOON(port + hp_xfercnt_0, 0x00); - currSCCB->Sccb_XferCnt = xfercnt; + WR_HARPOON(port + hp_portctrl_0, 0x00); - if ((RDW_HARPOON((port+hp_intstat)) & PARITY) && - (currSCCB->HostStatus == SCCB_COMPLETE)) { + currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt - xfercnt); - currSCCB->HostStatus = SCCB_PARITY_ERR; - WRW_HARPOON((port+hp_intstat), PARITY); - } + currSCCB->Sccb_XferCnt = xfercnt; + if ((RDW_HARPOON((port + hp_intstat)) & PARITY) && + (currSCCB->HostStatus == SCCB_COMPLETE)) { - FPT_hostDataXferAbort(port,p_card,currSCCB); + currSCCB->HostStatus = SCCB_PARITY_ERR; + WRW_HARPOON((port + hp_intstat), PARITY); + } + FPT_hostDataXferAbort(port, p_card, currSCCB); - WR_HARPOON(port+hp_fifowrite, 0x00); - WR_HARPOON(port+hp_fiforead, 0x00); - WR_HARPOON(port+hp_xferstat, 0x00); + WR_HARPOON(port + hp_fifowrite, 0x00); + WR_HARPOON(port + hp_fiforead, 0x00); + WR_HARPOON(port + hp_xferstat, 0x00); - WRW_HARPOON((port+hp_intstat), XFER_CNT_0); + WRW_HARPOON((port + hp_intstat), XFER_CNT_0); } - /*--------------------------------------------------------------------- * * Function: Phase Bus Free @@ -5104,96 +4465,94 @@ static void FPT_phaseChkFifo(ULONG port, * because of command complete or from a disconnect. * *---------------------------------------------------------------------*/ -static void FPT_phaseBusFree(ULONG port, UCHAR p_card) +static void FPT_phaseBusFree(unsigned long port, unsigned char p_card) { - PSCCB currSCCB; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; + struct sccb *currSCCB; - if (currSCCB != NULL) - { + currSCCB = FPT_BL_Card[p_card].currentSCCB; - DISABLE_AUTO(port); + if (currSCCB != NULL) { + DISABLE_AUTO(port); - if (currSCCB->OperationCode == RESET_COMMAND) - { + if (currSCCB->OperationCode == RESET_COMMAND) { - if((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 0; + if ((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = 0; else - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 0; + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[0] = 0; - FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, p_card); + FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, + p_card); - FPT_queueSearchSelect(&FPT_BL_Card[p_card],p_card); + FPT_queueSearchSelect(&FPT_BL_Card[p_card], p_card); - } + } - else if(currSCCB->Sccb_scsistat == SELECT_SN_ST) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= - (UCHAR)SYNC_SUPPORTED; - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_SYNC_MASK; - } - - else if(currSCCB->Sccb_scsistat == SELECT_WN_ST) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus = - (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. - TarStatus & ~WIDE_ENABLED) | WIDE_NEGOCIATED; - - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_WIDE_SCSI; - } - - else if(currSCCB->Sccb_scsistat == SELECT_Q_ST) - { - /* Make sure this is not a phony BUS_FREE. If we were - reselected or if BUSY is NOT on then this is a - valid BUS FREE. SRR Wednesday, 5/10/1995. */ - - if ((!(RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) || - (RDW_HARPOON((port+hp_intstat)) & RSEL)) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus &= ~TAR_TAG_Q_MASK; - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= TAG_Q_REJECT; - } - - else - { - return; - } - } - - else - { - - currSCCB->Sccb_scsistat = BUS_FREE_ST; - - if (!currSCCB->HostStatus) - { - currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; - } - - if((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 0; - else - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 0; + else if (currSCCB->Sccb_scsistat == SELECT_SN_ST) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= + (unsigned char)SYNC_SUPPORTED; + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= + ~EE_SYNC_MASK; + } - FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, p_card); - return; - } + else if (currSCCB->Sccb_scsistat == SELECT_WN_ST) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus = + (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & ~WIDE_ENABLED) | WIDE_NEGOCIATED; + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= + ~EE_WIDE_SCSI; + } - FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + else if (currSCCB->Sccb_scsistat == SELECT_Q_ST) { + /* Make sure this is not a phony BUS_FREE. If we were + reselected or if BUSY is NOT on then this is a + valid BUS FREE. SRR Wednesday, 5/10/1995. */ - } /*end if !=null */ -} + if ((!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) || + (RDW_HARPOON((port + hp_intstat)) & RSEL)) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus &= ~TAR_TAG_Q_MASK; + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus |= TAG_Q_REJECT; + } + + else { + return; + } + } + + else { + + currSCCB->Sccb_scsistat = BUS_FREE_ST; + + if (!currSCCB->HostStatus) { + currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; + } + + if ((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = 0; + else + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[0] = 0; + FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, + p_card); + return; + } + FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + } /*end if !=null */ +} /*--------------------------------------------------------------------- * @@ -5202,103 +4561,101 @@ static void FPT_phaseBusFree(ULONG port, * Description: Load the Automation RAM with the defualt map values. * *---------------------------------------------------------------------*/ -static void FPT_autoLoadDefaultMap(ULONG p_port) +static void FPT_autoLoadDefaultMap(unsigned long p_port) { - ULONG map_addr; + unsigned long map_addr; - ARAM_ACCESS(p_port); - map_addr = p_port + hp_aramBase; + ARAM_ACCESS(p_port); + map_addr = p_port + hp_aramBase; - WRW_HARPOON(map_addr, (MPM_OP+AMSG_OUT+ 0xC0)); /*ID MESSAGE */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+AMSG_OUT+ 0x20)); /*SIMPLE TAG QUEUEING MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, RAT_OP); /*RESET ATTENTION */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+AMSG_OUT+ 0x00)); /*TAG ID MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 0 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 1 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 2 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 3 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 4 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 5 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 6 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 7 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 8 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 9 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 10 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 11 */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPE_OP+ADATA_OUT+ DINT)); /*JUMP IF DATA OUT */ - map_addr +=2; - WRW_HARPOON(map_addr, (TCB_OP+FIFO_0+ DI)); /*JUMP IF NO DATA IN FIFO */ - map_addr +=2; /*This means AYNC DATA IN */ - WRW_HARPOON(map_addr, (SSI_OP+ SSI_IDO_STRT)); /*STOP AND INTERRUPT */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPE_OP+ADATA_IN+DINT)); /*JUMP IF NOT DATA IN PHZ */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPN_OP+AMSG_IN+ ST)); /*IF NOT MSG IN CHECK 4 DATA IN */ - map_addr +=2; - WRW_HARPOON(map_addr, (CRD_OP+SDATA+ 0x02)); /*SAVE DATA PTR MSG? */ - map_addr +=2; - WRW_HARPOON(map_addr, (BRH_OP+NOT_EQ+ DC)); /*GO CHECK FOR DISCONNECT MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (MRR_OP+SDATA+ D_AR1)); /*SAVE DATA PTRS MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPN_OP+AMSG_IN+ ST)); /*IF NOT MSG IN CHECK DATA IN */ - map_addr +=2; - WRW_HARPOON(map_addr, (CRD_OP+SDATA+ 0x04)); /*DISCONNECT MSG? */ - map_addr +=2; - WRW_HARPOON(map_addr, (BRH_OP+NOT_EQ+ UNKNWN));/*UKNKNOWN MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (MRR_OP+SDATA+ D_BUCKET));/*XFER DISCONNECT MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_ITAR_DISC));/*STOP AND INTERRUPT */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPN_OP+ASTATUS+ UNKNWN));/*JUMP IF NOT STATUS PHZ. */ - map_addr +=2; - WRW_HARPOON(map_addr, (MRR_OP+SDATA+ D_AR0)); /*GET STATUS BYTE */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPN_OP+AMSG_IN+ CC)); /*ERROR IF NOT MSG IN PHZ */ - map_addr +=2; - WRW_HARPOON(map_addr, (CRD_OP+SDATA+ 0x00)); /*CHECK FOR CMD COMPLETE MSG. */ - map_addr +=2; - WRW_HARPOON(map_addr, (BRH_OP+NOT_EQ+ CC)); /*ERROR IF NOT CMD COMPLETE MSG. */ - map_addr +=2; - WRW_HARPOON(map_addr, (MRR_OP+SDATA+ D_BUCKET));/*GET CMD COMPLETE MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_ICMD_COMP));/*END OF COMMAND */ - map_addr +=2; - - WRW_HARPOON(map_addr, (SSI_OP+ SSI_IUNKWN)); /*RECEIVED UNKNOWN MSG BYTE */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_INO_CC)); /*NO COMMAND COMPLETE AFTER STATUS */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_ITICKLE)); /*BIOS Tickled the Mgr */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_IRFAIL)); /*EXPECTED ID/TAG MESSAGES AND */ - map_addr +=2; /* DIDN'T GET ONE */ - WRW_HARPOON(map_addr, (CRR_OP+AR3+ S_IDREG)); /* comp SCSI SEL ID & AR3*/ - map_addr +=2; - WRW_HARPOON(map_addr, (BRH_OP+EQUAL+ 0x00)); /*SEL ID OK then Conti. */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_INO_CC)); /*NO COMMAND COMPLETE AFTER STATUS */ + WRW_HARPOON(map_addr, (MPM_OP + AMSG_OUT + 0xC0)); /*ID MESSAGE */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + AMSG_OUT + 0x20)); /*SIMPLE TAG QUEUEING MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, RAT_OP); /*RESET ATTENTION */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + AMSG_OUT + 0x00)); /*TAG ID MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 0 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 1 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 2 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 3 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 4 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 5 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 6 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 7 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 8 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 9 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 10 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 11 */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPE_OP + ADATA_OUT + DINT)); /*JUMP IF DATA OUT */ + map_addr += 2; + WRW_HARPOON(map_addr, (TCB_OP + FIFO_0 + DI)); /*JUMP IF NO DATA IN FIFO */ + map_addr += 2; /*This means AYNC DATA IN */ + WRW_HARPOON(map_addr, (SSI_OP + SSI_IDO_STRT)); /*STOP AND INTERRUPT */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPE_OP + ADATA_IN + DINT)); /*JUMP IF NOT DATA IN PHZ */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPN_OP + AMSG_IN + ST)); /*IF NOT MSG IN CHECK 4 DATA IN */ + map_addr += 2; + WRW_HARPOON(map_addr, (CRD_OP + SDATA + 0x02)); /*SAVE DATA PTR MSG? */ + map_addr += 2; + WRW_HARPOON(map_addr, (BRH_OP + NOT_EQ + DC)); /*GO CHECK FOR DISCONNECT MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (MRR_OP + SDATA + D_AR1)); /*SAVE DATA PTRS MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPN_OP + AMSG_IN + ST)); /*IF NOT MSG IN CHECK DATA IN */ + map_addr += 2; + WRW_HARPOON(map_addr, (CRD_OP + SDATA + 0x04)); /*DISCONNECT MSG? */ + map_addr += 2; + WRW_HARPOON(map_addr, (BRH_OP + NOT_EQ + UNKNWN)); /*UKNKNOWN MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (MRR_OP + SDATA + D_BUCKET)); /*XFER DISCONNECT MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_ITAR_DISC)); /*STOP AND INTERRUPT */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPN_OP + ASTATUS + UNKNWN)); /*JUMP IF NOT STATUS PHZ. */ + map_addr += 2; + WRW_HARPOON(map_addr, (MRR_OP + SDATA + D_AR0)); /*GET STATUS BYTE */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPN_OP + AMSG_IN + CC)); /*ERROR IF NOT MSG IN PHZ */ + map_addr += 2; + WRW_HARPOON(map_addr, (CRD_OP + SDATA + 0x00)); /*CHECK FOR CMD COMPLETE MSG. */ + map_addr += 2; + WRW_HARPOON(map_addr, (BRH_OP + NOT_EQ + CC)); /*ERROR IF NOT CMD COMPLETE MSG. */ + map_addr += 2; + WRW_HARPOON(map_addr, (MRR_OP + SDATA + D_BUCKET)); /*GET CMD COMPLETE MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_ICMD_COMP)); /*END OF COMMAND */ + map_addr += 2; + + WRW_HARPOON(map_addr, (SSI_OP + SSI_IUNKWN)); /*RECEIVED UNKNOWN MSG BYTE */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_INO_CC)); /*NO COMMAND COMPLETE AFTER STATUS */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_ITICKLE)); /*BIOS Tickled the Mgr */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_IRFAIL)); /*EXPECTED ID/TAG MESSAGES AND */ + map_addr += 2; /* DIDN'T GET ONE */ + WRW_HARPOON(map_addr, (CRR_OP + AR3 + S_IDREG)); /* comp SCSI SEL ID & AR3 */ + map_addr += 2; + WRW_HARPOON(map_addr, (BRH_OP + EQUAL + 0x00)); /*SEL ID OK then Conti. */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_INO_CC)); /*NO COMMAND COMPLETE AFTER STATUS */ - - - SGRAM_ACCESS(p_port); + SGRAM_ACCESS(p_port); } /*--------------------------------------------------------------------- @@ -5310,203 +4667,261 @@ static void FPT_autoLoadDefaultMap(ULONG * *---------------------------------------------------------------------*/ -static void FPT_autoCmdCmplt(ULONG p_port, UCHAR p_card) +static void FPT_autoCmdCmplt(unsigned long p_port, unsigned char p_card) { - PSCCB currSCCB; - UCHAR status_byte; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; + struct sccb *currSCCB; + unsigned char status_byte; - status_byte = RD_HARPOON(p_port+hp_gp_reg_0); + currSCCB = FPT_BL_Card[p_card].currentSCCB; - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUN_CA = 0; + status_byte = RD_HARPOON(p_port + hp_gp_reg_0); - if (status_byte != SSGOOD) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUN_CA = 0; - if (status_byte == SSQ_FULL) { + if (status_byte != SSGOOD) { + if (status_byte == SSQ_FULL) { - if(((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 1; - if(FPT_BL_Card[p_card].discQCount != 0) + if (((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = 1; + if (FPT_BL_Card[p_card].discQCount != 0) FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]] = NULL; - } - else - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 1; - if(currSCCB->Sccb_tag) - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL; - }else - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] = NULL; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[currSCCB->Lun]] = + NULL; + } else { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[0] = 1; + if (currSCCB->Sccb_tag) { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card].discQ_Tbl[currSCCB-> + Sccb_tag] + = NULL; + } else { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[0]] = NULL; } } - currSCCB->Sccb_MGRFlags |= F_STATUSLOADED; - - FPT_queueSelectFail(&FPT_BL_Card[p_card],p_card); + currSCCB->Sccb_MGRFlags |= F_STATUSLOADED; - return; - } + FPT_queueSelectFail(&FPT_BL_Card[p_card], p_card); - if(currSCCB->Sccb_scsistat == SELECT_SN_ST) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= - (UCHAR)SYNC_SUPPORTED; - - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_SYNC_MASK; - FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + return; + } - if(((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 1; - if(FPT_BL_Card[p_card].discQCount != 0) + if (currSCCB->Sccb_scsistat == SELECT_SN_ST) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= + (unsigned char)SYNC_SUPPORTED; + + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= + ~EE_SYNC_MASK; + FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + + if (((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = 1; + if (FPT_BL_Card[p_card].discQCount != 0) FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]] = NULL; - } - else - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 1; - if(currSCCB->Sccb_tag) - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL; - }else - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] = NULL; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[currSCCB->Lun]] = + NULL; + } else { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[0] = 1; + if (currSCCB->Sccb_tag) { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card].discQ_Tbl[currSCCB-> + Sccb_tag] + = NULL; + } else { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[0]] = NULL; } } - return; - - } - - if(currSCCB->Sccb_scsistat == SELECT_WN_ST) - { + return; - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus = - (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. - TarStatus & ~WIDE_ENABLED) | WIDE_NEGOCIATED; + } - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_WIDE_SCSI; - FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + if (currSCCB->Sccb_scsistat == SELECT_WN_ST) { - if(((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 1; - if(FPT_BL_Card[p_card].discQCount != 0) + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus = + (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & ~WIDE_ENABLED) | WIDE_NEGOCIATED; + + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= + ~EE_WIDE_SCSI; + FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + + if (((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = 1; + if (FPT_BL_Card[p_card].discQCount != 0) FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]] = NULL; - } - else - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 1; - if(currSCCB->Sccb_tag) - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL; - }else - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] = NULL; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[currSCCB->Lun]] = + NULL; + } else { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[0] = 1; + if (currSCCB->Sccb_tag) { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card].discQ_Tbl[currSCCB-> + Sccb_tag] + = NULL; + } else { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[0]] = NULL; } } - return; - - } - - if (status_byte == SSCHECK) - { - if(FPT_BL_Card[p_card].globalFlags & F_DO_RENEGO) - { - if (FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue & EE_SYNC_MASK) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus &= ~TAR_SYNC_MASK; + return; + + } + + if (status_byte == SSCHECK) { + if (FPT_BL_Card[p_card].globalFlags & F_DO_RENEGO) { + if (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarEEValue & EE_SYNC_MASK) { + FPT_sccbMgrTbl[p_card][currSCCB-> + TargID]. + TarStatus &= ~TAR_SYNC_MASK; } - if (FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue & EE_WIDE_SCSI) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus &= ~TAR_WIDE_MASK; + if (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarEEValue & EE_WIDE_SCSI) { + FPT_sccbMgrTbl[p_card][currSCCB-> + TargID]. + TarStatus &= ~TAR_WIDE_MASK; } } } - if (!(currSCCB->Sccb_XferState & F_AUTO_SENSE)) { - - currSCCB->SccbStatus = SCCB_ERROR; - currSCCB->TargetStatus = status_byte; - - if (status_byte == SSCHECK) { - - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUN_CA - = 1; - - - if (currSCCB->RequestSenseLength != NO_AUTO_REQUEST_SENSE) { + if (!(currSCCB->Sccb_XferState & F_AUTO_SENSE)) { - if (currSCCB->RequestSenseLength == 0) - currSCCB->RequestSenseLength = 14; + currSCCB->SccbStatus = SCCB_ERROR; + currSCCB->TargetStatus = status_byte; - FPT_ssenss(&FPT_BL_Card[p_card]); - FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + if (status_byte == SSCHECK) { - if(((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 1; - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]] = NULL; - } - else - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 1; - if(currSCCB->Sccb_tag) - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL; - }else - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] = NULL; + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUN_CA = 1; + + if (currSCCB->RequestSenseLength != + NO_AUTO_REQUEST_SENSE) { + + if (currSCCB->RequestSenseLength == 0) + currSCCB->RequestSenseLength = + 14; + + FPT_ssenss(&FPT_BL_Card[p_card]); + FPT_BL_Card[p_card].globalFlags |= + F_NEW_SCCB_CMD; + + if (((FPT_BL_Card[p_card]. + globalFlags & F_CONLUN_IO) + && + ((FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING))) { + FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = + 1; + if (FPT_BL_Card[p_card]. + discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl + [p_card] + [currSCCB-> + TargID]. + LunDiscQ_Idx + [currSCCB->Lun]] = + NULL; + } else { + FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + TarLUNBusy[0] = 1; + if (currSCCB->Sccb_tag) { + if (FPT_BL_Card[p_card]. + discQCount != 0) + FPT_BL_Card + [p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl[currSCCB-> + Sccb_tag] + = NULL; + } else { + if (FPT_BL_Card[p_card]. + discQCount != 0) + FPT_BL_Card + [p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl + [FPT_sccbMgrTbl + [p_card][currSCCB-> + TargID]. + LunDiscQ_Idx[0]] = + NULL; } } - return; - } - } - } - } - + return; + } + } + } + } - if((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 0; + if ((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB-> + Lun] = 0; else - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 0; + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 0; - - FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, p_card); + FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, p_card); } #define SHORT_WAIT 0x0000000F #define LONG_WAIT 0x0000FFFFL - /*--------------------------------------------------------------------- * * Function: Data Transfer Processor @@ -5525,37 +4940,33 @@ static void FPT_autoCmdCmplt(ULONG p_por * *---------------------------------------------------------------------*/ -static void FPT_dataXferProcessor(ULONG port, PSCCBcard pCurrCard) +static void FPT_dataXferProcessor(unsigned long port, + struct sccb_card *pCurrCard) { - PSCCB currSCCB; + struct sccb *currSCCB; - currSCCB = pCurrCard->currentSCCB; + currSCCB = pCurrCard->currentSCCB; - if (currSCCB->Sccb_XferState & F_SG_XFER) - { - if (pCurrCard->globalFlags & F_HOST_XFER_ACT) + if (currSCCB->Sccb_XferState & F_SG_XFER) { + if (pCurrCard->globalFlags & F_HOST_XFER_ACT) + { + currSCCB->Sccb_sgseg += (unsigned char)SG_BUF_CNT; + currSCCB->Sccb_SGoffset = 0x00; + } + pCurrCard->globalFlags |= F_HOST_XFER_ACT; - { - currSCCB->Sccb_sgseg += (UCHAR)SG_BUF_CNT; - currSCCB->Sccb_SGoffset = 0x00; - } + FPT_busMstrSGDataXferStart(port, currSCCB); + } + + else { + if (!(pCurrCard->globalFlags & F_HOST_XFER_ACT)) { pCurrCard->globalFlags |= F_HOST_XFER_ACT; - - FPT_busMstrSGDataXferStart(port, currSCCB); - } - else - { - if (!(pCurrCard->globalFlags & F_HOST_XFER_ACT)) - { - pCurrCard->globalFlags |= F_HOST_XFER_ACT; - - FPT_busMstrDataXferStart(port, currSCCB); - } - } + FPT_busMstrDataXferStart(port, currSCCB); + } + } } - /*--------------------------------------------------------------------- * * Function: BusMaster Scatter Gather Data Transfer Start @@ -5563,104 +4974,101 @@ static void FPT_dataXferProcessor(ULONG * Description: * *---------------------------------------------------------------------*/ -static void FPT_busMstrSGDataXferStart(ULONG p_port, PSCCB pcurrSCCB) +static void FPT_busMstrSGDataXferStart(unsigned long p_port, + struct sccb *pcurrSCCB) { - ULONG count,addr,tmpSGCnt; - UINT sg_index; - UCHAR sg_count, i; - ULONG reg_offset; - - - if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { - - count = ((ULONG) HOST_RD_CMD)<<24; - } - - else { - count = ((ULONG) HOST_WRT_CMD)<<24; - } - - sg_count = 0; - tmpSGCnt = 0; - sg_index = pcurrSCCB->Sccb_sgseg; - reg_offset = hp_aramBase; - + unsigned long count, addr, tmpSGCnt; + unsigned int sg_index; + unsigned char sg_count, i; + unsigned long reg_offset; - i = (UCHAR) (RD_HARPOON(p_port+hp_page_ctrl) & ~(SGRAM_ARAM|SCATTER_EN)); + if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { + count = ((unsigned long)HOST_RD_CMD) << 24; + } - WR_HARPOON(p_port+hp_page_ctrl, i); - - while ((sg_count < (UCHAR)SG_BUF_CNT) && - ((ULONG)(sg_index * (UINT)SG_ELEMENT_SIZE) < pcurrSCCB->DataLength) ) { - - tmpSGCnt += *(((ULONG *)pcurrSCCB->DataPointer)+ - (sg_index * 2)); + else { + count = ((unsigned long)HOST_WRT_CMD) << 24; + } - count |= *(((ULONG *)pcurrSCCB->DataPointer)+ - (sg_index * 2)); + sg_count = 0; + tmpSGCnt = 0; + sg_index = pcurrSCCB->Sccb_sgseg; + reg_offset = hp_aramBase; - addr = *(((ULONG *)pcurrSCCB->DataPointer)+ - ((sg_index * 2) + 1)); + i = (unsigned char)(RD_HARPOON(p_port + hp_page_ctrl) & + ~(SGRAM_ARAM | SCATTER_EN)); + WR_HARPOON(p_port + hp_page_ctrl, i); - if ((!sg_count) && (pcurrSCCB->Sccb_SGoffset)) { + while ((sg_count < (unsigned char)SG_BUF_CNT) && + ((unsigned long)(sg_index * (unsigned int)SG_ELEMENT_SIZE) < + pcurrSCCB->DataLength)) { - addr += ((count & 0x00FFFFFFL) - pcurrSCCB->Sccb_SGoffset); - count = (count & 0xFF000000L) | pcurrSCCB->Sccb_SGoffset; + tmpSGCnt += *(((unsigned long *)pcurrSCCB->DataPointer) + + (sg_index * 2)); - tmpSGCnt = count & 0x00FFFFFFL; - } + count |= *(((unsigned long *)pcurrSCCB->DataPointer) + + (sg_index * 2)); - WR_HARP32(p_port,reg_offset,addr); - reg_offset +=4; + addr = *(((unsigned long *)pcurrSCCB->DataPointer) + + ((sg_index * 2) + 1)); - WR_HARP32(p_port,reg_offset,count); - reg_offset +=4; + if ((!sg_count) && (pcurrSCCB->Sccb_SGoffset)) { - count &= 0xFF000000L; - sg_index++; - sg_count++; + addr += + ((count & 0x00FFFFFFL) - pcurrSCCB->Sccb_SGoffset); + count = + (count & 0xFF000000L) | pcurrSCCB->Sccb_SGoffset; - } /*End While */ + tmpSGCnt = count & 0x00FFFFFFL; + } - pcurrSCCB->Sccb_XferCnt = tmpSGCnt; + WR_HARP32(p_port, reg_offset, addr); + reg_offset += 4; - WR_HARPOON(p_port+hp_sg_addr,(sg_count<<4)); + WR_HARP32(p_port, reg_offset, count); + reg_offset += 4; - if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { + count &= 0xFF000000L; + sg_index++; + sg_count++; - WR_HARP32(p_port,hp_xfercnt_0,tmpSGCnt); + } /*End While */ + pcurrSCCB->Sccb_XferCnt = tmpSGCnt; - WR_HARPOON(p_port+hp_portctrl_0,(DMA_PORT | SCSI_PORT | SCSI_INBIT)); - WR_HARPOON(p_port+hp_scsisig, S_DATAI_PH); - } + WR_HARPOON(p_port + hp_sg_addr, (sg_count << 4)); - else { + if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { + WR_HARP32(p_port, hp_xfercnt_0, tmpSGCnt); - if ((!(RD_HARPOON(p_port+hp_synctarg_0) & NARROW_SCSI)) && - (tmpSGCnt & 0x000000001)) - { + WR_HARPOON(p_port + hp_portctrl_0, + (DMA_PORT | SCSI_PORT | SCSI_INBIT)); + WR_HARPOON(p_port + hp_scsisig, S_DATAI_PH); + } - pcurrSCCB->Sccb_XferState |= F_ODD_BALL_CNT; - tmpSGCnt--; - } + else { + if ((!(RD_HARPOON(p_port + hp_synctarg_0) & NARROW_SCSI)) && + (tmpSGCnt & 0x000000001)) { - WR_HARP32(p_port,hp_xfercnt_0,tmpSGCnt); + pcurrSCCB->Sccb_XferState |= F_ODD_BALL_CNT; + tmpSGCnt--; + } - WR_HARPOON(p_port+hp_portctrl_0,(SCSI_PORT | DMA_PORT | DMA_RD)); - WR_HARPOON(p_port+hp_scsisig, S_DATAO_PH); - } + WR_HARP32(p_port, hp_xfercnt_0, tmpSGCnt); + WR_HARPOON(p_port + hp_portctrl_0, + (SCSI_PORT | DMA_PORT | DMA_RD)); + WR_HARPOON(p_port + hp_scsisig, S_DATAO_PH); + } - WR_HARPOON(p_port+hp_page_ctrl, (UCHAR) (i | SCATTER_EN)); + WR_HARPOON(p_port + hp_page_ctrl, (unsigned char)(i | SCATTER_EN)); } - /*--------------------------------------------------------------------- * * Function: BusMaster Data Transfer Start @@ -5668,47 +5076,49 @@ static void FPT_busMstrSGDataXferStart(U * Description: * *---------------------------------------------------------------------*/ -static void FPT_busMstrDataXferStart(ULONG p_port, PSCCB pcurrSCCB) +static void FPT_busMstrDataXferStart(unsigned long p_port, + struct sccb *pcurrSCCB) { - ULONG addr,count; - - if (!(pcurrSCCB->Sccb_XferState & F_AUTO_SENSE)) { + unsigned long addr, count; - count = pcurrSCCB->Sccb_XferCnt; + if (!(pcurrSCCB->Sccb_XferState & F_AUTO_SENSE)) { - addr = (ULONG) pcurrSCCB->DataPointer + pcurrSCCB->Sccb_ATC; - } + count = pcurrSCCB->Sccb_XferCnt; - else { - addr = pcurrSCCB->SensePointer; - count = pcurrSCCB->RequestSenseLength; + addr = + (unsigned long)pcurrSCCB->DataPointer + pcurrSCCB->Sccb_ATC; + } - } + else { + addr = pcurrSCCB->SensePointer; + count = pcurrSCCB->RequestSenseLength; - HP_SETUP_ADDR_CNT(p_port,addr,count); + } + HP_SETUP_ADDR_CNT(p_port, addr, count); - if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { + if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { - WR_HARPOON(p_port+hp_portctrl_0,(DMA_PORT | SCSI_PORT | SCSI_INBIT)); - WR_HARPOON(p_port+hp_scsisig, S_DATAI_PH); + WR_HARPOON(p_port + hp_portctrl_0, + (DMA_PORT | SCSI_PORT | SCSI_INBIT)); + WR_HARPOON(p_port + hp_scsisig, S_DATAI_PH); - WR_HARPOON(p_port+hp_xfer_cmd, - (XFER_DMA_HOST | XFER_HOST_AUTO | XFER_DMA_8BIT)); - } + WR_HARPOON(p_port + hp_xfer_cmd, + (XFER_DMA_HOST | XFER_HOST_AUTO | XFER_DMA_8BIT)); + } - else { + else { - WR_HARPOON(p_port+hp_portctrl_0,(SCSI_PORT | DMA_PORT | DMA_RD)); - WR_HARPOON(p_port+hp_scsisig, S_DATAO_PH); + WR_HARPOON(p_port + hp_portctrl_0, + (SCSI_PORT | DMA_PORT | DMA_RD)); + WR_HARPOON(p_port + hp_scsisig, S_DATAO_PH); - WR_HARPOON(p_port+hp_xfer_cmd, - (XFER_HOST_DMA | XFER_HOST_AUTO | XFER_DMA_8BIT)); + WR_HARPOON(p_port + hp_xfer_cmd, + (XFER_HOST_DMA | XFER_HOST_AUTO | XFER_DMA_8BIT)); - } + } } - /*--------------------------------------------------------------------- * * Function: BusMaster Timeout Handler @@ -5721,37 +5131,38 @@ static void FPT_busMstrDataXferStart(ULO * command busy is also time out, it'll just give up. * *---------------------------------------------------------------------*/ -static UCHAR FPT_busMstrTimeOut(ULONG p_port) +static unsigned char FPT_busMstrTimeOut(unsigned long p_port) { - ULONG timeout; + unsigned long timeout; - timeout = LONG_WAIT; + timeout = LONG_WAIT; - WR_HARPOON(p_port+hp_sys_ctrl, HALT_MACH); + WR_HARPOON(p_port + hp_sys_ctrl, HALT_MACH); - while ((!(RD_HARPOON(p_port+hp_ext_status) & CMD_ABORTED)) && timeout--) {} + while ((!(RD_HARPOON(p_port + hp_ext_status) & CMD_ABORTED)) + && timeout--) { + } - - - if (RD_HARPOON(p_port+hp_ext_status) & BM_CMD_BUSY) { - WR_HARPOON(p_port+hp_sys_ctrl, HARD_ABORT); + if (RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) { + WR_HARPOON(p_port + hp_sys_ctrl, HARD_ABORT); - timeout = LONG_WAIT; - while ((RD_HARPOON(p_port+hp_ext_status) & BM_CMD_BUSY) && timeout--) {} - } + timeout = LONG_WAIT; + while ((RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) + && timeout--) { + } + } - RD_HARPOON(p_port+hp_int_status); /*Clear command complete */ + RD_HARPOON(p_port + hp_int_status); /*Clear command complete */ - if (RD_HARPOON(p_port+hp_ext_status) & BM_CMD_BUSY) { - return(1); - } + if (RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) { + return 1; + } - else { - return(0); - } + else { + return 0; + } } - /*--------------------------------------------------------------------- * * Function: Host Data Transfer Abort @@ -5759,256 +5170,282 @@ static UCHAR FPT_busMstrTimeOut(ULONG p_ * Description: Abort any in progress transfer. * *---------------------------------------------------------------------*/ -static void FPT_hostDataXferAbort(ULONG port, UCHAR p_card, PSCCB pCurrSCCB) +static void FPT_hostDataXferAbort(unsigned long port, unsigned char p_card, + struct sccb *pCurrSCCB) { - ULONG timeout; - ULONG remain_cnt; - UINT sg_ptr; - - FPT_BL_Card[p_card].globalFlags &= ~F_HOST_XFER_ACT; - - if (pCurrSCCB->Sccb_XferState & F_AUTO_SENSE) { - - - if (!(RD_HARPOON(port+hp_int_status) & INT_CMD_COMPL)) { - - WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) | FLUSH_XFER_CNTR)); - timeout = LONG_WAIT; - - while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) && timeout--) {} - - WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) & ~FLUSH_XFER_CNTR)); - - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { - - if (FPT_busMstrTimeOut(port)) { - - if (pCurrSCCB->HostStatus == 0x00) + unsigned long timeout; + unsigned long remain_cnt; + unsigned int sg_ptr; - pCurrSCCB->HostStatus = SCCB_BM_ERR; + FPT_BL_Card[p_card].globalFlags &= ~F_HOST_XFER_ACT; - } + if (pCurrSCCB->Sccb_XferState & F_AUTO_SENSE) { - if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) + if (!(RD_HARPOON(port + hp_int_status) & INT_CMD_COMPL)) { - if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) + WR_HARPOON(port + hp_bm_ctrl, + (RD_HARPOON(port + hp_bm_ctrl) | + FLUSH_XFER_CNTR)); + timeout = LONG_WAIT; - if (pCurrSCCB->HostStatus == 0x00) - - { - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } - } - } - } - - else if (pCurrSCCB->Sccb_XferCnt) { - - if (pCurrSCCB->Sccb_XferState & F_SG_XFER) { - - - WR_HARPOON(port+hp_page_ctrl, (RD_HARPOON(port+hp_page_ctrl) & - ~SCATTER_EN)); + while ((RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) + && timeout--) { + } - WR_HARPOON(port+hp_sg_addr,0x00); + WR_HARPOON(port + hp_bm_ctrl, + (RD_HARPOON(port + hp_bm_ctrl) & + ~FLUSH_XFER_CNTR)); - sg_ptr = pCurrSCCB->Sccb_sgseg + SG_BUF_CNT; + if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) { - if (sg_ptr > (UINT)(pCurrSCCB->DataLength / SG_ELEMENT_SIZE)) { + if (FPT_busMstrTimeOut(port)) { - sg_ptr = (UINT)(pCurrSCCB->DataLength / SG_ELEMENT_SIZE); - } + if (pCurrSCCB->HostStatus == 0x00) - remain_cnt = pCurrSCCB->Sccb_XferCnt; + pCurrSCCB->HostStatus = + SCCB_BM_ERR; - while (remain_cnt < 0x01000000L) { + } - sg_ptr--; + if (RD_HARPOON(port + hp_int_status) & + INT_EXT_STATUS) - if (remain_cnt > (ULONG)(*(((ULONG *)pCurrSCCB-> - DataPointer) + (sg_ptr * 2)))) { + if (RD_HARPOON(port + hp_ext_status) & + BAD_EXT_STATUS) - remain_cnt -= (ULONG)(*(((ULONG *)pCurrSCCB-> - DataPointer) + (sg_ptr * 2))); - } + if (pCurrSCCB->HostStatus == + 0x00) + { + pCurrSCCB->HostStatus = + SCCB_BM_ERR; + } + } + } + } - else { + else if (pCurrSCCB->Sccb_XferCnt) { - break; - } - } + if (pCurrSCCB->Sccb_XferState & F_SG_XFER) { + WR_HARPOON(port + hp_page_ctrl, + (RD_HARPOON(port + hp_page_ctrl) & + ~SCATTER_EN)); + WR_HARPOON(port + hp_sg_addr, 0x00); - if (remain_cnt < 0x01000000L) { + sg_ptr = pCurrSCCB->Sccb_sgseg + SG_BUF_CNT; + if (sg_ptr > + (unsigned int)(pCurrSCCB->DataLength / + SG_ELEMENT_SIZE)) { - pCurrSCCB->Sccb_SGoffset = remain_cnt; + sg_ptr = + (unsigned int)(pCurrSCCB->DataLength / + SG_ELEMENT_SIZE); + } - pCurrSCCB->Sccb_sgseg = (USHORT)sg_ptr; + remain_cnt = pCurrSCCB->Sccb_XferCnt; + while (remain_cnt < 0x01000000L) { - if ((ULONG)(sg_ptr * SG_ELEMENT_SIZE) == pCurrSCCB->DataLength - && (remain_cnt == 0)) + sg_ptr--; - pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED; - } + if (remain_cnt > + (unsigned + long)(*(((unsigned long *)pCurrSCCB-> + DataPointer) + (sg_ptr * 2)))) { - else { + remain_cnt -= + (unsigned + long)(*(((unsigned long *) + pCurrSCCB->DataPointer) + + (sg_ptr * 2))); + } + else { - if (pCurrSCCB->HostStatus == 0x00) { + break; + } + } - pCurrSCCB->HostStatus = SCCB_GROSS_FW_ERR; - } - } - } + if (remain_cnt < 0x01000000L) { + pCurrSCCB->Sccb_SGoffset = remain_cnt; - if (!(pCurrSCCB->Sccb_XferState & F_HOST_XFER_DIR)) { + pCurrSCCB->Sccb_sgseg = (unsigned short)sg_ptr; + if ((unsigned long)(sg_ptr * SG_ELEMENT_SIZE) == + pCurrSCCB->DataLength && (remain_cnt == 0)) - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { + pCurrSCCB->Sccb_XferState |= + F_ALL_XFERRED; + } - FPT_busMstrTimeOut(port); - } + else { - else { + if (pCurrSCCB->HostStatus == 0x00) { - if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) { + pCurrSCCB->HostStatus = + SCCB_GROSS_FW_ERR; + } + } + } - if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) { + if (!(pCurrSCCB->Sccb_XferState & F_HOST_XFER_DIR)) { - if (pCurrSCCB->HostStatus == 0x00) { + if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) { - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } - } - } + FPT_busMstrTimeOut(port); + } - } - } + else { - else { + if (RD_HARPOON(port + hp_int_status) & + INT_EXT_STATUS) { + if (RD_HARPOON(port + hp_ext_status) & + BAD_EXT_STATUS) { - if ((RD_HARPOON(port+hp_fifo_cnt)) >= BM_THRESHOLD) { + if (pCurrSCCB->HostStatus == + 0x00) { - timeout = SHORT_WAIT; + pCurrSCCB->HostStatus = + SCCB_BM_ERR; + } + } + } - while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) && - ((RD_HARPOON(port+hp_fifo_cnt)) >= BM_THRESHOLD) && - timeout--) {} - } + } + } - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { + else { - WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) | - FLUSH_XFER_CNTR)); + if ((RD_HARPOON(port + hp_fifo_cnt)) >= BM_THRESHOLD) { - timeout = LONG_WAIT; + timeout = SHORT_WAIT; - while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) && - timeout--) {} + while ((RD_HARPOON(port + hp_ext_status) & + BM_CMD_BUSY) + && ((RD_HARPOON(port + hp_fifo_cnt)) >= + BM_THRESHOLD) && timeout--) { + } + } - WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) & - ~FLUSH_XFER_CNTR)); + if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) { + WR_HARPOON(port + hp_bm_ctrl, + (RD_HARPOON(port + hp_bm_ctrl) | + FLUSH_XFER_CNTR)); - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { + timeout = LONG_WAIT; - if (pCurrSCCB->HostStatus == 0x00) { + while ((RD_HARPOON(port + hp_ext_status) & + BM_CMD_BUSY) && timeout--) { + } - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } + WR_HARPOON(port + hp_bm_ctrl, + (RD_HARPOON(port + hp_bm_ctrl) & + ~FLUSH_XFER_CNTR)); - FPT_busMstrTimeOut(port); - } - } + if (RD_HARPOON(port + hp_ext_status) & + BM_CMD_BUSY) { - if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) { + if (pCurrSCCB->HostStatus == 0x00) { - if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) { + pCurrSCCB->HostStatus = + SCCB_BM_ERR; + } - if (pCurrSCCB->HostStatus == 0x00) { + FPT_busMstrTimeOut(port); + } + } - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } - } - } - } + if (RD_HARPOON(port + hp_int_status) & INT_EXT_STATUS) { - } + if (RD_HARPOON(port + hp_ext_status) & + BAD_EXT_STATUS) { - else { + if (pCurrSCCB->HostStatus == 0x00) { + pCurrSCCB->HostStatus = + SCCB_BM_ERR; + } + } + } + } - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { + } - timeout = LONG_WAIT; + else { - while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) && timeout--) {} + if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) { - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { + timeout = LONG_WAIT; - if (pCurrSCCB->HostStatus == 0x00) { + while ((RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) + && timeout--) { + } - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } + if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) { - FPT_busMstrTimeOut(port); - } - } + if (pCurrSCCB->HostStatus == 0x00) { + pCurrSCCB->HostStatus = SCCB_BM_ERR; + } - if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) { + FPT_busMstrTimeOut(port); + } + } - if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) { + if (RD_HARPOON(port + hp_int_status) & INT_EXT_STATUS) { - if (pCurrSCCB->HostStatus == 0x00) { + if (RD_HARPOON(port + hp_ext_status) & BAD_EXT_STATUS) { - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } - } + if (pCurrSCCB->HostStatus == 0x00) { - } + pCurrSCCB->HostStatus = SCCB_BM_ERR; + } + } - if (pCurrSCCB->Sccb_XferState & F_SG_XFER) { + } - WR_HARPOON(port+hp_page_ctrl, (RD_HARPOON(port+hp_page_ctrl) & - ~SCATTER_EN)); + if (pCurrSCCB->Sccb_XferState & F_SG_XFER) { - WR_HARPOON(port+hp_sg_addr,0x00); + WR_HARPOON(port + hp_page_ctrl, + (RD_HARPOON(port + hp_page_ctrl) & + ~SCATTER_EN)); - pCurrSCCB->Sccb_sgseg += SG_BUF_CNT; + WR_HARPOON(port + hp_sg_addr, 0x00); - pCurrSCCB->Sccb_SGoffset = 0x00; + pCurrSCCB->Sccb_sgseg += SG_BUF_CNT; + pCurrSCCB->Sccb_SGoffset = 0x00; - if ((ULONG)(pCurrSCCB->Sccb_sgseg * SG_ELEMENT_SIZE) >= - pCurrSCCB->DataLength) { + if ((unsigned long)(pCurrSCCB->Sccb_sgseg * + SG_ELEMENT_SIZE) >= + pCurrSCCB->DataLength) { - pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED; + pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED; - pCurrSCCB->Sccb_sgseg = (USHORT)(pCurrSCCB->DataLength / SG_ELEMENT_SIZE); + pCurrSCCB->Sccb_sgseg = + (unsigned short)(pCurrSCCB->DataLength / + SG_ELEMENT_SIZE); - } - } + } + } - else { + else { - if (!(pCurrSCCB->Sccb_XferState & F_AUTO_SENSE)) + if (!(pCurrSCCB->Sccb_XferState & F_AUTO_SENSE)) - pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED; - } - } + pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED; + } + } - WR_HARPOON(port+hp_int_mask,(INT_CMD_COMPL | SCSI_INTERRUPT)); + WR_HARPOON(port + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); } - - /*--------------------------------------------------------------------- * * Function: Host Data Transfer Restart @@ -6017,47 +5454,47 @@ static void FPT_hostDataXferAbort(ULONG * pointers message. * *---------------------------------------------------------------------*/ -static void FPT_hostDataXferRestart(PSCCB currSCCB) +static void FPT_hostDataXferRestart(struct sccb *currSCCB) { - ULONG data_count; - UINT sg_index; - ULONG *sg_ptr; + unsigned long data_count; + unsigned int sg_index; + unsigned long *sg_ptr; - if (currSCCB->Sccb_XferState & F_SG_XFER) { + if (currSCCB->Sccb_XferState & F_SG_XFER) { - currSCCB->Sccb_XferCnt = 0; + currSCCB->Sccb_XferCnt = 0; - sg_index = 0xffff; /*Index by long words into sg list. */ - data_count = 0; /*Running count of SG xfer counts. */ + sg_index = 0xffff; /*Index by long words into sg list. */ + data_count = 0; /*Running count of SG xfer counts. */ - sg_ptr = (ULONG *)currSCCB->DataPointer; + sg_ptr = (unsigned long *)currSCCB->DataPointer; - while (data_count < currSCCB->Sccb_ATC) { + while (data_count < currSCCB->Sccb_ATC) { - sg_index++; - data_count += *(sg_ptr+(sg_index * 2)); - } + sg_index++; + data_count += *(sg_ptr + (sg_index * 2)); + } - if (data_count == currSCCB->Sccb_ATC) { + if (data_count == currSCCB->Sccb_ATC) { - currSCCB->Sccb_SGoffset = 0; - sg_index++; - } + currSCCB->Sccb_SGoffset = 0; + sg_index++; + } - else { - currSCCB->Sccb_SGoffset = data_count - currSCCB->Sccb_ATC; - } + else { + currSCCB->Sccb_SGoffset = + data_count - currSCCB->Sccb_ATC; + } - currSCCB->Sccb_sgseg = (USHORT)sg_index; - } + currSCCB->Sccb_sgseg = (unsigned short)sg_index; + } - else { - currSCCB->Sccb_XferCnt = currSCCB->DataLength - currSCCB->Sccb_ATC; - } + else { + currSCCB->Sccb_XferCnt = + currSCCB->DataLength - currSCCB->Sccb_ATC; + } } - - /*--------------------------------------------------------------------- * * Function: FPT_scini @@ -6066,177 +5503,192 @@ static void FPT_hostDataXferRestart(PSCC * *---------------------------------------------------------------------*/ -static void FPT_scini(UCHAR p_card, UCHAR p_our_id, UCHAR p_power_up) +static void FPT_scini(unsigned char p_card, unsigned char p_our_id, + unsigned char p_power_up) { - UCHAR loser,assigned_id; - ULONG p_port; + unsigned char loser, assigned_id; + unsigned long p_port; - UCHAR i,k,ScamFlg ; - PSCCBcard currCard; - PNVRamInfo pCurrNvRam; + unsigned char i, k, ScamFlg; + struct sccb_card *currCard; + struct nvram_info *pCurrNvRam; - currCard = &FPT_BL_Card[p_card]; - p_port = currCard->ioPort; + currCard = &FPT_BL_Card[p_card]; + p_port = currCard->ioPort; pCurrNvRam = currCard->pNvRamInfo; - - if(pCurrNvRam){ + if (pCurrNvRam) { ScamFlg = pCurrNvRam->niScamConf; i = pCurrNvRam->niSysConf; + } else { + ScamFlg = + (unsigned char)FPT_utilEERead(p_port, SCAM_CONFIG / 2); + i = (unsigned + char)(FPT_utilEERead(p_port, (SYSTEM_CONFIG / 2))); } - else{ - ScamFlg = (UCHAR) FPT_utilEERead(p_port, SCAM_CONFIG/2); - i = (UCHAR)(FPT_utilEERead(p_port, (SYSTEM_CONFIG/2))); - } - if(!(i & 0x02)) /* check if reset bus in AutoSCSI parameter set */ + if (!(i & 0x02)) /* check if reset bus in AutoSCSI parameter set */ return; - FPT_inisci(p_card,p_port, p_our_id); + FPT_inisci(p_card, p_port, p_our_id); - /* Force to wait 1 sec after SCSI bus reset. Some SCAM device FW - too slow to return to SCAM selection */ + /* Force to wait 1 sec after SCSI bus reset. Some SCAM device FW + too slow to return to SCAM selection */ - /* if (p_power_up) - FPT_Wait1Second(p_port); - else - FPT_Wait(p_port, TO_250ms); */ + /* if (p_power_up) + FPT_Wait1Second(p_port); + else + FPT_Wait(p_port, TO_250ms); */ - FPT_Wait1Second(p_port); + FPT_Wait1Second(p_port); - if ((ScamFlg & SCAM_ENABLED) && (ScamFlg & SCAM_LEVEL2)) - { - while (!(FPT_scarb(p_port,INIT_SELTD))) {} + if ((ScamFlg & SCAM_ENABLED) && (ScamFlg & SCAM_LEVEL2)) { + while (!(FPT_scarb(p_port, INIT_SELTD))) { + } - FPT_scsel(p_port); + FPT_scsel(p_port); - do { - FPT_scxferc(p_port,SYNC_PTRN); - FPT_scxferc(p_port,DOM_MSTR); - loser = FPT_scsendi(p_port,&FPT_scamInfo[p_our_id].id_string[0]); - } while ( loser == 0xFF ); + do { + FPT_scxferc(p_port, SYNC_PTRN); + FPT_scxferc(p_port, DOM_MSTR); + loser = + FPT_scsendi(p_port, + &FPT_scamInfo[p_our_id].id_string[0]); + } while (loser == 0xFF); - FPT_scbusf(p_port); + FPT_scbusf(p_port); - if ((p_power_up) && (!loser)) - { - FPT_sresb(p_port,p_card); - FPT_Wait(p_port, TO_250ms); + if ((p_power_up) && (!loser)) { + FPT_sresb(p_port, p_card); + FPT_Wait(p_port, TO_250ms); - while (!(FPT_scarb(p_port,INIT_SELTD))) {} + while (!(FPT_scarb(p_port, INIT_SELTD))) { + } - FPT_scsel(p_port); + FPT_scsel(p_port); - do { - FPT_scxferc(p_port, SYNC_PTRN); - FPT_scxferc(p_port, DOM_MSTR); - loser = FPT_scsendi(p_port,&FPT_scamInfo[p_our_id]. - id_string[0]); - } while ( loser == 0xFF ); + do { + FPT_scxferc(p_port, SYNC_PTRN); + FPT_scxferc(p_port, DOM_MSTR); + loser = + FPT_scsendi(p_port, + &FPT_scamInfo[p_our_id]. + id_string[0]); + } while (loser == 0xFF); - FPT_scbusf(p_port); - } - } + FPT_scbusf(p_port); + } + } - else - { - loser = 0; - } + else { + loser = 0; + } + if (!loser) { - if (!loser) - { + FPT_scamInfo[p_our_id].state = ID_ASSIGNED; - FPT_scamInfo[p_our_id].state = ID_ASSIGNED; + if (ScamFlg & SCAM_ENABLED) { + for (i = 0; i < MAX_SCSI_TAR; i++) { + if ((FPT_scamInfo[i].state == ID_UNASSIGNED) || + (FPT_scamInfo[i].state == ID_UNUSED)) { + if (FPT_scsell(p_port, i)) { + FPT_scamInfo[i].state = LEGACY; + if ((FPT_scamInfo[i]. + id_string[0] != 0xFF) + || (FPT_scamInfo[i]. + id_string[1] != 0xFA)) { - if (ScamFlg & SCAM_ENABLED) - { + FPT_scamInfo[i]. + id_string[0] = 0xFF; + FPT_scamInfo[i]. + id_string[1] = 0xFA; + if (pCurrNvRam == NULL) + currCard-> + globalFlags + |= + F_UPDATE_EEPROM; + } + } + } + } - for (i=0; i < MAX_SCSI_TAR; i++) - { - if ((FPT_scamInfo[i].state == ID_UNASSIGNED) || - (FPT_scamInfo[i].state == ID_UNUSED)) - { - if (FPT_scsell(p_port,i)) - { - FPT_scamInfo[i].state = LEGACY; - if ((FPT_scamInfo[i].id_string[0] != 0xFF) || - (FPT_scamInfo[i].id_string[1] != 0xFA)) - { - - FPT_scamInfo[i].id_string[0] = 0xFF; - FPT_scamInfo[i].id_string[1] = 0xFA; - if(pCurrNvRam == NULL) - currCard->globalFlags |= F_UPDATE_EEPROM; - } - } - } - } - - FPT_sresb(p_port,p_card); - FPT_Wait1Second(p_port); - while (!(FPT_scarb(p_port,INIT_SELTD))) {} - FPT_scsel(p_port); - FPT_scasid(p_card, p_port); - } + FPT_sresb(p_port, p_card); + FPT_Wait1Second(p_port); + while (!(FPT_scarb(p_port, INIT_SELTD))) { + } + FPT_scsel(p_port); + FPT_scasid(p_card, p_port); + } - } + } - else if ((loser) && (ScamFlg & SCAM_ENABLED)) - { - FPT_scamInfo[p_our_id].id_string[0] = SLV_TYPE_CODE0; - assigned_id = 0; - FPT_scwtsel(p_port); - - do { - while (FPT_scxferc(p_port,0x00) != SYNC_PTRN) {} - - i = FPT_scxferc(p_port,0x00); - if (i == ASSIGN_ID) - { - if (!(FPT_scsendi(p_port,&FPT_scamInfo[p_our_id].id_string[0]))) - { - i = FPT_scxferc(p_port,0x00); - if (FPT_scvalq(i)) - { - k = FPT_scxferc(p_port,0x00); - - if (FPT_scvalq(k)) - { - currCard->ourId = - ((UCHAR)(i<<3)+(k & (UCHAR)7)) & (UCHAR) 0x3F; - FPT_inisci(p_card, p_port, p_our_id); - FPT_scamInfo[currCard->ourId].state = ID_ASSIGNED; - FPT_scamInfo[currCard->ourId].id_string[0] - = SLV_TYPE_CODE0; - assigned_id = 1; - } - } - } - } - - else if (i == SET_P_FLAG) - { - if (!(FPT_scsendi(p_port, - &FPT_scamInfo[p_our_id].id_string[0]))) - FPT_scamInfo[p_our_id].id_string[0] |= 0x80; - } - }while (!assigned_id); + else if ((loser) && (ScamFlg & SCAM_ENABLED)) { + FPT_scamInfo[p_our_id].id_string[0] = SLV_TYPE_CODE0; + assigned_id = 0; + FPT_scwtsel(p_port); + + do { + while (FPT_scxferc(p_port, 0x00) != SYNC_PTRN) { + } + + i = FPT_scxferc(p_port, 0x00); + if (i == ASSIGN_ID) { + if (! + (FPT_scsendi + (p_port, + &FPT_scamInfo[p_our_id].id_string[0]))) { + i = FPT_scxferc(p_port, 0x00); + if (FPT_scvalq(i)) { + k = FPT_scxferc(p_port, 0x00); + + if (FPT_scvalq(k)) { + currCard->ourId = + ((unsigned char)(i + << + 3) + + + (k & + (unsigned char)7)) + & (unsigned char) + 0x3F; + FPT_inisci(p_card, + p_port, + p_our_id); + FPT_scamInfo[currCard-> + ourId]. + state = ID_ASSIGNED; + FPT_scamInfo[currCard-> + ourId]. + id_string[0] + = SLV_TYPE_CODE0; + assigned_id = 1; + } + } + } + } - while (FPT_scxferc(p_port,0x00) != CFG_CMPLT) {} - } + else if (i == SET_P_FLAG) { + if (!(FPT_scsendi(p_port, + &FPT_scamInfo[p_our_id]. + id_string[0]))) + FPT_scamInfo[p_our_id].id_string[0] |= + 0x80; + } + } while (!assigned_id); - if (ScamFlg & SCAM_ENABLED) - { - FPT_scbusf(p_port); - if (currCard->globalFlags & F_UPDATE_EEPROM) - { - FPT_scsavdi(p_card, p_port); - currCard->globalFlags &= ~F_UPDATE_EEPROM; - } - } + while (FPT_scxferc(p_port, 0x00) != CFG_CMPLT) { + } + } + if (ScamFlg & SCAM_ENABLED) { + FPT_scbusf(p_port); + if (currCard->globalFlags & F_UPDATE_EEPROM) { + FPT_scsavdi(p_card, p_port); + currCard->globalFlags &= ~F_UPDATE_EEPROM; + } + } /* for (i=0,k=0; i < MAX_SCSI_TAR; i++) @@ -6253,7 +5705,6 @@ static void FPT_scini(UCHAR p_card, UCHA */ } - /*--------------------------------------------------------------------- * * Function: FPT_scarb @@ -6262,59 +5713,60 @@ static void FPT_scini(UCHAR p_card, UCHA * *---------------------------------------------------------------------*/ -static int FPT_scarb(ULONG p_port, UCHAR p_sel_type) +static int FPT_scarb(unsigned long p_port, unsigned char p_sel_type) { - if (p_sel_type == INIT_SELTD) - { - - while (RD_HARPOON(p_port+hp_scsisig) & (SCSI_SEL | SCSI_BSY)) {} - - - if (RD_HARPOON(p_port+hp_scsisig) & SCSI_SEL) - return(0); + if (p_sel_type == INIT_SELTD) { - if (RD_HARPOON(p_port+hp_scsidata_0) != 00) - return(0); + while (RD_HARPOON(p_port + hp_scsisig) & (SCSI_SEL | SCSI_BSY)) { + } - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) | SCSI_BSY)); + if (RD_HARPOON(p_port + hp_scsisig) & SCSI_SEL) + return 0; - if (RD_HARPOON(p_port+hp_scsisig) & SCSI_SEL) { + if (RD_HARPOON(p_port + hp_scsidata_0) != 00) + return 0; - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) & - ~SCSI_BSY)); - return(0); - } + WR_HARPOON(p_port + hp_scsisig, + (RD_HARPOON(p_port + hp_scsisig) | SCSI_BSY)); + if (RD_HARPOON(p_port + hp_scsisig) & SCSI_SEL) { - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) | SCSI_SEL)); + WR_HARPOON(p_port + hp_scsisig, + (RD_HARPOON(p_port + hp_scsisig) & + ~SCSI_BSY)); + return 0; + } - if (RD_HARPOON(p_port+hp_scsidata_0) != 00) { + WR_HARPOON(p_port + hp_scsisig, + (RD_HARPOON(p_port + hp_scsisig) | SCSI_SEL)); - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) & - ~(SCSI_BSY | SCSI_SEL))); - return(0); - } - } + if (RD_HARPOON(p_port + hp_scsidata_0) != 00) { + WR_HARPOON(p_port + hp_scsisig, + (RD_HARPOON(p_port + hp_scsisig) & + ~(SCSI_BSY | SCSI_SEL))); + return 0; + } + } - WR_HARPOON(p_port+hp_clkctrl_0, (RD_HARPOON(p_port+hp_clkctrl_0) - & ~ACTdeassert)); - WR_HARPOON(p_port+hp_scsireset, SCAM_EN); - WR_HARPOON(p_port+hp_scsidata_0, 0x00); - WR_HARPOON(p_port+hp_scsidata_1, 0x00); - WR_HARPOON(p_port+hp_portctrl_0, SCSI_BUS_EN); + WR_HARPOON(p_port + hp_clkctrl_0, (RD_HARPOON(p_port + hp_clkctrl_0) + & ~ACTdeassert)); + WR_HARPOON(p_port + hp_scsireset, SCAM_EN); + WR_HARPOON(p_port + hp_scsidata_0, 0x00); + WR_HARPOON(p_port + hp_scsidata_1, 0x00); + WR_HARPOON(p_port + hp_portctrl_0, SCSI_BUS_EN); - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) | SCSI_MSG)); + WR_HARPOON(p_port + hp_scsisig, + (RD_HARPOON(p_port + hp_scsisig) | SCSI_MSG)); - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) - & ~SCSI_BSY)); + WR_HARPOON(p_port + hp_scsisig, (RD_HARPOON(p_port + hp_scsisig) + & ~SCSI_BSY)); - FPT_Wait(p_port,TO_250ms); + FPT_Wait(p_port, TO_250ms); - return(1); + return 1; } - /*--------------------------------------------------------------------- * * Function: FPT_scbusf @@ -6323,34 +5775,30 @@ static int FPT_scarb(ULONG p_port, UCHAR * *---------------------------------------------------------------------*/ -static void FPT_scbusf(ULONG p_port) +static void FPT_scbusf(unsigned long p_port) { - WR_HARPOON(p_port+hp_page_ctrl, - (RD_HARPOON(p_port+hp_page_ctrl) | G_INT_DISABLE)); - + WR_HARPOON(p_port + hp_page_ctrl, + (RD_HARPOON(p_port + hp_page_ctrl) | G_INT_DISABLE)); - WR_HARPOON(p_port+hp_scsidata_0, 0x00); + WR_HARPOON(p_port + hp_scsidata_0, 0x00); - WR_HARPOON(p_port+hp_portctrl_0, (RD_HARPOON(p_port+hp_portctrl_0) - & ~SCSI_BUS_EN)); + WR_HARPOON(p_port + hp_portctrl_0, (RD_HARPOON(p_port + hp_portctrl_0) + & ~SCSI_BUS_EN)); - WR_HARPOON(p_port+hp_scsisig, 0x00); + WR_HARPOON(p_port + hp_scsisig, 0x00); + WR_HARPOON(p_port + hp_scsireset, (RD_HARPOON(p_port + hp_scsireset) + & ~SCAM_EN)); - WR_HARPOON(p_port+hp_scsireset, (RD_HARPOON(p_port+hp_scsireset) - & ~SCAM_EN)); + WR_HARPOON(p_port + hp_clkctrl_0, (RD_HARPOON(p_port + hp_clkctrl_0) + | ACTdeassert)); - WR_HARPOON(p_port+hp_clkctrl_0, (RD_HARPOON(p_port+hp_clkctrl_0) - | ACTdeassert)); + WRW_HARPOON((p_port + hp_intstat), (BUS_FREE | AUTO_INT | SCAM_SEL)); - WRW_HARPOON((p_port+hp_intstat), (BUS_FREE | AUTO_INT | SCAM_SEL)); - - WR_HARPOON(p_port+hp_page_ctrl, - (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE)); + WR_HARPOON(p_port + hp_page_ctrl, + (RD_HARPOON(p_port + hp_page_ctrl) & ~G_INT_DISABLE)); } - - /*--------------------------------------------------------------------- * * Function: FPT_scasid @@ -6359,85 +5807,74 @@ static void FPT_scbusf(ULONG p_port) * *---------------------------------------------------------------------*/ -static void FPT_scasid(UCHAR p_card, ULONG p_port) +static void FPT_scasid(unsigned char p_card, unsigned long p_port) { - UCHAR temp_id_string[ID_STRING_LENGTH]; + unsigned char temp_id_string[ID_STRING_LENGTH]; - UCHAR i,k,scam_id; - UCHAR crcBytes[3]; - PNVRamInfo pCurrNvRam; - ushort_ptr pCrcBytes; + unsigned char i, k, scam_id; + unsigned char crcBytes[3]; + struct nvram_info *pCurrNvRam; + unsigned short *pCrcBytes; pCurrNvRam = FPT_BL_Card[p_card].pNvRamInfo; - i=0; + i = 0; - while (!i) - { + while (!i) { + + for (k = 0; k < ID_STRING_LENGTH; k++) { + temp_id_string[k] = (unsigned char)0x00; + } + + FPT_scxferc(p_port, SYNC_PTRN); + FPT_scxferc(p_port, ASSIGN_ID); - for (k=0; k < ID_STRING_LENGTH; k++) - { - temp_id_string[k] = (UCHAR) 0x00; - } - - FPT_scxferc(p_port,SYNC_PTRN); - FPT_scxferc(p_port,ASSIGN_ID); - - if (!(FPT_sciso(p_port,&temp_id_string[0]))) - { - if(pCurrNvRam){ - pCrcBytes = (ushort_ptr)&crcBytes[0]; + if (!(FPT_sciso(p_port, &temp_id_string[0]))) { + if (pCurrNvRam) { + pCrcBytes = (unsigned short *)&crcBytes[0]; *pCrcBytes = FPT_CalcCrc16(&temp_id_string[0]); crcBytes[2] = FPT_CalcLrc(&temp_id_string[0]); temp_id_string[1] = crcBytes[2]; temp_id_string[2] = crcBytes[0]; temp_id_string[3] = crcBytes[1]; - for(k = 4; k < ID_STRING_LENGTH; k++) - temp_id_string[k] = (UCHAR) 0x00; + for (k = 4; k < ID_STRING_LENGTH; k++) + temp_id_string[k] = (unsigned char)0x00; } - i = FPT_scmachid(p_card,temp_id_string); - - if (i == CLR_PRIORITY) - { - FPT_scxferc(p_port,MISC_CODE); - FPT_scxferc(p_port,CLR_P_FLAG); - i = 0; /*Not the last ID yet. */ - } - - else if (i != NO_ID_AVAIL) - { - if (i < 8 ) - FPT_scxferc(p_port,ID_0_7); - else - FPT_scxferc(p_port,ID_8_F); - - scam_id = (i & (UCHAR) 0x07); - - - for (k=1; k < 0x08; k <<= 1) - if (!( k & i )) - scam_id += 0x08; /*Count number of zeros in DB0-3. */ + i = FPT_scmachid(p_card, temp_id_string); - FPT_scxferc(p_port,scam_id); + if (i == CLR_PRIORITY) { + FPT_scxferc(p_port, MISC_CODE); + FPT_scxferc(p_port, CLR_P_FLAG); + i = 0; /*Not the last ID yet. */ + } - i = 0; /*Not the last ID yet. */ - } - } + else if (i != NO_ID_AVAIL) { + if (i < 8) + FPT_scxferc(p_port, ID_0_7); + else + FPT_scxferc(p_port, ID_8_F); - else - { - i = 1; - } + scam_id = (i & (unsigned char)0x07); - } /*End while */ + for (k = 1; k < 0x08; k <<= 1) + if (!(k & i)) + scam_id += 0x08; /*Count number of zeros in DB0-3. */ - FPT_scxferc(p_port,SYNC_PTRN); - FPT_scxferc(p_port,CFG_CMPLT); -} + FPT_scxferc(p_port, scam_id); + i = 0; /*Not the last ID yet. */ + } + } + else { + i = 1; + } + } /*End while */ + FPT_scxferc(p_port, SYNC_PTRN); + FPT_scxferc(p_port, CFG_CMPLT); +} /*--------------------------------------------------------------------- * @@ -6447,32 +5884,32 @@ static void FPT_scasid(UCHAR p_card, ULO * *---------------------------------------------------------------------*/ -static void FPT_scsel(ULONG p_port) +static void FPT_scsel(unsigned long p_port) { - WR_HARPOON(p_port+hp_scsisig, SCSI_SEL); - FPT_scwiros(p_port, SCSI_MSG); - - WR_HARPOON(p_port+hp_scsisig, (SCSI_SEL | SCSI_BSY)); + WR_HARPOON(p_port + hp_scsisig, SCSI_SEL); + FPT_scwiros(p_port, SCSI_MSG); + WR_HARPOON(p_port + hp_scsisig, (SCSI_SEL | SCSI_BSY)); - WR_HARPOON(p_port+hp_scsisig, (SCSI_SEL | SCSI_BSY | SCSI_IOBIT | SCSI_CD)); - WR_HARPOON(p_port+hp_scsidata_0, (UCHAR)(RD_HARPOON(p_port+hp_scsidata_0) | - (UCHAR)(BIT(7)+BIT(6)))); + WR_HARPOON(p_port + hp_scsisig, + (SCSI_SEL | SCSI_BSY | SCSI_IOBIT | SCSI_CD)); + WR_HARPOON(p_port + hp_scsidata_0, + (unsigned char)(RD_HARPOON(p_port + hp_scsidata_0) | + (unsigned char)(BIT(7) + BIT(6)))); + WR_HARPOON(p_port + hp_scsisig, (SCSI_BSY | SCSI_IOBIT | SCSI_CD)); + FPT_scwiros(p_port, SCSI_SEL); - WR_HARPOON(p_port+hp_scsisig, (SCSI_BSY | SCSI_IOBIT | SCSI_CD)); - FPT_scwiros(p_port, SCSI_SEL); + WR_HARPOON(p_port + hp_scsidata_0, + (unsigned char)(RD_HARPOON(p_port + hp_scsidata_0) & + ~(unsigned char)BIT(6))); + FPT_scwirod(p_port, BIT(6)); - WR_HARPOON(p_port+hp_scsidata_0, (UCHAR)(RD_HARPOON(p_port+hp_scsidata_0) & - ~(UCHAR)BIT(6))); - FPT_scwirod(p_port, BIT(6)); - - WR_HARPOON(p_port+hp_scsisig, (SCSI_SEL | SCSI_BSY | SCSI_IOBIT | SCSI_CD)); + WR_HARPOON(p_port + hp_scsisig, + (SCSI_SEL | SCSI_BSY | SCSI_IOBIT | SCSI_CD)); } - - /*--------------------------------------------------------------------- * * Function: FPT_scxferc @@ -6481,48 +5918,47 @@ static void FPT_scsel(ULONG p_port) * *---------------------------------------------------------------------*/ -static UCHAR FPT_scxferc(ULONG p_port, UCHAR p_data) +static unsigned char FPT_scxferc(unsigned long p_port, unsigned char p_data) { - UCHAR curr_data, ret_data; + unsigned char curr_data, ret_data; - curr_data = p_data | BIT(7) | BIT(5); /*Start with DB7 & DB5 asserted. */ + curr_data = p_data | BIT(7) | BIT(5); /*Start with DB7 & DB5 asserted. */ - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - curr_data &= ~BIT(7); + curr_data &= ~BIT(7); - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - FPT_scwirod(p_port,BIT(7)); /*Wait for DB7 to be released. */ - while (!(RD_HARPOON(p_port+hp_scsidata_0) & BIT(5))); + FPT_scwirod(p_port, BIT(7)); /*Wait for DB7 to be released. */ + while (!(RD_HARPOON(p_port + hp_scsidata_0) & BIT(5))) ; - ret_data = (RD_HARPOON(p_port+hp_scsidata_0) & (UCHAR) 0x1F); + ret_data = (RD_HARPOON(p_port + hp_scsidata_0) & (unsigned char)0x1F); - curr_data |= BIT(6); + curr_data |= BIT(6); - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - curr_data &= ~BIT(5); + curr_data &= ~BIT(5); - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - FPT_scwirod(p_port,BIT(5)); /*Wait for DB5 to be released. */ + FPT_scwirod(p_port, BIT(5)); /*Wait for DB5 to be released. */ - curr_data &= ~(BIT(4)|BIT(3)|BIT(2)|BIT(1)|BIT(0)); /*Release data bits */ - curr_data |= BIT(7); + curr_data &= ~(BIT(4) | BIT(3) | BIT(2) | BIT(1) | BIT(0)); /*Release data bits */ + curr_data |= BIT(7); - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - curr_data &= ~BIT(6); + curr_data &= ~BIT(6); - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - FPT_scwirod(p_port,BIT(6)); /*Wait for DB6 to be released. */ + FPT_scwirod(p_port, BIT(6)); /*Wait for DB6 to be released. */ - return(ret_data); + return ret_data; } - /*--------------------------------------------------------------------- * * Function: FPT_scsendi @@ -6532,51 +5968,50 @@ static UCHAR FPT_scxferc(ULONG p_port, U * *---------------------------------------------------------------------*/ -static UCHAR FPT_scsendi(ULONG p_port, UCHAR p_id_string[]) +static unsigned char FPT_scsendi(unsigned long p_port, + unsigned char p_id_string[]) { - UCHAR ret_data,byte_cnt,bit_cnt,defer; + unsigned char ret_data, byte_cnt, bit_cnt, defer; - defer = 0; + defer = 0; - for (byte_cnt = 0; byte_cnt < ID_STRING_LENGTH; byte_cnt++) { + for (byte_cnt = 0; byte_cnt < ID_STRING_LENGTH; byte_cnt++) { - for (bit_cnt = 0x80; bit_cnt != 0 ; bit_cnt >>= 1) { + for (bit_cnt = 0x80; bit_cnt != 0; bit_cnt >>= 1) { - if (defer) - ret_data = FPT_scxferc(p_port,00); + if (defer) + ret_data = FPT_scxferc(p_port, 00); - else if (p_id_string[byte_cnt] & bit_cnt) + else if (p_id_string[byte_cnt] & bit_cnt) - ret_data = FPT_scxferc(p_port,02); + ret_data = FPT_scxferc(p_port, 02); - else { + else { - ret_data = FPT_scxferc(p_port,01); - if (ret_data & 02) - defer = 1; - } + ret_data = FPT_scxferc(p_port, 01); + if (ret_data & 02) + defer = 1; + } - if ((ret_data & 0x1C) == 0x10) - return(0x00); /*End of isolation stage, we won! */ + if ((ret_data & 0x1C) == 0x10) + return 0x00; /*End of isolation stage, we won! */ - if (ret_data & 0x1C) - return(0xFF); + if (ret_data & 0x1C) + return 0xFF; - if ((defer) && (!(ret_data & 0x1F))) - return(0x01); /*End of isolation stage, we lost. */ + if ((defer) && (!(ret_data & 0x1F))) + return 0x01; /*End of isolation stage, we lost. */ - } /*bit loop */ + } /*bit loop */ - } /*byte loop */ + } /*byte loop */ - if (defer) - return(0x01); /*We lost */ - else - return(0); /*We WON! Yeeessss! */ + if (defer) + return 0x01; /*We lost */ + else + return 0; /*We WON! Yeeessss! */ } - - /*--------------------------------------------------------------------- * * Function: FPT_sciso @@ -6585,31 +6020,31 @@ static UCHAR FPT_scsendi(ULONG p_port, U * *---------------------------------------------------------------------*/ -static UCHAR FPT_sciso(ULONG p_port, UCHAR p_id_string[]) +static unsigned char FPT_sciso(unsigned long p_port, + unsigned char p_id_string[]) { - UCHAR ret_data,the_data,byte_cnt,bit_cnt; + unsigned char ret_data, the_data, byte_cnt, bit_cnt; - the_data = 0; + the_data = 0; - for (byte_cnt = 0; byte_cnt < ID_STRING_LENGTH; byte_cnt++) { + for (byte_cnt = 0; byte_cnt < ID_STRING_LENGTH; byte_cnt++) { - for (bit_cnt = 0; bit_cnt < 8; bit_cnt++) { + for (bit_cnt = 0; bit_cnt < 8; bit_cnt++) { - ret_data = FPT_scxferc(p_port,0); + ret_data = FPT_scxferc(p_port, 0); - if (ret_data & 0xFC) - return(0xFF); + if (ret_data & 0xFC) + return 0xFF; - else { + else { - the_data <<= 1; - if (ret_data & BIT(1)) { - the_data |= 1; - } - } + the_data <<= 1; + if (ret_data & BIT(1)) { + the_data |= 1; + } + } - if ((ret_data & 0x1F) == 0) - { + if ((ret_data & 0x1F) == 0) { /* if(bit_cnt != 0 || bit_cnt != 8) { @@ -6620,23 +6055,21 @@ static UCHAR FPT_sciso(ULONG p_port, UCH continue; } */ - if (byte_cnt) - return(0x00); - else - return(0xFF); - } + if (byte_cnt) + return 0x00; + else + return 0xFF; + } - } /*bit loop */ + } /*bit loop */ - p_id_string[byte_cnt] = the_data; + p_id_string[byte_cnt] = the_data; - } /*byte loop */ + } /*byte loop */ - return(0); + return 0; } - - /*--------------------------------------------------------------------- * * Function: FPT_scwirod @@ -6646,26 +6079,24 @@ static UCHAR FPT_sciso(ULONG p_port, UCH * *---------------------------------------------------------------------*/ -static void FPT_scwirod(ULONG p_port, UCHAR p_data_bit) +static void FPT_scwirod(unsigned long p_port, unsigned char p_data_bit) { - UCHAR i; + unsigned char i; - i = 0; - while ( i < MAX_SCSI_TAR ) { + i = 0; + while (i < MAX_SCSI_TAR) { - if (RD_HARPOON(p_port+hp_scsidata_0) & p_data_bit) + if (RD_HARPOON(p_port + hp_scsidata_0) & p_data_bit) - i = 0; + i = 0; - else + else - i++; + i++; - } + } } - - /*--------------------------------------------------------------------- * * Function: FPT_scwiros @@ -6675,25 +6106,24 @@ static void FPT_scwirod(ULONG p_port, UC * *---------------------------------------------------------------------*/ -static void FPT_scwiros(ULONG p_port, UCHAR p_data_bit) +static void FPT_scwiros(unsigned long p_port, unsigned char p_data_bit) { - UCHAR i; + unsigned char i; - i = 0; - while ( i < MAX_SCSI_TAR ) { + i = 0; + while (i < MAX_SCSI_TAR) { - if (RD_HARPOON(p_port+hp_scsisig) & p_data_bit) + if (RD_HARPOON(p_port + hp_scsisig) & p_data_bit) - i = 0; + i = 0; - else + else - i++; + i++; - } + } } - /*--------------------------------------------------------------------- * * Function: FPT_scvalq @@ -6702,23 +6132,22 @@ static void FPT_scwiros(ULONG p_port, UC * *---------------------------------------------------------------------*/ -static UCHAR FPT_scvalq(UCHAR p_quintet) +static unsigned char FPT_scvalq(unsigned char p_quintet) { - UCHAR count; + unsigned char count; - for (count=1; count < 0x08; count<<=1) { - if (!(p_quintet & count)) - p_quintet -= 0x80; - } + for (count = 1; count < 0x08; count <<= 1) { + if (!(p_quintet & count)) + p_quintet -= 0x80; + } - if (p_quintet & 0x18) - return(0); + if (p_quintet & 0x18) + return 0; - else - return(1); + else + return 1; } - /*--------------------------------------------------------------------- * * Function: FPT_scsell @@ -6729,75 +6158,78 @@ static UCHAR FPT_scvalq(UCHAR p_quintet) * *---------------------------------------------------------------------*/ -static UCHAR FPT_scsell(ULONG p_port, UCHAR targ_id) +static unsigned char FPT_scsell(unsigned long p_port, unsigned char targ_id) { - ULONG i; - - WR_HARPOON(p_port+hp_page_ctrl, - (RD_HARPOON(p_port+hp_page_ctrl) | G_INT_DISABLE)); + unsigned long i; - ARAM_ACCESS(p_port); + WR_HARPOON(p_port + hp_page_ctrl, + (RD_HARPOON(p_port + hp_page_ctrl) | G_INT_DISABLE)); - WR_HARPOON(p_port+hp_addstat,(RD_HARPOON(p_port+hp_addstat) | SCAM_TIMER)); - WR_HARPOON(p_port+hp_seltimeout,TO_4ms); + ARAM_ACCESS(p_port); + WR_HARPOON(p_port + hp_addstat, + (RD_HARPOON(p_port + hp_addstat) | SCAM_TIMER)); + WR_HARPOON(p_port + hp_seltimeout, TO_4ms); - for (i = p_port+CMD_STRT; i < p_port+CMD_STRT+12; i+=2) { - WRW_HARPOON(i, (MPM_OP+ACOMMAND)); - } - WRW_HARPOON(i, (BRH_OP+ALWAYS+ NP)); - - WRW_HARPOON((p_port+hp_intstat), - (RESET | TIMEOUT | SEL | BUS_FREE | AUTO_INT)); + for (i = p_port + CMD_STRT; i < p_port + CMD_STRT + 12; i += 2) { + WRW_HARPOON(i, (MPM_OP + ACOMMAND)); + } + WRW_HARPOON(i, (BRH_OP + ALWAYS + NP)); - WR_HARPOON(p_port+hp_select_id, targ_id); + WRW_HARPOON((p_port + hp_intstat), + (RESET | TIMEOUT | SEL | BUS_FREE | AUTO_INT)); - WR_HARPOON(p_port+hp_portctrl_0, SCSI_PORT); - WR_HARPOON(p_port+hp_autostart_3, (SELECT | CMD_ONLY_STRT)); - WR_HARPOON(p_port+hp_scsictrl_0, (SEL_TAR | ENA_RESEL)); + WR_HARPOON(p_port + hp_select_id, targ_id); + WR_HARPOON(p_port + hp_portctrl_0, SCSI_PORT); + WR_HARPOON(p_port + hp_autostart_3, (SELECT | CMD_ONLY_STRT)); + WR_HARPOON(p_port + hp_scsictrl_0, (SEL_TAR | ENA_RESEL)); - while (!(RDW_HARPOON((p_port+hp_intstat)) & - (RESET | PROG_HLT | TIMEOUT | AUTO_INT))) {} + while (!(RDW_HARPOON((p_port + hp_intstat)) & + (RESET | PROG_HLT | TIMEOUT | AUTO_INT))) { + } - if (RDW_HARPOON((p_port+hp_intstat)) & RESET) - FPT_Wait(p_port, TO_250ms); + if (RDW_HARPOON((p_port + hp_intstat)) & RESET) + FPT_Wait(p_port, TO_250ms); - DISABLE_AUTO(p_port); + DISABLE_AUTO(p_port); - WR_HARPOON(p_port+hp_addstat,(RD_HARPOON(p_port+hp_addstat) & ~SCAM_TIMER)); - WR_HARPOON(p_port+hp_seltimeout,TO_290ms); + WR_HARPOON(p_port + hp_addstat, + (RD_HARPOON(p_port + hp_addstat) & ~SCAM_TIMER)); + WR_HARPOON(p_port + hp_seltimeout, TO_290ms); - SGRAM_ACCESS(p_port); + SGRAM_ACCESS(p_port); - if (RDW_HARPOON((p_port+hp_intstat)) & (RESET | TIMEOUT) ) { + if (RDW_HARPOON((p_port + hp_intstat)) & (RESET | TIMEOUT)) { - WRW_HARPOON((p_port+hp_intstat), - (RESET | TIMEOUT | SEL | BUS_FREE | PHASE)); + WRW_HARPOON((p_port + hp_intstat), + (RESET | TIMEOUT | SEL | BUS_FREE | PHASE)); - WR_HARPOON(p_port+hp_page_ctrl, - (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE)); + WR_HARPOON(p_port + hp_page_ctrl, + (RD_HARPOON(p_port + hp_page_ctrl) & + ~G_INT_DISABLE)); - return(0); /*No legacy device */ - } + return 0; /*No legacy device */ + } - else { + else { - while(!(RDW_HARPOON((p_port+hp_intstat)) & BUS_FREE)) { - if (RD_HARPOON(p_port+hp_scsisig) & SCSI_REQ) - { - WR_HARPOON(p_port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); - ACCEPT_MSG(p_port); - } + while (!(RDW_HARPOON((p_port + hp_intstat)) & BUS_FREE)) { + if (RD_HARPOON(p_port + hp_scsisig) & SCSI_REQ) { + WR_HARPOON(p_port + hp_scsisig, + (SCSI_ACK + S_ILL_PH)); + ACCEPT_MSG(p_port); + } } - WRW_HARPOON((p_port+hp_intstat), CLR_ALL_INT_1); + WRW_HARPOON((p_port + hp_intstat), CLR_ALL_INT_1); - WR_HARPOON(p_port+hp_page_ctrl, - (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE)); + WR_HARPOON(p_port + hp_page_ctrl, + (RD_HARPOON(p_port + hp_page_ctrl) & + ~G_INT_DISABLE)); - return(1); /*Found one of them oldies! */ - } + return 1; /*Found one of them oldies! */ + } } /*--------------------------------------------------------------------- @@ -6808,12 +6240,12 @@ static UCHAR FPT_scsell(ULONG p_port, UC * *---------------------------------------------------------------------*/ -static void FPT_scwtsel(ULONG p_port) +static void FPT_scwtsel(unsigned long p_port) { - while(!(RDW_HARPOON((p_port+hp_intstat)) & SCAM_SEL)) {} + while (!(RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) { + } } - /*--------------------------------------------------------------------- * * Function: FPT_inisci @@ -6822,57 +6254,64 @@ static void FPT_scwtsel(ULONG p_port) * *---------------------------------------------------------------------*/ -static void FPT_inisci(UCHAR p_card, ULONG p_port, UCHAR p_our_id) +static void FPT_inisci(unsigned char p_card, unsigned long p_port, + unsigned char p_our_id) { - UCHAR i,k,max_id; - USHORT ee_data; - PNVRamInfo pCurrNvRam; + unsigned char i, k, max_id; + unsigned short ee_data; + struct nvram_info *pCurrNvRam; pCurrNvRam = FPT_BL_Card[p_card].pNvRamInfo; - if (RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD) - max_id = 0x08; + if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD) + max_id = 0x08; - else - max_id = 0x10; + else + max_id = 0x10; - if(pCurrNvRam){ - for(i = 0; i < max_id; i++){ + if (pCurrNvRam) { + for (i = 0; i < max_id; i++) { - for(k = 0; k < 4; k++) - FPT_scamInfo[i].id_string[k] = pCurrNvRam->niScamTbl[i][k]; - for(k = 4; k < ID_STRING_LENGTH; k++) - FPT_scamInfo[i].id_string[k] = (UCHAR) 0x00; + for (k = 0; k < 4; k++) + FPT_scamInfo[i].id_string[k] = + pCurrNvRam->niScamTbl[i][k]; + for (k = 4; k < ID_STRING_LENGTH; k++) + FPT_scamInfo[i].id_string[k] = + (unsigned char)0x00; - if(FPT_scamInfo[i].id_string[0] == 0x00) - FPT_scamInfo[i].state = ID_UNUSED; /*Default to unused ID. */ - else - FPT_scamInfo[i].state = ID_UNASSIGNED; /*Default to unassigned ID. */ + if (FPT_scamInfo[i].id_string[0] == 0x00) + FPT_scamInfo[i].state = ID_UNUSED; /*Default to unused ID. */ + else + FPT_scamInfo[i].state = ID_UNASSIGNED; /*Default to unassigned ID. */ } - }else { - for (i=0; i < max_id; i++) - { - for (k=0; k < ID_STRING_LENGTH; k+=2) - { - ee_data = FPT_utilEERead(p_port, (USHORT)((EE_SCAMBASE/2) + - (USHORT) (i*((USHORT)ID_STRING_LENGTH/2)) + (USHORT)(k/2))); - FPT_scamInfo[i].id_string[k] = (UCHAR) ee_data; - ee_data >>= 8; - FPT_scamInfo[i].id_string[k+1] = (UCHAR) ee_data; - } + } else { + for (i = 0; i < max_id; i++) { + for (k = 0; k < ID_STRING_LENGTH; k += 2) { + ee_data = + FPT_utilEERead(p_port, + (unsigned + short)((EE_SCAMBASE / 2) + + (unsigned short)(i * + ((unsigned short)ID_STRING_LENGTH / 2)) + (unsigned short)(k / 2))); + FPT_scamInfo[i].id_string[k] = + (unsigned char)ee_data; + ee_data >>= 8; + FPT_scamInfo[i].id_string[k + 1] = + (unsigned char)ee_data; + } - if ((FPT_scamInfo[i].id_string[0] == 0x00) || - (FPT_scamInfo[i].id_string[0] == 0xFF)) + if ((FPT_scamInfo[i].id_string[0] == 0x00) || + (FPT_scamInfo[i].id_string[0] == 0xFF)) - FPT_scamInfo[i].state = ID_UNUSED; /*Default to unused ID. */ + FPT_scamInfo[i].state = ID_UNUSED; /*Default to unused ID. */ - else - FPT_scamInfo[i].state = ID_UNASSIGNED; /*Default to unassigned ID. */ + else + FPT_scamInfo[i].state = ID_UNASSIGNED; /*Default to unassigned ID. */ - } + } } - for(k = 0; k < ID_STRING_LENGTH; k++) + for (k = 0; k < ID_STRING_LENGTH; k++) FPT_scamInfo[p_our_id].id_string[k] = FPT_scamHAString[k]; } @@ -6886,127 +6325,114 @@ static void FPT_inisci(UCHAR p_card, ULO * *---------------------------------------------------------------------*/ -static UCHAR FPT_scmachid(UCHAR p_card, UCHAR p_id_string[]) +static unsigned char FPT_scmachid(unsigned char p_card, + unsigned char p_id_string[]) { - UCHAR i,k,match; - - - for (i=0; i < MAX_SCSI_TAR; i++) { - - match = 1; - - for (k=0; k < ID_STRING_LENGTH; k++) - { - if (p_id_string[k] != FPT_scamInfo[i].id_string[k]) - match = 0; - } + unsigned char i, k, match; - if (match) - { - FPT_scamInfo[i].state = ID_ASSIGNED; - return(i); - } + for (i = 0; i < MAX_SCSI_TAR; i++) { - } + match = 1; + for (k = 0; k < ID_STRING_LENGTH; k++) { + if (p_id_string[k] != FPT_scamInfo[i].id_string[k]) + match = 0; + } + if (match) { + FPT_scamInfo[i].state = ID_ASSIGNED; + return i; + } - if (p_id_string[0] & BIT(5)) - i = 8; - else - i = MAX_SCSI_TAR; + } - if (((p_id_string[0] & 0x06) == 0x02) || ((p_id_string[0] & 0x06) == 0x04)) - match = p_id_string[1] & (UCHAR) 0x1F; - else - match = 7; + if (p_id_string[0] & BIT(5)) + i = 8; + else + i = MAX_SCSI_TAR; - while (i > 0) - { - i--; + if (((p_id_string[0] & 0x06) == 0x02) + || ((p_id_string[0] & 0x06) == 0x04)) + match = p_id_string[1] & (unsigned char)0x1F; + else + match = 7; - if (FPT_scamInfo[match].state == ID_UNUSED) - { - for (k=0; k < ID_STRING_LENGTH; k++) - { - FPT_scamInfo[match].id_string[k] = p_id_string[k]; - } + while (i > 0) { + i--; - FPT_scamInfo[match].state = ID_ASSIGNED; + if (FPT_scamInfo[match].state == ID_UNUSED) { + for (k = 0; k < ID_STRING_LENGTH; k++) { + FPT_scamInfo[match].id_string[k] = + p_id_string[k]; + } - if(FPT_BL_Card[p_card].pNvRamInfo == NULL) - FPT_BL_Card[p_card].globalFlags |= F_UPDATE_EEPROM; - return(match); + FPT_scamInfo[match].state = ID_ASSIGNED; - } + if (FPT_BL_Card[p_card].pNvRamInfo == NULL) + FPT_BL_Card[p_card].globalFlags |= + F_UPDATE_EEPROM; + return match; + } - match--; + match--; - if (match == 0xFF) - { - if (p_id_string[0] & BIT(5)) - match = 7; - else - match = MAX_SCSI_TAR-1; + if (match == 0xFF) { + if (p_id_string[0] & BIT(5)) + match = 7; + else + match = MAX_SCSI_TAR - 1; + } } - } - + if (p_id_string[0] & BIT(7)) { + return CLR_PRIORITY; + } - if (p_id_string[0] & BIT(7)) - { - return(CLR_PRIORITY); - } - - - if (p_id_string[0] & BIT(5)) - i = 8; - else - i = MAX_SCSI_TAR; - - if (((p_id_string[0] & 0x06) == 0x02) || ((p_id_string[0] & 0x06) == 0x04)) - match = p_id_string[1] & (UCHAR) 0x1F; - else - match = 7; + if (p_id_string[0] & BIT(5)) + i = 8; + else + i = MAX_SCSI_TAR; - while (i > 0) - { + if (((p_id_string[0] & 0x06) == 0x02) + || ((p_id_string[0] & 0x06) == 0x04)) + match = p_id_string[1] & (unsigned char)0x1F; + else + match = 7; - i--; + while (i > 0) { - if (FPT_scamInfo[match].state == ID_UNASSIGNED) - { - for (k=0; k < ID_STRING_LENGTH; k++) - { - FPT_scamInfo[match].id_string[k] = p_id_string[k]; - } + i--; - FPT_scamInfo[match].id_string[0] |= BIT(7); - FPT_scamInfo[match].state = ID_ASSIGNED; - if(FPT_BL_Card[p_card].pNvRamInfo == NULL) - FPT_BL_Card[p_card].globalFlags |= F_UPDATE_EEPROM; - return(match); + if (FPT_scamInfo[match].state == ID_UNASSIGNED) { + for (k = 0; k < ID_STRING_LENGTH; k++) { + FPT_scamInfo[match].id_string[k] = + p_id_string[k]; + } - } + FPT_scamInfo[match].id_string[0] |= BIT(7); + FPT_scamInfo[match].state = ID_ASSIGNED; + if (FPT_BL_Card[p_card].pNvRamInfo == NULL) + FPT_BL_Card[p_card].globalFlags |= + F_UPDATE_EEPROM; + return match; + } - match--; + match--; - if (match == 0xFF) - { - if (p_id_string[0] & BIT(5)) - match = 7; - else - match = MAX_SCSI_TAR-1; + if (match == 0xFF) { + if (p_id_string[0] & BIT(5)) + match = 7; + else + match = MAX_SCSI_TAR - 1; + } } - } - return(NO_ID_AVAIL); + return NO_ID_AVAIL; } - /*--------------------------------------------------------------------- * * Function: FPT_scsavdi @@ -7015,45 +6441,41 @@ static UCHAR FPT_scmachid(UCHAR p_card, * *---------------------------------------------------------------------*/ -static void FPT_scsavdi(UCHAR p_card, ULONG p_port) +static void FPT_scsavdi(unsigned char p_card, unsigned long p_port) { - UCHAR i,k,max_id; - USHORT ee_data,sum_data; - - - sum_data = 0x0000; + unsigned char i, k, max_id; + unsigned short ee_data, sum_data; - for (i = 1; i < EE_SCAMBASE/2; i++) - { - sum_data += FPT_utilEERead(p_port, i); - } + sum_data = 0x0000; + for (i = 1; i < EE_SCAMBASE / 2; i++) { + sum_data += FPT_utilEERead(p_port, i); + } - FPT_utilEEWriteOnOff(p_port,1); /* Enable write access to the EEPROM */ - - if (RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD) - max_id = 0x08; + FPT_utilEEWriteOnOff(p_port, 1); /* Enable write access to the EEPROM */ - else - max_id = 0x10; + if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD) + max_id = 0x08; - for (i=0; i < max_id; i++) - { + else + max_id = 0x10; - for (k=0; k < ID_STRING_LENGTH; k+=2) - { - ee_data = FPT_scamInfo[i].id_string[k+1]; - ee_data <<= 8; - ee_data |= FPT_scamInfo[i].id_string[k]; - sum_data += ee_data; - FPT_utilEEWrite(p_port, ee_data, (USHORT)((EE_SCAMBASE/2) + - (USHORT)(i*((USHORT)ID_STRING_LENGTH/2)) + (USHORT)(k/2))); - } - } + for (i = 0; i < max_id; i++) { + for (k = 0; k < ID_STRING_LENGTH; k += 2) { + ee_data = FPT_scamInfo[i].id_string[k + 1]; + ee_data <<= 8; + ee_data |= FPT_scamInfo[i].id_string[k]; + sum_data += ee_data; + FPT_utilEEWrite(p_port, ee_data, + (unsigned short)((EE_SCAMBASE / 2) + + (unsigned short)(i * + ((unsigned short)ID_STRING_LENGTH / 2)) + (unsigned short)(k / 2))); + } + } - FPT_utilEEWrite(p_port, sum_data, EEPROM_CHECK_SUM/2); - FPT_utilEEWriteOnOff(p_port,0); /* Turn off write access */ + FPT_utilEEWrite(p_port, sum_data, EEPROM_CHECK_SUM / 2); + FPT_utilEEWriteOnOff(p_port, 0); /* Turn off write access */ } /*--------------------------------------------------------------------- @@ -7064,48 +6486,47 @@ static void FPT_scsavdi(UCHAR p_card, UL * *---------------------------------------------------------------------*/ -static void FPT_XbowInit(ULONG port, UCHAR ScamFlg) +static void FPT_XbowInit(unsigned long port, unsigned char ScamFlg) { -UCHAR i; + unsigned char i; - i = RD_HARPOON(port+hp_page_ctrl); - WR_HARPOON(port+hp_page_ctrl, (UCHAR) (i | G_INT_DISABLE)); + i = RD_HARPOON(port + hp_page_ctrl); + WR_HARPOON(port + hp_page_ctrl, (unsigned char)(i | G_INT_DISABLE)); - WR_HARPOON(port+hp_scsireset,0x00); - WR_HARPOON(port+hp_portctrl_1,HOST_MODE8); + WR_HARPOON(port + hp_scsireset, 0x00); + WR_HARPOON(port + hp_portctrl_1, HOST_MODE8); - WR_HARPOON(port+hp_scsireset,(DMA_RESET | HPSCSI_RESET | PROG_RESET | \ - FIFO_CLR)); + WR_HARPOON(port + hp_scsireset, (DMA_RESET | HPSCSI_RESET | PROG_RESET | + FIFO_CLR)); - WR_HARPOON(port+hp_scsireset,SCSI_INI); + WR_HARPOON(port + hp_scsireset, SCSI_INI); - WR_HARPOON(port+hp_clkctrl_0,CLKCTRL_DEFAULT); + WR_HARPOON(port + hp_clkctrl_0, CLKCTRL_DEFAULT); - WR_HARPOON(port+hp_scsisig,0x00); /* Clear any signals we might */ - WR_HARPOON(port+hp_scsictrl_0,ENA_SCAM_SEL); + WR_HARPOON(port + hp_scsisig, 0x00); /* Clear any signals we might */ + WR_HARPOON(port + hp_scsictrl_0, ENA_SCAM_SEL); - WRW_HARPOON((port+hp_intstat), CLR_ALL_INT); + WRW_HARPOON((port + hp_intstat), CLR_ALL_INT); - FPT_default_intena = RESET | RSEL | PROG_HLT | TIMEOUT | - BUS_FREE | XFER_CNT_0 | AUTO_INT; + FPT_default_intena = RESET | RSEL | PROG_HLT | TIMEOUT | + BUS_FREE | XFER_CNT_0 | AUTO_INT; - if ((ScamFlg & SCAM_ENABLED) && (ScamFlg & SCAM_LEVEL2)) + if ((ScamFlg & SCAM_ENABLED) && (ScamFlg & SCAM_LEVEL2)) FPT_default_intena |= SCAM_SEL; - WRW_HARPOON((port+hp_intena), FPT_default_intena); + WRW_HARPOON((port + hp_intena), FPT_default_intena); - WR_HARPOON(port+hp_seltimeout,TO_290ms); + WR_HARPOON(port + hp_seltimeout, TO_290ms); - /* Turn on SCSI_MODE8 for narrow cards to fix the - strapping issue with the DUAL CHANNEL card */ - if (RD_HARPOON(port+hp_page_ctrl) & NARROW_SCSI_CARD) - WR_HARPOON(port+hp_addstat,SCSI_MODE8); + /* Turn on SCSI_MODE8 for narrow cards to fix the + strapping issue with the DUAL CHANNEL card */ + if (RD_HARPOON(port + hp_page_ctrl) & NARROW_SCSI_CARD) + WR_HARPOON(port + hp_addstat, SCSI_MODE8); - WR_HARPOON(port+hp_page_ctrl, i); + WR_HARPOON(port + hp_page_ctrl, i); } - /*--------------------------------------------------------------------- * * Function: FPT_BusMasterInit @@ -7114,28 +6535,24 @@ UCHAR i; * *---------------------------------------------------------------------*/ -static void FPT_BusMasterInit(ULONG p_port) +static void FPT_BusMasterInit(unsigned long p_port) { + WR_HARPOON(p_port + hp_sys_ctrl, DRVR_RST); + WR_HARPOON(p_port + hp_sys_ctrl, 0x00); - WR_HARPOON(p_port+hp_sys_ctrl, DRVR_RST); - WR_HARPOON(p_port+hp_sys_ctrl, 0x00); - - WR_HARPOON(p_port+hp_host_blk_cnt, XFER_BLK64); + WR_HARPOON(p_port + hp_host_blk_cnt, XFER_BLK64); + WR_HARPOON(p_port + hp_bm_ctrl, (BMCTRL_DEFAULT)); - WR_HARPOON(p_port+hp_bm_ctrl, (BMCTRL_DEFAULT)); + WR_HARPOON(p_port + hp_ee_ctrl, (SCSI_TERM_ENA_H)); - WR_HARPOON(p_port+hp_ee_ctrl, (SCSI_TERM_ENA_H)); - - - RD_HARPOON(p_port+hp_int_status); /*Clear interrupts. */ - WR_HARPOON(p_port+hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); - WR_HARPOON(p_port+hp_page_ctrl, (RD_HARPOON(p_port+hp_page_ctrl) & - ~SCATTER_EN)); + RD_HARPOON(p_port + hp_int_status); /*Clear interrupts. */ + WR_HARPOON(p_port + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); + WR_HARPOON(p_port + hp_page_ctrl, (RD_HARPOON(p_port + hp_page_ctrl) & + ~SCATTER_EN)); } - /*--------------------------------------------------------------------- * * Function: FPT_DiagEEPROM @@ -7145,158 +6562,153 @@ static void FPT_BusMasterInit(ULONG p_po * *---------------------------------------------------------------------*/ -static void FPT_DiagEEPROM(ULONG p_port) +static void FPT_DiagEEPROM(unsigned long p_port) { - USHORT index,temp,max_wd_cnt; - - if (RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD) - max_wd_cnt = EEPROM_WD_CNT; - else - max_wd_cnt = EEPROM_WD_CNT * 2; - - temp = FPT_utilEERead(p_port, FW_SIGNATURE/2); - - if (temp == 0x4641) { - - for (index = 2; index < max_wd_cnt; index++) { + unsigned short index, temp, max_wd_cnt; - temp += FPT_utilEERead(p_port, index); - - } - - if (temp == FPT_utilEERead(p_port, EEPROM_CHECK_SUM/2)) { - - return; /*EEPROM is Okay so return now! */ - } - } - - - FPT_utilEEWriteOnOff(p_port,(UCHAR)1); - - for (index = 0; index < max_wd_cnt; index++) { - - FPT_utilEEWrite(p_port, 0x0000, index); - } + if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD) + max_wd_cnt = EEPROM_WD_CNT; + else + max_wd_cnt = EEPROM_WD_CNT * 2; - temp = 0; + temp = FPT_utilEERead(p_port, FW_SIGNATURE / 2); - FPT_utilEEWrite(p_port, 0x4641, FW_SIGNATURE/2); - temp += 0x4641; - FPT_utilEEWrite(p_port, 0x3920, MODEL_NUMB_0/2); - temp += 0x3920; - FPT_utilEEWrite(p_port, 0x3033, MODEL_NUMB_2/2); - temp += 0x3033; - FPT_utilEEWrite(p_port, 0x2020, MODEL_NUMB_4/2); - temp += 0x2020; - FPT_utilEEWrite(p_port, 0x70D3, SYSTEM_CONFIG/2); - temp += 0x70D3; - FPT_utilEEWrite(p_port, 0x0010, BIOS_CONFIG/2); - temp += 0x0010; - FPT_utilEEWrite(p_port, 0x0003, SCAM_CONFIG/2); - temp += 0x0003; - FPT_utilEEWrite(p_port, 0x0007, ADAPTER_SCSI_ID/2); - temp += 0x0007; - - FPT_utilEEWrite(p_port, 0x0000, IGNORE_B_SCAN/2); - temp += 0x0000; - FPT_utilEEWrite(p_port, 0x0000, SEND_START_ENA/2); - temp += 0x0000; - FPT_utilEEWrite(p_port, 0x0000, DEVICE_ENABLE/2); - temp += 0x0000; - - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL01/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL23/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL45/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL67/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL89/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLab/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLcd/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLef/2); - temp += 0x4242; - - - FPT_utilEEWrite(p_port, 0x6C46, 64/2); /*PRODUCT ID */ - temp += 0x6C46; - FPT_utilEEWrite(p_port, 0x7361, 66/2); /* FlashPoint LT */ - temp += 0x7361; - FPT_utilEEWrite(p_port, 0x5068, 68/2); - temp += 0x5068; - FPT_utilEEWrite(p_port, 0x696F, 70/2); - temp += 0x696F; - FPT_utilEEWrite(p_port, 0x746E, 72/2); - temp += 0x746E; - FPT_utilEEWrite(p_port, 0x4C20, 74/2); - temp += 0x4C20; - FPT_utilEEWrite(p_port, 0x2054, 76/2); - temp += 0x2054; - FPT_utilEEWrite(p_port, 0x2020, 78/2); - temp += 0x2020; - - index = ((EE_SCAMBASE/2)+(7*16)); - FPT_utilEEWrite(p_port, (0x0700+TYPE_CODE0), index); - temp += (0x0700+TYPE_CODE0); - index++; - FPT_utilEEWrite(p_port, 0x5542, index); /*Vendor ID code */ - temp += 0x5542; /* BUSLOGIC */ - index++; - FPT_utilEEWrite(p_port, 0x4C53, index); - temp += 0x4C53; - index++; - FPT_utilEEWrite(p_port, 0x474F, index); - temp += 0x474F; - index++; - FPT_utilEEWrite(p_port, 0x4349, index); - temp += 0x4349; - index++; - FPT_utilEEWrite(p_port, 0x5442, index); /*Vendor unique code */ - temp += 0x5442; /* BT- 930 */ - index++; - FPT_utilEEWrite(p_port, 0x202D, index); - temp += 0x202D; - index++; - FPT_utilEEWrite(p_port, 0x3339, index); - temp += 0x3339; - index++; /*Serial # */ - FPT_utilEEWrite(p_port, 0x2030, index); /* 01234567 */ - temp += 0x2030; - index++; - FPT_utilEEWrite(p_port, 0x5453, index); - temp += 0x5453; - index++; - FPT_utilEEWrite(p_port, 0x5645, index); - temp += 0x5645; - index++; - FPT_utilEEWrite(p_port, 0x2045, index); - temp += 0x2045; - index++; - FPT_utilEEWrite(p_port, 0x202F, index); - temp += 0x202F; - index++; - FPT_utilEEWrite(p_port, 0x4F4A, index); - temp += 0x4F4A; - index++; - FPT_utilEEWrite(p_port, 0x204E, index); - temp += 0x204E; - index++; - FPT_utilEEWrite(p_port, 0x3539, index); - temp += 0x3539; + if (temp == 0x4641) { + for (index = 2; index < max_wd_cnt; index++) { + temp += FPT_utilEERead(p_port, index); + + } + + if (temp == FPT_utilEERead(p_port, EEPROM_CHECK_SUM / 2)) { + + return; /*EEPROM is Okay so return now! */ + } + } + + FPT_utilEEWriteOnOff(p_port, (unsigned char)1); + + for (index = 0; index < max_wd_cnt; index++) { + + FPT_utilEEWrite(p_port, 0x0000, index); + } + + temp = 0; + + FPT_utilEEWrite(p_port, 0x4641, FW_SIGNATURE / 2); + temp += 0x4641; + FPT_utilEEWrite(p_port, 0x3920, MODEL_NUMB_0 / 2); + temp += 0x3920; + FPT_utilEEWrite(p_port, 0x3033, MODEL_NUMB_2 / 2); + temp += 0x3033; + FPT_utilEEWrite(p_port, 0x2020, MODEL_NUMB_4 / 2); + temp += 0x2020; + FPT_utilEEWrite(p_port, 0x70D3, SYSTEM_CONFIG / 2); + temp += 0x70D3; + FPT_utilEEWrite(p_port, 0x0010, BIOS_CONFIG / 2); + temp += 0x0010; + FPT_utilEEWrite(p_port, 0x0003, SCAM_CONFIG / 2); + temp += 0x0003; + FPT_utilEEWrite(p_port, 0x0007, ADAPTER_SCSI_ID / 2); + temp += 0x0007; + + FPT_utilEEWrite(p_port, 0x0000, IGNORE_B_SCAN / 2); + temp += 0x0000; + FPT_utilEEWrite(p_port, 0x0000, SEND_START_ENA / 2); + temp += 0x0000; + FPT_utilEEWrite(p_port, 0x0000, DEVICE_ENABLE / 2); + temp += 0x0000; + + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL01 / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL23 / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL45 / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL67 / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL89 / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLab / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLcd / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLef / 2); + temp += 0x4242; + + FPT_utilEEWrite(p_port, 0x6C46, 64 / 2); /*PRODUCT ID */ + temp += 0x6C46; + FPT_utilEEWrite(p_port, 0x7361, 66 / 2); /* FlashPoint LT */ + temp += 0x7361; + FPT_utilEEWrite(p_port, 0x5068, 68 / 2); + temp += 0x5068; + FPT_utilEEWrite(p_port, 0x696F, 70 / 2); + temp += 0x696F; + FPT_utilEEWrite(p_port, 0x746E, 72 / 2); + temp += 0x746E; + FPT_utilEEWrite(p_port, 0x4C20, 74 / 2); + temp += 0x4C20; + FPT_utilEEWrite(p_port, 0x2054, 76 / 2); + temp += 0x2054; + FPT_utilEEWrite(p_port, 0x2020, 78 / 2); + temp += 0x2020; + + index = ((EE_SCAMBASE / 2) + (7 * 16)); + FPT_utilEEWrite(p_port, (0x0700 + TYPE_CODE0), index); + temp += (0x0700 + TYPE_CODE0); + index++; + FPT_utilEEWrite(p_port, 0x5542, index); /*Vendor ID code */ + temp += 0x5542; /* BUSLOGIC */ + index++; + FPT_utilEEWrite(p_port, 0x4C53, index); + temp += 0x4C53; + index++; + FPT_utilEEWrite(p_port, 0x474F, index); + temp += 0x474F; + index++; + FPT_utilEEWrite(p_port, 0x4349, index); + temp += 0x4349; + index++; + FPT_utilEEWrite(p_port, 0x5442, index); /*Vendor unique code */ + temp += 0x5442; /* BT- 930 */ + index++; + FPT_utilEEWrite(p_port, 0x202D, index); + temp += 0x202D; + index++; + FPT_utilEEWrite(p_port, 0x3339, index); + temp += 0x3339; + index++; /*Serial # */ + FPT_utilEEWrite(p_port, 0x2030, index); /* 01234567 */ + temp += 0x2030; + index++; + FPT_utilEEWrite(p_port, 0x5453, index); + temp += 0x5453; + index++; + FPT_utilEEWrite(p_port, 0x5645, index); + temp += 0x5645; + index++; + FPT_utilEEWrite(p_port, 0x2045, index); + temp += 0x2045; + index++; + FPT_utilEEWrite(p_port, 0x202F, index); + temp += 0x202F; + index++; + FPT_utilEEWrite(p_port, 0x4F4A, index); + temp += 0x4F4A; + index++; + FPT_utilEEWrite(p_port, 0x204E, index); + temp += 0x204E; + index++; + FPT_utilEEWrite(p_port, 0x3539, index); + temp += 0x3539; - FPT_utilEEWrite(p_port, temp, EEPROM_CHECK_SUM/2); + FPT_utilEEWrite(p_port, temp, EEPROM_CHECK_SUM / 2); - FPT_utilEEWriteOnOff(p_port,(UCHAR)0); + FPT_utilEEWriteOnOff(p_port, (unsigned char)0); } - /*--------------------------------------------------------------------- * * Function: Queue Search Select @@ -7305,103 +6717,127 @@ static void FPT_DiagEEPROM(ULONG p_port) * *---------------------------------------------------------------------*/ -static void FPT_queueSearchSelect(PSCCBcard pCurrCard, UCHAR p_card) +static void FPT_queueSearchSelect(struct sccb_card *pCurrCard, + unsigned char p_card) { - UCHAR scan_ptr, lun; - PSCCBMgr_tar_info currTar_Info; - PSCCB pOldSccb; + unsigned char scan_ptr, lun; + struct sccb_mgr_tar_info *currTar_Info; + struct sccb *pOldSccb; - scan_ptr = pCurrCard->scanIndex; - do - { + scan_ptr = pCurrCard->scanIndex; + do { currTar_Info = &FPT_sccbMgrTbl[p_card][scan_ptr]; - if((pCurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - { - if (currTar_Info->TarSelQ_Cnt != 0) - { + if ((pCurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING)) { + if (currTar_Info->TarSelQ_Cnt != 0) { scan_ptr++; if (scan_ptr == MAX_SCSI_TAR) scan_ptr = 0; - - for(lun=0; lun < MAX_LUN; lun++) - { - if(currTar_Info->TarLUNBusy[lun] == 0) - { - pCurrCard->currentSCCB = currTar_Info->TarSelQ_Head; + for (lun = 0; lun < MAX_LUN; lun++) { + if (currTar_Info->TarLUNBusy[lun] == 0) { + + pCurrCard->currentSCCB = + currTar_Info->TarSelQ_Head; pOldSccb = NULL; - while((pCurrCard->currentSCCB != NULL) && - (lun != pCurrCard->currentSCCB->Lun)) - { - pOldSccb = pCurrCard->currentSCCB; - pCurrCard->currentSCCB = (PSCCB)(pCurrCard->currentSCCB)-> - Sccb_forwardlink; + while ((pCurrCard-> + currentSCCB != NULL) + && (lun != + pCurrCard-> + currentSCCB->Lun)) { + pOldSccb = + pCurrCard-> + currentSCCB; + pCurrCard->currentSCCB = + (struct sccb + *)(pCurrCard-> + currentSCCB)-> + Sccb_forwardlink; } - if(pCurrCard->currentSCCB == NULL) + if (pCurrCard->currentSCCB == + NULL) continue; - if(pOldSccb != NULL) - { - pOldSccb->Sccb_forwardlink = (PSCCB)(pCurrCard->currentSCCB)-> - Sccb_forwardlink; - pOldSccb->Sccb_backlink = (PSCCB)(pCurrCard->currentSCCB)-> - Sccb_backlink; - currTar_Info->TarSelQ_Cnt--; - } - else - { - currTar_Info->TarSelQ_Head = (PSCCB)(pCurrCard->currentSCCB)->Sccb_forwardlink; - - if (currTar_Info->TarSelQ_Head == NULL) - { - currTar_Info->TarSelQ_Tail = NULL; - currTar_Info->TarSelQ_Cnt = 0; - } - else - { - currTar_Info->TarSelQ_Cnt--; - currTar_Info->TarSelQ_Head->Sccb_backlink = (PSCCB)NULL; + if (pOldSccb != NULL) { + pOldSccb-> + Sccb_forwardlink = + (struct sccb + *)(pCurrCard-> + currentSCCB)-> + Sccb_forwardlink; + pOldSccb-> + Sccb_backlink = + (struct sccb + *)(pCurrCard-> + currentSCCB)-> + Sccb_backlink; + currTar_Info-> + TarSelQ_Cnt--; + } else { + currTar_Info-> + TarSelQ_Head = + (struct sccb + *)(pCurrCard-> + currentSCCB)-> + Sccb_forwardlink; + + if (currTar_Info-> + TarSelQ_Head == + NULL) { + currTar_Info-> + TarSelQ_Tail + = NULL; + currTar_Info-> + TarSelQ_Cnt + = 0; + } else { + currTar_Info-> + TarSelQ_Cnt--; + currTar_Info-> + TarSelQ_Head-> + Sccb_backlink + = + (struct sccb + *)NULL; } } - pCurrCard->scanIndex = scan_ptr; + pCurrCard->scanIndex = scan_ptr; - pCurrCard->globalFlags |= F_NEW_SCCB_CMD; + pCurrCard->globalFlags |= + F_NEW_SCCB_CMD; - break; + break; } } } - else - { + else { scan_ptr++; if (scan_ptr == MAX_SCSI_TAR) { scan_ptr = 0; } } - } - else - { + } else { if ((currTar_Info->TarSelQ_Cnt != 0) && - (currTar_Info->TarLUNBusy[0] == 0)) - { + (currTar_Info->TarLUNBusy[0] == 0)) { - pCurrCard->currentSCCB = currTar_Info->TarSelQ_Head; + pCurrCard->currentSCCB = + currTar_Info->TarSelQ_Head; - currTar_Info->TarSelQ_Head = (PSCCB)(pCurrCard->currentSCCB)->Sccb_forwardlink; + currTar_Info->TarSelQ_Head = + (struct sccb *)(pCurrCard->currentSCCB)-> + Sccb_forwardlink; - if (currTar_Info->TarSelQ_Head == NULL) - { + if (currTar_Info->TarSelQ_Head == NULL) { currTar_Info->TarSelQ_Tail = NULL; currTar_Info->TarSelQ_Cnt = 0; - } - else - { + } else { currTar_Info->TarSelQ_Cnt--; - currTar_Info->TarSelQ_Head->Sccb_backlink = (PSCCB)NULL; + currTar_Info->TarSelQ_Head-> + Sccb_backlink = (struct sccb *)NULL; } scan_ptr++; @@ -7415,11 +6851,9 @@ static void FPT_queueSearchSelect(PSCCBc break; } - else - { + else { scan_ptr++; - if (scan_ptr == MAX_SCSI_TAR) - { + if (scan_ptr == MAX_SCSI_TAR) { scan_ptr = 0; } } @@ -7427,7 +6861,6 @@ static void FPT_queueSearchSelect(PSCCBc } while (scan_ptr != pCurrCard->scanIndex); } - /*--------------------------------------------------------------------- * * Function: Queue Select Fail @@ -7436,37 +6869,39 @@ static void FPT_queueSearchSelect(PSCCBc * *---------------------------------------------------------------------*/ -static void FPT_queueSelectFail(PSCCBcard pCurrCard, UCHAR p_card) +static void FPT_queueSelectFail(struct sccb_card *pCurrCard, + unsigned char p_card) { - UCHAR thisTarg; - PSCCBMgr_tar_info currTar_Info; + unsigned char thisTarg; + struct sccb_mgr_tar_info *currTar_Info; - if (pCurrCard->currentSCCB != NULL) - { - thisTarg = (UCHAR)(((PSCCB)(pCurrCard->currentSCCB))->TargID); - currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; + if (pCurrCard->currentSCCB != NULL) { + thisTarg = + (unsigned char)(((struct sccb *)(pCurrCard->currentSCCB))-> + TargID); + currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; - pCurrCard->currentSCCB->Sccb_backlink = (PSCCB)NULL; + pCurrCard->currentSCCB->Sccb_backlink = (struct sccb *)NULL; - pCurrCard->currentSCCB->Sccb_forwardlink = currTar_Info->TarSelQ_Head; + pCurrCard->currentSCCB->Sccb_forwardlink = + currTar_Info->TarSelQ_Head; - if (currTar_Info->TarSelQ_Cnt == 0) - { - currTar_Info->TarSelQ_Tail = pCurrCard->currentSCCB; - } - - else - { - currTar_Info->TarSelQ_Head->Sccb_backlink = pCurrCard->currentSCCB; - } + if (currTar_Info->TarSelQ_Cnt == 0) { + currTar_Info->TarSelQ_Tail = pCurrCard->currentSCCB; + } + else { + currTar_Info->TarSelQ_Head->Sccb_backlink = + pCurrCard->currentSCCB; + } - currTar_Info->TarSelQ_Head = pCurrCard->currentSCCB; + currTar_Info->TarSelQ_Head = pCurrCard->currentSCCB; - pCurrCard->currentSCCB = NULL; - currTar_Info->TarSelQ_Cnt++; - } + pCurrCard->currentSCCB = NULL; + currTar_Info->TarSelQ_Cnt++; + } } + /*--------------------------------------------------------------------- * * Function: Queue Command Complete @@ -7475,101 +6910,97 @@ static void FPT_queueSelectFail(PSCCBcar * *---------------------------------------------------------------------*/ -static void FPT_queueCmdComplete(PSCCBcard pCurrCard, PSCCB p_sccb, - UCHAR p_card) +static void FPT_queueCmdComplete(struct sccb_card *pCurrCard, + struct sccb *p_sccb, unsigned char p_card) { - UCHAR i, SCSIcmd; - CALL_BK_FN callback; - PSCCBMgr_tar_info currTar_Info; - - SCSIcmd = p_sccb->Cdb[0]; - - - if (!(p_sccb->Sccb_XferState & F_ALL_XFERRED)) { - - if ((p_sccb->ControlByte & (SCCB_DATA_XFER_OUT | SCCB_DATA_XFER_IN)) && - (p_sccb->HostStatus == SCCB_COMPLETE) && - (p_sccb->TargetStatus != SSCHECK)) + unsigned char i, SCSIcmd; + CALL_BK_FN callback; + struct sccb_mgr_tar_info *currTar_Info; - if ((SCSIcmd == SCSI_READ) || - (SCSIcmd == SCSI_WRITE) || - (SCSIcmd == SCSI_READ_EXTENDED) || - (SCSIcmd == SCSI_WRITE_EXTENDED) || - (SCSIcmd == SCSI_WRITE_AND_VERIFY) || - (SCSIcmd == SCSI_START_STOP_UNIT) || - (pCurrCard->globalFlags & F_NO_FILTER) - ) - p_sccb->HostStatus = SCCB_DATA_UNDER_RUN; - } + SCSIcmd = p_sccb->Cdb[0]; + if (!(p_sccb->Sccb_XferState & F_ALL_XFERRED)) { - if(p_sccb->SccbStatus == SCCB_IN_PROCESS) - { - if (p_sccb->HostStatus || p_sccb->TargetStatus) - p_sccb->SccbStatus = SCCB_ERROR; - else - p_sccb->SccbStatus = SCCB_SUCCESS; + if ((p_sccb-> + ControlByte & (SCCB_DATA_XFER_OUT | SCCB_DATA_XFER_IN)) + && (p_sccb->HostStatus == SCCB_COMPLETE) + && (p_sccb->TargetStatus != SSCHECK)) + + if ((SCSIcmd == SCSI_READ) || + (SCSIcmd == SCSI_WRITE) || + (SCSIcmd == SCSI_READ_EXTENDED) || + (SCSIcmd == SCSI_WRITE_EXTENDED) || + (SCSIcmd == SCSI_WRITE_AND_VERIFY) || + (SCSIcmd == SCSI_START_STOP_UNIT) || + (pCurrCard->globalFlags & F_NO_FILTER) + ) + p_sccb->HostStatus = SCCB_DATA_UNDER_RUN; + } + + if (p_sccb->SccbStatus == SCCB_IN_PROCESS) { + if (p_sccb->HostStatus || p_sccb->TargetStatus) + p_sccb->SccbStatus = SCCB_ERROR; + else + p_sccb->SccbStatus = SCCB_SUCCESS; } - if (p_sccb->Sccb_XferState & F_AUTO_SENSE) { + if (p_sccb->Sccb_XferState & F_AUTO_SENSE) { - p_sccb->CdbLength = p_sccb->Save_CdbLen; - for (i=0; i < 6; i++) { - p_sccb->Cdb[i] = p_sccb->Save_Cdb[i]; - } - } + p_sccb->CdbLength = p_sccb->Save_CdbLen; + for (i = 0; i < 6; i++) { + p_sccb->Cdb[i] = p_sccb->Save_Cdb[i]; + } + } - if ((p_sccb->OperationCode == RESIDUAL_SG_COMMAND) || - (p_sccb->OperationCode == RESIDUAL_COMMAND)) { + if ((p_sccb->OperationCode == RESIDUAL_SG_COMMAND) || + (p_sccb->OperationCode == RESIDUAL_COMMAND)) { - FPT_utilUpdateResidual(p_sccb); - } + FPT_utilUpdateResidual(p_sccb); + } - pCurrCard->cmdCounter--; - if (!pCurrCard->cmdCounter) { + pCurrCard->cmdCounter--; + if (!pCurrCard->cmdCounter) { - if (pCurrCard->globalFlags & F_GREEN_PC) { - WR_HARPOON(pCurrCard->ioPort+hp_clkctrl_0,(PWR_DWN | CLKCTRL_DEFAULT)); - WR_HARPOON(pCurrCard->ioPort+hp_sys_ctrl, STOP_CLK); - } + if (pCurrCard->globalFlags & F_GREEN_PC) { + WR_HARPOON(pCurrCard->ioPort + hp_clkctrl_0, + (PWR_DWN | CLKCTRL_DEFAULT)); + WR_HARPOON(pCurrCard->ioPort + hp_sys_ctrl, STOP_CLK); + } - WR_HARPOON(pCurrCard->ioPort+hp_semaphore, - (RD_HARPOON(pCurrCard->ioPort+hp_semaphore) & ~SCCB_MGR_ACTIVE)); + WR_HARPOON(pCurrCard->ioPort + hp_semaphore, + (RD_HARPOON(pCurrCard->ioPort + hp_semaphore) & + ~SCCB_MGR_ACTIVE)); - } + } - if(pCurrCard->discQCount != 0) - { - currTar_Info = &FPT_sccbMgrTbl[p_card][p_sccb->TargID]; - if(((pCurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { + if (pCurrCard->discQCount != 0) { + currTar_Info = &FPT_sccbMgrTbl[p_card][p_sccb->TargID]; + if (((pCurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING))) { pCurrCard->discQCount--; - pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[p_sccb->Lun]] = NULL; - } - else - { - if(p_sccb->Sccb_tag) - { + pCurrCard->discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[p_sccb->Lun]] = NULL; + } else { + if (p_sccb->Sccb_tag) { pCurrCard->discQCount--; pCurrCard->discQ_Tbl[p_sccb->Sccb_tag] = NULL; - }else - { + } else { pCurrCard->discQCount--; - pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]] = NULL; + pCurrCard->discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[0]] = NULL; } } } - callback = (CALL_BK_FN)p_sccb->SccbCallback; - callback(p_sccb); - pCurrCard->globalFlags |= F_NEW_SCCB_CMD; - pCurrCard->currentSCCB = NULL; + callback = (CALL_BK_FN) p_sccb->SccbCallback; + callback(p_sccb); + pCurrCard->globalFlags |= F_NEW_SCCB_CMD; + pCurrCard->currentSCCB = NULL; } - /*--------------------------------------------------------------------- * * Function: Queue Disconnect @@ -7577,33 +7008,32 @@ static void FPT_queueCmdComplete(PSCCBca * Description: Add SCCB to our disconnect array. * *---------------------------------------------------------------------*/ -static void FPT_queueDisconnect(PSCCB p_sccb, UCHAR p_card) +static void FPT_queueDisconnect(struct sccb *p_sccb, unsigned char p_card) { - PSCCBMgr_tar_info currTar_Info; + struct sccb_mgr_tar_info *currTar_Info; currTar_Info = &FPT_sccbMgrTbl[p_card][p_sccb->TargID]; - if(((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - FPT_BL_Card[p_card].discQ_Tbl[currTar_Info->LunDiscQ_Idx[p_sccb->Lun]] = p_sccb; - } - else - { - if (p_sccb->Sccb_tag) - { - FPT_BL_Card[p_card].discQ_Tbl[p_sccb->Sccb_tag] = p_sccb; - FPT_sccbMgrTbl[p_card][p_sccb->TargID].TarLUNBusy[0] = 0; + if (((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) { + FPT_BL_Card[p_card].discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[p_sccb->Lun]] = + p_sccb; + } else { + if (p_sccb->Sccb_tag) { + FPT_BL_Card[p_card].discQ_Tbl[p_sccb->Sccb_tag] = + p_sccb; + FPT_sccbMgrTbl[p_card][p_sccb->TargID].TarLUNBusy[0] = + 0; FPT_sccbMgrTbl[p_card][p_sccb->TargID].TarTagQ_Cnt++; - }else - { - FPT_BL_Card[p_card].discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]] = p_sccb; + } else { + FPT_BL_Card[p_card].discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[0]] = p_sccb; } } FPT_BL_Card[p_card].currentSCCB = NULL; } - /*--------------------------------------------------------------------- * * Function: Queue Flush SCCB @@ -7612,33 +7042,35 @@ static void FPT_queueDisconnect(PSCCB p_ * *---------------------------------------------------------------------*/ -static void FPT_queueFlushSccb(UCHAR p_card, UCHAR error_code) +static void FPT_queueFlushSccb(unsigned char p_card, unsigned char error_code) { - UCHAR qtag,thisTarg; - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; + unsigned char qtag, thisTarg; + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; - currSCCB = FPT_BL_Card[p_card].currentSCCB; - if(currSCCB != NULL) - { - thisTarg = (UCHAR)currSCCB->TargID; - currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; + currSCCB = FPT_BL_Card[p_card].currentSCCB; + if (currSCCB != NULL) { + thisTarg = (unsigned char)currSCCB->TargID; + currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; - for (qtag=0; qtagTargID == thisTarg)) - { + if (FPT_BL_Card[p_card].discQ_Tbl[qtag] && + (FPT_BL_Card[p_card].discQ_Tbl[qtag]->TargID == + thisTarg)) { - FPT_BL_Card[p_card].discQ_Tbl[qtag]->HostStatus = (UCHAR)error_code; - - FPT_queueCmdComplete(&FPT_BL_Card[p_card],FPT_BL_Card[p_card].discQ_Tbl[qtag], p_card); + FPT_BL_Card[p_card].discQ_Tbl[qtag]-> + HostStatus = (unsigned char)error_code; - FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; - currTar_Info->TarTagQ_Cnt--; + FPT_queueCmdComplete(&FPT_BL_Card[p_card], + FPT_BL_Card[p_card]. + discQ_Tbl[qtag], p_card); - } - } + FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; + currTar_Info->TarTagQ_Cnt--; + + } + } } } @@ -7651,61 +7083,57 @@ static void FPT_queueFlushSccb(UCHAR p_ * *---------------------------------------------------------------------*/ -static void FPT_queueFlushTargSccb(UCHAR p_card, UCHAR thisTarg, - UCHAR error_code) +static void FPT_queueFlushTargSccb(unsigned char p_card, unsigned char thisTarg, + unsigned char error_code) { - UCHAR qtag; - PSCCBMgr_tar_info currTar_Info; + unsigned char qtag; + struct sccb_mgr_tar_info *currTar_Info; - currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; + currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; - for (qtag=0; qtagTargID == thisTarg)) - { + if (FPT_BL_Card[p_card].discQ_Tbl[qtag] && + (FPT_BL_Card[p_card].discQ_Tbl[qtag]->TargID == thisTarg)) { - FPT_BL_Card[p_card].discQ_Tbl[qtag]->HostStatus = (UCHAR)error_code; + FPT_BL_Card[p_card].discQ_Tbl[qtag]->HostStatus = + (unsigned char)error_code; - FPT_queueCmdComplete(&FPT_BL_Card[p_card],FPT_BL_Card[p_card].discQ_Tbl[qtag], p_card); + FPT_queueCmdComplete(&FPT_BL_Card[p_card], + FPT_BL_Card[p_card]. + discQ_Tbl[qtag], p_card); - FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; - currTar_Info->TarTagQ_Cnt--; + FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; + currTar_Info->TarTagQ_Cnt--; - } - } + } + } } - - - - -static void FPT_queueAddSccb(PSCCB p_SCCB, UCHAR p_card) +static void FPT_queueAddSccb(struct sccb *p_SCCB, unsigned char p_card) { - PSCCBMgr_tar_info currTar_Info; - currTar_Info = &FPT_sccbMgrTbl[p_card][p_SCCB->TargID]; + struct sccb_mgr_tar_info *currTar_Info; + currTar_Info = &FPT_sccbMgrTbl[p_card][p_SCCB->TargID]; - p_SCCB->Sccb_forwardlink = NULL; + p_SCCB->Sccb_forwardlink = NULL; - p_SCCB->Sccb_backlink = currTar_Info->TarSelQ_Tail; + p_SCCB->Sccb_backlink = currTar_Info->TarSelQ_Tail; - if (currTar_Info->TarSelQ_Cnt == 0) { + if (currTar_Info->TarSelQ_Cnt == 0) { - currTar_Info->TarSelQ_Head = p_SCCB; - } - - else { + currTar_Info->TarSelQ_Head = p_SCCB; + } - currTar_Info->TarSelQ_Tail->Sccb_forwardlink = p_SCCB; - } + else { + currTar_Info->TarSelQ_Tail->Sccb_forwardlink = p_SCCB; + } - currTar_Info->TarSelQ_Tail = p_SCCB; - currTar_Info->TarSelQ_Cnt++; + currTar_Info->TarSelQ_Tail = p_SCCB; + currTar_Info->TarSelQ_Cnt++; } - /*--------------------------------------------------------------------- * * Function: Queue Find SCCB @@ -7715,54 +7143,56 @@ static void FPT_queueAddSccb(PSCCB p_SCC * *---------------------------------------------------------------------*/ -static UCHAR FPT_queueFindSccb(PSCCB p_SCCB, UCHAR p_card) +static unsigned char FPT_queueFindSccb(struct sccb *p_SCCB, + unsigned char p_card) { - PSCCB q_ptr; - PSCCBMgr_tar_info currTar_Info; + struct sccb *q_ptr; + struct sccb_mgr_tar_info *currTar_Info; - currTar_Info = &FPT_sccbMgrTbl[p_card][p_SCCB->TargID]; + currTar_Info = &FPT_sccbMgrTbl[p_card][p_SCCB->TargID]; - q_ptr = currTar_Info->TarSelQ_Head; + q_ptr = currTar_Info->TarSelQ_Head; - while(q_ptr != NULL) { + while (q_ptr != NULL) { - if (q_ptr == p_SCCB) { + if (q_ptr == p_SCCB) { + if (currTar_Info->TarSelQ_Head == q_ptr) { - if (currTar_Info->TarSelQ_Head == q_ptr) { - - currTar_Info->TarSelQ_Head = q_ptr->Sccb_forwardlink; + currTar_Info->TarSelQ_Head = + q_ptr->Sccb_forwardlink; } - if (currTar_Info->TarSelQ_Tail == q_ptr) { + if (currTar_Info->TarSelQ_Tail == q_ptr) { - currTar_Info->TarSelQ_Tail = q_ptr->Sccb_backlink; + currTar_Info->TarSelQ_Tail = + q_ptr->Sccb_backlink; } - if (q_ptr->Sccb_forwardlink != NULL) { - q_ptr->Sccb_forwardlink->Sccb_backlink = q_ptr->Sccb_backlink; + if (q_ptr->Sccb_forwardlink != NULL) { + q_ptr->Sccb_forwardlink->Sccb_backlink = + q_ptr->Sccb_backlink; } - if (q_ptr->Sccb_backlink != NULL) { - q_ptr->Sccb_backlink->Sccb_forwardlink = q_ptr->Sccb_forwardlink; + if (q_ptr->Sccb_backlink != NULL) { + q_ptr->Sccb_backlink->Sccb_forwardlink = + q_ptr->Sccb_forwardlink; } - currTar_Info->TarSelQ_Cnt--; - - return(1); - } + currTar_Info->TarSelQ_Cnt--; - else { - q_ptr = q_ptr->Sccb_forwardlink; - } - } + return 1; + } + else { + q_ptr = q_ptr->Sccb_forwardlink; + } + } - return(0); + return 0; } - /*--------------------------------------------------------------------- * * Function: Utility Update Residual Count @@ -7776,48 +7206,47 @@ static UCHAR FPT_queueFindSccb(PSCCB p_S * *---------------------------------------------------------------------*/ -static void FPT_utilUpdateResidual(PSCCB p_SCCB) +static void FPT_utilUpdateResidual(struct sccb *p_SCCB) { - ULONG partial_cnt; - UINT sg_index; - ULONG *sg_ptr; + unsigned long partial_cnt; + unsigned int sg_index; + unsigned long *sg_ptr; - if (p_SCCB->Sccb_XferState & F_ALL_XFERRED) { + if (p_SCCB->Sccb_XferState & F_ALL_XFERRED) { - p_SCCB->DataLength = 0x0000; - } + p_SCCB->DataLength = 0x0000; + } - else if (p_SCCB->Sccb_XferState & F_SG_XFER) { + else if (p_SCCB->Sccb_XferState & F_SG_XFER) { - partial_cnt = 0x0000; + partial_cnt = 0x0000; - sg_index = p_SCCB->Sccb_sgseg; + sg_index = p_SCCB->Sccb_sgseg; - sg_ptr = (ULONG *)p_SCCB->DataPointer; + sg_ptr = (unsigned long *)p_SCCB->DataPointer; - if (p_SCCB->Sccb_SGoffset) { + if (p_SCCB->Sccb_SGoffset) { partial_cnt = p_SCCB->Sccb_SGoffset; sg_index++; - } + } - while ( ((ULONG)sg_index * (ULONG)SG_ELEMENT_SIZE) < - p_SCCB->DataLength ) { + while (((unsigned long)sg_index * + (unsigned long)SG_ELEMENT_SIZE) < p_SCCB->DataLength) { - partial_cnt += *(sg_ptr+(sg_index * 2)); + partial_cnt += *(sg_ptr + (sg_index * 2)); sg_index++; - } + } - p_SCCB->DataLength = partial_cnt; - } + p_SCCB->DataLength = partial_cnt; + } - else { + else { - p_SCCB->DataLength -= p_SCCB->Sccb_ATC; - } + p_SCCB->DataLength -= p_SCCB->Sccb_ATC; + } } - /*--------------------------------------------------------------------- * * Function: Wait 1 Second @@ -7826,23 +7255,22 @@ static void FPT_utilUpdateResidual(PSCC * *---------------------------------------------------------------------*/ -static void FPT_Wait1Second(ULONG p_port) +static void FPT_Wait1Second(unsigned long p_port) { - UCHAR i; + unsigned char i; - for(i=0; i < 4; i++) { + for (i = 0; i < 4; i++) { - FPT_Wait(p_port, TO_250ms); + FPT_Wait(p_port, TO_250ms); - if ((RD_HARPOON(p_port+hp_scsictrl_0) & SCSI_RST)) - break; + if ((RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST)) + break; - if((RDW_HARPOON((p_port+hp_intstat)) & SCAM_SEL)) - break; - } + if ((RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) + break; + } } - /*--------------------------------------------------------------------- * * Function: FPT_Wait @@ -7851,45 +7279,43 @@ static void FPT_Wait1Second(ULONG p_port * *---------------------------------------------------------------------*/ -static void FPT_Wait(ULONG p_port, UCHAR p_delay) +static void FPT_Wait(unsigned long p_port, unsigned char p_delay) { - UCHAR old_timer; - UCHAR green_flag; + unsigned char old_timer; + unsigned char green_flag; - old_timer = RD_HARPOON(p_port+hp_seltimeout); + old_timer = RD_HARPOON(p_port + hp_seltimeout); - green_flag=RD_HARPOON(p_port+hp_clkctrl_0); - WR_HARPOON(p_port+hp_clkctrl_0, CLKCTRL_DEFAULT); + green_flag = RD_HARPOON(p_port + hp_clkctrl_0); + WR_HARPOON(p_port + hp_clkctrl_0, CLKCTRL_DEFAULT); - WR_HARPOON(p_port+hp_seltimeout,p_delay); - WRW_HARPOON((p_port+hp_intstat), TIMEOUT); - WRW_HARPOON((p_port+hp_intena), (FPT_default_intena & ~TIMEOUT)); + WR_HARPOON(p_port + hp_seltimeout, p_delay); + WRW_HARPOON((p_port + hp_intstat), TIMEOUT); + WRW_HARPOON((p_port + hp_intena), (FPT_default_intena & ~TIMEOUT)); + WR_HARPOON(p_port + hp_portctrl_0, + (RD_HARPOON(p_port + hp_portctrl_0) | START_TO)); - WR_HARPOON(p_port+hp_portctrl_0, - (RD_HARPOON(p_port+hp_portctrl_0) | START_TO)); + while (!(RDW_HARPOON((p_port + hp_intstat)) & TIMEOUT)) { - while (!(RDW_HARPOON((p_port+hp_intstat)) & TIMEOUT)) { + if ((RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST)) + break; - if ((RD_HARPOON(p_port+hp_scsictrl_0) & SCSI_RST)) - break; - - if ((RDW_HARPOON((p_port+hp_intstat)) & SCAM_SEL)) - break; - } + if ((RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) + break; + } - WR_HARPOON(p_port+hp_portctrl_0, - (RD_HARPOON(p_port+hp_portctrl_0) & ~START_TO)); + WR_HARPOON(p_port + hp_portctrl_0, + (RD_HARPOON(p_port + hp_portctrl_0) & ~START_TO)); - WRW_HARPOON((p_port+hp_intstat), TIMEOUT); - WRW_HARPOON((p_port+hp_intena), FPT_default_intena); + WRW_HARPOON((p_port + hp_intstat), TIMEOUT); + WRW_HARPOON((p_port + hp_intena), FPT_default_intena); - WR_HARPOON(p_port+hp_clkctrl_0,green_flag); + WR_HARPOON(p_port + hp_clkctrl_0, green_flag); - WR_HARPOON(p_port+hp_seltimeout,old_timer); + WR_HARPOON(p_port + hp_seltimeout, old_timer); } - /*--------------------------------------------------------------------- * * Function: Enable/Disable Write to EEPROM @@ -7899,26 +7325,26 @@ static void FPT_Wait(ULONG p_port, UCHAR * *---------------------------------------------------------------------*/ -static void FPT_utilEEWriteOnOff(ULONG p_port,UCHAR p_mode) +static void FPT_utilEEWriteOnOff(unsigned long p_port, unsigned char p_mode) { - UCHAR ee_value; - - ee_value = (UCHAR)(RD_HARPOON(p_port+hp_ee_ctrl) & (EXT_ARB_ACK | SCSI_TERM_ENA_H)); + unsigned char ee_value; - if (p_mode) + ee_value = + (unsigned char)(RD_HARPOON(p_port + hp_ee_ctrl) & + (EXT_ARB_ACK | SCSI_TERM_ENA_H)); - FPT_utilEESendCmdAddr(p_port, EWEN, EWEN_ADDR); + if (p_mode) - else + FPT_utilEESendCmdAddr(p_port, EWEN, EWEN_ADDR); + else - FPT_utilEESendCmdAddr(p_port, EWDS, EWDS_ADDR); + FPT_utilEESendCmdAddr(p_port, EWDS, EWDS_ADDR); - WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); /*Turn off Master Select */ + WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /*Turn off Master Select */ } - /*--------------------------------------------------------------------- * * Function: Write EEPROM @@ -7928,46 +7354,46 @@ static void FPT_utilEEWriteOnOff(ULONG p * *---------------------------------------------------------------------*/ -static void FPT_utilEEWrite(ULONG p_port, USHORT ee_data, USHORT ee_addr) +static void FPT_utilEEWrite(unsigned long p_port, unsigned short ee_data, + unsigned short ee_addr) { - UCHAR ee_value; - USHORT i; - - ee_value = (UCHAR)((RD_HARPOON(p_port+hp_ee_ctrl) & (EXT_ARB_ACK | SCSI_TERM_ENA_H))| - (SEE_MS | SEE_CS)); - - + unsigned char ee_value; + unsigned short i; - FPT_utilEESendCmdAddr(p_port, EE_WRITE, ee_addr); + ee_value = + (unsigned + char)((RD_HARPOON(p_port + hp_ee_ctrl) & + (EXT_ARB_ACK | SCSI_TERM_ENA_H)) | (SEE_MS | SEE_CS)); + FPT_utilEESendCmdAddr(p_port, EE_WRITE, ee_addr); - ee_value |= (SEE_MS + SEE_CS); + ee_value |= (SEE_MS + SEE_CS); - for(i = 0x8000; i != 0; i>>=1) { + for (i = 0x8000; i != 0; i >>= 1) { - if (i & ee_data) - ee_value |= SEE_DO; - else - ee_value &= ~SEE_DO; - - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value |= SEE_CLK; /* Clock data! */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value &= ~SEE_CLK; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - } - ee_value &= (EXT_ARB_ACK | SCSI_TERM_ENA_H); - WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS)); - - FPT_Wait(p_port, TO_10ms); + if (i & ee_data) + ee_value |= SEE_DO; + else + ee_value &= ~SEE_DO; - WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS | SEE_CS)); /* Set CS to EEPROM */ - WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS)); /* Turn off CS */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); /* Turn off Master Select */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value |= SEE_CLK; /* Clock data! */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value &= ~SEE_CLK; + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + } + ee_value &= (EXT_ARB_ACK | SCSI_TERM_ENA_H); + WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); + + FPT_Wait(p_port, TO_10ms); + + WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS | SEE_CS)); /* Set CS to EEPROM */ + WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /* Turn off CS */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /* Turn off Master Select */ } /*--------------------------------------------------------------------- @@ -7979,25 +7405,25 @@ static void FPT_utilEEWrite(ULONG p_port * *---------------------------------------------------------------------*/ -static USHORT FPT_utilEERead(ULONG p_port, USHORT ee_addr) +static unsigned short FPT_utilEERead(unsigned long p_port, + unsigned short ee_addr) { - USHORT i, ee_data1, ee_data2; + unsigned short i, ee_data1, ee_data2; i = 0; ee_data1 = FPT_utilEEReadOrg(p_port, ee_addr); - do - { + do { ee_data2 = FPT_utilEEReadOrg(p_port, ee_addr); - if(ee_data1 == ee_data2) - return(ee_data1); + if (ee_data1 == ee_data2) + return ee_data1; ee_data1 = ee_data2; i++; - }while(i < 4); + } while (i < 4); - return(ee_data1); + return ee_data1; } /*--------------------------------------------------------------------- @@ -8009,45 +7435,45 @@ static USHORT FPT_utilEERead(ULONG p_por * *---------------------------------------------------------------------*/ -static USHORT FPT_utilEEReadOrg(ULONG p_port, USHORT ee_addr) +static unsigned short FPT_utilEEReadOrg(unsigned long p_port, + unsigned short ee_addr) { - UCHAR ee_value; - USHORT i, ee_data; + unsigned char ee_value; + unsigned short i, ee_data; - ee_value = (UCHAR)((RD_HARPOON(p_port+hp_ee_ctrl) & (EXT_ARB_ACK | SCSI_TERM_ENA_H))| - (SEE_MS | SEE_CS)); + ee_value = + (unsigned + char)((RD_HARPOON(p_port + hp_ee_ctrl) & + (EXT_ARB_ACK | SCSI_TERM_ENA_H)) | (SEE_MS | SEE_CS)); + FPT_utilEESendCmdAddr(p_port, EE_READ, ee_addr); - FPT_utilEESendCmdAddr(p_port, EE_READ, ee_addr); + ee_value |= (SEE_MS + SEE_CS); + ee_data = 0; + for (i = 1; i <= 16; i++) { - ee_value |= (SEE_MS + SEE_CS); - ee_data = 0; + ee_value |= SEE_CLK; /* Clock data! */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value &= ~SEE_CLK; + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); - for(i = 1; i <= 16; i++) { + ee_data <<= 1; - ee_value |= SEE_CLK; /* Clock data! */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value &= ~SEE_CLK; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - - ee_data <<= 1; - - if (RD_HARPOON(p_port+hp_ee_ctrl) & SEE_DI) - ee_data |= 1; - } + if (RD_HARPOON(p_port + hp_ee_ctrl) & SEE_DI) + ee_data |= 1; + } - ee_value &= ~(SEE_MS + SEE_CS); - WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); /*Turn off Master Select */ + ee_value &= ~(SEE_MS + SEE_CS); + WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /*Turn off Master Select */ - return(ee_data); + return ee_data; } - /*--------------------------------------------------------------------- * * Function: Send EE command and Address to the EEPROM @@ -8057,101 +7483,95 @@ static USHORT FPT_utilEEReadOrg(ULONG p_ * *---------------------------------------------------------------------*/ -static void FPT_utilEESendCmdAddr(ULONG p_port, UCHAR ee_cmd, USHORT ee_addr) +static void FPT_utilEESendCmdAddr(unsigned long p_port, unsigned char ee_cmd, + unsigned short ee_addr) { - UCHAR ee_value; - UCHAR narrow_flg; + unsigned char ee_value; + unsigned char narrow_flg; - USHORT i; + unsigned short i; + narrow_flg = + (unsigned char)(RD_HARPOON(p_port + hp_page_ctrl) & + NARROW_SCSI_CARD); - narrow_flg= (UCHAR)(RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD); + ee_value = SEE_MS; + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value |= SEE_CS; /* Set CS to EEPROM */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); - ee_value = SEE_MS; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); + for (i = 0x04; i != 0; i >>= 1) { - ee_value |= SEE_CS; /* Set CS to EEPROM */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - - - for(i = 0x04; i != 0; i>>=1) { - - if (i & ee_cmd) - ee_value |= SEE_DO; - else - ee_value &= ~SEE_DO; + if (i & ee_cmd) + ee_value |= SEE_DO; + else + ee_value &= ~SEE_DO; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value |= SEE_CLK; /* Clock data! */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value &= ~SEE_CLK; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - } + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value |= SEE_CLK; /* Clock data! */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value &= ~SEE_CLK; + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + } + if (narrow_flg) + i = 0x0080; - if (narrow_flg) - i = 0x0080; + else + i = 0x0200; - else - i = 0x0200; + while (i != 0) { + if (i & ee_addr) + ee_value |= SEE_DO; + else + ee_value &= ~SEE_DO; - while (i != 0) { + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value |= SEE_CLK; /* Clock data! */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value &= ~SEE_CLK; + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + + i >>= 1; + } +} - if (i & ee_addr) - ee_value |= SEE_DO; - else - ee_value &= ~SEE_DO; - - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value |= SEE_CLK; /* Clock data! */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value &= ~SEE_CLK; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - - i >>= 1; - } -} - -static USHORT FPT_CalcCrc16(UCHAR buffer[]) -{ - USHORT crc=0; - int i,j; - USHORT ch; - for (i=0; i < ID_STRING_LENGTH; i++) - { - ch = (USHORT) buffer[i]; - for(j=0; j < 8; j++) - { - if ((crc ^ ch) & 1) - crc = (crc >> 1) ^ CRCMASK; - else - crc >>= 1; - ch >>= 1; - } - } - return(crc); +static unsigned short FPT_CalcCrc16(unsigned char buffer[]) +{ + unsigned short crc = 0; + int i, j; + unsigned short ch; + for (i = 0; i < ID_STRING_LENGTH; i++) { + ch = (unsigned short)buffer[i]; + for (j = 0; j < 8; j++) { + if ((crc ^ ch) & 1) + crc = (crc >> 1) ^ CRCMASK; + else + crc >>= 1; + ch >>= 1; + } + } + return crc; } -static UCHAR FPT_CalcLrc(UCHAR buffer[]) +static unsigned char FPT_CalcLrc(unsigned char buffer[]) { int i; - UCHAR lrc; + unsigned char lrc; lrc = 0; - for(i = 0; i < ID_STRING_LENGTH; i++) + for (i = 0; i < ID_STRING_LENGTH; i++) lrc ^= buffer[i]; - return(lrc); + return lrc; } - - /* The following inline definitions avoid type conflicts. */ @@ -8159,51 +7579,49 @@ static UCHAR FPT_CalcLrc(UCHAR buffer[]) static inline unsigned char FlashPoint__ProbeHostAdapter(struct FlashPoint_Info *FlashPointInfo) { - return FlashPoint_ProbeHostAdapter((PSCCBMGR_INFO) FlashPointInfo); + return FlashPoint_ProbeHostAdapter((struct sccb_mgr_info *) + FlashPointInfo); } - static inline FlashPoint_CardHandle_T FlashPoint__HardwareResetHostAdapter(struct FlashPoint_Info *FlashPointInfo) { - return FlashPoint_HardwareResetHostAdapter((PSCCBMGR_INFO) FlashPointInfo); + return FlashPoint_HardwareResetHostAdapter((struct sccb_mgr_info *) + FlashPointInfo); } static inline void FlashPoint__ReleaseHostAdapter(FlashPoint_CardHandle_T CardHandle) { - FlashPoint_ReleaseHostAdapter(CardHandle); + FlashPoint_ReleaseHostAdapter(CardHandle); } - static inline void -FlashPoint__StartCCB(FlashPoint_CardHandle_T CardHandle, struct BusLogic_CCB *CCB) +FlashPoint__StartCCB(FlashPoint_CardHandle_T CardHandle, + struct BusLogic_CCB *CCB) { - FlashPoint_StartCCB(CardHandle, (PSCCB) CCB); + FlashPoint_StartCCB(CardHandle, (struct sccb *)CCB); } - static inline void -FlashPoint__AbortCCB(FlashPoint_CardHandle_T CardHandle, struct BusLogic_CCB *CCB) +FlashPoint__AbortCCB(FlashPoint_CardHandle_T CardHandle, + struct BusLogic_CCB *CCB) { - FlashPoint_AbortCCB(CardHandle, (PSCCB) CCB); + FlashPoint_AbortCCB(CardHandle, (struct sccb *)CCB); } - static inline boolean FlashPoint__InterruptPending(FlashPoint_CardHandle_T CardHandle) { - return FlashPoint_InterruptPending(CardHandle); + return FlashPoint_InterruptPending(CardHandle); } - static inline int FlashPoint__HandleInterrupt(FlashPoint_CardHandle_T CardHandle) { - return FlashPoint_HandleInterrupt(CardHandle); + return FlashPoint_HandleInterrupt(CardHandle); } - #define FlashPoint_ProbeHostAdapter FlashPoint__ProbeHostAdapter #define FlashPoint_HardwareResetHostAdapter FlashPoint__HardwareResetHostAdapter #define FlashPoint_ReleaseHostAdapter FlashPoint__ReleaseHostAdapter @@ -8212,9 +7630,7 @@ FlashPoint__HandleInterrupt(FlashPoint_C #define FlashPoint_InterruptPending FlashPoint__InterruptPending #define FlashPoint_HandleInterrupt FlashPoint__HandleInterrupt - -#else /* CONFIG_SCSI_OMIT_FLASHPOINT */ - +#else /* CONFIG_SCSI_OMIT_FLASHPOINT */ /* Define prototypes for the FlashPoint SCCB Manager Functions. @@ -8222,12 +7638,11 @@ FlashPoint__HandleInterrupt(FlashPoint_C extern unsigned char FlashPoint_ProbeHostAdapter(struct FlashPoint_Info *); extern FlashPoint_CardHandle_T - FlashPoint_HardwareResetHostAdapter(struct FlashPoint_Info *); +FlashPoint_HardwareResetHostAdapter(struct FlashPoint_Info *); extern void FlashPoint_StartCCB(FlashPoint_CardHandle_T, struct BusLogic_CCB *); extern int FlashPoint_AbortCCB(FlashPoint_CardHandle_T, struct BusLogic_CCB *); extern boolean FlashPoint_InterruptPending(FlashPoint_CardHandle_T); extern int FlashPoint_HandleInterrupt(FlashPoint_CardHandle_T); extern void FlashPoint_ReleaseHostAdapter(FlashPoint_CardHandle_T); - -#endif /* CONFIG_SCSI_OMIT_FLASHPOINT */ +#endif /* CONFIG_SCSI_OMIT_FLASHPOINT */ --- a/drivers/scsi/a100u2w.c +++ b/drivers/scsi/a100u2w.c @@ -89,6 +89,7 @@ #include #include #include +#include #include #include @@ -1052,7 +1053,7 @@ static int __devinit inia100_probe_one(s if (pci_enable_device(pdev)) goto out; - if (pci_set_dma_mask(pdev, 0xffffffffULL)) { + if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { printk(KERN_WARNING "Unable to set 32bit DMA " "on inia100 adapter, ignoring.\n"); goto out_disable_device; --- a/drivers/scsi/ahci.c +++ b/drivers/scsi/ahci.c @@ -793,7 +793,7 @@ static int ahci_host_init(struct ata_pro void __iomem *mmio = probe_ent->mmio_base; u32 tmp, cap_save; u16 tmp16; - unsigned int i, j, using_dac; + unsigned int i, using_dac; int rc; void __iomem *port_mmio; @@ -865,6 +865,7 @@ static int ahci_host_init(struct ata_pro } for (i = 0; i < probe_ent->n_ports; i++) { + unsigned long end_time; #if 0 /* BIOSen initialize this incorrectly */ if (!(hpriv->port_map & (1 << i))) continue; @@ -894,13 +895,12 @@ static int ahci_host_init(struct ata_pro writel(PORT_CMD_SPIN_UP, port_mmio + PORT_CMD); - j = 0; - while (j < 100) { + end_time = jiffies + msecs_to_jiffies(1000); + while (time_before(jiffies, end_time)) { msleep(10); tmp = readl(port_mmio + PORT_SCR_STAT); if ((tmp & 0xf) == 0x3) break; - j++; } tmp = readl(port_mmio + PORT_SCR_ERR); --- a/drivers/scsi/atp870u.c +++ b/drivers/scsi/atp870u.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -2631,7 +2632,7 @@ static int atp870u_probe(struct pci_dev if (pci_enable_device(pdev)) return -EIO; - if (!pci_set_dma_mask(pdev, 0xFFFFFFFFUL)) { + if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { printk(KERN_INFO "atp870u: use 32bit DMA mask.\n"); } else { printk(KERN_ERR "atp870u: DMA mask required but not available.\n"); --- a/drivers/scsi/dpt_i2o.c +++ b/drivers/scsi/dpt_i2o.c @@ -62,6 +62,7 @@ MODULE_DESCRIPTION("Adaptec I2O RAID Dri #include #include #include +#include #include /* for boot_cpu_data */ #include @@ -906,8 +907,8 @@ static int adpt_install_hba(struct scsi_ } pci_set_master(pDev); - if (pci_set_dma_mask(pDev, 0xffffffffffffffffULL) && - pci_set_dma_mask(pDev, 0xffffffffULL)) + if (pci_set_dma_mask(pDev, DMA_64BIT_MASK) && + pci_set_dma_mask(pDev, DMA_32BIT_MASK)) return -EINVAL; base_addr0_phys = pci_resource_start(pDev,0); --- a/drivers/scsi/eata.c +++ b/drivers/scsi/eata.c @@ -490,6 +490,7 @@ #include #include #include +#include #include #include #include @@ -1426,7 +1427,7 @@ static int port_detect(unsigned long por if (ha->pdev) { pci_set_master(ha->pdev); - if (pci_set_dma_mask(ha->pdev, 0xffffffff)) + if (pci_set_dma_mask(ha->pdev, DMA_32BIT_MASK)) printk("%s: warning, pci_set_dma_mask failed.\n", ha->board_name); } --- a/drivers/scsi/gdth.c +++ b/drivers/scsi/gdth.c @@ -400,6 +400,7 @@ #include #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) #include +#include #else #include #include "sd.h" @@ -4527,15 +4528,15 @@ static int __init gdth_detect(struct scs if (!(ha->cache_feat & ha->raw_feat & ha->screen_feat &GDT_64BIT)|| /* 64-bit DMA only supported from FW >= x.43 */ (!ha->dma64_support)) { - if (pci_set_dma_mask(pcistr[ctr].pdev, 0xffffffff)) { + if (pci_set_dma_mask(pcistr[ctr].pdev, DMA_32BIT_MASK)) { printk(KERN_WARNING "GDT-PCI %d: Unable to set 32-bit DMA\n", hanum); err = TRUE; } } else { shp->max_cmd_len = 16; - if (!pci_set_dma_mask(pcistr[ctr].pdev, 0xffffffffffffffffULL)) { + if (!pci_set_dma_mask(pcistr[ctr].pdev, DMA_64BIT_MASK)) { printk("GDT-PCI %d: 64-bit DMA enabled\n", hanum); - } else if (pci_set_dma_mask(pcistr[ctr].pdev, 0xffffffff)) { + } else if (pci_set_dma_mask(pcistr[ctr].pdev, DMA_32BIT_MASK)) { printk(KERN_WARNING "GDT-PCI %d: Unable to set 64/32-bit DMA\n", hanum); err = TRUE; } --- a/drivers/scsi/gdth_proc.c +++ b/drivers/scsi/gdth_proc.c @@ -3,6 +3,7 @@ */ #include +#include #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) int gdth_proc_info(struct Scsi_Host *host, char *buffer,char **start,off_t offset,int length, --- a/drivers/scsi/ibmmca.c +++ b/drivers/scsi/ibmmca.c @@ -1001,12 +1001,11 @@ static char *ti_p(int dev) /* interpreter for logical device numbers (ldn) */ static char *ti_l(int val) { - const char hex[16] = "0123456789abcdef"; static char answer[2]; answer[1] = (char) (0x0); if (val <= MAX_LOG_DEV) - answer[0] = hex[val]; + answer[0] = small_digits[val]; else answer[0] = '-'; return (char *) &answer; --- a/drivers/scsi/initio.c +++ b/drivers/scsi/initio.c @@ -127,6 +127,7 @@ #include #include #include +#include #include #include @@ -2780,7 +2781,7 @@ static int tul_NewReturnNumberOfAdapters if (((dRegValue & 0xFF00) >> 8) == 0xFF) dRegValue = 0; wBIOS = (wBIOS << 8) + ((UWORD) ((dRegValue & 0xFF00) >> 8)); - if (pci_set_dma_mask(pDev, 0xffffffff)) { + if (pci_set_dma_mask(pDev, DMA_32BIT_MASK)) { printk(KERN_WARNING "i91u: Could not set 32 bit DMA mask\n"); continue; --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c @@ -176,7 +176,7 @@ #include #include #include - +#include #include #include @@ -7282,10 +7282,10 @@ ips_init_phase1(struct pci_dev *pci_dev, * are guaranteed to be < 4G. */ if (IPS_ENABLE_DMA64 && IPS_HAS_ENH_SGLIST(ha) && - !pci_set_dma_mask(ha->pcidev, 0xffffffffffffffffULL)) { + !pci_set_dma_mask(ha->pcidev, DMA_64BIT_MASK)) { (ha)->flags |= IPS_HA_ENH_SG; } else { - if (pci_set_dma_mask(ha->pcidev, 0xffffffffULL) != 0) { + if (pci_set_dma_mask(ha->pcidev, DMA_32BIT_MASK) != 0) { printk(KERN_WARNING "Unable to set DMA Mask\n"); return ips_abort_init(ha, index); } --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c @@ -21,6 +21,7 @@ #include #include +#include #include #include @@ -947,7 +948,7 @@ lpfc_abort_handler(struct scsi_cmnd *cmn lpfc_sli_poll_fcp_ring (phba); spin_unlock_irq(phba->host->host_lock); - schedule_timeout_uninterruptible(LPFC_ABORT_WAIT*HZ); + ssleep(LPFC_ABORT_WAIT); spin_lock_irq(phba->host->host_lock); if (++loop_count > (2 * phba->cfg_nodev_tmo)/LPFC_ABORT_WAIT) @@ -1002,7 +1003,7 @@ lpfc_reset_lun_handler(struct scsi_cmnd if (pnode->nlp_state != NLP_STE_MAPPED_NODE) { spin_unlock_irq(phba->host->host_lock); - schedule_timeout_uninterruptible(msecs_to_jiffies(500)); + msleep(500); spin_lock_irq(phba->host->host_lock); } if ((pnode) && (pnode->nlp_state == NLP_STE_MAPPED_NODE)) @@ -1057,7 +1058,7 @@ lpfc_reset_lun_handler(struct scsi_cmnd loopcnt = 0; while(cnt) { spin_unlock_irq(phba->host->host_lock); - schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); + ssleep(LPFC_RESET_WAIT); spin_lock_irq(phba->host->host_lock); if (++loopcnt @@ -1162,7 +1163,7 @@ lpfc_reset_bus_handler(struct scsi_cmnd loopcnt = 0; while(cnt) { spin_unlock_irq(phba->host->host_lock); - schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); + ssleep(LPFC_RESET_WAIT); spin_lock_irq(phba->host->host_lock); if (++loopcnt --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c @@ -45,6 +45,7 @@ #include #include #include +#include #include #include "scsi.h" @@ -2094,7 +2095,7 @@ make_local_pdev(adapter_t *adapter, stru memcpy(*pdev, adapter->dev, sizeof(struct pci_dev)); - if( pci_set_dma_mask(*pdev, 0xffffffff) != 0 ) { + if( pci_set_dma_mask(*pdev, DMA_32BIT_MASK) != 0 ) { kfree(*pdev); return -1; } @@ -4859,10 +4860,10 @@ megaraid_probe_one(struct pci_dev *pdev, /* Set the Mode of addressing to 64 bit if we can */ if ((adapter->flag & BOARD_64BIT) && (sizeof(dma_addr_t) == 8)) { - pci_set_dma_mask(pdev, 0xffffffffffffffffULL); + pci_set_dma_mask(pdev, DMA_64BIT_MASK); adapter->has_64bit_addr = 1; } else { - pci_set_dma_mask(pdev, 0xffffffff); + pci_set_dma_mask(pdev, DMA_32BIT_MASK); adapter->has_64bit_addr = 0; } --- a/drivers/scsi/megaraid/megaraid_mbox.c +++ b/drivers/scsi/megaraid/megaraid_mbox.c @@ -2768,6 +2768,7 @@ mbox_post_sync_cmd(adapter_t *adapter, u mbox_t *mbox; uint8_t status; int i; + unsigned long end_time; mbox64 = raid_dev->mbox64; @@ -2799,25 +2800,27 @@ mbox_post_sync_cmd(adapter_t *adapter, u if (mbox->numstatus == 0xFF) { // status not yet available udelay(25);; - for (i = 0; mbox->numstatus == 0xFF && i < 1000; i++) { + end_time = jiffies + msecs_to_jiffies(1000); + while (mbox->numstatus == 0xFF && time_before(jiffies, end_time)) { rmb(); msleep(1); } - if (i == 1000) { + if (time_after_eq(jiffies, end_time)) { con_log(CL_ANN, (KERN_NOTICE "megaraid mailbox: wait for FW to boot ")); + end_time = jiffies + msecs_to_jiffies(MBOX_RESET_WAIT * 1000); for (i = 0; (mbox->numstatus == 0xFF) && - (i < MBOX_RESET_WAIT); i++) { + time_before(jiffies, end_time); ++i) { rmb(); con_log(CL_ANN, ("\b\b\b\b\b[%03d]", MBOX_RESET_WAIT - i)); msleep(1000); } - if (i == MBOX_RESET_WAIT) { + if (time_after_eq(jiffies, end_time)) { con_log(CL_ANN, ( "\nmegaraid mailbox: status not available\n")); @@ -2832,12 +2835,13 @@ mbox_post_sync_cmd(adapter_t *adapter, u if (mbox->poll != 0x77) { udelay(25); - for (i = 0; (mbox->poll != 0x77) && (i < 1000); i++) { + end_time = jiffies + msecs_to_jiffies(1000); + while ((mbox->poll != 0x77) && time_before(jiffies, end_time)) { rmb(); msleep(1); } - if (i == 1000) { + if (time_after_eq(jiffies, end_time)) { con_log(CL_ANN, (KERN_WARNING "megaraid mailbox: could not get poll semaphore\n")); return -1; @@ -2851,12 +2855,13 @@ mbox_post_sync_cmd(adapter_t *adapter, u if (RDINDOOR(raid_dev) & 0x2) { udelay(25); - for (i = 0; (RDINDOOR(raid_dev) & 0x2) && (i < 1000); i++) { + end_time = jiffies + msecs_to_jiffies(1000); + while ((RDINDOOR(raid_dev) & 0x2) && time_before(jiffies, end_time)) { rmb(); msleep(1); } - if (i == 1000) { + if (time_after_eq(jiffies, end_time)) { con_log(CL_ANN, (KERN_WARNING "megaraid mailbox: could not acknowledge\n")); return -1; @@ -2947,16 +2952,19 @@ static int megaraid_busywait_mbox(mraid_device_t *raid_dev) { mbox_t *mbox = raid_dev->mbox; - int i = 0; + unsigned long end_time; if (mbox->busy) { udelay(25); - for (i = 0; mbox->busy && i < 1000; i++) + end_time = jiffies + msecs_to_jiffies(1000); + while (mbox->busy && time_before(jiffies, end_time)) msleep(1); } - if (i < 1000) return 0; - else return -1; + if (mbox->busy) + return -1; + else + return 0; } --- a/drivers/scsi/megaraid/megaraid_sas.c +++ b/drivers/scsi/megaraid/megaraid_sas.c @@ -156,8 +156,7 @@ megasas_disable_intr(struct megasas_regi static int megasas_issue_polled(struct megasas_instance *instance, struct megasas_cmd *cmd) { - int i; - u32 msecs = MFI_POLL_TIMEOUT_SECS * 1000; + unsigned long end_time; struct megasas_header *frame_hdr = &cmd->frame->hdr; @@ -173,7 +172,8 @@ megasas_issue_polled(struct megasas_inst /* * Wait for cmd_status to change */ - for (i = 0; (i < msecs) && (frame_hdr->cmd_status == 0xff); i++) { + end_time = jiffies + msecs_to_jiffies(MFI_POLL_TIMEOUT_SECS * 1000); + while ((frame_hdr->cmd_status == 0xff) && time_before(jiffies, end_time)) { rmb(); msleep(1); } @@ -719,9 +719,9 @@ megasas_queue_command(struct scsi_cmnd * static int megasas_wait_for_outstanding(struct megasas_instance *instance) { int i; - u32 wait_time = MEGASAS_RESET_WAIT_TIME; + unsigned long end_time = jiffies + msecs_to_jiffies(MEGASAS_RESET_WAIT_TIME * 1000); - for (i = 0; i < wait_time; i++) { + for (i = 0; time_before(jiffies, end_time); ++i) { if (!instance->fw_outstanding) break; @@ -1170,10 +1170,10 @@ static irqreturn_t megasas_isr(int irq, static int megasas_transition_to_ready(struct megasas_register_set __iomem * reg_set) { - int i; u8 max_wait; u32 fw_state; u32 cur_state; + unsigned long end_time; fw_state = readl(®_set->outbound_msg_0) & MFI_STATE_MASK; @@ -1252,7 +1252,8 @@ megasas_transition_to_ready(struct megas /* * The cur_state should not last for more than max_wait secs */ - for (i = 0; i < (max_wait * 1000); i++) { + end_time = jiffies + msecs_to_jiffies(max_wait * 1000); + while (time_before(jiffies, end_time)) { fw_state = MFI_STATE_MASK & readl(®_set->outbound_msg_0); --- a/drivers/scsi/nsp32.c +++ b/drivers/scsi/nsp32.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -2776,7 +2777,7 @@ static int nsp32_detect(struct scsi_host /* * setup DMA */ - if (pci_set_dma_mask(PCIDEV, 0xffffffffUL) != 0) { + if (pci_set_dma_mask(PCIDEV, DMA_32BIT_MASK) != 0) { nsp32_msg (KERN_ERR, "failed to set PCI DMA mask"); goto scsi_unregister; } --- a/drivers/scsi/osst.c +++ b/drivers/scsi/osst.c @@ -50,6 +50,7 @@ static const char * osst_version = "0.99 #include #include #include +#include #include #include #include @@ -803,7 +804,7 @@ static int osst_wait_frame(struct osst_t ) && result >= 0) { #if DEBUG - if (debugging || jiffies - startwait >= 2*HZ/OSST_POLL_PER_SEC) + if (debugging || time_after_eq(jiffies, startwait + 2*HZ/OSST_POLL_PER_SEC)) printk (OSST_DEB_MSG "%s:D: Succ wait f fr %i (>%i): %i-%i %i (%i): %3li.%li s\n", name, curr, curr+minlast, STp->first_frame_position, @@ -814,7 +815,7 @@ static int osst_wait_frame(struct osst_t return 0; } #if DEBUG - if (jiffies - startwait >= 2*HZ/OSST_POLL_PER_SEC && notyetprinted) + if (time_after_eq(jiffies, startwait + 2*HZ/OSST_POLL_PER_SEC) && notyetprinted) { printk (OSST_DEB_MSG "%s:D: Wait for frame %i (>%i): %i-%i %i (%i)\n", name, curr, curr+minlast, STp->first_frame_position, @@ -862,7 +863,7 @@ static int osst_recover_wait_frame(struc retval = osst_write_error_recovery(STp, aSRpnt, 0); break; } - schedule_timeout_interruptible(HZ / OSST_POLL_PER_SEC); + msleep(1000 / OSST_POLL_PER_SEC); STp->buffer->b_data = mybuf; STp->buffer->buffer_size = 24; memset(cmd, 0, MAX_COMMAND_SIZE); @@ -1557,7 +1558,7 @@ static int osst_reposition_and_retry(str osst_set_frame_position(STp, aSRpnt, frame + skip, 1); flag = 0; attempts--; - schedule_timeout_interruptible(msecs_to_jiffies(100)); + msleep(100); } if (osst_get_frame_position(STp, aSRpnt) < 0) { /* additional write error */ #if DEBUG @@ -1618,7 +1619,7 @@ static int osst_reposition_and_retry(str debugging = 0; } #endif - schedule_timeout_interruptible(msecs_to_jiffies(100)); + msleep(100); } printk(KERN_ERR "%s:E: Failed to find valid tape media\n", name); #if DEBUG --- a/drivers/scsi/ppa.c +++ b/drivers/scsi/ppa.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -726,7 +727,7 @@ static int ppa_engine(ppa_struct *dev, s retv--; if (retv) { - if ((jiffies - dev->jstart) > (1 * HZ)) { + if (time_after(jiffies, dev->jstart + (1 * HZ))) { printk ("ppa: Parallel port cable is unplugged!!\n"); ppa_fail(dev, DID_BUS_BUSY); --- a/drivers/scsi/qla1280.c +++ b/drivers/scsi/qla1280.c @@ -348,6 +348,7 @@ #include #include #include +#include #include #include @@ -4568,8 +4569,8 @@ qla1280_probe_one(struct pci_dev *pdev, ha->devnum = devnum; /* specifies microcode load address */ #ifdef QLA_64BIT_PTR - if (pci_set_dma_mask(ha->pdev, (dma_addr_t) ~ 0ULL)) { - if (pci_set_dma_mask(ha->pdev, 0xffffffff)) { + if (pci_set_dma_mask(ha->pdev, DMA_64BIT_MASK)) { + if (pci_set_dma_mask(ha->pdev, DMA_32BIT_MASK)) { printk(KERN_WARNING "scsi(%li): Unable to set a " "suitable DMA mask - aborting\n", ha->host_no); error = -ENODEV; @@ -4579,7 +4580,7 @@ qla1280_probe_one(struct pci_dev *pdev, dprintk(2, "scsi(%li): 64 Bit PCI Addressing Enabled\n", ha->host_no); #else - if (pci_set_dma_mask(ha->pdev, 0xffffffff)) { + if (pci_set_dma_mask(ha->pdev, DMA_32BIT_MASK)) { printk(KERN_WARNING "scsi(%li): Unable to set a " "suitable DMA mask - aborting\n", ha->host_no); error = -ENODEV; --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -2485,15 +2485,14 @@ qla2x00_timer(scsi_qla_host_t *ha) int qla2x00_down_timeout(struct semaphore *sema, unsigned long timeout) { - const unsigned int step = 100; /* msecs */ - unsigned int iterations = jiffies_to_msecs(timeout)/100; + unsigned long end_time = jiffies + timeout; do { if (!down_trylock(sema)) return 0; - if (msleep_interruptible(step)) + if (msleep_interruptible(100)) break; - } while (--iterations >= 0); + } while (time_before(jiffies, end_time)); return -ETIMEDOUT; } --- a/drivers/scsi/qlogicfc.c +++ b/drivers/scsi/qlogicfc.c @@ -61,6 +61,8 @@ #include #include #include +#include +#include #include #include #include "scsi.h" @@ -737,8 +739,8 @@ static int isp2x00_detect(struct scsi_ho continue; /* Try to configure DMA attributes. */ - if (pci_set_dma_mask(pdev, 0xffffffffffffffffULL) && - pci_set_dma_mask(pdev, 0xffffffffULL)) + if (pci_set_dma_mask(pdev, DMA_64BIT_MASK) && + pci_set_dma_mask(pdev, DMA_32BIT_MASK)) continue; host = scsi_register(tmpt, sizeof(struct isp2x00_hostdata)); @@ -1325,7 +1327,7 @@ static int isp2x00_queuecommand(Scsi_Cmn cmd->control_flags = cpu_to_le16(CFLAG_READ); if (Cmnd->device->tagged_supported) { - if ((jiffies - hostdata->tag_ages[Cmnd->device->id]) > (2 * ISP_TIMEOUT)) { + if (time_after(jiffies, hostdata->tag_ages[Cmnd->device->id] + (2 * ISP_TIMEOUT))) { cmd->control_flags |= cpu_to_le16(CFLAG_ORDERED_TAG); hostdata->tag_ages[Cmnd->device->id] = jiffies; } else --- a/drivers/scsi/qlogicpti.c +++ b/drivers/scsi/qlogicpti.c @@ -24,6 +24,7 @@ #include #include #include +#include #include @@ -1017,7 +1018,7 @@ static inline void cmd_frob(struct Comma if (Cmnd->device->tagged_supported) { if (qpti->cmd_count[Cmnd->device->id] == 0) qpti->tag_ages[Cmnd->device->id] = jiffies; - if ((jiffies - qpti->tag_ages[Cmnd->device->id]) > (5*HZ)) { + if (time_after(jiffies, qpti->tag_ages[Cmnd->device->id] + (5*HZ))) { cmd->control_flags = CFLAG_ORDERED_TAG; qpti->tag_ages[Cmnd->device->id] = jiffies; } else --- a/drivers/scsi/sata_sx4.c +++ b/drivers/scsi/sata_sx4.c @@ -1172,6 +1172,7 @@ static unsigned int pdc20621_prog_dimm_g u32 data, spd0; int error, i; void __iomem *mmio = pe->mmio_base; + unsigned long end_time; /* hard-code chip #0 */ mmio += PDC_CHIP0_OFS; @@ -1203,7 +1204,8 @@ static unsigned int pdc20621_prog_dimm_g writel(data, mmio + PDC_SDRAM_CONTROL_OFFSET); error = 1; - for (i = 1; i <= 10; i++) { /* polling ~5 secs */ + end_time = jiffies + msecs_to_jiffies(5600); + for (i = 1; time_before(jiffies, end_time); ++i) { /* polling ~5 secs */ data = readl(mmio + PDC_SDRAM_CONTROL_OFFSET); if (!(data & (1<<19))) { error = 0; --- a/drivers/scsi/ultrastor.c +++ b/drivers/scsi/ultrastor.c @@ -869,8 +869,8 @@ static int ultrastor_abort(Scsi_Cmnd *SC for (i = 0; i < 16; i++) { unsigned char p = inb(port0 + i); - out[28 + i * 3] = "0123456789abcdef"[p >> 4]; - out[29 + i * 3] = "0123456789abcdef"[p & 15]; + out[28 + i * 3] = small_digits[p >> 4]; + out[29 + i * 3] = small_digits[p & 15]; out[30 + i * 3] = ' '; } out[28 + i * 3] = '\n'; --- a/drivers/serial/68360serial.c +++ b/drivers/serial/68360serial.c @@ -1995,6 +1995,17 @@ static inline int line_info(char *buf, s info->quot = 0; info->tty = 0; } + + if (info->quot) { + ret += sprintf(buf+ret, " baud:%d", + state->baud_base / info->quot); + } + + if (!capable(CAP_SYS_RAWIO)) { + strcat(buf, "\n"); + return ret + 1; + } + local_irq_disable(); status = serial_in(info, UART_MSR); control = info ? info->MCR : serial_in(info, UART_MCR); @@ -2015,11 +2026,6 @@ static inline int line_info(char *buf, s if (status & UART_MSR_RI) strcat(stat_buf, "|RI"); - if (info->quot) { - ret += sprintf(buf+ret, " baud:%d", - state->baud_base / info->quot); - } - ret += sprintf(buf+ret, " tx:%d rx:%d", state->icount.tx, state->icount.rx); --- a/drivers/serial/crisv10.c +++ b/drivers/serial/crisv10.c @@ -4724,6 +4724,13 @@ extern _INLINE_ int line_info(char *buf, return ret; } + ret += sprintf(buf+ret, " baud:%d", info->baud); + + if (!capable(CAP_SYS_RAWIO)) { + strcat(buf, "\n"); + return ret + 1; + } + stat_buf[0] = 0; stat_buf[1] = 0; if (!E100_RTS_GET(info)) --- a/drivers/serial/icom.c +++ b/drivers/serial/icom.c @@ -350,6 +350,7 @@ static void load_code(struct icom_port * unsigned char *new_page = NULL; unsigned char cable_id = NO_CABLE; struct pci_dev *dev = icom_port->adapter->pci_dev; + unsigned long end_time; /* Clear out any pending interrupts */ writew(0x3FFF, icom_port->int_reg); @@ -461,13 +462,14 @@ static void load_code(struct icom_port * writeb(START_DOWNLOAD, &icom_port->dram->sync); /* Wait max 1 Sec for data download and processor to start */ - for (index = 0; index < 10; index++) { + end_time = jiffies + msecs_to_jiffies(1000); + while (time_before(jiffies, end_time)) { msleep(100); if (readb(&icom_port->dram->misc_flags) & ICOM_HDW_ACTIVE) break; } - if (index == 10) + if (time_after_eq(jiffies, end_time)) status = -1; /* @@ -1006,11 +1008,13 @@ static void icom_send_xchar(struct uart_ unsigned char xdata; int index; unsigned long flags; + unsigned long end_time; trace(ICOM_PORT, "SEND_XCHAR", ch); /* wait .1 sec to send char */ - for (index = 0; index < 10; index++) { + end_time = jiffies + msecs_to_jiffies(100); + while (time_before(jiffies, end_time)) { spin_lock_irqsave(&port->lock, flags); xdata = readb(&ICOM_PORT->dram->xchar); if (xdata == 0x00) { --- a/drivers/serial/mcfserial.c +++ b/drivers/serial/mcfserial.c @@ -1607,6 +1607,13 @@ int mcfrs_readproc(char *page, char **st info = &mcfrs_table[i]; len += sprintf((page + len), "%d: port:%x irq=%d baud:%d ", i, (unsigned int) info->addr, info->irq, info->baud); + + if (!capable(CAP_SYS_RAWIO)) { + strcat(page, "\n"); + len++; + continue; + } + if (info->stats.rx || info->stats.tx) len += sprintf((page + len), "tx:%d rx:%d ", info->stats.tx, info->stats.rx); --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c @@ -1644,7 +1644,7 @@ static int uart_line_info(char *buf, str return ret + 1; } - if(capable(CAP_SYS_ADMIN)) + if (capable(CAP_SYS_RAWIO)) { spin_lock_irq(&port->lock); status = port->ops->get_mctrl(port); --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c @@ -119,16 +119,14 @@ static int get_char(struct uart_port *po } /* Taken from sh-stub.c of GDB 4.18 */ -static const char hexchars[] = "0123456789abcdef"; - static __inline__ char highhex(int x) { - return hexchars[(x >> 4) & 0xf]; + return small_digits[(x >> 4) & 0xf]; } static __inline__ char lowhex(int x) { - return hexchars[x & 0xf]; + return small_digits[x & 0xf]; } #endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */ --- a/drivers/usb/atm/ueagle-atm.c +++ b/drivers/usb/atm/ueagle-atm.c @@ -62,7 +62,6 @@ #include #include #include -#include #include #include "usbatm.h" --- a/drivers/usb/class/usblp.c +++ b/drivers/usb/class/usblp.c @@ -54,6 +54,7 @@ #include #include #include +#include #undef DEBUG #include @@ -627,10 +628,10 @@ done: static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) { - DECLARE_WAITQUEUE(wait, current); struct usblp *usblp = file->private_data; - int timeout, err = 0, transfer_length = 0; + int err = 0, transfer_length = 0; size_t writecount = 0; + long ret; while (writecount < count) { if (!usblp->wcomplete) { @@ -640,23 +641,10 @@ static ssize_t usblp_write(struct file * return writecount ? writecount : -EAGAIN; } - timeout = USBLP_WRITE_TIMEOUT; - add_wait_queue(&usblp->wait, &wait); - while ( 1==1 ) { - - if (signal_pending(current)) { - remove_wait_queue(&usblp->wait, &wait); - return writecount ? writecount : -EINTR; - } - set_current_state(TASK_INTERRUPTIBLE); - if (timeout && !usblp->wcomplete) { - timeout = schedule_timeout(timeout); - } else { - set_current_state(TASK_RUNNING); - break; - } - } - remove_wait_queue(&usblp->wait, &wait); + ret = wait_event_interruptible_timeout(usblp->wait, + usblp->wcomplete, USBLP_WRITE_TIMEOUT); + if (ret == -ERESTARTSYS) + return writecount ? writecount : -EINTR; } down (&usblp->sem); --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1451,9 +1451,10 @@ static int hub_port_wait_reset(struct us int delay_time, ret; u16 portstatus; u16 portchange; + unsigned long end_time = jiffies + msecs_to_jiffies(HUB_RESET_TIMEOUT); for (delay_time = 0; - delay_time < HUB_RESET_TIMEOUT; + time_before(jiffies, end_time); delay_time += delay) { /* wait to give the device a chance to reset */ msleep(delay); @@ -2084,6 +2085,7 @@ static int hub_port_debounce(struct usb_ int total_time, stable_time = 0; u16 portchange, portstatus; unsigned connection = 0xffff; + unsigned long end_time = jiffies + msecs_to_jiffies(HUB_DEBOUNCE_TIMEOUT); for (total_time = 0; ; total_time += HUB_DEBOUNCE_STEP) { ret = hub_port_status(hub, port1, &portstatus, &portchange); @@ -2105,7 +2107,7 @@ static int hub_port_debounce(struct usb_ USB_PORT_FEAT_C_CONNECTION); } - if (total_time >= HUB_DEBOUNCE_TIMEOUT) + if (time_after(jiffies, end_time)) break; msleep(HUB_DEBOUNCE_STEP); } --- a/drivers/usb/host/ehci-pci.c +++ b/drivers/usb/host/ehci-pci.c @@ -36,13 +36,12 @@ static int bios_handoff(struct ehci_hcd /* maybe wait a while for BIOS to respond */ if (cap & (1 << 16)) { - int msec = 5000; + unsigned long end_time = jiffies + msecs_to_jiffies(5000); do { msleep(10); - msec -= 10; pci_read_config_dword(pdev, where, &cap); - } while ((cap & (1 << 16)) && msec); + } while ((cap & (1 << 16)) && time_before(jiffies, end_time)); if (cap & (1 << 16)) { ehci_err(ehci, "BIOS handoff failed (%d, %08x)\n", where, cap); --- a/drivers/usb/input/hid-debug.h +++ b/drivers/usb/input/hid-debug.h @@ -563,7 +563,7 @@ static char *keys[KEY_MAX + 1] = { [KEY_VOLUMEUP] = "VolumeUp", [KEY_POWER] = "Power", [KEY_KPEQUAL] = "KPEqual", [KEY_KPPLUSMINUS] = "KPPlusMinus", [KEY_PAUSE] = "Pause", [KEY_KPCOMMA] = "KPComma", - [KEY_HANGUEL] = "Hanguel", [KEY_HANJA] = "Hanja", + [KEY_HANGEUL] = "Hangeul", [KEY_HANJA] = "Hanja", [KEY_YEN] = "Yen", [KEY_LEFTMETA] = "LeftMeta", [KEY_RIGHTMETA] = "RightMeta", [KEY_COMPOSE] = "Compose", [KEY_STOP] = "Stop", [KEY_AGAIN] = "Again", --- a/drivers/usb/media/pwc/pwc-ctrl.c +++ b/drivers/usb/media/pwc/pwc-ctrl.c @@ -41,7 +41,6 @@ #include #endif #include -#include #include "pwc.h" #include "pwc-ioctl.h" @@ -1152,45 +1151,6 @@ int pwc_get_cmos_sensor(struct pwc_devic /* End of Add-Ons */ /* ************************************************* */ -/* Linux 2.5.something and 2.6 pass direct pointers to arguments of - ioctl() calls. With 2.4, you have to do tedious copy_from_user() - and copy_to_user() calls. With these macros we circumvent this, - and let me maintain only one source file. The functionality is - exactly the same otherwise. - */ - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - -/* define local variable for arg */ -#define ARG_DEF(ARG_type, ARG_name)\ - ARG_type *ARG_name = arg; -/* copy arg to local variable */ -#define ARG_IN(ARG_name) /* nothing */ -/* argument itself (referenced) */ -#define ARGR(ARG_name) (*ARG_name) -/* argument address */ -#define ARGA(ARG_name) ARG_name -/* copy local variable to arg */ -#define ARG_OUT(ARG_name) /* nothing */ - -#else - -#define ARG_DEF(ARG_type, ARG_name)\ - ARG_type ARG_name; -#define ARG_IN(ARG_name)\ - if (copy_from_user(&ARG_name, arg, sizeof(ARG_name))) {\ - ret = -EFAULT;\ - break;\ - } -#define ARGR(ARG_name) ARG_name -#define ARGA(ARG_name) &ARG_name -#define ARG_OUT(ARG_name)\ - if (copy_to_user(arg, &ARG_name, sizeof(ARG_name))) {\ - ret = -EFAULT;\ - break;\ - } - -#endif int pwc_ioctl(struct pwc_device *pdev, unsigned int cmd, void *arg) { @@ -1220,243 +1180,206 @@ int pwc_ioctl(struct pwc_device *pdev, u case VIDIOCPWCSCQUAL: { - ARG_DEF(int, qual) + int *qual = arg; - ARG_IN(qual) - if (ARGR(qual) < 0 || ARGR(qual) > 3) + if (*qual < 0 || *qual > 3) ret = -EINVAL; else - ret = pwc_try_video_mode(pdev, pdev->view.x, pdev->view.y, pdev->vframes, ARGR(qual), pdev->vsnapshot); + ret = pwc_try_video_mode(pdev, pdev->view.x, pdev->view.y, pdev->vframes, *qual, pdev->vsnapshot); if (ret >= 0) - pdev->vcompression = ARGR(qual); + pdev->vcompression = *qual; break; } case VIDIOCPWCGCQUAL: { - ARG_DEF(int, qual) - - ARGR(qual) = pdev->vcompression; - ARG_OUT(qual) + int *qual = arg; + *qual = pdev->vcompression; break; } case VIDIOCPWCPROBE: { - ARG_DEF(struct pwc_probe, probe) - - strcpy(ARGR(probe).name, pdev->vdev->name); - ARGR(probe).type = pdev->type; - ARG_OUT(probe) + struct pwc_probe *probe = arg; + strcpy(probe->name, pdev->vdev->name); + probe->type = pdev->type; break; } case VIDIOCPWCGSERIAL: { - ARG_DEF(struct pwc_serial, serial) - - strcpy(ARGR(serial).serial, pdev->serial); - ARG_OUT(serial) + struct pwc_serial *serial = arg; + strcpy(serial->serial, pdev->serial); break; } case VIDIOCPWCSAGC: { - ARG_DEF(int, agc) - - ARG_IN(agc) - if (pwc_set_agc(pdev, ARGR(agc) < 0 ? 1 : 0, ARGR(agc))) + int *agc = arg; + if (pwc_set_agc(pdev, *agc < 0 ? 1 : 0, *agc)) ret = -EINVAL; break; } case VIDIOCPWCGAGC: { - ARG_DEF(int, agc) + int *agc = arg; - if (pwc_get_agc(pdev, ARGA(agc))) + if (pwc_get_agc(pdev, agc)) ret = -EINVAL; - ARG_OUT(agc) break; } case VIDIOCPWCSSHUTTER: { - ARG_DEF(int, shutter_speed) - - ARG_IN(shutter_speed) - ret = pwc_set_shutter_speed(pdev, ARGR(shutter_speed) < 0 ? 1 : 0, ARGR(shutter_speed)); + int *shutter_speed = arg; + ret = pwc_set_shutter_speed(pdev, *shutter_speed < 0 ? 1 : 0, *shutter_speed); break; } case VIDIOCPWCSAWB: { - ARG_DEF(struct pwc_whitebalance, wb) + struct pwc_whitebalance *wb = arg; - ARG_IN(wb) - ret = pwc_set_awb(pdev, ARGR(wb).mode); - if (ret >= 0 && ARGR(wb).mode == PWC_WB_MANUAL) { - pwc_set_red_gain(pdev, ARGR(wb).manual_red); - pwc_set_blue_gain(pdev, ARGR(wb).manual_blue); + ret = pwc_set_awb(pdev, wb->mode); + if (ret >= 0 && wb->mode == PWC_WB_MANUAL) { + pwc_set_red_gain(pdev, wb->manual_red); + pwc_set_blue_gain(pdev, wb->manual_blue); } break; } case VIDIOCPWCGAWB: { - ARG_DEF(struct pwc_whitebalance, wb) + struct pwc_whitebalance *wb = arg; - memset(ARGA(wb), 0, sizeof(struct pwc_whitebalance)); - ARGR(wb).mode = pwc_get_awb(pdev); - if (ARGR(wb).mode < 0) + memset(wb, 0, sizeof(struct pwc_whitebalance)); + wb->mode = pwc_get_awb(pdev); + if (wb->mode < 0) ret = -EINVAL; else { - if (ARGR(wb).mode == PWC_WB_MANUAL) { - ret = pwc_get_red_gain(pdev, &ARGR(wb).manual_red); + if (wb->mode == PWC_WB_MANUAL) { + ret = pwc_get_red_gain(pdev, &wb->manual_red); if (ret < 0) break; - ret = pwc_get_blue_gain(pdev, &ARGR(wb).manual_blue); + ret = pwc_get_blue_gain(pdev, &wb->manual_blue); if (ret < 0) break; } - if (ARGR(wb).mode == PWC_WB_AUTO) { - ret = pwc_read_red_gain(pdev, &ARGR(wb).read_red); + if (wb->mode == PWC_WB_AUTO) { + ret = pwc_read_red_gain(pdev, &wb->read_red); if (ret < 0) break; - ret =pwc_read_blue_gain(pdev, &ARGR(wb).read_blue); + ret = pwc_read_blue_gain(pdev, &wb->read_blue); if (ret < 0) break; } } - ARG_OUT(wb) break; } case VIDIOCPWCSAWBSPEED: { - ARG_DEF(struct pwc_wb_speed, wbs) + struct pwc_wb_speed *wbs = arg; - if (ARGR(wbs).control_speed > 0) { - ret = pwc_set_wb_speed(pdev, ARGR(wbs).control_speed); + if (wbs->control_speed > 0) { + ret = pwc_set_wb_speed(pdev, wbs->control_speed); } - if (ARGR(wbs).control_delay > 0) { - ret = pwc_set_wb_delay(pdev, ARGR(wbs).control_delay); + if (wbs->control_delay > 0) { + ret = pwc_set_wb_delay(pdev, wbs->control_delay); } break; } case VIDIOCPWCGAWBSPEED: { - ARG_DEF(struct pwc_wb_speed, wbs) + struct pwc_wb_speed *wbs = arg; - ret = pwc_get_wb_speed(pdev, &ARGR(wbs).control_speed); + ret = pwc_get_wb_speed(pdev, &wbs->control_speed); if (ret < 0) break; - ret = pwc_get_wb_delay(pdev, &ARGR(wbs).control_delay); + ret = pwc_get_wb_delay(pdev, &wbs->control_delay); if (ret < 0) break; - ARG_OUT(wbs) break; } case VIDIOCPWCSLED: { - ARG_DEF(struct pwc_leds, leds) - - ARG_IN(leds) - ret = pwc_set_leds(pdev, ARGR(leds).led_on, ARGR(leds).led_off); + struct pwc_leds *leds = arg; + ret = pwc_set_leds(pdev, leds->led_on, leds->led_off); break; } case VIDIOCPWCGLED: { - ARG_DEF(struct pwc_leds, leds) - - ret = pwc_get_leds(pdev, &ARGR(leds).led_on, &ARGR(leds).led_off); - ARG_OUT(leds) + struct pwc_leds *leds = arg; + ret = pwc_get_leds(pdev, &leds->led_on, &leds->led_off); break; } case VIDIOCPWCSCONTOUR: { - ARG_DEF(int, contour) - - ARG_IN(contour) - ret = pwc_set_contour(pdev, ARGR(contour)); + int *contour = arg; + ret = pwc_set_contour(pdev, *contour); break; } case VIDIOCPWCGCONTOUR: { - ARG_DEF(int, contour) - - ret = pwc_get_contour(pdev, ARGA(contour)); - ARG_OUT(contour) + int *contour = arg; + ret = pwc_get_contour(pdev, contour); break; } case VIDIOCPWCSBACKLIGHT: { - ARG_DEF(int, backlight) - - ARG_IN(backlight) - ret = pwc_set_backlight(pdev, ARGR(backlight)); + int *backlight = arg; + ret = pwc_set_backlight(pdev, *backlight); break; } case VIDIOCPWCGBACKLIGHT: { - ARG_DEF(int, backlight) - - ret = pwc_get_backlight(pdev, ARGA(backlight)); - ARG_OUT(backlight) + int *backlight = arg; + ret = pwc_get_backlight(pdev, backlight); break; } case VIDIOCPWCSFLICKER: { - ARG_DEF(int, flicker) - - ARG_IN(flicker) - ret = pwc_set_flicker(pdev, ARGR(flicker)); + int *flicker = arg; + ret = pwc_set_flicker(pdev, *flicker); break; } case VIDIOCPWCGFLICKER: { - ARG_DEF(int, flicker) - - ret = pwc_get_flicker(pdev, ARGA(flicker)); - ARG_OUT(flicker) + int *flicker = arg; + ret = pwc_get_flicker(pdev, flicker); break; } case VIDIOCPWCSDYNNOISE: { - ARG_DEF(int, dynnoise) - - ARG_IN(dynnoise) - ret = pwc_set_dynamic_noise(pdev, ARGR(dynnoise)); + int *dynnoise = arg; + ret = pwc_set_dynamic_noise(pdev, *dynnoise); break; } case VIDIOCPWCGDYNNOISE: { - ARG_DEF(int, dynnoise) - - ret = pwc_get_dynamic_noise(pdev, ARGA(dynnoise)); - ARG_OUT(dynnoise); + int *dynnoise = arg; + ret = pwc_get_dynamic_noise(pdev, dynnoise); break; } case VIDIOCPWCGREALSIZE: { - ARG_DEF(struct pwc_imagesize, size) - - ARGR(size).width = pdev->image.x; - ARGR(size).height = pdev->image.y; - ARG_OUT(size) + struct pwc_imagesize *size = arg; + size->width = pdev->image.x; + size->height = pdev->image.y; break; } @@ -1464,10 +1387,9 @@ int pwc_ioctl(struct pwc_device *pdev, u { if (pdev->features & FEATURE_MOTOR_PANTILT) { - ARG_DEF(int, flags) + int *flags = arg; - ARG_IN(flags) - ret = pwc_mpt_reset(pdev, ARGR(flags)); + ret = pwc_mpt_reset(pdev, *flags); if (ret >= 0) { pdev->pan_angle = 0; @@ -1485,10 +1407,8 @@ int pwc_ioctl(struct pwc_device *pdev, u { if (pdev->features & FEATURE_MOTOR_PANTILT) { - ARG_DEF(struct pwc_mpt_range, range) - - ARGR(range) = pdev->angle_range; - ARG_OUT(range) + struct pwc_mpt_range *range = arg; + *range = pdev->angle_range; } else { @@ -1503,21 +1423,19 @@ int pwc_ioctl(struct pwc_device *pdev, u if (pdev->features & FEATURE_MOTOR_PANTILT) { - ARG_DEF(struct pwc_mpt_angles, angles) - - ARG_IN(angles) + struct pwc_mpt_angles *angles = arg; /* The camera can only set relative angles, so do some calculations when getting an absolute angle . */ - if (ARGR(angles).absolute) + if (angles->absolute) { - new_pan = ARGR(angles).pan; - new_tilt = ARGR(angles).tilt; + new_pan = angles->pan; + new_tilt = angles->tilt; } else { - new_pan = pdev->pan_angle + ARGR(angles).pan; - new_tilt = pdev->tilt_angle + ARGR(angles).tilt; + new_pan = pdev->pan_angle + angles->pan; + new_tilt = pdev->tilt_angle + angles->tilt; } /* check absolute ranges */ if (new_pan < pdev->angle_range.pan_min || @@ -1560,12 +1478,11 @@ int pwc_ioctl(struct pwc_device *pdev, u if (pdev->features & FEATURE_MOTOR_PANTILT) { - ARG_DEF(struct pwc_mpt_angles, angles) + struct pwc_mpt_angles *angles = arg; - ARGR(angles).absolute = 1; - ARGR(angles).pan = pdev->pan_angle; - ARGR(angles).tilt = pdev->tilt_angle; - ARG_OUT(angles) + angles->absolute = 1; + angles->pan = pdev->pan_angle; + angles->tilt = pdev->tilt_angle; } else { @@ -1578,10 +1495,8 @@ int pwc_ioctl(struct pwc_device *pdev, u { if (pdev->features & FEATURE_MOTOR_PANTILT) { - ARG_DEF(struct pwc_mpt_status, status) - - ret = pwc_mpt_get_status(pdev, ARGA(status)); - ARG_OUT(status) + struct pwc_mpt_status *status = arg; + ret = pwc_mpt_get_status(pdev, status); } else { @@ -1592,24 +1507,22 @@ int pwc_ioctl(struct pwc_device *pdev, u case VIDIOCPWCGVIDCMD: { - ARG_DEF(struct pwc_video_command, cmd); + struct pwc_video_command *cmd = arg; - ARGR(cmd).type = pdev->type; - ARGR(cmd).release = pdev->release; - ARGR(cmd).command_len = pdev->cmd_len; - memcpy(&ARGR(cmd).command_buf, pdev->cmd_buf, pdev->cmd_len); - ARGR(cmd).bandlength = pdev->vbandlength; - ARGR(cmd).frame_size = pdev->frame_size; - ARG_OUT(cmd) + cmd->type = pdev->type; + cmd->release = pdev->release; + cmd->command_len = pdev->cmd_len; + memcpy(&cmd->command_buf, pdev->cmd_buf, pdev->cmd_len); + cmd->bandlength = pdev->vbandlength; + cmd->frame_size = pdev->frame_size; break; } /* case VIDIOCPWCGVIDTABLE: { - ARG_DEF(struct pwc_table_init_buffer, table); - ARGR(table).len = pdev->cmd_len; - memcpy(&ARGR(table).buffer, pdev->decompress_data, pdev->decompressor->table_size); - ARG_OUT(table) + struct pwc_table_init_buffer *table = arg; + table->len = pdev->cmd_len; + memcpy(&table->buffer, pdev->decompress_data, pdev->decompressor->table_size); break; } */ --- a/drivers/usb/media/pwc/pwc-if.c +++ b/drivers/usb/media/pwc/pwc-if.c @@ -62,7 +62,6 @@ #include #include #include -#include #include #include "pwc.h" @@ -827,13 +826,10 @@ static int pwc_isoc_init(struct pwc_devi /* Get the current alternate interface, adjust packet size */ if (!udev->actconfig) return -EFAULT; -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5) - idesc = &udev->actconfig->interface[0]->altsetting[pdev->valternate]; -#else + intf = usb_ifnum_to_if(udev, 0); if (intf) idesc = usb_altnum_to_altsetting(intf, pdev->valternate); -#endif if (!idesc) return -EFAULT; --- a/drivers/video/atafb.c +++ b/drivers/video/atafb.c @@ -2731,7 +2731,7 @@ int __init atafb_init(void) } fbhw = &st_switch; atafb_ops.fb_setcolreg = &stste_setcolreg; - printk("Cannot determine video hardware; defaulting to ST(e)\n"); + pr_info("Cannot determine video hardware; defaulting to ST(e)\n"); #else /* ATAFB_STE */ /* no default driver included */ /* Nobody will ever see this message :-) */ @@ -2808,13 +2808,13 @@ int __init atafb_init(void) if (register_framebuffer(&fb_info) < 0) return -EINVAL; - printk("Determined %dx%d, depth %d\n", + pr_info("Determined %dx%d, depth %d\n", disp.var.xres, disp.var.yres, disp.var.bits_per_pixel); if ((disp.var.xres != disp.var.xres_virtual) || (disp.var.yres != disp.var.yres_virtual)) printk(" virtual %dx%d\n", disp.var.xres_virtual, disp.var.yres_virtual); - printk("fb%d: %s frame buffer device, using %dK of video memory\n", + pr_info("fb%d: %s frame buffer device, using %dK of video memory\n", fb_info.node, fb_info.modename, screen_len>>10); /* TODO: This driver cannot be unloaded yet */ --- a/drivers/video/aty/mach64_ct.c +++ b/drivers/video/aty/mach64_ct.c @@ -196,7 +196,7 @@ static int aty_dsp_gt(const struct fb_in pll->dsp_on_off = (dsp_on << 16) + dsp_off; pll->dsp_config = (dsp_precision << 20) | (pll->dsp_loop_latency << 16) | dsp_xclks; #ifdef DEBUG - printk("atyfb(%s): dsp_config 0x%08x, dsp_on_off 0x%08x\n", + pr_debug("atyfb(%s): dsp_config 0x%08x, dsp_on_off 0x%08x\n", __FUNCTION__, pll->dsp_config, pll->dsp_on_off); #endif return 0; @@ -224,7 +224,7 @@ static int aty_valid_pll_ct(const struct pllvclk = (1000000 * 2 * pll->vclk_fb_div) / (par->ref_clk_per * pll->pll_ref_div); #ifdef DEBUG - printk("atyfb(%s): pllvclk=%d MHz, vclk=%d MHz\n", + pr_debug("atyfb(%s): pllvclk=%d MHz, vclk=%d MHz\n", __FUNCTION__, pllvclk, pllvclk / pll->vclk_post_div_real); #endif pll->pll_vclk_cntl = 0x03; /* VCLK = PLL_VCLK/VCLKx_POST */ @@ -268,9 +268,7 @@ static u32 aty_pll_to_var_ct(const struc ret /= pll->ct.xres; } #endif -#ifdef DEBUG - printk("atyfb(%s): calculated 0x%08X(%i)\n", __FUNCTION__, ret, ret); -#endif + pr_debug("atyfb(%s): calculated 0x%08X(%i)\n", __FUNCTION__, ret, ret); return ret; } @@ -281,17 +279,15 @@ void aty_set_pll_ct(const struct fb_info u8 tmp, tmp2; lcd_gen_cntrl = 0; -#ifdef DEBUG - printk("atyfb(%s): about to program:\n" + pr_debug("atyfb(%s): about to program:\n" "pll_ext_cntl=0x%02x pll_gen_cntl=0x%02x pll_vclk_cntl=0x%02x\n", __FUNCTION__, pll->ct.pll_ext_cntl, pll->ct.pll_gen_cntl, pll->ct.pll_vclk_cntl); - printk("atyfb(%s): setting clock %lu for FeedBackDivider %i, ReferenceDivider %i, PostDivider %i(%i)\n", + pr_debug("atyfb(%s): setting clock %lu for FeedBackDivider %i, ReferenceDivider %i, PostDivider %i(%i)\n", __FUNCTION__, par->clk_wr_offset, pll->ct.vclk_fb_div, pll->ct.pll_ref_div, pll->ct.vclk_post_div, pll->ct.vclk_post_div_real); -#endif #ifdef CONFIG_FB_ATY_GENERIC_LCD if (par->lcd_table != 0) { /* turn off LCD */ @@ -426,10 +422,8 @@ static int __init aty_init_pll_ct(const pll->ct.xclk_post_div -= 1; } -#ifdef DEBUG - printk("atyfb(%s): mclk_fb_mult=%d, xclk_post_div=%d\n", + pr_debug("atyfb(%s): mclk_fb_mult=%d, xclk_post_div=%d\n", __FUNCTION__, pll->ct.mclk_fb_mult, pll->ct.xclk_post_div); -#endif memcntl = aty_ld_le32(MEM_CNTL, par); trp = (memcntl & 0x300) >> 8; @@ -539,7 +533,7 @@ static int __init aty_init_pll_ct(const #ifdef DEBUG pllmclk = (1000000 * pll->ct.mclk_fb_mult * pll->ct.mclk_fb_div) / (par->ref_clk_per * pll->ct.pll_ref_div); - printk("atyfb(%s): pllmclk=%d MHz, xclk=%d MHz\n", + pr_debug("atyfb(%s): pllmclk=%d MHz, xclk=%d MHz\n", __FUNCTION__, pllmclk, pllmclk / pll->ct.xclk_post_div_real); #endif @@ -580,7 +574,7 @@ static int __init aty_init_pll_ct(const #ifdef DEBUG pllsclk = (1000000 * 2 * sclk_fb_div) / (par->ref_clk_per * pll->ct.pll_ref_div); - printk("atyfb(%s): use sclk, pllsclk=%d MHz, sclk=mclk=%d MHz\n", + pr_debug("atyfb(%s): use sclk, pllsclk=%d MHz, sclk=mclk=%d MHz\n", __FUNCTION__, pllsclk, pllsclk / sclk_post_div_real); #endif /* --- a/drivers/video/aty/radeon_monitor.c +++ b/drivers/video/aty/radeon_monitor.c @@ -178,10 +178,10 @@ static int __devinit radeon_get_panel_in for(i=0; i<24; i++) stmp[i] = BIOS_IN8(tmp+i+1); stmp[24] = 0; - printk("radeonfb: panel ID string: %s\n", stmp); + pr_info("radeonfb: panel ID string: %s\n", stmp); rinfo->panel_info.xres = BIOS_IN16(tmp + 25); rinfo->panel_info.yres = BIOS_IN16(tmp + 27); - printk("radeonfb: detected LVDS panel size from BIOS: %dx%d\n", + pr_info("radeonfb: detected LVDS panel size from BIOS: %dx%d\n", rinfo->panel_info.xres, rinfo->panel_info.yres); rinfo->panel_info.pwr_delay = BIOS_IN16(tmp + 44); @@ -561,7 +561,7 @@ void __devinit radeon_probe_screens(stru ((rinfo->bios_seg && (INREG(BIOS_4_SCRATCH) & 4)) || (INREG(LVDS_GEN_CNTL) & LVDS_ON))) { rinfo->mon1_type = MT_LCD; - printk("Non-DDC laptop panel detected\n"); + pr_info("Non-DDC laptop panel detected\n"); } if (rinfo->mon1_type == MT_NONE) rinfo->mon1_type = radeon_crt_is_connected(rinfo, rinfo->reversed_DAC); --- a/drivers/video/aty/radeon_pm.c +++ b/drivers/video/aty/radeon_pm.c @@ -2722,10 +2722,10 @@ void radeonfb_pm_init(struct radeonfb_in rinfo->dynclk = dynclk; if (dynclk == 1) { radeon_pm_enable_dynamic_mode(rinfo); - printk("radeonfb: Dynamic Clock Power Management enabled\n"); + pr_info("radeonfb: Dynamic Clock Power Management enabled\n"); } else if (dynclk == 0) { radeon_pm_disable_dynamic_mode(rinfo); - printk("radeonfb: Dynamic Clock Power Management disabled\n"); + pr_info("radeonfb: Dynamic Clock Power Management disabled\n"); } /* Check if we can power manage on suspend/resume. We can do --- a/drivers/video/bw2.c +++ b/drivers/video/bw2.c @@ -373,7 +373,7 @@ static void bw2_init_one(struct sbus_dev list_add(&all->list, &bw2_list); - printk("bw2: bwtwo at %lx:%lx\n", + pr_info("bw2: bwtwo at %lx:%lx\n", (long) (sdev ? sdev->reg_addrs[0].which_io : 0), (long) all->par.physbase); } --- a/drivers/video/cg3.c +++ b/drivers/video/cg3.c @@ -434,7 +434,7 @@ static void cg3_init_one(struct sbus_dev list_add(&all->list, &cg3_list); - printk("cg3: %s at %lx:%lx\n", + pr_info("cg3: %s at %lx:%lx\n", sdev->prom_name, (long) sdev->reg_addrs[0].which_io, (long) sdev->reg_addrs[0].phys_addr); --- a/drivers/video/cg6.c +++ b/drivers/video/cg6.c @@ -740,7 +740,7 @@ static void cg6_init_one(struct sbus_dev list_add(&all->list, &cg6_list); - printk("cg6: CGsix [%s] at %lx:%lx\n", + pr_info("cg6: CGsix [%s] at %lx:%lx\n", all->info.fix.id, (long) sdev->reg_addrs[0].which_io, (long) sdev->reg_addrs[0].phys_addr); --- a/drivers/video/cirrusfb.c +++ b/drivers/video/cirrusfb.c @@ -93,7 +93,7 @@ #ifndef CIRRUSFB_NDEBUG #define assert(expr) \ if(!(expr)) { \ - printk( "Assertion failed! %s,%s,%s,line=%d\n",\ + printk(KERN_DEBUG "Assertion failed! %s,%s,%s,line=%d\n",\ #expr,__FILE__,__FUNCTION__,__LINE__); \ } #else @@ -702,14 +702,14 @@ static int cirrusfb_check_var(struct fb_ den = 1; break; /* 4 bytes per pixel */ default: - printk ("cirrusfb: mode %dx%dx%d rejected...color depth not supported.\n", + printk (KERN_WARNING "cirrusfb: mode %dx%dx%d rejected...color depth not supported.\n", var->xres, var->yres, var->bits_per_pixel); DPRINTK ("EXIT - EINVAL error\n"); return -EINVAL; } if (var->xres * nom / den * var->yres > cinfo->size) { - printk ("cirrusfb: mode %dx%dx%d rejected...resolution too high to fit into video memory!\n", + printk (KERN_WARNING "cirrusfb: mode %dx%dx%d rejected...resolution too high to fit into video memory!\n", var->xres, var->yres, var->bits_per_pixel); DPRINTK ("EXIT - EINVAL error\n"); return -EINVAL; @@ -718,20 +718,20 @@ static int cirrusfb_check_var(struct fb_ /* use highest possible virtual resolution */ if (var->xres_virtual == -1 && var->yres_virtual == -1) { - printk ("cirrusfb: using maximum available virtual resolution\n"); + pr_info ("cirrusfb: using maximum available virtual resolution\n"); for (i = 0; modes[i].xres != -1; i++) { if (modes[i].xres * nom / den * modes[i].yres < cinfo->size / 2) break; } if (modes[i].xres == -1) { - printk ("cirrusfb: could not find a virtual resolution that fits into video memory!!\n"); + printk (KERN_WARNING "cirrusfb: could not find a virtual resolution that fits into video memory!!\n"); DPRINTK ("EXIT - EINVAL error\n"); return -EINVAL; } var->xres_virtual = modes[i].xres; var->yres_virtual = modes[i].yres; - printk ("cirrusfb: virtual resolution set to maximum of %dx%d\n", + pr_info ("cirrusfb: virtual resolution set to maximum of %dx%d\n", var->xres_virtual, var->yres_virtual); } @@ -2171,7 +2171,7 @@ static unsigned int cirrusfb_get_memsize /* 64-bit DRAM data bus width; assume 2MB. Also indicates 2MB memory * on the 5430. */ case 0x18: mem = 2048 * 1024; break; - default: printk ("CLgenfb: Unknown memory size!\n"); + default: printk (KERN_WARNING "CLgenfb: Unknown memory size!\n"); mem = 1024 * 1024; } if (SRF & 0x80) { @@ -2356,7 +2356,7 @@ static void __devexit cirrusfb_cleanup ( unregister_framebuffer (info); fb_dealloc_cmap (&info->cmap); - printk ("Framebuffer unregistered\n"); + pr_info ("Framebuffer unregistered\n"); cinfo->unmap(cinfo); DPRINTK ("EXIT\n"); @@ -2441,6 +2441,9 @@ static int cirrusfb_pci_register (struct cinfo->size = board_size; cinfo->unmap = cirrusfb_pci_unmap; + printk(KERN_INFO "cirrusfb: %s board detected; ", + cirrusfb_board_info[btype].name); + printk (" RAM (%lu kB) at 0xx%lx, ", cinfo->size / KB_, board_addr); printk ("Cirrus Logic chipset on PCI bus\n"); pci_set_drvdata(pdev, info); @@ -2533,7 +2536,7 @@ static int cirrusfb_zorro_register(struc goto err_release_fb; } - printk (" RAM (%lu MB) at $%lx, ", board_size / MB_, board_addr); + pr_info (" RAM (%lu MB) at $%lx, ", board_size / MB_, board_addr); ret = -EIO; --- a/drivers/video/clps711xfb.c +++ b/drivers/video/clps711xfb.c @@ -384,7 +384,7 @@ int __init clps711xfb_init(void) clps7111fb_backlight_proc_entry = create_proc_entry("backlight", 0444, &proc_root); if (clps7111fb_backlight_proc_entry == NULL) { - printk("Couldn't create the /proc entry for the backlight.\n"); + printk(KERN_ERR "Couldn't create the /proc entry for the backlight.\n"); return -EINVAL; } --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -1011,7 +1011,7 @@ static const char *fbcon_startup(void) udelay(20); if (ct == 1000) - printk + pr_info ("fbcon_startup: No VBL detected, using timer based cursor.\n"); free_irq(IRQ_MAC_VBL, fb_vbl_detect); --- a/drivers/video/console/mdacon.c +++ b/drivers/video/console/mdacon.c @@ -326,7 +326,7 @@ static const char __init *mdacon_startup mda_type_name = "MDA"; if (! mda_detect()) { - printk("mdacon: MDA card not detected.\n"); + pr_info("mdacon: MDA card not detected.\n"); return NULL; } @@ -337,7 +337,7 @@ static const char __init *mdacon_startup /* cursor looks ugly during boot-up, so turn it off */ mda_set_cursor(mda_vram_len - 1); - printk("mdacon: %s with %ldK of memory detected.\n", + pr_info("mdacon: %s with %ldK of memory detected.\n", mda_type_name, mda_vram_len/1024); return "MDA-2"; --- a/drivers/video/console/newport_con.c +++ b/drivers/video/console/newport_con.c @@ -230,7 +230,7 @@ void newport_get_screensize(void) newport_ysize += linetable[i + 1]; } } - printk("NG1: Screensize %dx%d\n", newport_xsize, newport_ysize); + pr_info("NG1: Screensize %dx%d\n", newport_xsize, newport_ysize); } static void newport_get_revisions(void) @@ -273,7 +273,7 @@ static void newport_get_revisions(void) bt445_rev = (npregs->set.dcbdata0.bybytes.b3 >> 4) - 0x0a; #define L(a) (char)('A'+(a)) - printk + pr_info ("NG1: Revision %d, %d bitplanes, REX3 revision %c, VC2 revision %c, xmap9 revision %c, cmap revision %c, bt445 revision %c\n", board_rev, bitplanes, L(rex3_rev), L(vc2_rev), L(xmap9_rev), L(cmap_rev ? (cmap_rev + 1) : 0), L(bt445_rev)); --- a/drivers/video/cyber2000fb.c +++ b/drivers/video/cyber2000fb.c @@ -1371,7 +1371,7 @@ static int __devinit cyberpro_common_pro err = -EINVAL; if (!fb_find_mode(&cfb->fb.var, &cfb->fb, NULL, NULL, 0, &cyber2000fb_default_mode, 8)) { - printk("%s: no valid mode found\n", cfb->fb.fix.id); + printk(KERN_ERR "%s: no valid mode found\n", cfb->fb.fix.id); goto failed; } --- a/drivers/video/dnfb.c +++ b/drivers/video/dnfb.c @@ -266,7 +266,7 @@ static int __devinit dnfb_probe(struct p out_8(AP_CONTROL_2, S_DATA_PLN); out_be16(AP_ROP_1, SWAP(0x3)); - printk("apollo frame buffer alive and kicking !\n"); + pr_info("apollo frame buffer initialized\n"); return err; } --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c @@ -1423,7 +1423,7 @@ fbmem_init(void) devfs_mk_dir("fb"); if (register_chrdev(FB_MAJOR,"fb",&fb_fops)) - printk("unable to get major %d for fb devs\n", FB_MAJOR); + printk(KERN_WARNING "unable to get major %d for fb devs\n", FB_MAJOR); fb_class = class_create(THIS_MODULE, "graphics"); if (IS_ERR(fb_class)) { --- a/drivers/video/fbmon.c +++ b/drivers/video/fbmon.c @@ -44,7 +44,7 @@ #undef DEBUG /* define this for verbose EDID parsing output */ #ifdef DEBUG -#define DPRINTK(fmt, args...) printk(fmt,## args) +#define DPRINTK(fmt, args...) pr_debug("%s(): ", fmt, __FUNCTION__, ## args) #else #define DPRINTK(fmt, args...) #endif @@ -105,7 +105,7 @@ static int check_edid(unsigned char *edi for (i = 0; i < ARRAY_SIZE(brokendb); i++) { if (!strncmp(manufacturer, brokendb[i].manufacturer, 4) && brokendb[i].model == model) { - printk("fbmon: The EDID Block of " + pr_info("fbmon: The EDID Block of " "Manufacturer: %s Model: 0x%x is known to " "be broken,\n", manufacturer, model); fix = brokendb[i].fix; @@ -138,11 +138,11 @@ static void fix_edid(unsigned char *edid switch (fix) { case FBMON_FIX_HEADER: - printk("fbmon: trying a header reconstruct\n"); + pr_info("fbmon: trying a header reconstruct\n"); memcpy(edid, edid_v1_header, 8); break; case FBMON_FIX_INPUT: - printk("fbmon: trying to fix input type\n"); + pr_info("fbmon: trying to fix input type\n"); b = edid + EDID_STRUCT_DISPLAY; b[0] &= ~0x80; edid[127] += 0x80; @@ -771,7 +771,7 @@ static void get_monspecs(unsigned char * specs->misc |= FB_MISC_1ST_DETAIL; } if (c & 0x01) { - printk(" Display is GTF capable\n"); + DPRINTK(" Display is GTF capable\n"); specs->gtf = 1; } } --- a/drivers/video/ffb.c +++ b/drivers/video/ffb.c @@ -931,12 +931,12 @@ static void ffb_init_one(int node, int p struct all_info *all; if (prom_getproperty(node, "reg", (void *) regs, sizeof(regs)) <= 0) { - printk("ffb: Cannot get reg device node property.\n"); + printk(KERN_ERR "ffb: Cannot get reg device node property.\n"); return; } if (ffb_apply_upa_parent_ranges(parent, ®s[0])) { - printk("ffb: Cannot apply parent ranges to regs.\n"); + printk(KERN_ERR "ffb: Cannot apply parent ranges to regs.\n"); return; } @@ -1023,7 +1023,7 @@ static void ffb_init_one(int node, int p list_add(&all->list, &ffb_list); - printk("ffb: %s at %016lx type %d DAC %d\n", + pr_info("ffb: %s at %016lx type %d DAC %d\n", ((all->par.flags & FFB_FLAG_AFB) ? "AFB" : "FFB"), regs[0].phys_addr, all->par.board_type, all->par.dac_rev); } --- a/drivers/video/fm2fb.c +++ b/drivers/video/fm2fb.c @@ -287,7 +287,7 @@ static int __devinit fm2fb_probe(struct zorro_release_device(z); return -EINVAL; } - printk("fb%d: %s frame buffer device\n", info->node, fb_fix.id); + pr_info("fb%d: %s frame buffer device\n", info->node, fb_fix.id); return 0; } --- a/drivers/video/igafb.c +++ b/drivers/video/igafb.c @@ -364,7 +364,7 @@ static int __init iga_init(struct fb_inf if (register_framebuffer(info) < 0) return 0; - printk("fb%d: %s frame buffer device at 0x%08lx [%dMB VRAM]\n", + pr_info("fb%d: %s frame buffer device at 0x%08lx [%dMB VRAM]\n", info->node, info->fix.id, par->frame_buffer_phys, info->fix.smem_len >> 20); @@ -406,7 +406,7 @@ int __init igafb_init(void) info = kmalloc(size, GFP_ATOMIC); if (!info) { - printk("igafb_init: can't alloc fb_info\n"); + printk(KERN_ERR "igafb_init: can't alloc fb_info\n"); return -ENOMEM; } memset(info, 0, size); @@ -415,13 +415,13 @@ int __init igafb_init(void) if ((addr = pdev->resource[0].start) == 0) { - printk("igafb_init: no memory start\n"); + printk(KERN_ERR "igafb_init: no memory start\n"); kfree(info); return -ENXIO; } if ((info->screen_base = ioremap(addr, 1024*1024*2)) == 0) { - printk("igafb_init: can't remap %lx[2M]\n", addr); + printk(KERN_ERR "igafb_init: can't remap %lx[2M]\n", addr); kfree(info); return -ENXIO; } @@ -454,7 +454,7 @@ int __init igafb_init(void) igafb_fix.mmio_start = 0x30000000; /* XXX */ } if ((par->io_base = (int) ioremap(igafb_fix.mmio_start, igafb_fix.smem_len)) == 0) { - printk("igafb_init: can't remap %lx[4K]\n", igafb_fix.mmio_start); + printk(KERN_ERR "igafb_init: can't remap %lx[4K]\n", igafb_fix.mmio_start); iounmap((void *)info->screen_base); kfree(info); return -ENXIO; @@ -470,7 +470,7 @@ int __init igafb_init(void) par->mmap_map = kmalloc(4 * sizeof(*par->mmap_map), GFP_ATOMIC); if (!par->mmap_map) { - printk("igafb_init: can't alloc mmap_map\n"); + printk(KERN_ERR "igafb_init: can't alloc mmap_map\n"); iounmap((void *)par->io_base); iounmap(info->screen_base); kfree(info); --- a/drivers/video/imsttfb.c +++ b/drivers/video/imsttfb.c @@ -1415,7 +1415,8 @@ init_imstt(struct fb_info *info) if ((info->var.xres * info->var.yres) * (info->var.bits_per_pixel >> 3) > info->fix.smem_len || !(compute_imstt_regvals(par, info->var.xres, info->var.yres))) { - printk("imsttfb: %ux%ux%u not supported\n", info->var.xres, info->var.yres, info->var.bits_per_pixel); + printk(KERN_ERR "imsttfb: %ux%ux%u not supported\n", + info->var.xres, info->var.yres, info->var.bits_per_pixel); framebuffer_release(info); return; } @@ -1457,7 +1458,7 @@ init_imstt(struct fb_info *info) } tmp = (read_reg_le32(par->dc_regs, SSTATUS) & 0x0f00) >> 8; - printk("fb%u: %s frame buffer; %uMB vram; chip version %u\n", + pr_info("fb%u: %s frame buffer; %uMB vram; chip version %u\n", info->node, info->fix.id, info->fix.smem_len >> 20, tmp); } --- a/drivers/video/intelfb/intelfbhw.c +++ b/drivers/video/intelfb/intelfbhw.c @@ -540,10 +540,10 @@ intelfbhw_print_hw_state(struct intelfb_ if (!hw || !dinfo) return; /* Read in as much of the HW state as possible. */ - printk("hw state dump start\n"); - printk(" VGA0_DIVISOR: 0x%08x\n", hw->vga0_divisor); - printk(" VGA1_DIVISOR: 0x%08x\n", hw->vga1_divisor); - printk(" VGAPD: 0x%08x\n", hw->vga_pd); + pr_info("hw state dump start\n"); + pr_info(" VGA0_DIVISOR: 0x%08x\n", hw->vga0_divisor); + pr_info(" VGA1_DIVISOR: 0x%08x\n", hw->vga1_divisor); + pr_info(" VGAPD: 0x%08x\n", hw->vga_pd); n = (hw->vga0_divisor >> FP_N_DIVISOR_SHIFT) & FP_DIVISOR_MASK; m1 = (hw->vga0_divisor >> FP_M1_DIVISOR_SHIFT) & FP_DIVISOR_MASK; m2 = (hw->vga0_divisor >> FP_M2_DIVISOR_SHIFT) & FP_DIVISOR_MASK; @@ -552,9 +552,9 @@ intelfbhw_print_hw_state(struct intelfb_ else p1 = (hw->vga_pd >> VGAPD_0_P1_SHIFT) & DPLL_P1_MASK; p2 = (hw->vga_pd >> VGAPD_0_P2_SHIFT) & DPLL_P2_MASK; - printk(" VGA0: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", + pr_info(" VGA0: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", m1, m2, n, p1, p2); - printk(" VGA0: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); + pr_info(" VGA0: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); n = (hw->vga1_divisor >> FP_N_DIVISOR_SHIFT) & FP_DIVISOR_MASK; m1 = (hw->vga1_divisor >> FP_M1_DIVISOR_SHIFT) & FP_DIVISOR_MASK; @@ -564,16 +564,16 @@ intelfbhw_print_hw_state(struct intelfb_ else p1 = (hw->vga_pd >> VGAPD_1_P1_SHIFT) & DPLL_P1_MASK; p2 = (hw->vga_pd >> VGAPD_1_P2_SHIFT) & DPLL_P2_MASK; - printk(" VGA1: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", + pr_info(" VGA1: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", m1, m2, n, p1, p2); - printk(" VGA1: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); + pr_info(" VGA1: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); - printk(" DPLL_A: 0x%08x\n", hw->dpll_a); - printk(" DPLL_B: 0x%08x\n", hw->dpll_b); - printk(" FPA0: 0x%08x\n", hw->fpa0); - printk(" FPA1: 0x%08x\n", hw->fpa1); - printk(" FPB0: 0x%08x\n", hw->fpb0); - printk(" FPB1: 0x%08x\n", hw->fpb1); + pr_info(" DPLL_A: 0x%08x\n", hw->dpll_a); + pr_info(" DPLL_B: 0x%08x\n", hw->dpll_b); + pr_info(" FPA0: 0x%08x\n", hw->fpa0); + pr_info(" FPA1: 0x%08x\n", hw->fpa1); + pr_info(" FPB0: 0x%08x\n", hw->fpb0); + pr_info(" FPB1: 0x%08x\n", hw->fpb1); n = (hw->fpa0 >> FP_N_DIVISOR_SHIFT) & FP_DIVISOR_MASK; m1 = (hw->fpa0 >> FP_M1_DIVISOR_SHIFT) & FP_DIVISOR_MASK; @@ -583,9 +583,9 @@ intelfbhw_print_hw_state(struct intelfb_ else p1 = (hw->dpll_a >> DPLL_P1_SHIFT) & DPLL_P1_MASK; p2 = (hw->dpll_a >> DPLL_P2_SHIFT) & DPLL_P2_MASK; - printk(" PLLA0: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", + pr_info(" PLLA0: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", m1, m2, n, p1, p2); - printk(" PLLA0: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); + pr_info(" PLLA0: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); n = (hw->fpa1 >> FP_N_DIVISOR_SHIFT) & FP_DIVISOR_MASK; m1 = (hw->fpa1 >> FP_M1_DIVISOR_SHIFT) & FP_DIVISOR_MASK; @@ -595,62 +595,62 @@ intelfbhw_print_hw_state(struct intelfb_ else p1 = (hw->dpll_a >> DPLL_P1_SHIFT) & DPLL_P1_MASK; p2 = (hw->dpll_a >> DPLL_P2_SHIFT) & DPLL_P2_MASK; - printk(" PLLA1: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", + pr_info(" PLLA1: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", m1, m2, n, p1, p2); - printk(" PLLA1: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); + pr_info(" PLLA1: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); #if 0 - printk(" PALETTE_A:\n"); + pr_info(" PALETTE_A:\n"); for (i = 0; i < PALETTE_8_ENTRIES) - printk(" %3d: 0x%08x\n", i, hw->palette_a[i]; - printk(" PALETTE_B:\n"); + pr_info(" %3d: 0x%08x\n", i, hw->palette_a[i]; + pr_info(" PALETTE_B:\n"); for (i = 0; i < PALETTE_8_ENTRIES) - printk(" %3d: 0x%08x\n", i, hw->palette_b[i]; + pr_info(" %3d: 0x%08x\n", i, hw->palette_b[i]; #endif - printk(" HTOTAL_A: 0x%08x\n", hw->htotal_a); - printk(" HBLANK_A: 0x%08x\n", hw->hblank_a); - printk(" HSYNC_A: 0x%08x\n", hw->hsync_a); - printk(" VTOTAL_A: 0x%08x\n", hw->vtotal_a); - printk(" VBLANK_A: 0x%08x\n", hw->vblank_a); - printk(" VSYNC_A: 0x%08x\n", hw->vsync_a); - printk(" SRC_SIZE_A: 0x%08x\n", hw->src_size_a); - printk(" BCLRPAT_A: 0x%08x\n", hw->bclrpat_a); - printk(" HTOTAL_B: 0x%08x\n", hw->htotal_b); - printk(" HBLANK_B: 0x%08x\n", hw->hblank_b); - printk(" HSYNC_B: 0x%08x\n", hw->hsync_b); - printk(" VTOTAL_B: 0x%08x\n", hw->vtotal_b); - printk(" VBLANK_B: 0x%08x\n", hw->vblank_b); - printk(" VSYNC_B: 0x%08x\n", hw->vsync_b); - printk(" SRC_SIZE_B: 0x%08x\n", hw->src_size_b); - printk(" BCLRPAT_B: 0x%08x\n", hw->bclrpat_b); - - printk(" ADPA: 0x%08x\n", hw->adpa); - printk(" DVOA: 0x%08x\n", hw->dvoa); - printk(" DVOB: 0x%08x\n", hw->dvob); - printk(" DVOC: 0x%08x\n", hw->dvoc); - printk(" DVOA_SRCDIM: 0x%08x\n", hw->dvoa_srcdim); - printk(" DVOB_SRCDIM: 0x%08x\n", hw->dvob_srcdim); - printk(" DVOC_SRCDIM: 0x%08x\n", hw->dvoc_srcdim); - printk(" LVDS: 0x%08x\n", hw->lvds); - - printk(" PIPEACONF: 0x%08x\n", hw->pipe_a_conf); - printk(" PIPEBCONF: 0x%08x\n", hw->pipe_b_conf); - printk(" DISPARB: 0x%08x\n", hw->disp_arb); - - printk(" CURSOR_A_CONTROL: 0x%08x\n", hw->cursor_a_control); - printk(" CURSOR_B_CONTROL: 0x%08x\n", hw->cursor_b_control); - printk(" CURSOR_A_BASEADDR: 0x%08x\n", hw->cursor_a_base); - printk(" CURSOR_B_BASEADDR: 0x%08x\n", hw->cursor_b_base); + pr_info(" HTOTAL_A: 0x%08x\n", hw->htotal_a); + pr_info(" HBLANK_A: 0x%08x\n", hw->hblank_a); + pr_info(" HSYNC_A: 0x%08x\n", hw->hsync_a); + pr_info(" VTOTAL_A: 0x%08x\n", hw->vtotal_a); + pr_info(" VBLANK_A: 0x%08x\n", hw->vblank_a); + pr_info(" VSYNC_A: 0x%08x\n", hw->vsync_a); + pr_info(" SRC_SIZE_A: 0x%08x\n", hw->src_size_a); + pr_info(" BCLRPAT_A: 0x%08x\n", hw->bclrpat_a); + pr_info(" HTOTAL_B: 0x%08x\n", hw->htotal_b); + pr_info(" HBLANK_B: 0x%08x\n", hw->hblank_b); + pr_info(" HSYNC_B: 0x%08x\n", hw->hsync_b); + pr_info(" VTOTAL_B: 0x%08x\n", hw->vtotal_b); + pr_info(" VBLANK_B: 0x%08x\n", hw->vblank_b); + pr_info(" VSYNC_B: 0x%08x\n", hw->vsync_b); + pr_info(" SRC_SIZE_B: 0x%08x\n", hw->src_size_b); + pr_info(" BCLRPAT_B: 0x%08x\n", hw->bclrpat_b); + + pr_info(" ADPA: 0x%08x\n", hw->adpa); + pr_info(" DVOA: 0x%08x\n", hw->dvoa); + pr_info(" DVOB: 0x%08x\n", hw->dvob); + pr_info(" DVOC: 0x%08x\n", hw->dvoc); + pr_info(" DVOA_SRCDIM: 0x%08x\n", hw->dvoa_srcdim); + pr_info(" DVOB_SRCDIM: 0x%08x\n", hw->dvob_srcdim); + pr_info(" DVOC_SRCDIM: 0x%08x\n", hw->dvoc_srcdim); + pr_info(" LVDS: 0x%08x\n", hw->lvds); + + pr_info(" PIPEACONF: 0x%08x\n", hw->pipe_a_conf); + pr_info(" PIPEBCONF: 0x%08x\n", hw->pipe_b_conf); + pr_info(" DISPARB: 0x%08x\n", hw->disp_arb); + + pr_info(" CURSOR_A_CONTROL: 0x%08x\n", hw->cursor_a_control); + pr_info(" CURSOR_B_CONTROL: 0x%08x\n", hw->cursor_b_control); + pr_info(" CURSOR_A_BASEADDR: 0x%08x\n", hw->cursor_a_base); + pr_info(" CURSOR_B_BASEADDR: 0x%08x\n", hw->cursor_b_base); - printk(" CURSOR_A_PALETTE: "); + pr_info(" CURSOR_A_PALETTE: "); for (i = 0; i < 4; i++) { printk("0x%08x", hw->cursor_a_palette[i]); if (i < 3) printk(", "); } printk("\n"); - printk(" CURSOR_B_PALETTE: "); + pr_info(" CURSOR_B_PALETTE: "); for (i = 0; i < 4; i++) { printk("0x%08x", hw->cursor_b_palette[i]); if (i < 3) @@ -658,40 +658,40 @@ intelfbhw_print_hw_state(struct intelfb_ } printk("\n"); - printk(" CURSOR_SIZE: 0x%08x\n", hw->cursor_size); + pr_info(" CURSOR_SIZE: 0x%08x\n", hw->cursor_size); - printk(" DSPACNTR: 0x%08x\n", hw->disp_a_ctrl); - printk(" DSPBCNTR: 0x%08x\n", hw->disp_b_ctrl); - printk(" DSPABASE: 0x%08x\n", hw->disp_a_base); - printk(" DSPBBASE: 0x%08x\n", hw->disp_b_base); - printk(" DSPASTRIDE: 0x%08x\n", hw->disp_a_stride); - printk(" DSPBSTRIDE: 0x%08x\n", hw->disp_b_stride); + pr_info(" DSPACNTR: 0x%08x\n", hw->disp_a_ctrl); + pr_info(" DSPBCNTR: 0x%08x\n", hw->disp_b_ctrl); + pr_info(" DSPABASE: 0x%08x\n", hw->disp_a_base); + pr_info(" DSPBBASE: 0x%08x\n", hw->disp_b_base); + pr_info(" DSPASTRIDE: 0x%08x\n", hw->disp_a_stride); + pr_info(" DSPBSTRIDE: 0x%08x\n", hw->disp_b_stride); - printk(" VGACNTRL: 0x%08x\n", hw->vgacntrl); - printk(" ADD_ID: 0x%08x\n", hw->add_id); + pr_info(" VGACNTRL: 0x%08x\n", hw->vgacntrl); + pr_info(" ADD_ID: 0x%08x\n", hw->add_id); for (i = 0; i < 7; i++) { - printk(" SWF0%d 0x%08x\n", i, + pr_info(" SWF0%d 0x%08x\n", i, hw->swf0x[i]); } for (i = 0; i < 7; i++) { - printk(" SWF1%d 0x%08x\n", i, + pr_info(" SWF1%d 0x%08x\n", i, hw->swf1x[i]); } for (i = 0; i < 3; i++) { - printk(" SWF3%d 0x%08x\n", i, + pr_info(" SWF3%d 0x%08x\n", i, hw->swf3x[i]); } for (i = 0; i < 8; i++) - printk(" FENCE%d 0x%08x\n", i, + pr_info(" FENCE%d 0x%08x\n", i, hw->fence[i]); - printk(" INSTPM 0x%08x\n", hw->instpm); - printk(" MEM_MODE 0x%08x\n", hw->mem_mode); - printk(" FW_BLC_0 0x%08x\n", hw->fw_blc_0); - printk(" FW_BLC_1 0x%08x\n", hw->fw_blc_1); + pr_info(" INSTPM 0x%08x\n", hw->instpm); + pr_info(" MEM_MODE 0x%08x\n", hw->mem_mode); + pr_info(" FW_BLC_0 0x%08x\n", hw->fw_blc_0); + pr_info(" FW_BLC_1 0x%08x\n", hw->fw_blc_1); - printk("hw state dump end\n"); + pr_info("hw state dump end\n"); #endif } --- a/drivers/video/kyro/fbdev.c +++ b/drivers/video/kyro/fbdev.c @@ -740,7 +740,7 @@ static int __devinit kyrofb_probe(struct if (register_framebuffer(info) < 0) goto out_unmap; - printk("fb%d: %s frame buffer device, at %dx%d@%d using %ldk/%ldk of VRAM\n", + pr_info("fb%d: %s frame buffer device, at %dx%d@%d using %ldk/%ldk of VRAM\n", info->node, info->fix.id, info->var.xres, info->var.yres, info->var.bits_per_pixel, size >> 10, (unsigned long)info->fix.smem_len >> 10); --- a/drivers/video/leo.c +++ b/drivers/video/leo.c @@ -613,7 +613,7 @@ static void leo_init_one(struct sbus_dev list_add(&all->list, &leo_list); - printk("leo: %s at %lx:%lx\n", + pr_info("leo: %s at %lx:%lx\n", sdev->prom_name, (long) sdev->reg_addrs[0].which_io, (long) sdev->reg_addrs[0].phys_addr); --- a/drivers/video/macfb.c +++ b/drivers/video/macfb.c @@ -639,9 +639,9 @@ static int __init macfb_init(void) Mac */ fb_info.screen_base = ioremap(mac_bi_data.videoaddr, macfb_fix.smem_len); - printk("macfb: framebuffer at 0x%08lx, mapped to 0x%p, size %dk\n", + pr_info("macfb: framebuffer at 0x%08lx, mapped to 0x%p, size %dk\n", macfb_fix.smem_start, fb_info.screen_base, macfb_fix.smem_len/1024); - printk("macfb: mode is %dx%dx%d, linelength=%d\n", + pr_info("macfb: mode is %dx%dx%d, linelength=%d\n", macfb_defined.xres, macfb_defined.yres, macfb_defined.bits_per_pixel, macfb_fix.line_length); /* @@ -653,7 +653,7 @@ static int __init macfb_init(void) macfb_defined.height = PIXEL_TO_MM(macfb_defined.yres); macfb_defined.width = PIXEL_TO_MM(macfb_defined.xres); - printk("macfb: scrolling: redraw\n"); + pr_info("macfb: scrolling: redraw\n"); macfb_defined.yres_virtual = macfb_defined.yres; /* some dummy values for timing to make fbset happy */ @@ -689,7 +689,7 @@ static int __init macfb_init(void) macfb_defined.green.length = 5; macfb_defined.blue.offset = 0; macfb_defined.blue.length = 5; - printk("macfb: directcolor: " + pr_info("macfb: directcolor: " "size=1:5:5:5, shift=15:10:5:0\n"); video_cmap_len = 16; /* Should actually be FB_VISUAL_DIRECTCOLOR, but this @@ -706,14 +706,14 @@ static int __init macfb_init(void) macfb_defined.green.length = 8; macfb_defined.blue.offset = 0; macfb_defined.blue.length = 8; - printk("macfb: truecolor: " + pr_info("macfb: truecolor: " "size=0:8:8:8, shift=0:16:8:0\n"); video_cmap_len = 16; macfb_fix.visual = FB_VISUAL_TRUECOLOR; default: video_cmap_len = 0; macfb_fix.visual = FB_VISUAL_MONO01; - printk("macfb: unknown or unsupported bit depth: %d\n", macfb_defined.bits_per_pixel); + printk(KERN_WARNING "macfb: unknown or unsupported bit depth: %d\n", macfb_defined.bits_per_pixel); break; } @@ -961,8 +961,8 @@ static int __init macfb_init(void) err = register_framebuffer(&fb_info); if (!err) - printk("fb%d: %s frame buffer device\n", - fb_info.node, fb_info.fix.id); + pr_info("fb%d: %s frame buffer device\n", + fb_info.node, fb_info.fix.id); return err; } --- a/drivers/video/matrox/matroxfb_base.c +++ b/drivers/video/matrox/matroxfb_base.c @@ -1885,7 +1885,7 @@ static int initMatrox2(WPMINFO struct bo if (register_framebuffer(&ACCESS_FBINFO(fbcon)) < 0) { goto failVideoIO; } - printk("fb%d: %s frame buffer device\n", + pr_info("fb%d: %s frame buffer device\n", ACCESS_FBINFO(fbcon.node), ACCESS_FBINFO(fbcon.fix.id)); /* there is no console on this fb... but we have to initialize hardware --- a/drivers/video/modedb.c +++ b/drivers/video/modedb.c @@ -24,7 +24,7 @@ ((v).xres == (x) && (v).yres == (y)) #ifdef DEBUG -#define DPRINTK(fmt, args...) printk("modedb %s: " fmt, __FUNCTION__ , ## args) +#define DPRINTK(fmt, args...) pr_debug("modedb %s: " fmt, __FUNCTION__ , ## args) #else #define DPRINTK(fmt, args...) #endif --- a/drivers/video/neofb.c +++ b/drivers/video/neofb.c @@ -252,7 +252,7 @@ static void neoCalcVCLK(const struct fb_ par->VCLK3Denominator = d_best; #ifdef NEOFB_DEBUG - printk("neoVCLK: f:%d NumLow=%d NumHi=%d Den=%d Df=%d\n", + printk(KERN_DEBUG "neoVCLK: f:%d NumLow=%d NumHi=%d Den=%d Df=%d\n", f_target >> 12, par->VCLK3NumeratorLow, par->VCLK3NumeratorHigh, @@ -1715,13 +1715,13 @@ static int __devinit neo_map_mmio(struct if (!request_mem_region (info->fix.mmio_start, MMIO_SIZE, "memory mapped I/O")) { - printk("neofb: memory mapped IO in use\n"); + printk(KERN_ERR "neofb: memory mapped IO in use\n"); return -EBUSY; } par->mmio_vbase = ioremap(info->fix.mmio_start, MMIO_SIZE); if (!par->mmio_vbase) { - printk("neofb: unable to map memory mapped IO\n"); + printk(KERN_ERR "neofb: unable to map memory mapped IO\n"); release_mem_region(info->fix.mmio_start, info->fix.mmio_len); return -ENOMEM; @@ -1756,14 +1756,14 @@ static int __devinit neo_map_video(struc if (!request_mem_region(info->fix.smem_start, info->fix.smem_len, "frame buffer")) { - printk("neofb: frame buffer in use\n"); + printk(KERN_WARNING "neofb: frame buffer in use\n"); return -EBUSY; } info->screen_base = ioremap(info->fix.smem_start, info->fix.smem_len); if (!info->screen_base) { - printk("neofb: unable to map screen memory\n"); + printk(KERN_ERR "neofb: unable to map screen memory\n"); release_mem_region(info->fix.smem_start, info->fix.smem_len); return -ENOMEM; --- a/drivers/video/p9100.c +++ b/drivers/video/p9100.c @@ -330,7 +330,7 @@ static void p9100_init_one(struct sbus_d list_add(&all->list, &p9100_list); - printk("p9100: %s at %lx:%lx\n", + pr_info("p9100: %s at %lx:%lx\n", sdev->prom_name, (long) sdev->reg_addrs[0].which_io, (long) sdev->reg_addrs[0].phys_addr); --- a/drivers/video/platinumfb.c +++ b/drivers/video/platinumfb.c @@ -146,7 +146,7 @@ static int platinumfb_set_par (struct fb FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_DIRECTCOLOR; info->fix.line_length = vmode_attrs[pinfo->vmode-1].hres * (1<cmode) + offset; - printk("line_length: %x\n", info->fix.line_length); + printk(KERN_DEBUG "line_length: %x\n", info->fix.line_length); return 0; } @@ -364,12 +364,12 @@ static int __devinit platinum_init_fb(st platinum_vram_reqd(default_vmode, default_cmode) > pinfo->total_vram) default_cmode--; - printk("platinumfb: Using video mode %d and color mode %d.\n", default_vmode, default_cmode); + pr_info("platinumfb: Using video mode %d and color mode %d.\n", default_vmode, default_cmode); /* Setup default var */ if (mac_vmode_to_var(default_vmode, default_cmode, &var) < 0) { /* This shouldn't happen! */ - printk("mac_vmode_to_var(%d, %d,) failed\n", default_vmode, default_cmode); + printk(KERN_ERR "mac_vmode_to_var(%d, %d,) failed\n", default_vmode, default_cmode); try_again: default_vmode = VMODE_640_480_60; default_cmode = CMODE_8; --- a/drivers/video/pm3fb.c +++ b/drivers/video/pm3fb.c @@ -1575,7 +1575,7 @@ static void pm3fb_common_init(struct pm3 pm3fb_write_mode(l_fb_info); - printk("fb%d: %s, using %uK of video memory (%s)\n", + pr_info("fb%d: %s, using %uK of video memory (%s)\n", l_fb_info->gen.info.node, permedia3_name, (u32) (l_fb_info->fb_size >> 10), cardbase[l_fb_info->board_type].cardname); --- a/drivers/video/pvr2fb.c +++ b/drivers/video/pvr2fb.c @@ -817,10 +817,10 @@ static int __init pvr2fb_common_init(voi rev = fb_readl(par->mmio_base + 0x04); - printk("fb%d: %s (rev %ld.%ld) frame buffer device, using %ldk/%ldk of video memory\n", + pr_info("fb%d: %s (rev %ld.%ld) frame buffer device, using %ldk/%ldk of video memory\n", fb_info->node, fb_info->fix.id, (rev >> 4) & 0x0f, rev & 0x0f, modememused >> 10, (unsigned long)(fb_info->fix.smem_len >> 10)); - printk("fb%d: Mode %dx%d-%d pitch = %ld cable: %s video output: %s\n", + pr_info("fb%d: Mode %dx%d-%d pitch = %ld cable: %s video output: %s\n", fb_info->node, fb_info->var.xres, fb_info->var.yres, fb_info->var.bits_per_pixel, get_line_length(fb_info->var.xres, fb_info->var.bits_per_pixel), --- a/drivers/video/radeonfb.c +++ b/drivers/video/radeonfb.c @@ -28,6 +28,7 @@ * */ +//#define DEBUG #define RADEON_VERSION "0.1.6" @@ -80,13 +81,7 @@ #include