/* * ihcp_changes.h * changes and identification macro module for Linux 2.6.x * driver for PCI hardcopy boards * * Tahoma Technology * (formerly Ikon Corporation) * 107 2nd Avenue North * Seattle, WA, USA 98109 * * 206.728.6465 * http://www.tahomatech.com * tahoma@tahomatech.com * * This code released under the GPL, and in the public domain * References to IKON left in place for compatibility and historical reasons * * Please send us code modifications and BUG reports */ #ifndef IHCP_CHANGES_H #define IHCP_CHANGES_H #ifdef MODULE_DESCRIPTION MODULE_DESCRIPTION("Tahoma Technology (formerly Ikon Corporation) Pci Hardcopy Driver - 2010.04.01 12:20"); #endif #ifdef MODULE_AUTHOR MODULE_AUTHOR("Tahoma Technology (formerly Ikon Corporation) http://www.tahomatech.com"); #endif #ifdef MODULE_LICENSE MODULE_LICENSE("GPL"); #endif /* * TODO: * * go to cdev-style device registration, eventually go * to hotplug support * * date: 2010.04.01 files: ihcp_driver.c * * fix long-time bug: we were calling ihcp_set_board_defaults() * before setting the board strapping in the flags element of * unit structure. this caused all boards to be initialized * as VPI-strapped, which caused Centronics-strapped boards to * de-assert SEL IN. that caused some printers (laserjet 1200) * to fail to print. * * date: 2008.08.27 files: ihcp_driver.c, ihcp_var.h * * explicitly include fs.h * * unregister_chrdev always returned 0 and as of 2.6.23 is * void so don't check return value * * as of 2.6.24 new scatterlist access functions to allow * for scatterlist (page) chaining - so add version test * and macro for setting scatterlist entries * * we're not implementing chianing - if user really wants * more than a page of scatterlist we will ask kmalloc * for it and not use chaining (let kmalloc fail if not * sufficient contig memory) * * date: 2007.06.03 files: ihcp_driver.c, ikonex.c, ikonex.h, * README.ihcp, ihcp_install-2.6 * * fix byte-order default restore after plx reset (plx doesn't * set user bit after soft reset) we will now fully set to * board's current mode, except after MASTER_CLEAR in which * case it will be set to global default mode * added (missing) byte order default to install script * * go to newer ikonex.c, remove ikonex.h * * remove dates from README.ihcp * * date: 2006.11.13 files: ihcp_var.h, ihcp_driver.c * * add butt-ugly version check code to deal with new irq * handler prototype (since kernel devs won't add flag) and * find UTS_RELEASE in utsrelease.h and put it back in debug * print * * date: 2006.10.30 files: all * * fix bonehead #ifndef wrappers on all include files that * only wrapped the #define, not the file ! * * new flags for request_irq() w/back up defines for older kernels * * rename our homemade mutexes to fix collision w/new kernel ones * * use compat and unlocked ioctl entries for mixed 32/64 systems * * drop unused pt_regs arg in int handler (per 2.6.19-rcx kernels) * w/back up define for older kernels * * protect open() from unlikely race * * remove UTS_RELEASE from debug print * * * date: 2005.10.31+ files: all * * Gather all change and date related comments and macros here. * Hopefully there will be fewer tracking errors. * * date: 2005.10.31 files: all * * change pci board id to id list to support both board types * * changes to keep up w/kernel drift: * pci_dma_sync_single --> pci_dma_sync_single_for_device * pci_find_device --> pci_get_device (and pci_put_device) * * general code clean-up and comment compaction * some macros moved from _var.h to _reg.h to try to group * hardware and software macros appropriately * * new log print macros * * convert ioctl *arg to u32 so size is the same for * 32 and 64 bit operation * * use __u32 instead of int in ioctl defines to make sure * size is 32 bits. #include to pick up type * for user apps. * * (install script) * changed MAX_BOARDS default from 1 to 4 now that we check * /proc/interrupts for actual boards atached * * put owner, group and permission seting inside node creation * loop so we can't change someone else's nodes by mistake * * date: 2005.03.20 files: ihcp_driver.c, ihcp_io.h, README.ihcp * * changed some types for x86_64 compatibility * * date: 2004.10.08 files: .c * * added owner to file_operations struct * added pci_disable_device to unload code * * date: 2004.08.27 files: .c & .h * * major modifications for 2.6 kernel * * kiobuf functionality brought inside driver to allow mapping * and pinning user buffer pages - since no longer supported * directly in kernel * * reorganized some code into helper functions * * date: 2002.08.01 files: all * * corrected use of kiobuf maplist to generate scatterlist to allow for * highmem enabled machines (up to 4G) * * added kernel copy buffer for case where machine is and kernel * are highmem, but kernel does not have new scatterlist capability * in this case, we will allocate a copy buffer at init time, and * stuff the kiobuf with its pages * * changed max_phys to orders for allocation efficiency in case of * copy buf * * moved "software" macros from ihcp_reg.h to ihcp_var.h * * got rid of MODINFOBANNER macro (using MODULE_... macros now) * * date: 2002.06.29- files: ihcp_install * * assorted typos and thinkos * * corrected bug in include dir scan * removed linux-2.4 from include scan * IHCP_ENB_HIGHMEM=YES is now the default * added missing scatterlist.page support warning * in case of compile failure * * date: 2002.05.06 files: all * * attempt to autodetect some things in ihcp_install * * add MODULE_LICENSE, MODULE_AUTHOR, and MODULE_DESCRIPTION macros * * uses IHCP_[ALLOC|FREE]_KIOVEC macros to deal with RH7.2 (updated) * quirks - selected by IHCP_RH72PLUS flag in ihcp_reg.h * * use IHCP_SG_LINK macro to do .address or .page/.offset entry * of address into scatterlist - selected by IHCP_HIGHMEM flag in ihcp_reg.h * * if IHCP_USE_DMA_MASK is defined, sets pci_dma_mask to indicate board's DMA * addressing capabilities - for thoroughness - 32 bit should be default * * add flags to enable versioning if it has been enabled in the kernel * or force versioning on, or force it off * * move conditional variable/mutex structs to _var.h, for simplified * compilation and linking * * use slab.h instead of malloc.h * * date: 2001.06.18 files: .c * * move pci_enable_device() prior to device resource accesses to try to * keep non-x86 architectures happy * requires 2.3/2.4 kernel * * date: 2000.08.30 files: .c, .h * * use readl and writel rather than direct de-reference (for non x86 * architectures) this change in ihcp_reg.h * SA_SHIRQ rather than SA_INTERRUPT to allow sharing and int code * interruption * use time_before() when delaying to avoid jiffies wrap * pci_enable_device() * * date: 2000.03.24 files: all * * incorporated kiobuf mechanism for dma from user buffers * to replace dma copy buffer used in older versions * separated int level read from board and one read from * pci_dev (so we can use the hardware level to restore * board after en eeprom reload * incorporated modified version of Kaz Kylheku's mutex stuff * for SMP * add IOPB macros to allow for possible byte lane swizzling to be * dealt with in one place * convert all IPLX accesses to PLX accesses - doing accesses via the * ihcp space may have been allowing pre-fetch from plx registers * disable address space 0 pre-fetch * make int/cstat read in intr volatile * start DMA in two steps to avoid PLX bug * pause DMA after sleep in strategy * * date: 2000.03.13 files: all * * started working w/2.3.x * new pci_dev definition required changes in the way we get * base addresses * changed file_ops struct initialization to use named fields * changed wait_queue type and added initialization * * date: 2000.11.20 files: ihcp_install * * added -x test to load script line in rc.local * * date: 1999.11.11 files: all * * change the way we do plx config re-load to avoid possible * future panic with bridge chips w/short bus timeouts * * date: 1999.10.02 files: all * * re-code for 2.2 * this version no longer compatible with earlier linux revs * * date: 1999.03.16 files: .c * * changed request_irq call to register node name rather than driver * name with interrupt - so each board will have a unique int name * (ihcp0, ihcp1, ... same as node name) * * date: 1999.01.05 files: all * * start of development - initial target Linux 2.0.35 (R.H. 5.1) */ #endif /* IHCP_CHANGES_H */