···11#22# Automatically generated make config: don't edit33-# Linux kernel version: 2.6.1844-# Tue Oct 3 13:30:51 200633+# Linux kernel version: 2.6.22-rc144+# Mon May 14 08:43:31 200755#66CONFIG_SUPERH=y77CONFIG_SUPERH64=y···1010CONFIG_GENERIC_FIND_NEXT_BIT=y1111CONFIG_GENERIC_HWEIGHT=y1212CONFIG_GENERIC_CALIBRATE_DELAY=y1313+# CONFIG_ARCH_HAS_ILOG2_U32 is not set1414+# CONFIG_ARCH_HAS_ILOG2_U64 is not set1315CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"14161517#···3533# CONFIG_UTS_NS is not set3634# CONFIG_AUDIT is not set3735# CONFIG_IKCONFIG is not set3636+CONFIG_LOG_BUF_SHIFT=143737+CONFIG_SYSFS_DEPRECATED=y3838# CONFIG_RELAY is not set3939-CONFIG_INITRAMFS_SOURCE=""3939+# CONFIG_BLK_DEV_INITRD is not set4040# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set4141CONFIG_SYSCTL=y4242# CONFIG_EMBEDDED is not set4343CONFIG_UID16=y4444-# CONFIG_SYSCTL_SYSCALL is not set4444+CONFIG_SYSCTL_SYSCALL=y4545CONFIG_KALLSYMS=y4646# CONFIG_KALLSYMS_ALL is not set4747# CONFIG_KALLSYMS_EXTRA_PASS is not set···5349CONFIG_ELF_CORE=y5450CONFIG_BASE_FULL=y5551CONFIG_FUTEX=y5252+CONFIG_ANON_INODES=y5653CONFIG_EPOLL=y5454+CONFIG_SIGNALFD=y5555+CONFIG_TIMERFD=y5656+CONFIG_EVENTFD=y5757CONFIG_SHMEM=y5858-CONFIG_SLAB=y5958CONFIG_VM_EVENT_COUNTERS=y5959+CONFIG_SLAB=y6060+# CONFIG_SLUB is not set6161+# CONFIG_SLOB is not set6062CONFIG_RT_MUTEXES=y6163# CONFIG_TINY_SHMEM is not set6264CONFIG_BASE_SMALL=06363-# CONFIG_SLOB is not set64656566#6667# Loadable module support···144135#145136CONFIG_HEARTBEAT=y146137CONFIG_HDSP253_LED=y147147-CONFIG_SH_DMA=y138138+# CONFIG_SH_DMA is not set148139CONFIG_PREEMPT=y149140CONFIG_SELECT_MEMORY_MODEL=y150141CONFIG_FLATMEM_MANUAL=y···155146# CONFIG_SPARSEMEM_STATIC is not set156147CONFIG_SPLIT_PTLOCK_CPUS=4157148# CONFIG_RESOURCES_64BIT is not set149149+CONFIG_ZONE_DMA_FLAG=0158150159151#160152# Bus options (PCI, PCMCIA, EISA, MCA, ISA)161153#162154CONFIG_PCI=y163155CONFIG_SH_PCIDMA_NONCOHERENT=y164164-# CONFIG_PCI_MULTITHREAD_PROBE is not set156156+# CONFIG_ARCH_SUPPORTS_MSI is not set165157# CONFIG_PCI_DEBUG is not set166158167159#168160# PCCARD (PCMCIA/CardBus) support169161#170162# CONFIG_PCCARD is not set171171-172172-#173173-# PCI Hotplug Support174174-#175163# CONFIG_HOTPLUG_PCI is not set176164177165#···186180#187181# Networking options188182#189189-# CONFIG_NETDEBUG is not set190183CONFIG_PACKET=y191184# CONFIG_PACKET_MMAP is not set192185CONFIG_UNIX=y193186CONFIG_XFRM=y194187# CONFIG_XFRM_USER is not set195188# CONFIG_XFRM_SUB_POLICY is not set189189+# CONFIG_XFRM_MIGRATE is not set196190# CONFIG_NET_KEY is not set197191CONFIG_INET=y198192# CONFIG_IP_MULTICAST is not set···213207# CONFIG_INET_TUNNEL is not set214208CONFIG_INET_XFRM_MODE_TRANSPORT=y215209CONFIG_INET_XFRM_MODE_TUNNEL=y210210+CONFIG_INET_XFRM_MODE_BEET=y216211CONFIG_INET_DIAG=y217212CONFIG_INET_TCP_DIAG=y218213# CONFIG_TCP_CONG_ADVANCED is not set219214CONFIG_TCP_CONG_CUBIC=y220215CONFIG_DEFAULT_TCP_CONG="cubic"216216+# CONFIG_TCP_MD5SIG is not set221217# CONFIG_IPV6 is not set222218# CONFIG_INET6_XFRM_TUNNEL is not set223219# CONFIG_INET6_TUNNEL is not set···264256# CONFIG_HAMRADIO is not set265257# CONFIG_IRDA is not set266258# CONFIG_BT is not set259259+# CONFIG_AF_RXRPC is not set260260+261261+#262262+# Wireless263263+#264264+# CONFIG_CFG80211 is not set265265+# CONFIG_WIRELESS_EXT is not set266266+# CONFIG_MAC80211 is not set267267# CONFIG_IEEE80211 is not set268268+# CONFIG_RFKILL is not set268269269270#270271# Device Drivers···286269CONFIG_PREVENT_FIRMWARE_BUILD=y287270# CONFIG_FW_LOADER is not set288271# CONFIG_DEBUG_DRIVER is not set272272+# CONFIG_DEBUG_DEVRES is not set289273# CONFIG_SYS_HYPERVISOR is not set290274291275#292276# Connector - unified userspace <-> kernelspace linker293277#294278# CONFIG_CONNECTOR is not set295295-296296-#297297-# Memory Technology Devices (MTD)298298-#299279# CONFIG_MTD is not set300280301281#···303289#304290# Plug and Play support305291#292292+# CONFIG_PNPACPI is not set306293307294#308295# Block devices···321306CONFIG_BLK_DEV_RAM_COUNT=16322307CONFIG_BLK_DEV_RAM_SIZE=4096323308CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024324324-# CONFIG_BLK_DEV_INITRD is not set325309# CONFIG_CDROM_PKTCDVD is not set326310# CONFIG_ATA_OVER_ETH is not set311311+312312+#313313+# Misc devices314314+#315315+# CONFIG_PHANTOM is not set316316+# CONFIG_SGI_IOC4 is not set317317+# CONFIG_TIFM_CORE is not set318318+# CONFIG_BLINK is not set327319328320#329321# ATA/ATAPI/MFM/RLL support···342320#343321# CONFIG_RAID_ATTRS is not set344322CONFIG_SCSI=y323323+# CONFIG_SCSI_TGT is not set345324# CONFIG_SCSI_NETLINK is not set346325CONFIG_SCSI_PROC_FS=y347326···362339CONFIG_SCSI_MULTI_LUN=y363340# CONFIG_SCSI_CONSTANTS is not set364341# CONFIG_SCSI_LOGGING is not set342342+# CONFIG_SCSI_SCAN_ASYNC is not set365343366344#367345# SCSI Transports···402378CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16403379CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64404380CONFIG_SCSI_SYM53C8XX_MMIO=y405405-# CONFIG_SCSI_IPR is not set406381# CONFIG_SCSI_QLOGIC_1280 is not set407382# CONFIG_SCSI_QLA_FC is not set383383+# CONFIG_SCSI_QLA_ISCSI is not set408384# CONFIG_SCSI_LPFC is not set409385# CONFIG_SCSI_DC395x is not set410386# CONFIG_SCSI_DC390T is not set411387# CONFIG_SCSI_NSP32 is not set412388# CONFIG_SCSI_DEBUG is not set413413-414414-#415415-# Serial ATA (prod) and Parallel ATA (experimental) drivers416416-#389389+# CONFIG_SCSI_ESP_CORE is not set390390+# CONFIG_SCSI_SRP is not set417391# CONFIG_ATA is not set418392419393#···430408#431409# IEEE 1394 (FireWire) support432410#411411+# CONFIG_FIREWIRE is not set433412# CONFIG_IEEE1394 is not set434413435414#···451428# ARCnet devices452429#453430# CONFIG_ARCNET is not set454454-455455-#456456-# PHY device support457457-#458431# CONFIG_PHYLIB is not set459432460433#···498479# CONFIG_SUNDANCE is not set499480# CONFIG_TLAN is not set500481# CONFIG_VIA_RHINE is not set501501-502502-#503503-# Ethernet (1000 Mbit)504504-#482482+# CONFIG_SC92031 is not set483483+CONFIG_NETDEV_1000=y505484# CONFIG_ACENIC is not set506485# CONFIG_DL2K is not set507486# CONFIG_E1000 is not set···515498# CONFIG_TIGON3 is not set516499# CONFIG_BNX2 is not set517500# CONFIG_QLA3XXX is not set518518-519519-#520520-# Ethernet (10000 Mbit)521521-#501501+# CONFIG_ATL1 is not set502502+CONFIG_NETDEV_10000=y522503# CONFIG_CHELSIO_T1 is not set504504+# CONFIG_CHELSIO_T3 is not set523505# CONFIG_IXGB is not set524506# CONFIG_S2IO is not set525507# CONFIG_MYRI10GE is not set508508+# CONFIG_NETXEN_NIC is not set509509+# CONFIG_MLX4_CORE is not set510510+CONFIG_MLX4_DEBUG=y526511527512#528513# Token Ring devices···532513# CONFIG_TR is not set533514534515#535535-# Wireless LAN (non-hamradio)516516+# Wireless LAN536517#537537-# CONFIG_NET_RADIO is not set538538-539539-#540540-# Wan interfaces541541-#518518+# CONFIG_WLAN_PRE80211 is not set519519+# CONFIG_WLAN_80211 is not set542520# CONFIG_WAN is not set543521# CONFIG_FDDI is not set544522# CONFIG_HIPPI is not set···587571# CONFIG_KEYBOARD_STOWAWAY is not set588572CONFIG_INPUT_MOUSE=y589573CONFIG_MOUSE_PS2=y574574+CONFIG_MOUSE_PS2_ALPS=y575575+CONFIG_MOUSE_PS2_LOGIPS2PP=y576576+CONFIG_MOUSE_PS2_SYNAPTICS=y577577+CONFIG_MOUSE_PS2_LIFEBOOK=y578578+CONFIG_MOUSE_PS2_TRACKPOINT=y579579+# CONFIG_MOUSE_PS2_TOUCHKIT is not set590580# CONFIG_MOUSE_SERIAL is not set581581+# CONFIG_MOUSE_APPLETOUCH is not set591582# CONFIG_MOUSE_VSXXXAA is not set592583# CONFIG_INPUT_JOYSTICK is not set584584+# CONFIG_INPUT_TABLET is not set593585# CONFIG_INPUT_TOUCHSCREEN is not set594586# CONFIG_INPUT_MISC is not set595587···643619# IPMI644620#645621# CONFIG_IPMI_HANDLER is not set646646-647647-#648648-# Watchdog Cards649649-#650622CONFIG_WATCHDOG=y651623# CONFIG_WATCHDOG_NOWAYOUT is not set652624···659639# CONFIG_WDTPCI is not set660640CONFIG_HW_RANDOM=y661641# CONFIG_GEN_RTC is not set662662-# CONFIG_DTLK is not set663642# CONFIG_R3964 is not set664643# CONFIG_APPLICOM is not set665665-666666-#667667-# Ftape, the floppy tape device driver668668-#669644# CONFIG_DRM is not set670645# CONFIG_RAW_DRIVER is not set671646···668653# TPM devices669654#670655# CONFIG_TCG_TPM is not set671671-# CONFIG_TELCLOCK is not set672672-673673-#674674-# I2C support675675-#656656+CONFIG_DEVPORT=y676657# CONFIG_I2C is not set677658678659#···680669#681670# Dallas's 1-wire bus682671#683683-684684-#685685-# Hardware Monitoring support686686-#672672+# CONFIG_W1 is not set687673CONFIG_HWMON=y688674# CONFIG_HWMON_VID is not set689675# CONFIG_SENSORS_ABITUGURU is not set690676# CONFIG_SENSORS_F71805F is not set677677+# CONFIG_SENSORS_PC87427 is not set678678+# CONFIG_SENSORS_SMSC47M1 is not set679679+# CONFIG_SENSORS_SMSC47B397 is not set691680# CONFIG_SENSORS_VT1211 is not set681681+# CONFIG_SENSORS_W83627HF is not set692682# CONFIG_HWMON_DEBUG_CHIP is not set693683694684#695695-# Misc devices685685+# Multifunction device drivers696686#687687+# CONFIG_MFD_SM501 is not set697688698689#699690# Multimedia devices700691#701692# CONFIG_VIDEO_DEV is not set702702-CONFIG_VIDEO_V4L2=y703703-704704-#705705-# Digital Video Broadcasting Devices706706-#707707-# CONFIG_DVB is not set693693+# CONFIG_DVB_CORE is not set694694+CONFIG_DAB=y708695709696#710697# Graphics support711698#712712-CONFIG_FIRMWARE_EDID=y699699+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set700700+701701+#702702+# Display device support703703+#704704+# CONFIG_DISPLAY_SUPPORT is not set705705+# CONFIG_VGASTATE is not set713706CONFIG_FB=y707707+CONFIG_FIRMWARE_EDID=y708708+# CONFIG_FB_DDC is not set714709CONFIG_FB_CFB_FILLRECT=y715710CONFIG_FB_CFB_COPYAREA=y716711CONFIG_FB_CFB_IMAGEBLIT=y712712+# CONFIG_FB_SYS_FILLRECT is not set713713+# CONFIG_FB_SYS_COPYAREA is not set714714+# CONFIG_FB_SYS_IMAGEBLIT is not set715715+# CONFIG_FB_SYS_FOPS is not set716716+CONFIG_FB_DEFERRED_IO=y717717+# CONFIG_FB_SVGALIB is not set717718# CONFIG_FB_MACMODES is not set718719# CONFIG_FB_BACKLIGHT is not set719720CONFIG_FB_MODE_HELPERS=y720721# CONFIG_FB_TILEBLITTING is not set722722+723723+#724724+# Frame buffer hardware drivers725725+#721726# CONFIG_FB_CIRRUS is not set722727# CONFIG_FB_PM2 is not set723728# CONFIG_FB_CYBER2000 is not set···747720# CONFIG_FB_RADEON is not set748721# CONFIG_FB_ATY128 is not set749722# CONFIG_FB_ATY is not set723723+# CONFIG_FB_S3 is not set750724# CONFIG_FB_SAVAGE is not set751725# CONFIG_FB_SIS is not set752726# CONFIG_FB_NEOMAGIC is not set753727CONFIG_FB_KYRO=y754728# CONFIG_FB_3DFX is not set755729# CONFIG_FB_VOODOO1 is not set730730+# CONFIG_FB_VT8623 is not set756731# CONFIG_FB_TRIDENT is not set732732+# CONFIG_FB_ARK is not set733733+# CONFIG_FB_PM3 is not set757734# CONFIG_FB_VIRTUAL is not set758735759736#···777746# CONFIG_FONT_SUN8x16 is not set778747# CONFIG_FONT_SUN12x22 is not set779748# CONFIG_FONT_10x18 is not set780780-781781-#782782-# Logo configuration783783-#784749CONFIG_LOGO=y785750# CONFIG_LOGO_LINUX_MONO is not set786751# CONFIG_LOGO_LINUX_VGA16 is not set···784757# CONFIG_LOGO_SUPERH_MONO is not set785758# CONFIG_LOGO_SUPERH_VGA16 is not set786759CONFIG_LOGO_SUPERH_CLUT224=y787787-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set788760789761#790762# Sound791763#792764# CONFIG_SOUND is not set765765+766766+#767767+# HID Devices768768+#769769+CONFIG_HID=y770770+# CONFIG_HID_DEBUG is not set793771794772#795773# USB support···812780# USB Gadget Support813781#814782# CONFIG_USB_GADGET is not set815815-816816-#817817-# MMC/SD Card support818818-#819783# CONFIG_MMC is not set820784821785#···864836CONFIG_EXT3_FS_XATTR=y865837# CONFIG_EXT3_FS_POSIX_ACL is not set866838# CONFIG_EXT3_FS_SECURITY is not set839839+# CONFIG_EXT4DEV_FS is not set867840CONFIG_JBD=y868841# CONFIG_JBD_DEBUG is not set869842CONFIG_FS_MBCACHE=y···872843# CONFIG_JFS_FS is not set873844# CONFIG_FS_POSIX_ACL is not set874845# CONFIG_XFS_FS is not set846846+# CONFIG_GFS2_FS is not set875847# CONFIG_OCFS2_FS is not set876848CONFIG_MINIX_FS=y877849CONFIG_ROMFS_FS=y···942912CONFIG_LOCKD_V4=y943913CONFIG_NFS_COMMON=y944914CONFIG_SUNRPC=y915915+# CONFIG_SUNRPC_BIND34 is not set945916# CONFIG_RPCSEC_GSS_KRB5 is not set946917# CONFIG_RPCSEC_GSS_SPKM3 is not set947918# CONFIG_SMB_FS is not set···972941# CONFIG_SUN_PARTITION is not set973942# CONFIG_KARMA_PARTITION is not set974943# CONFIG_EFI_PARTITION is not set944944+# CONFIG_SYSV68_PARTITION is not set975945976946#977947# Native Language Support978948#979949# CONFIG_NLS is not set950950+951951+#952952+# Distributed Lock Manager953953+#954954+# CONFIG_DLM is not set980955981956#982957# Profiling support···996959CONFIG_ENABLE_MUST_CHECK=y997960CONFIG_MAGIC_SYSRQ=y998961# CONFIG_UNUSED_SYMBOLS is not set962962+CONFIG_DEBUG_FS=y963963+# CONFIG_HEADERS_CHECK is not set999964CONFIG_DEBUG_KERNEL=y10001000-CONFIG_LOG_BUF_SHIFT=14965965+# CONFIG_DEBUG_SHIRQ is not set1001966CONFIG_DETECT_SOFTLOCKUP=y1002967CONFIG_SCHEDSTATS=y968968+# CONFIG_TIMER_STATS is not set1003969# CONFIG_DEBUG_SLAB is not set1004970# CONFIG_DEBUG_RT_MUTEXES is not set1005971# CONFIG_RT_MUTEX_TESTER is not set1006972# CONFIG_DEBUG_SPINLOCK is not set1007973# CONFIG_DEBUG_MUTEXES is not set10081008-# CONFIG_DEBUG_RWSEMS is not set1009974# CONFIG_DEBUG_SPINLOCK_SLEEP is not set1010975# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set1011976# CONFIG_DEBUG_KOBJECT is not set1012977CONFIG_DEBUG_BUGVERBOSE=y1013978# CONFIG_DEBUG_INFO is not set10141014-CONFIG_DEBUG_FS=y1015979# CONFIG_DEBUG_VM is not set1016980# CONFIG_DEBUG_LIST is not set1017981CONFIG_FRAME_POINTER=y10181018-# CONFIG_UNWIND_INFO is not set1019982CONFIG_FORCED_INLINING=y1020983# CONFIG_RCU_TORTURE_TEST is not set984984+# CONFIG_FAULT_INJECTION is not set1021985# CONFIG_EARLY_PRINTK is not set1022986# CONFIG_DEBUG_KERNEL_WITH_GDB_STUB is not set1023987CONFIG_SH64_PROC_TLB=y···10421004#10431005# Library routines10441006#10071007+CONFIG_BITREVERSE=y10451008# CONFIG_CRC_CCITT is not set10461009# CONFIG_CRC16 is not set10101010+# CONFIG_CRC_ITU_T is not set10471011CONFIG_CRC32=y10481012# CONFIG_LIBCRC32C is not set10491013CONFIG_PLIST=y10141014+CONFIG_HAS_IOMEM=y10151015+CONFIG_HAS_IOPORT=y10161016+CONFIG_HAS_DMA=y10501017CONFIG_GENERIC_HARDIRQS=y10511018CONFIG_GENERIC_IRQ_PROBE=y
···44 * May be copied or modified under the terms of the GNU General Public55 * License. See linux/COPYING for more information.66 *77- * Defintions for the SH5 PCI hardware.77+ * Definitions for the SH5 PCI hardware.88 */991010/* Product ID */
+1-1
arch/sh64/kernel/process.c
···387387 * NOTE! Only a kernel-only process(ie the swapper or direct descendants388388 * who haven't done an "execve()") should use this: it will work within389389 * a system call from a "real" process, but the process memory space will390390- * not be free'd until both the parent and the child have exited.390390+ * not be freed until both the parent and the child have exited.391391 */392392int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)393393{
+29-4
arch/sh64/kernel/signal.c
···698698 if (try_to_freeze())699699 goto no_signal;700700701701- if (!oldset)701701+ if (test_thread_flag(TIF_RESTORE_SIGMASK))702702+ oldset = ¤t->saved_sigmask;703703+ else if (!oldset)702704 oldset = ¤t->blocked;703705704706 signr = get_signal_to_deliver(&info, &ka, regs, 0);···708706 if (signr > 0) {709707 /* Whee! Actually deliver the signal. */710708 handle_signal(signr, &info, &ka, oldset, regs);709709+710710+ /*711711+ * If a signal was successfully delivered, the saved sigmask712712+ * is in its frame, and we can clear the TIF_RESTORE_SIGMASK713713+ * flag.714714+ */715715+ if (test_thread_flag(TIF_RESTORE_SIGMASK))716716+ clear_thread_flag(TIF_RESTORE_SIGMASK);717717+711718 return 1;712719 }713720···724713 /* Did we come from a system call? */725714 if (regs->syscall_nr >= 0) {726715 /* Restart the system call - no handlers present */727727- if (regs->regs[REG_RET] == -ERESTARTNOHAND ||728728- regs->regs[REG_RET] == -ERESTARTSYS ||729729- regs->regs[REG_RET] == -ERESTARTNOINTR) {716716+ switch (regs->regs[REG_RET]) {717717+ case -ERESTARTNOHAND:718718+ case -ERESTARTSYS:719719+ case -ERESTARTNOINTR:730720 /* Decode Syscall # */731721 regs->regs[REG_RET] = regs->syscall_nr;732722 regs->pc -= 4;723723+ break;724724+725725+ case -ERESTART_RESTARTBLOCK:726726+ regs->regs[REG_RET] = __NR_restart_syscall;727727+ regs->pc -= 4;728728+ break;733729 }734730 }731731+732732+ /* No signal to deliver -- put the saved sigmask back */733733+ if (test_thread_flag(TIF_RESTORE_SIGMASK)) {734734+ clear_thread_flag(TIF_RESTORE_SIGMASK);735735+ sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL);736736+ }737737+735738 return 0;736739}
+33-3
arch/sh64/kernel/syscalls.S
···22 * arch/sh64/kernel/syscalls.S33 *44 * Copyright (C) 2000, 2001 Paolo Alberelli55- * Copyright (C) 2004 Paul Mundt55+ * Copyright (C) 2004 - 2007 Paul Mundt66 * Copyright (C) 2003, 2004 Richard Curnow77 *88 * This file is subject to the terms and conditions of the GNU General Public···2020 */2121 .globl sys_call_table2222sys_call_table:2323- .long sys_ni_syscall /* 0 - old "setup()" system call */2323+ .long sys_restart_syscall /* 0 - old "setup()" system call */2424 .long sys_exit2525 .long sys_fork2626 .long sys_read···347347 .long sys_inotify_init348348 .long sys_inotify_add_watch349349 .long sys_inotify_rm_watch /* 320 */350350-350350+ .long sys_ni_syscall351351+ .long sys_migrate_pages352352+ .long sys_openat353353+ .long sys_mkdirat354354+ .long sys_mknodat /* 325 */355355+ .long sys_fchownat356356+ .long sys_futimesat357357+ .long sys_fstatat64358358+ .long sys_unlinkat359359+ .long sys_renameat /* 330 */360360+ .long sys_linkat361361+ .long sys_symlinkat362362+ .long sys_readlinkat363363+ .long sys_fchmodat364364+ .long sys_faccessat /* 335 */365365+ .long sys_pselect6366366+ .long sys_ppoll367367+ .long sys_unshare368368+ .long sys_set_robust_list369369+ .long sys_get_robust_list /* 340 */370370+ .long sys_splice371371+ .long sys_sync_file_range372372+ .long sys_tee373373+ .long sys_vmsplice374374+ .long sys_move_pages /* 345 */375375+ .long sys_getcpu376376+ .long sys_epoll_pwait377377+ .long sys_utimensat378378+ .long sys_signalfd379379+ .long sys_timerfd /* 350 */380380+ .long sys_eventfd
+10-8
arch/sh64/kernel/time.c
···123123static unsigned long long scaled_recip_ctc_ticks_per_jiffy;124124125125/* Estimate number of microseconds that have elapsed since the last timer tick,126126- by scaling the delta that has occured in the CTC register.126126+ by scaling the delta that has occurred in the CTC register.127127128128 WARNING WARNING WARNING : This algorithm relies on the CTC decrementing at129129 the CPU clock rate. If the CPU sleeps, the CTC stops counting. Bear this···282282 * timer_interrupt() needs to keep up the real-time clock,283283 * as well as call the "do_timer()" routine every clocktick284284 */285285-static inline void do_timer_interrupt(int irq, struct pt_regs *regs)285285+static inline void do_timer_interrupt(void)286286{287287 unsigned long long current_ctc;288288 asm ("getcon cr62, %0" : "=r" (current_ctc));···290290291291 do_timer(1);292292#ifndef CONFIG_SMP293293- update_process_times(user_mode(regs));293293+ update_process_times(user_mode(get_irq_regs()));294294#endif295295- profile_tick(CPU_PROFILING, regs);295295+ if (current->pid)296296+ profile_tick(CPU_PROFILING);296297297298#ifdef CONFIG_HEARTBEAT298299 {···324323 * Time Stamp Counter value at the time of the timer interrupt, so that325324 * we later on can estimate the time of day more exactly.326325 */327327-static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)326326+static irqreturn_t timer_interrupt(int irq, void *dev_id)328327{329328 unsigned long timer_status;330329···341340 * locally disabled. -arca342341 */343342 write_lock(&xtime_lock);344344- do_timer_interrupt(irq, regs);343343+ do_timer_interrupt();345344 write_unlock(&xtime_lock);346345347346 return IRQ_HANDLED;···466465#endif467466}468467469469-static irqreturn_t sh64_rtc_interrupt(int irq, void *dev_id,470470- struct pt_regs *regs)468468+static irqreturn_t sh64_rtc_interrupt(int irq, void *dev_id)471469{470470+ struct pt_regs *regs = get_irq_regs();471471+472472 ctrl_outb(0, RCR1); /* Disable Carry Interrupts */473473 regs->regs[3] = 1; /* Using r3 */474474
···2929/* Note the SMSC SuperIO chip and SMSC LAN chip interrupts are all muxed onto3030 the same SH-5 interrupt */31313232-static irqreturn_t cayman_interrupt_smsc(int irq, void *dev_id, struct pt_regs *regs)3232+static irqreturn_t cayman_interrupt_smsc(int irq, void *dev_id)3333{3434 printk(KERN_INFO "CAYMAN: spurious SMSC interrupt\n");3535 return IRQ_NONE;3636}37373838-static irqreturn_t cayman_interrupt_pci2(int irq, void *dev_id, struct pt_regs *regs)3838+static irqreturn_t cayman_interrupt_pci2(int irq, void *dev_id)3939{4040 printk(KERN_INFO "CAYMAN: spurious PCI interrupt, IRQ %d\n", irq);4141 return IRQ_NONE;
+1-1
arch/sh64/mach-cayman/setup.c
···213213 SMSC_SUPERIO_WRITE_INDEXED(0x00, 0xc7); /* GP47 = nIOWOP */214214#endif215215216216- /* Exit the configuraton state */216216+ /* Exit the configuration state */217217 outb(SMSC_EXIT_CONFIG_KEY, SMSC_CONFIG_PORT_ADDR);218218219219 return 0;
+1-1
arch/sh64/mm/fault.c
···135135 /* SIM136136 * Note this is now called with interrupts still disabled137137 * This is to cope with being called for a missing IO port138138- * address with interupts disabled. This should be fixed as138138+ * address with interrupts disabled. This should be fixed as139139 * soon as we have a better 'fast path' miss handler.140140 *141141 * Plus take care how you try and debug this stuff.
···1414 * IMPORTANT NOTES :1515 * The do_fast_page_fault function is called from a context in entry.S where very few registers1616 * have been saved. In particular, the code in this file must be compiled not to use ANY1717- * caller-save regiseters that are not part of the restricted save set. Also, it means that1717+ * caller-save registers that are not part of the restricted save set. Also, it means that1818 * code in this file must not make calls to functions elsewhere in the kernel, or else the1919 * excepting context will see corruption in its caller-save registers. Plus, the entry.S save2020 * area is non-reentrant, so this code has to run with SR.BL==1, i.e. no interrupts taken inside···249249 /* SIM250250 * Note this is now called with interrupts still disabled251251 * This is to cope with being called for a missing IO port252252- * address with interupts disabled. This should be fixed as252252+ * address with interrupts disabled. This should be fixed as253253 * soon as we have a better 'fast path' miss handler.254254 *255255 * Plus take care how you try and debug this stuff.
···44# Andre Hedrick <andre@linux-ide.org>55#6677-if BLOCK88-99-menu "ATA/ATAPI/MFM/RLL support"1010- depends on HAS_IOMEM1111-1212-config IDE77+menuconfig IDE138 tristate "ATA/ATAPI/MFM/RLL support"99+ depends on BLOCK1010+ depends on HAS_IOMEM1411 ---help---1512 If you say Y here, your kernel will be able to manage low cost mass1613 storage units such as ATA/(E)IDE and ATAPI units. The most common···10961099config BLK_DEV_HD10971100 def_bool BLK_DEV_HD_IDE || BLK_DEV_HD_ONLY1098110110991099-endif11001100-11011101-endmenu11021102-11031103-endif11021102+endif # IDE
+1-13
drivers/ide/cris/ide-cris.c
···10021002 return 1; /* let the PIO routines handle this weirdness */10031003}1004100410051005-static int cris_config_drive_for_dma (ide_drive_t *drive)10061006-{10071007- u8 speed = ide_max_dma_mode(drive);10081008-10091009- if (!speed)10101010- return 0;10111011-10121012- speed_cris_ide(drive, speed);10131013-10141014- return ide_dma_enable(drive);10151015-}10161016-10171005/*10181006 * cris_dma_intr() is the handler for disk read/write DMA interrupts10191007 */···1031104310321044static int cris_dma_check(ide_drive_t *drive)10331045{10341034- if (ide_use_dma(drive) && cris_config_drive_for_dma(drive))10461046+ if (ide_tune_dma(drive))10351047 return 0;1036104810371049 return -1;
+12-41
drivers/ide/ide-dma.c
···670670671671EXPORT_SYMBOL(__ide_dma_good_drive);672672673673-int ide_use_dma(ide_drive_t *drive)674674-{675675- struct hd_driveid *id = drive->id;676676- ide_hwif_t *hwif = drive->hwif;677677-678678- if ((id->capability & 1) == 0 || drive->autodma == 0)679679- return 0;680680-681681- /* consult the list of known "bad" drives */682682- if (__ide_dma_bad_drive(drive))683683- return 0;684684-685685- /* capable of UltraDMA modes */686686- if (id->field_valid & 4) {687687- if (hwif->ultra_mask & id->dma_ultra)688688- return 1;689689- }690690-691691- /* capable of regular DMA modes */692692- if (id->field_valid & 2) {693693- if (hwif->mwdma_mask & id->dma_mword)694694- return 1;695695- if (hwif->swdma_mask & id->dma_1word)696696- return 1;697697- }698698-699699- /* consult the list of known "good" drives */700700- if (__ide_dma_good_drive(drive) && id->eide_dma_time < 150)701701- return 1;702702-703703- return 0;704704-}705705-706706-EXPORT_SYMBOL_GPL(ide_use_dma);707707-708673static const u8 xfer_mode_bases[] = {709674 XFER_UDMA_0,710675 XFER_MW_DMA_0,···696731 mask &= 0x07;697732 break;698733 case XFER_MW_DMA_0:699699- mask = id->dma_mword & hwif->mwdma_mask;734734+ if (id->field_valid & 2)735735+ mask = id->dma_mword & hwif->mwdma_mask;700736 break;701737 case XFER_SW_DMA_0:702702- mask = id->dma_1word & hwif->swdma_mask;738738+ if (id->field_valid & 2)739739+ mask = id->dma_1word & hwif->swdma_mask;703740 break;704741 default:705742 BUG();···750783{751784 u8 speed;752785753753- /* TODO: use only ide_max_dma_mode() */754754- if (!ide_use_dma(drive))786786+ if ((drive->id->capability & 1) == 0 || drive->autodma == 0)787787+ return 0;788788+789789+ /* consult the list of known "bad" drives */790790+ if (__ide_dma_bad_drive(drive))755791 return 0;756792757793 speed = ide_max_dma_mode(drive);···762792 if (!speed)763793 return 0;764794765765- drive->hwif->speedproc(drive, speed);795795+ if (drive->hwif->speedproc(drive, speed))796796+ return 0;766797767767- return ide_dma_enable(drive);798798+ return 1;768799}769800770801EXPORT_SYMBOL_GPL(ide_tune_dma);
···910910 err = 0;911911912912 if (arg) {913913+ hwif->dma_off_quietly(drive);913914 if (ide_set_dma(drive) || hwif->ide_dma_on(drive))914915 err = -EIO;915916 } else
+7-62
drivers/ide/pci/alim15x3.c
···455455 return (ide_config_drive_speed(drive, speed));456456}457457458458-459459-/**460460- * config_chipset_for_dma - set up DMA mode461461- * @drive: drive to configure for462462- *463463- * Place a drive into DMA mode and tune the chipset for464464- * the selected speed.465465- *466466- * Returns true if DMA mode can be used467467- */468468-469469-static int config_chipset_for_dma (ide_drive_t *drive)470470-{471471- u8 speed = ide_max_dma_mode(drive);472472-473473- if (!(speed))474474- return 0;475475-476476- (void) ali15x3_tune_chipset(drive, speed);477477- return ide_dma_enable(drive);478478-}479479-480458/**481459 * ali15x3_config_drive_for_dma - configure for DMA482460 * @drive: drive to configure···465487466488static int ali15x3_config_drive_for_dma(ide_drive_t *drive)467489{468468- ide_hwif_t *hwif = HWIF(drive);469469- struct hd_driveid *id = drive->id;470470-471471- if ((m5229_revision<=0x20) && (drive->media!=ide_disk))472472- goto ata_pio;473473-474490 drive->init_speed = 0;475491476476- if ((id != NULL) && ((id->capability & 1) != 0) && drive->autodma) {477477- /* Consult the list of known "bad" drives */478478- if (__ide_dma_bad_drive(drive))479479- goto ata_pio;480480- if ((id->field_valid & 4) && (m5229_revision >= 0xC2)) {481481- if (id->dma_ultra & hwif->ultra_mask) {482482- /* Force if Capable UltraDMA */483483- int dma = config_chipset_for_dma(drive);484484- if ((id->field_valid & 2) && !dma)485485- goto try_dma_modes;486486- }487487- } else if (id->field_valid & 2) {488488-try_dma_modes:489489- if ((id->dma_mword & hwif->mwdma_mask) ||490490- (id->dma_1word & hwif->swdma_mask)) {491491- /* Force if Capable regular DMA modes */492492- if (!config_chipset_for_dma(drive))493493- goto ata_pio;494494- }495495- } else if (__ide_dma_good_drive(drive) &&496496- (id->eide_dma_time < 150)) {497497- /* Consult the list of known "good" drives */498498- if (!config_chipset_for_dma(drive))499499- goto ata_pio;500500- } else {501501- goto ata_pio;502502- }503503- } else {504504-ata_pio:505505- hwif->tuneproc(drive, 255);506506- return -1;507507- }492492+ if (ide_tune_dma(drive))493493+ return 0;508494509509- return 0;495495+ ali15x3_tune_drive(drive, 255);496496+497497+ return -1;510498}511499512500/**···683739 return;684740 }685741686686- hwif->atapi_dma = 1;742742+ if (m5229_revision > 0x20)743743+ hwif->atapi_dma = 1;687744688745 if (m5229_revision <= 0x20)689746 hwif->ultra_mask = 0x00; /* no udma */
+1-14
drivers/ide/pci/cmd64x.c
···352352 return ide_config_drive_speed(drive, speed);353353}354354355355-static int config_chipset_for_dma (ide_drive_t *drive)356356-{357357- u8 speed = ide_max_dma_mode(drive);358358-359359- if (!speed)360360- return 0;361361-362362- if (cmd64x_tune_chipset(drive, speed))363363- return 0;364364-365365- return ide_dma_enable(drive);366366-}367367-368355static int cmd64x_config_drive_for_dma (ide_drive_t *drive)369356{370370- if (ide_use_dma(drive) && config_chipset_for_dma(drive))357357+ if (ide_tune_dma(drive))371358 return 0;372359373360 if (ide_use_fast_pio(drive))
+80-82
drivers/ide/pci/cs5530.c
···11/*22- * linux/drivers/ide/pci/cs5530.c Version 0.7 Sept 10, 200222+ * linux/drivers/ide/pci/cs5530.c Version 0.73 Mar 10 200733 *44 * Copyright (C) 2000 Andre Hedrick <andre@linux-ide.org>55- * Ditto of GNU General Public License.66- *75 * Copyright (C) 2000 Mark Lord <mlord@pobox.com>66+ * Copyright (C) 2007 Bartlomiej Zolnierkiewicz77+ *88 * May be copied or modified under the terms of the GNU General Public License99 *1010 * Development of this chipset driver was funded···6262#define CS5530_BAD_PIO(timings) (((timings)&~0x80000000)==0x0000e132)6363#define CS5530_BASEREG(hwif) (((hwif)->dma_base & ~0xf) + ((hwif)->channel ? 0x30 : 0x20))64646565+static void cs5530_tunepio(ide_drive_t *drive, u8 pio)6666+{6767+ unsigned long basereg = CS5530_BASEREG(drive->hwif);6868+ unsigned int format = (inl(basereg + 4) >> 31) & 1;6969+7070+ outl(cs5530_pio_timings[format][pio], basereg + ((drive->dn & 1)<<3));7171+}7272+6573/**6674 * cs5530_tuneproc - select/set PIO modes6775 *···82748375static void cs5530_tuneproc (ide_drive_t *drive, u8 pio) /* pio=255 means "autotune" */8476{8585- ide_hwif_t *hwif = HWIF(drive);8686- unsigned int format;8787- unsigned long basereg = CS5530_BASEREG(hwif);8888- static u8 modes[5] = { XFER_PIO_0, XFER_PIO_1, XFER_PIO_2, XFER_PIO_3, XFER_PIO_4};8989-9077 pio = ide_get_best_pio_mode(drive, pio, 4, NULL);9191- if (!cs5530_set_xfer_mode(drive, modes[pio])) {9292- format = (inl(basereg + 4) >> 31) & 1;9393- outl(cs5530_pio_timings[format][pio],9494- basereg+(drive->select.b.unit<<3));9595- }7878+7979+ if (cs5530_set_xfer_mode(drive, XFER_PIO_0 + pio) == 0)8080+ cs5530_tunepio(drive, pio);9681}97829883/**9999- * cs5530_config_dma - select/set DMA and UDMA modes8484+ * cs5530_udma_filter - UDMA filter8585+ * @drive: drive8686+ *8787+ * cs5530_udma_filter() does UDMA mask filtering for the given drive8888+ * taking into the consideration capabilities of the mate device.8989+ *9090+ * The CS5530 specifies that two drives sharing a cable cannot mix9191+ * UDMA/MDMA. It has to be one or the other, for the pair, though9292+ * different timings can still be chosen for each drive. We could9393+ * set the appropriate timing bits on the fly, but that might be9494+ * a bit confusing. So, for now we statically handle this requirement9595+ * by looking at our mate drive to see what it is capable of, before9696+ * choosing a mode for our own drive.9797+ *9898+ * Note: This relies on the fact we never fail from UDMA to MWDMA29999+ * but instead drop to PIO.100100+ */101101+102102+static u8 cs5530_udma_filter(ide_drive_t *drive)103103+{104104+ ide_hwif_t *hwif = drive->hwif;105105+ ide_drive_t *mate = &hwif->drives[(drive->dn & 1) ^ 1];106106+ struct hd_driveid *mateid = mate->id;107107+ u8 mask = hwif->ultra_mask;108108+109109+ if (mate->present == 0)110110+ goto out;111111+112112+ if ((mateid->capability & 1) && __ide_dma_bad_drive(mate) == 0) {113113+ if ((mateid->field_valid & 4) && (mateid->dma_ultra & 7))114114+ goto out;115115+ if ((mateid->field_valid & 2) && (mateid->dma_mword & 7))116116+ mask = 0;117117+ }118118+out:119119+ return mask;120120+}121121+122122+/**123123+ * cs5530_config_dma - set DMA/UDMA mode100124 * @drive: drive to tune101125 *102102- * cs5530_config_dma() handles selection/setting of DMA/UDMA modes103103- * for both the chipset and drive. The CS5530 has limitations about104104- * mixing DMA/UDMA on the same cable.126126+ * cs5530_config_dma() handles setting of DMA/UDMA mode127127+ * for both the chipset and drive.105128 */106106-107107-static int cs5530_config_dma (ide_drive_t *drive)129129+130130+static int cs5530_config_dma(ide_drive_t *drive)108131{109109- int udma_ok = 1, mode = 0;110110- ide_hwif_t *hwif = HWIF(drive);111111- int unit = drive->select.b.unit;112112- ide_drive_t *mate = &hwif->drives[unit^1];113113- struct hd_driveid *id = drive->id;114114- unsigned int reg, timings = 0;115115- unsigned long basereg;132132+ if (ide_tune_dma(drive))133133+ return 0;116134117117- /*118118- * Default to DMA-off in case we run into trouble here.119119- */120120- hwif->dma_off_quietly(drive);135135+ return 1;136136+}121137122122- /*123123- * The CS5530 specifies that two drives sharing a cable cannot124124- * mix UDMA/MDMA. It has to be one or the other, for the pair,125125- * though different timings can still be chosen for each drive.126126- * We could set the appropriate timing bits on the fly,127127- * but that might be a bit confusing. So, for now we statically128128- * handle this requirement by looking at our mate drive to see129129- * what it is capable of, before choosing a mode for our own drive.130130- *131131- * Note: This relies on the fact we never fail from UDMA to MWDMA_2132132- * but instead drop to PIO133133- */134134- if (mate->present) {135135- struct hd_driveid *mateid = mate->id;136136- if (mateid && (mateid->capability & 1) &&137137- !__ide_dma_bad_drive(mate)) {138138- if ((mateid->field_valid & 4) &&139139- (mateid->dma_ultra & 7))140140- udma_ok = 1;141141- else if ((mateid->field_valid & 2) &&142142- (mateid->dma_mword & 7))143143- udma_ok = 0;144144- else145145- udma_ok = 1;146146- }147147- }138138+static int cs5530_tune_chipset(ide_drive_t *drive, u8 mode)139139+{140140+ unsigned long basereg;141141+ unsigned int reg, timings = 0;148142149149- /*150150- * Now see what the current drive is capable of,151151- * selecting UDMA only if the mate said it was ok.152152- */153153- if (id && (id->capability & 1) && drive->autodma &&154154- !__ide_dma_bad_drive(drive)) {155155- if (udma_ok && (id->field_valid & 4) && (id->dma_ultra & 7)) {156156- if (id->dma_ultra & 4)157157- mode = XFER_UDMA_2;158158- else if (id->dma_ultra & 2)159159- mode = XFER_UDMA_1;160160- else if (id->dma_ultra & 1)161161- mode = XFER_UDMA_0;162162- }163163- if (!mode && (id->field_valid & 2) && (id->dma_mword & 7)) {164164- if (id->dma_mword & 4)165165- mode = XFER_MW_DMA_2;166166- else if (id->dma_mword & 2)167167- mode = XFER_MW_DMA_1;168168- else if (id->dma_mword & 1)169169- mode = XFER_MW_DMA_0;170170- }171171- }143143+ mode = ide_rate_filter(drive, mode);172144173145 /*174146 * Tell the drive to switch to the new mode; abort on failure.175147 */176176- if (!mode || cs5530_set_xfer_mode(drive, mode))148148+ if (cs5530_set_xfer_mode(drive, mode))177149 return 1; /* failure */178150179151 /*···166178 case XFER_MW_DMA_0: timings = 0x00077771; break;167179 case XFER_MW_DMA_1: timings = 0x00012121; break;168180 case XFER_MW_DMA_2: timings = 0x00002020; break;181181+ case XFER_PIO_4:182182+ case XFER_PIO_3:183183+ case XFER_PIO_2:184184+ case XFER_PIO_1:185185+ case XFER_PIO_0:186186+ cs5530_tunepio(drive, mode - XFER_PIO_0);187187+ return 0;169188 default:170189 BUG();171190 break;172191 }173173- basereg = CS5530_BASEREG(hwif);192192+ basereg = CS5530_BASEREG(drive->hwif);174193 reg = inl(basereg + 4); /* get drive0 config register */175194 timings |= reg & 0x80000000; /* preserve PIO format bit */176176- if (unit == 0) { /* are we configuring drive0? */195195+ if ((drive-> dn & 1) == 0) { /* are we configuring drive0? */177196 outl(timings, basereg + 4); /* write drive0 config register */178197 } else {179198 if (timings & 0x00100000)···306311 hwif->serialized = hwif->mate->serialized = 1;307312308313 hwif->tuneproc = &cs5530_tuneproc;314314+ hwif->speedproc = &cs5530_tune_chipset;315315+309316 basereg = CS5530_BASEREG(hwif);310317 d0_timings = inl(basereg + 0);311318 if (CS5530_BAD_PIO(d0_timings)) {···329332 hwif->ultra_mask = 0x07;330333 hwif->mwdma_mask = 0x07;331334335335+ hwif->udma_filter = cs5530_udma_filter;332336 hwif->ide_dma_check = &cs5530_config_dma;333337 if (!noautodma)334338 hwif->autodma = 1;
+1-20
drivers/ide/pci/it821x.c
···464464}465465466466/**467467- * config_chipset_for_dma - configure for DMA468468- * @drive: drive to configure469469- *470470- * Called by the IDE layer when it wants the timings set up.471471- */472472-473473-static int config_chipset_for_dma (ide_drive_t *drive)474474-{475475- u8 speed = ide_max_dma_mode(drive);476476-477477- if (speed == 0)478478- return 0;479479-480480- it821x_tune_chipset(drive, speed);481481-482482- return ide_dma_enable(drive);483483-}484484-485485-/**486467 * it821x_configure_drive_for_dma - set up for DMA transfers487468 * @drive: drive we are going to set up488469 *···475494476495static int it821x_config_drive_for_dma (ide_drive_t *drive)477496{478478- if (ide_use_dma(drive) && config_chipset_for_dma(drive))497497+ if (ide_tune_dma(drive))479498 return 0;480499481500 it821x_tuneproc(drive, 255);
+1-28
drivers/ide/pci/pdc202xx_new.c
···228228 return get_indexed_reg(hwif, 0x0b) & 0x04;229229}230230231231-static int config_chipset_for_dma(ide_drive_t *drive)232232-{233233- struct hd_driveid *id = drive->id;234234- ide_hwif_t *hwif = HWIF(drive);235235- u8 speed;236236-237237- if (id->capability & 4) {238238- /*239239- * Set IORDY_EN & PREFETCH_EN (this seems to have240240- * NO real effect since this register is reloaded241241- * by hardware when the transfer mode is selected)242242- */243243- u8 tmp, adj = (drive->dn & 1) ? 0x08 : 0x00;244244-245245- tmp = get_indexed_reg(hwif, 0x13 + adj);246246- set_indexed_reg(hwif, 0x13 + adj, tmp | 0x03);247247- }248248-249249- speed = ide_max_dma_mode(drive);250250-251251- if (!speed)252252- return 0;253253-254254- (void) hwif->speedproc(drive, speed);255255- return ide_dma_enable(drive);256256-}257257-258231static int pdcnew_config_drive_xfer_rate(ide_drive_t *drive)259232{260233 drive->init_speed = 0;261234262262- if (ide_use_dma(drive) && config_chipset_for_dma(drive))235235+ if (ide_tune_dma(drive))263236 return 0;264237265238 if (ide_use_fast_pio(drive))
+41-143
drivers/ide/pci/pdc202xx_old.c
···11/*22- * linux/drivers/ide/pci/pdc202xx_old.c Version 0.36 Sept 11, 200222+ * linux/drivers/ide/pci/pdc202xx_old.c Version 0.50 Mar 3, 200733 *44 * Copyright (C) 1998-2002 Andre Hedrick <andre@linux-ide.org>55 * Copyright (C) 2006-2007 MontaVista Software, Inc.66+ * Copyright (C) 2007 Bartlomiej Zolnierkiewicz67 *78 * Promise Ultra33 cards with BIOS v1.20 through 1.28 will need this89 * compiled into the kernel if you have more than one card installed.···6160 NULL6261};63626464-/* A Register */6565-#define SYNC_ERRDY_EN 0xC06666-6767-#define SYNC_IN 0x80 /* control bit, different for master vs. slave drives */6868-#define ERRDY_EN 0x40 /* control bit, different for master vs. slave drives */6969-#define IORDY_EN 0x20 /* PIO: IOREADY */7070-#define PREFETCH_EN 0x10 /* PIO: PREFETCH */7171-7272-#define PA3 0x08 /* PIO"A" timing */7373-#define PA2 0x04 /* PIO"A" timing */7474-#define PA1 0x02 /* PIO"A" timing */7575-#define PA0 0x01 /* PIO"A" timing */7676-7777-/* B Register */7878-7979-#define MB2 0x80 /* DMA"B" timing */8080-#define MB1 0x40 /* DMA"B" timing */8181-#define MB0 0x20 /* DMA"B" timing */8282-8383-#define PB4 0x10 /* PIO_FORCE 1:0 */8484-8585-#define PB3 0x08 /* PIO"B" timing */ /* PIO flow Control mode */8686-#define PB2 0x04 /* PIO"B" timing */ /* PIO 4 */8787-#define PB1 0x02 /* PIO"B" timing */ /* PIO 3 half */8888-#define PB0 0x01 /* PIO"B" timing */ /* PIO 3 other half */8989-9090-/* C Register */9191-#define IORDYp_NO_SPEED 0x4F9292-#define SPEED_DIS 0x0F9393-9494-#define DMARQp 0x809595-#define IORDYp 0x409696-#define DMAR_EN 0x209797-#define DMAW_EN 0x109898-9999-#define MC3 0x08 /* DMA"C" timing */100100-#define MC2 0x04 /* DMA"C" timing */101101-#define MC1 0x02 /* DMA"C" timing */102102-#define MC0 0x01 /* DMA"C" timing */6363+static void pdc_old_disable_66MHz_clock(ide_hwif_t *);1036410465static int pdc202xx_tune_chipset (ide_drive_t *drive, u8 xferspeed)10566{···70107 u8 drive_pci = 0x60 + (drive->dn << 2);71108 u8 speed = ide_rate_filter(drive, xferspeed);721097373- u32 drive_conf;7474- u8 AP, BP, CP, DP;110110+ u8 AP = 0, BP = 0, CP = 0;75111 u8 TA = 0, TB = 0, TC = 0;761127777- if (drive->media != ide_disk &&7878- drive->media != ide_cdrom && speed < XFER_SW_DMA_0)7979- return -1;8080-113113+#if PDC202XX_DEBUG_DRIVE_INFO114114+ u32 drive_conf = 0;81115 pci_read_config_dword(dev, drive_pci, &drive_conf);8282- pci_read_config_byte(dev, (drive_pci), &AP);8383- pci_read_config_byte(dev, (drive_pci)|0x01, &BP);8484- pci_read_config_byte(dev, (drive_pci)|0x02, &CP);8585- pci_read_config_byte(dev, (drive_pci)|0x03, &DP);116116+#endif861178787- if (speed < XFER_SW_DMA_0) {8888- if ((AP & 0x0F) || (BP & 0x07)) {8989- /* clear PIO modes of lower 8421 bits of A Register */9090- pci_write_config_byte(dev, (drive_pci), AP &~0x0F);9191- pci_read_config_byte(dev, (drive_pci), &AP);118118+ /*119119+ * TODO: do this once per channel120120+ */121121+ if (dev->device != PCI_DEVICE_ID_PROMISE_20246)122122+ pdc_old_disable_66MHz_clock(hwif);921239393- /* clear PIO modes of lower 421 bits of B Register */9494- pci_write_config_byte(dev, (drive_pci)|0x01, BP &~0x07);9595- pci_read_config_byte(dev, (drive_pci)|0x01, &BP);9696-9797- pci_read_config_byte(dev, (drive_pci), &AP);9898- pci_read_config_byte(dev, (drive_pci)|0x01, &BP);9999- }100100- } else {101101- if ((BP & 0xF0) && (CP & 0x0F)) {102102- /* clear DMA modes of upper 842 bits of B Register */103103- /* clear PIO forced mode upper 1 bit of B Register */104104- pci_write_config_byte(dev, (drive_pci)|0x01, BP &~0xF0);105105- pci_read_config_byte(dev, (drive_pci)|0x01, &BP);106106-107107- /* clear DMA modes of lower 8421 bits of C Register */108108- pci_write_config_byte(dev, (drive_pci)|0x02, CP &~0x0F);109109- pci_read_config_byte(dev, (drive_pci)|0x02, &CP);110110- }111111- }112112-113113- pci_read_config_byte(dev, (drive_pci), &AP);114114- pci_read_config_byte(dev, (drive_pci)|0x01, &BP);115115- pci_read_config_byte(dev, (drive_pci)|0x02, &CP);124124+ pci_read_config_byte(dev, drive_pci, &AP);125125+ pci_read_config_byte(dev, drive_pci + 1, &BP);126126+ pci_read_config_byte(dev, drive_pci + 2, &CP);116127117128 switch(speed) {118118- case XFER_UDMA_6: speed = XFER_UDMA_5;119129 case XFER_UDMA_5:120130 case XFER_UDMA_4: TB = 0x20; TC = 0x01; break;121131 case XFER_UDMA_2: TB = 0x20; TC = 0x01; break;···97161 case XFER_UDMA_0:98162 case XFER_MW_DMA_2: TB = 0x60; TC = 0x03; break;99163 case XFER_MW_DMA_1: TB = 0x60; TC = 0x04; break;100100- case XFER_MW_DMA_0:164164+ case XFER_MW_DMA_0: TB = 0xE0; TC = 0x0F; break;101165 case XFER_SW_DMA_2: TB = 0x60; TC = 0x05; break;102166 case XFER_SW_DMA_1: TB = 0x80; TC = 0x06; break;103167 case XFER_SW_DMA_0: TB = 0xC0; TC = 0x0B; break;···110174 }111175112176 if (speed < XFER_SW_DMA_0) {113113- pci_write_config_byte(dev, (drive_pci), AP|TA);114114- pci_write_config_byte(dev, (drive_pci)|0x01, BP|TB);177177+ /*178178+ * preserve SYNC_INT / ERDDY_EN bits while clearing179179+ * Prefetch_EN / IORDY_EN / PA[3:0] bits of register A180180+ */181181+ AP &= ~0x3f;182182+ if (drive->id->capability & 4)183183+ AP |= 0x20; /* set IORDY_EN bit */184184+ if (drive->media == ide_disk)185185+ AP |= 0x10; /* set Prefetch_EN bit */186186+ /* clear PB[4:0] bits of register B */187187+ BP &= ~0x1f;188188+ pci_write_config_byte(dev, drive_pci, AP | TA);189189+ pci_write_config_byte(dev, drive_pci + 1, BP | TB);115190 } else {116116- pci_write_config_byte(dev, (drive_pci)|0x01, BP|TB);117117- pci_write_config_byte(dev, (drive_pci)|0x02, CP|TC);191191+ /* clear MB[2:0] bits of register B */192192+ BP &= ~0xe0;193193+ /* clear MC[3:0] bits of register C */194194+ CP &= ~0x0f;195195+ pci_write_config_byte(dev, drive_pci + 1, BP | TB);196196+ pci_write_config_byte(dev, drive_pci + 2, CP | TC);118197 }119198120199#if PDC202XX_DEBUG_DRIVE_INFO121200 printk(KERN_DEBUG "%s: %s drive%d 0x%08x ",122201 drive->name, ide_xfer_verbose(speed),123202 drive->dn, drive_conf);124124- pci_read_config_dword(dev, drive_pci, &drive_conf);203203+ pci_read_config_dword(dev, drive_pci, &drive_conf);125204 printk("0x%08x\n", drive_conf);126126-#endif /* PDC202XX_DEBUG_DRIVE_INFO */205205+#endif127206128128- return (ide_config_drive_speed(drive, speed));207207+ return ide_config_drive_speed(drive, speed);129208}130130-131209132210static void pdc202xx_tune_drive(ide_drive_t *drive, u8 pio)133211{···159209/*160210 * Set the control register to use the 66MHz system161211 * clock for UDMA 3/4/5 mode operation when necessary.212212+ *213213+ * FIXME: this register is shared by both channels, some locking is needed162214 *163215 * It may also be possible to leave the 66MHz clock on164216 * and readjust the timing parameters.···181229 outb(clock & ~(hwif->channel ? 0x08 : 0x02), clock_reg);182230}183231184184-static int config_chipset_for_dma (ide_drive_t *drive)185185-{186186- struct hd_driveid *id = drive->id;187187- ide_hwif_t *hwif = HWIF(drive);188188- struct pci_dev *dev = hwif->pci_dev;189189- u32 drive_conf = 0;190190- u8 drive_pci = 0x60 + (drive->dn << 2);191191- u8 test1 = 0, test2 = 0, speed = -1;192192- u8 AP = 0;193193-194194- if (dev->device != PCI_DEVICE_ID_PROMISE_20246)195195- pdc_old_disable_66MHz_clock(drive->hwif);196196-197197- drive_pci = 0x60 + (drive->dn << 2);198198- pci_read_config_dword(dev, drive_pci, &drive_conf);199199- if ((drive_conf != 0x004ff304) && (drive_conf != 0x004ff3c4))200200- goto chipset_is_set;201201-202202- pci_read_config_byte(dev, drive_pci, &test1);203203- if (!(test1 & SYNC_ERRDY_EN)) {204204- if (drive->select.b.unit & 0x01) {205205- pci_read_config_byte(dev, drive_pci - 4, &test2);206206- if ((test2 & SYNC_ERRDY_EN) &&207207- !(test1 & SYNC_ERRDY_EN)) {208208- pci_write_config_byte(dev, drive_pci,209209- test1|SYNC_ERRDY_EN);210210- }211211- } else {212212- pci_write_config_byte(dev, drive_pci,213213- test1|SYNC_ERRDY_EN);214214- }215215- }216216-217217-chipset_is_set:218218-219219- pci_read_config_byte(dev, (drive_pci), &AP);220220- if (id->capability & 4) /* IORDY_EN */221221- pci_write_config_byte(dev, (drive_pci), AP|IORDY_EN);222222- pci_read_config_byte(dev, (drive_pci), &AP);223223- if (drive->media == ide_disk) /* PREFETCH_EN */224224- pci_write_config_byte(dev, (drive_pci), AP|PREFETCH_EN);225225-226226- speed = ide_max_dma_mode(drive);227227-228228- if (!(speed)) {229229- /* restore original pci-config space */230230- pci_write_config_dword(dev, drive_pci, drive_conf);231231- return 0;232232- }233233-234234- (void) hwif->speedproc(drive, speed);235235- return ide_dma_enable(drive);236236-}237237-238232static int pdc202xx_config_drive_xfer_rate (ide_drive_t *drive)239233{240234 drive->init_speed = 0;241235242242- if (ide_use_dma(drive) && config_chipset_for_dma(drive))236236+ if (ide_tune_dma(drive))243237 return 0;244238245239 if (ide_use_fast_pio(drive))
+76-83
drivers/ide/pci/sc1200.c
···11/*22- * linux/drivers/ide/pci/sc1200.c Version 0.91 28-Jan-200322+ * linux/drivers/ide/pci/sc1200.c Version 0.94 Mar 10 200733 *44 * Copyright (C) 2000-2002 Mark Lord <mlord@pobox.com>55+ * Copyright (C) 2007 Bartlomiej Zolnierkiewicz66+ *57 * May be copied or modified under the terms of the GNU General Public License68 *79 * Development of this chipset driver was funded···9593 */9694//#define SC1200_BAD_PIO(timings) (((timings)&~0x80000000)==0x00009172)97959898-static int sc1200_autoselect_dma_mode (ide_drive_t *drive)9696+static void sc1200_tunepio(ide_drive_t *drive, u8 pio)9997{100100- int udma_ok = 1, mode = 0;101101- ide_hwif_t *hwif = HWIF(drive);102102- int unit = drive->select.b.unit;103103- ide_drive_t *mate = &hwif->drives[unit^1];104104- struct hd_driveid *id = drive->id;9898+ ide_hwif_t *hwif = drive->hwif;9999+ struct pci_dev *pdev = hwif->pci_dev;100100+ unsigned int basereg = hwif->channel ? 0x50 : 0x40, format = 0;105101106106- /*107107- * The SC1200 specifies that two drives sharing a cable cannot108108- * mix UDMA/MDMA. It has to be one or the other, for the pair,109109- * though different timings can still be chosen for each drive.110110- * We could set the appropriate timing bits on the fly,111111- * but that might be a bit confusing. So, for now we statically112112- * handle this requirement by looking at our mate drive to see113113- * what it is capable of, before choosing a mode for our own drive.114114- */115115- if (mate->present) {116116- struct hd_driveid *mateid = mate->id;117117- if (mateid && (mateid->capability & 1) && !__ide_dma_bad_drive(mate)) {118118- if ((mateid->field_valid & 4) && (mateid->dma_ultra & 7))119119- udma_ok = 1;120120- else if ((mateid->field_valid & 2) && (mateid->dma_mword & 7))121121- udma_ok = 0;122122- else123123- udma_ok = 1;124124- }125125- }126126- /*127127- * Now see what the current drive is capable of,128128- * selecting UDMA only if the mate said it was ok.129129- */130130- if (id && (id->capability & 1) && hwif->autodma && !__ide_dma_bad_drive(drive)) {131131- if (udma_ok && (id->field_valid & 4) && (id->dma_ultra & 7)) {132132- if (id->dma_ultra & 4)133133- mode = XFER_UDMA_2;134134- else if (id->dma_ultra & 2)135135- mode = XFER_UDMA_1;136136- else if (id->dma_ultra & 1)137137- mode = XFER_UDMA_0;138138- }139139- if (!mode && (id->field_valid & 2) && (id->dma_mword & 7)) {140140- if (id->dma_mword & 4)141141- mode = XFER_MW_DMA_2;142142- else if (id->dma_mword & 2)143143- mode = XFER_MW_DMA_1;144144- else if (id->dma_mword & 1)145145- mode = XFER_MW_DMA_0;146146- }147147- }148148- return mode;102102+ pci_read_config_dword(pdev, basereg + 4, &format);103103+ format = (format >> 31) & 1;104104+ if (format)105105+ format += sc1200_get_pci_clock();106106+ pci_write_config_dword(pdev, basereg + ((drive->dn & 1) << 3),107107+ sc1200_pio_timings[format][pio]);149108}150109151110/*152152- * sc1200_config_dma2() handles selection/setting of DMA/UDMA modes153153- * for both the chipset and drive.111111+ * The SC1200 specifies that two drives sharing a cable cannot mix112112+ * UDMA/MDMA. It has to be one or the other, for the pair, though113113+ * different timings can still be chosen for each drive. We could114114+ * set the appropriate timing bits on the fly, but that might be115115+ * a bit confusing. So, for now we statically handle this requirement116116+ * by looking at our mate drive to see what it is capable of, before117117+ * choosing a mode for our own drive.154118 */155155-static int sc1200_config_dma2 (ide_drive_t *drive, int mode)119119+static u8 sc1200_udma_filter(ide_drive_t *drive)120120+{121121+ ide_hwif_t *hwif = drive->hwif;122122+ ide_drive_t *mate = &hwif->drives[(drive->dn & 1) ^ 1];123123+ struct hd_driveid *mateid = mate->id;124124+ u8 mask = hwif->ultra_mask;125125+126126+ if (mate->present == 0)127127+ goto out;128128+129129+ if ((mateid->capability & 1) && __ide_dma_bad_drive(mate) == 0) {130130+ if ((mateid->field_valid & 4) && (mateid->dma_ultra & 7))131131+ goto out;132132+ if ((mateid->field_valid & 2) && (mateid->dma_mword & 7))133133+ mask = 0;134134+ }135135+out:136136+ return mask;137137+}138138+139139+static int sc1200_tune_chipset(ide_drive_t *drive, u8 mode)156140{157141 ide_hwif_t *hwif = HWIF(drive);158142 int unit = drive->select.b.unit;···146158 unsigned short pci_clock;147159 unsigned int basereg = hwif->channel ? 0x50 : 0x40;148160149149- /*150150- * Default to DMA-off in case we run into trouble here.151151- */152152- hwif->dma_off_quietly(drive); /* turn off DMA while we fiddle */153153- outb(inb(hwif->dma_base+2)&~(unit?0x40:0x20), hwif->dma_base+2); /* clear DMA_capable bit */161161+ mode = ide_rate_filter(drive, mode);154162155163 /*156164 * Tell the drive to switch to the new mode; abort on failure.157165 */158158- if (!mode || sc1200_set_xfer_mode(drive, mode)) {166166+ if (sc1200_set_xfer_mode(drive, mode)) {159167 printk("SC1200: set xfer mode failure\n");160168 return 1; /* failure */169169+ }170170+171171+ switch (mode) {172172+ case XFER_PIO_4:173173+ case XFER_PIO_3:174174+ case XFER_PIO_2:175175+ case XFER_PIO_1:176176+ case XFER_PIO_0:177177+ sc1200_tunepio(drive, mode - XFER_PIO_0);178178+ return 0;161179 }162180163181 pci_clock = sc1200_get_pci_clock();···218224 case PCI_CLK_66: timings = 0x00015151; break;219225 }220226 break;221221- }222222-223223- if (timings == 0) {224224- printk("%s: sc1200_config_dma: huh? mode=%02x clk=%x \n", drive->name, mode, pci_clock);225225- return 1; /* failure */227227+ default:228228+ BUG();229229+ break;226230 }227231228232 if (unit == 0) { /* are we configuring drive0? */···231239 pci_write_config_dword(hwif->pci_dev, basereg+12, timings);232240 }233241234234- outb(inb(hwif->dma_base+2)|(unit?0x40:0x20), hwif->dma_base+2); /* set DMA_capable bit */235235-236242 return 0; /* success */237243}238244···240250 */241251static int sc1200_config_dma (ide_drive_t *drive)242252{243243- return sc1200_config_dma2(drive, sc1200_autoselect_dma_mode(drive));253253+ if (ide_tune_dma(drive))254254+ return 0;255255+256256+ return 1;244257}245258246259···283290static void sc1200_tuneproc (ide_drive_t *drive, byte pio) /* mode=255 means "autotune" */284291{285292 ide_hwif_t *hwif = HWIF(drive);286286- unsigned int format;287287- static byte modes[5] = {XFER_PIO_0, XFER_PIO_1, XFER_PIO_2, XFER_PIO_3, XFER_PIO_4};288293 int mode = -1;289294295295+ /*296296+ * bad abuse of ->tuneproc interface297297+ */290298 switch (pio) {291299 case 200: mode = XFER_UDMA_0; break;292300 case 201: mode = XFER_UDMA_1; break;···298304 }299305 if (mode != -1) {300306 printk("SC1200: %s: changing (U)DMA mode\n", drive->name);301301- (void)sc1200_config_dma2(drive, mode);307307+ hwif->dma_off_quietly(drive);308308+ if (sc1200_tune_chipset(drive, mode) == 0)309309+ hwif->dma_host_on(drive);302310 return;303311 }304312305313 pio = ide_get_best_pio_mode(drive, pio, 4, NULL);306314 printk("SC1200: %s: setting PIO mode%d\n", drive->name, pio);307307- if (!sc1200_set_xfer_mode(drive, modes[pio])) {308308- unsigned int basereg = hwif->channel ? 0x50 : 0x40;309309- pci_read_config_dword (hwif->pci_dev, basereg+4, &format);310310- format = (format >> 31) & 1;311311- if (format)312312- format += sc1200_get_pci_clock();313313- pci_write_config_dword(hwif->pci_dev, basereg + (drive->select.b.unit << 3), sc1200_pio_timings[format][pio]);314314- }315315+316316+ if (sc1200_set_xfer_mode(drive, XFER_PIO_0 + pio) == 0)317317+ sc1200_tunepio(drive, pio);315318}316319317320#ifdef CONFIG_PM···429438 for (d = 0; d < MAX_DRIVES; ++d) {430439 ide_drive_t *drive = &(hwif->drives[d]);431440 if (drive->present && !__ide_dma_bad_drive(drive)) {432432- int was_using_dma = drive->using_dma;441441+ int enable_dma = drive->using_dma;433442 hwif->dma_off_quietly(drive);434434- sc1200_config_dma(drive);435435- if (!was_using_dma && drive->using_dma) {436436- hwif->dma_off_quietly(drive);437437- }443443+ if (sc1200_config_dma(drive))444444+ enable_dma = 0;445445+ if (enable_dma)446446+ hwif->dma_host_on(drive);438447 }439448 }440449 }···452461 hwif->serialized = hwif->mate->serialized = 1;453462 hwif->autodma = 0;454463 if (hwif->dma_base) {464464+ hwif->udma_filter = sc1200_udma_filter;455465 hwif->ide_dma_check = &sc1200_config_dma;456466 hwif->ide_dma_end = &sc1200_ide_dma_end;457467 if (!noautodma)458468 hwif->autodma = 1;459469 hwif->tuneproc = &sc1200_tuneproc;470470+ hwif->speedproc = &sc1200_tune_chipset;460471 }461472 hwif->atapi_dma = 1;462473 hwif->ultra_mask = 0x07;
+1-21
drivers/ide/pci/scc_pata.c
···322322}323323324324/**325325- * scc_config_chipset_for_dma - configure for DMA326326- * @drive: drive to configure327327- *328328- * Called by scc_config_drive_for_dma().329329- */330330-331331-static int scc_config_chipset_for_dma(ide_drive_t *drive)332332-{333333- u8 speed = ide_max_dma_mode(drive);334334-335335- if (!speed)336336- return 0;337337-338338- if (scc_tune_chipset(drive, speed))339339- return 0;340340-341341- return ide_dma_enable(drive);342342-}343343-344344-/**345325 * scc_configure_drive_for_dma - set up for DMA transfers346326 * @drive: drive we are going to set up347327 *···334354335355static int scc_config_drive_for_dma(ide_drive_t *drive)336356{337337- if (ide_use_dma(drive) && scc_config_chipset_for_dma(drive))357357+ if (ide_tune_dma(drive))338358 return 0;339359340360 if (ide_use_fast_pio(drive))
+14-63
drivers/ide/pci/serverworks.c
···11/*22- * linux/drivers/ide/pci/serverworks.c Version 0.8 25 Ebr 200322+ * linux/drivers/ide/pci/serverworks.c Version 0.9 Mar 4 200733 *44 * Copyright (C) 1998-2000 Michel Aubry55 * Copyright (C) 1998-2000 Andrzej Krzysztofowicz66 * Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org>77+ * Copyright (C) 2007 Bartlomiej Zolnierkiewicz78 * Portions copyright (c) 2001 Sun Microsystems89 *910 *···137136138137 ide_hwif_t *hwif = HWIF(drive);139138 struct pci_dev *dev = hwif->pci_dev;140140- u8 speed;141141- u8 pio = ide_get_best_pio_mode(drive, 255, 5, NULL);139139+ u8 speed = ide_rate_filter(drive, xferspeed);140140+ u8 pio = ide_get_best_pio_mode(drive, 255, 4, NULL);142141 u8 unit = (drive->select.b.unit & 0x01);143142 u8 csb5 = svwks_csb_check(dev);144143 u8 ultra_enable = 0, ultra_timing = 0;145144 u8 dma_timing = 0, pio_timing = 0;146145 u16 csb5_pio = 0;147147-148148- if (xferspeed == 255) /* PIO auto-tuning */149149- speed = XFER_PIO_0 + pio;150150- else151151- speed = ide_rate_filter(drive, xferspeed);152146153147 /* If we are about to put a disk into UDMA mode we screwed up.154148 Our code assumes we never _ever_ do this on an OSB4 */···227231 case XFER_MW_DMA_2:228232 case XFER_MW_DMA_1:229233 case XFER_MW_DMA_0:234234+ /*235235+ * TODO: always setup PIO mode so this won't be needed236236+ */230237 pio_timing |= pio_modes[pio];231238 csb5_pio |= (pio << (4*drive->dn));232239 dma_timing |= dma_modes[speed - XFER_MW_DMA_0];···241242 case XFER_UDMA_2:242243 case XFER_UDMA_1:243244 case XFER_UDMA_0:245245+ /*246246+ * TODO: always setup PIO mode so this won't be needed247247+ */244248 pio_timing |= pio_modes[pio];245249 csb5_pio |= (pio << (4*drive->dn));246250 dma_timing |= dma_modes[2];···264262 return (ide_config_drive_speed(drive, speed));265263}266264267267-static void config_chipset_for_pio (ide_drive_t *drive)268268-{269269- u16 eide_pio_timing[6] = {960, 480, 240, 180, 120, 90};270270- u16 xfer_pio = drive->id->eide_pio_modes;271271- u8 timing, speed, pio;272272-273273- pio = ide_get_best_pio_mode(drive, 255, 5, NULL);274274-275275- if (xfer_pio > 4)276276- xfer_pio = 0;277277-278278- if (drive->id->eide_pio_iordy > 0)279279- for (xfer_pio = 5;280280- xfer_pio>0 &&281281- drive->id->eide_pio_iordy>eide_pio_timing[xfer_pio];282282- xfer_pio--);283283- else284284- xfer_pio = (drive->id->eide_pio_modes & 4) ? 0x05 :285285- (drive->id->eide_pio_modes & 2) ? 0x04 :286286- (drive->id->eide_pio_modes & 1) ? 0x03 :287287- (drive->id->tPIO & 2) ? 0x02 :288288- (drive->id->tPIO & 1) ? 0x01 : xfer_pio;289289-290290- timing = (xfer_pio >= pio) ? xfer_pio : pio;291291-292292- switch(timing) {293293- case 4: speed = XFER_PIO_4;break;294294- case 3: speed = XFER_PIO_3;break;295295- case 2: speed = XFER_PIO_2;break;296296- case 1: speed = XFER_PIO_1;break;297297- default:298298- speed = (!drive->id->tPIO) ? XFER_PIO_0 : XFER_PIO_SLOW;299299- break;300300- }301301- (void) svwks_tune_chipset(drive, speed);302302- drive->current_speed = speed;303303-}304304-305265static void svwks_tune_drive (ide_drive_t *drive, u8 pio)306266{307307- if(pio == 255)308308- (void) svwks_tune_chipset(drive, 255);309309- else310310- (void) svwks_tune_chipset(drive, (XFER_PIO_0 + pio));311311-}312312-313313-static int config_chipset_for_dma (ide_drive_t *drive)314314-{315315- u8 speed = ide_max_dma_mode(drive);316316-317317- if (!(speed))318318- speed = XFER_PIO_0 + ide_get_best_pio_mode(drive, 255, 5, NULL);319319-320320- (void) svwks_tune_chipset(drive, speed);321321- return ide_dma_enable(drive);267267+ pio = ide_get_best_pio_mode(drive, pio, 4, NULL);268268+ (void)svwks_tune_chipset(drive, XFER_PIO_0 + pio);322269}323270324271static int svwks_config_drive_xfer_rate (ide_drive_t *drive)325272{326273 drive->init_speed = 0;327274328328- if (ide_use_dma(drive) && config_chipset_for_dma(drive))275275+ if (ide_tune_dma(drive))329276 return 0;330277331278 if (ide_use_fast_pio(drive))332332- config_chipset_for_pio(drive);279279+ svwks_tune_drive(drive, 255);333280334281 return -1;335282}
+1-23
drivers/ide/pci/siimage.c
···375375}376376377377/**378378- * config_chipset_for_dma - configure for DMA379379- * @drive: drive to configure380380- *381381- * Called by the IDE layer when it wants the timings set up.382382- * For the CMD680 we also need to set up the PIO timings and383383- * enable DMA.384384- */385385-386386-static int config_chipset_for_dma (ide_drive_t *drive)387387-{388388- u8 speed = ide_max_dma_mode(drive);389389-390390- if (!speed)391391- return 0;392392-393393- if (siimage_tune_chipset(drive, speed))394394- return 0;395395-396396- return ide_dma_enable(drive);397397-}398398-399399-/**400378 * siimage_configure_drive_for_dma - set up for DMA transfers401379 * @drive: drive we are going to set up402380 *···386408387409static int siimage_config_drive_for_dma (ide_drive_t *drive)388410{389389- if (ide_use_dma(drive) && config_chipset_for_dma(drive))411411+ if (ide_tune_dma(drive))390412 return 0;391413392414 if (ide_use_fast_pio(drive))
+36-49
drivers/ide/pci/sis5513.c
···11/*22- * linux/drivers/ide/pci/sis5513.c Version 0.16ac+vp Jun 18, 200322+ * linux/drivers/ide/pci/sis5513.c Version 0.20 Mar 4, 200733 *44 * Copyright (C) 1999-2000 Andre Hedrick <andre@linux-ide.org>55 * Copyright (C) 2002 Lionel Bouton <Lionel.Bouton@inet6.fr>, Maintainer66 * Copyright (C) 2003 Vojtech Pavlik <vojtech@suse.cz>77+ * Copyright (C) 2007 Bartlomiej Zolnierkiewicz88+ *79 * May be copied or modified under the terms of the GNU General Public License810 *911 *···450448 pci_write_config_byte(dev, 0x4b, reg4bh|rw_prefetch);451449}452450453453-454451/* Set per-drive active and recovery time */455452static void config_art_rwp_pio (ide_drive_t *drive, u8 pio)456453{457454 ide_hwif_t *hwif = HWIF(drive);458455 struct pci_dev *dev = hwif->pci_dev;459456460460- u8 timing, drive_pci, test1, test2;461461-462462- u16 eide_pio_timing[6] = {600, 390, 240, 180, 120, 90};463463- u16 xfer_pio = drive->id->eide_pio_modes;457457+ u8 drive_pci, test1, test2;464458465459 config_drive_art_rwp(drive);466466- pio = ide_get_best_pio_mode(drive, 255, pio, NULL);467467-468468- if (xfer_pio> 4)469469- xfer_pio = 0;470470-471471- if (drive->id->eide_pio_iordy > 0) {472472- for (xfer_pio = 5;473473- (xfer_pio > 0) &&474474- (drive->id->eide_pio_iordy > eide_pio_timing[xfer_pio]);475475- xfer_pio--);476476- } else {477477- xfer_pio = (drive->id->eide_pio_modes & 4) ? 0x05 :478478- (drive->id->eide_pio_modes & 2) ? 0x04 :479479- (drive->id->eide_pio_modes & 1) ? 0x03 : xfer_pio;480480- }481481-482482- timing = (xfer_pio >= pio) ? xfer_pio : pio;483460484461 /* In pre ATA_133 case, drives sit at 0x40 + 4*drive->dn */485462 drive_pci = 0x40;···481500 test1 &= ~0x0F;482501 test2 &= ~0x07;483502484484- switch(timing) {503503+ switch(pio) {485504 case 4: test1 |= 0x01; test2 |= 0x03; break;486505 case 3: test1 |= 0x03; test2 |= 0x03; break;487506 case 2: test1 |= 0x04; test2 |= 0x04; break;488507 case 1: test1 |= 0x07; test2 |= 0x06; break;508508+ case 0: /* PIO0: register setting == X000 */489509 default: break;490510 }491511 pci_write_config_byte(dev, drive_pci, test1);492512 pci_write_config_byte(dev, drive_pci+1, test2);493513 } else if (chipset_family < ATA_133) {494494- switch(timing) { /* active recovery514514+ switch(pio) { /* active recovery495515 v v */496516 case 4: test1 = 0x30|0x01; break;497517 case 3: test1 = 0x30|0x03; break;···507525 pci_read_config_dword(dev, drive_pci, &test3);508526 test3 &= 0xc0c00fff;509527 if (test3 & 0x08) {510510- test3 |= (unsigned long)ini_time_value[ATA_133][timing] << 12;511511- test3 |= (unsigned long)act_time_value[ATA_133][timing] << 16;512512- test3 |= (unsigned long)rco_time_value[ATA_133][timing] << 24;528528+ test3 |= ini_time_value[ATA_133][pio] << 12;529529+ test3 |= act_time_value[ATA_133][pio] << 16;530530+ test3 |= rco_time_value[ATA_133][pio] << 24;513531 } else {514514- test3 |= (unsigned long)ini_time_value[ATA_100][timing] << 12;515515- test3 |= (unsigned long)act_time_value[ATA_100][timing] << 16;516516- test3 |= (unsigned long)rco_time_value[ATA_100][timing] << 24;532532+ test3 |= ini_time_value[ATA_100][pio] << 12;533533+ test3 |= act_time_value[ATA_100][pio] << 16;534534+ test3 |= rco_time_value[ATA_100][pio] << 24;517535 }518536 pci_write_config_dword(dev, drive_pci, test3);519537 }520538}521539522522-static int config_chipset_for_pio (ide_drive_t *drive, u8 pio)540540+static int sis5513_tune_drive(ide_drive_t *drive, u8 pio)523541{524524- if (pio == 255)525525- pio = ide_find_best_mode(drive, XFER_PIO | XFER_EPIO) - XFER_PIO_0;542542+ pio = ide_get_best_pio_mode(drive, pio, 4, NULL);526543 config_art_rwp_pio(drive, pio);527527- return ide_config_drive_speed(drive, XFER_PIO_0 + min_t(u8, pio, 4));544544+ return ide_config_drive_speed(drive, XFER_PIO_0 + pio);545545+}546546+547547+static void sis5513_tuneproc(ide_drive_t *drive, u8 pio)548548+{549549+ (void)sis5513_tune_drive(drive, pio);528550}529551530552static int sis5513_tune_chipset (ide_drive_t *drive, u8 xferspeed)···608622 case XFER_SW_DMA_1:609623 case XFER_SW_DMA_0:610624 break;611611- case XFER_PIO_4: return((int) config_chipset_for_pio(drive, 4));612612- case XFER_PIO_3: return((int) config_chipset_for_pio(drive, 3));613613- case XFER_PIO_2: return((int) config_chipset_for_pio(drive, 2));614614- case XFER_PIO_1: return((int) config_chipset_for_pio(drive, 1));625625+ case XFER_PIO_4:626626+ case XFER_PIO_3:627627+ case XFER_PIO_2:628628+ case XFER_PIO_1:615629 case XFER_PIO_0:616616- default: return((int) config_chipset_for_pio(drive, 0)); 630630+ return sis5513_tune_drive(drive, speed - XFER_PIO_0);631631+ default:632632+ BUG();633633+ break;617634 }618635619619- return ((int) ide_config_drive_speed(drive, speed));620620-}621621-622622-static void sis5513_tune_drive (ide_drive_t *drive, u8 pio)623623-{624624- (void) config_chipset_for_pio(drive, pio);636636+ return ide_config_drive_speed(drive, speed);625637}626638627639static int sis5513_config_xfer_rate(ide_drive_t *drive)628640{629629- config_art_rwp_pio(drive, 5);641641+ /*642642+ * TODO: always set PIO mode and remove this643643+ */644644+ sis5513_tuneproc(drive, 255);630645631646 drive->init_speed = 0;632647···635648 return 0;636649637650 if (ide_use_fast_pio(drive))638638- sis5513_tune_drive(drive, 5);651651+ sis5513_tuneproc(drive, 255);639652640653 return -1;641654}···823836 if (!hwif->irq)824837 hwif->irq = hwif->channel ? 15 : 14;825838826826- hwif->tuneproc = &sis5513_tune_drive;839839+ hwif->tuneproc = &sis5513_tuneproc;827840 hwif->speedproc = &sis5513_tune_chipset;828841829842 if (!(hwif->dma_base)) {
+62-14
drivers/ide/pci/sl82c105.c
···82828383 pio = ide_get_best_pio_mode(drive, pio, 5, &p);84848585- drive->drive_data = drv_ctrl = get_pio_timings(&p);8585+ drv_ctrl = get_pio_timings(&p);8686+8787+ /*8888+ * Store the PIO timings so that we can restore them8989+ * in case DMA will be turned off...9090+ */9191+ drive->drive_data &= 0xffff0000;9292+ drive->drive_data |= drv_ctrl;86938794 if (!drive->using_dma) {8895 /*···107100}108101109102/*110110- * Configure the drive for DMA.111111- * We'll program the chipset only when DMA is actually turned on.103103+ * Configure the drive and chipset for a new transfer speed.112104 */113113-static int config_for_dma(ide_drive_t *drive)105105+static int sl82c105_tune_chipset(ide_drive_t *drive, u8 speed)114106{115115- DBG(("config_for_dma(drive:%s)\n", drive->name));107107+ static u16 mwdma_timings[] = {0x0707, 0x0201, 0x0200};108108+ u16 drv_ctrl;116109117117- if (ide_config_drive_speed(drive, XFER_MW_DMA_2) != 0)118118- return 0;110110+ DBG(("sl82c105_tune_chipset(drive:%s, speed:%s)\n",111111+ drive->name, ide_xfer_verbose(speed)));119112120120- return ide_dma_enable(drive);113113+ speed = ide_rate_filter(drive, speed);114114+115115+ switch (speed) {116116+ case XFER_MW_DMA_2:117117+ case XFER_MW_DMA_1:118118+ case XFER_MW_DMA_0:119119+ drv_ctrl = mwdma_timings[speed - XFER_MW_DMA_0];120120+121121+ /*122122+ * Store the DMA timings so that we can actually program123123+ * them when DMA will be turned on...124124+ */125125+ drive->drive_data &= 0x0000ffff;126126+ drive->drive_data |= (unsigned long)drv_ctrl << 16;127127+128128+ /*129129+ * If we are already using DMA, we just reprogram130130+ * the drive control register.131131+ */132132+ if (drive->using_dma) {133133+ struct pci_dev *dev = HWIF(drive)->pci_dev;134134+ int reg = 0x44 + drive->dn * 4;135135+136136+ pci_write_config_word(dev, reg, drv_ctrl);137137+ }138138+ break;139139+ case XFER_PIO_5:140140+ case XFER_PIO_4:141141+ case XFER_PIO_3:142142+ case XFER_PIO_2:143143+ case XFER_PIO_1:144144+ case XFER_PIO_0:145145+ (void) sl82c105_tune_pio(drive, speed - XFER_PIO_0);146146+ break;147147+ default:148148+ return -1;149149+ }150150+151151+ return ide_config_drive_speed(drive, speed);121152}122153123154/*···165120{166121 DBG(("sl82c105_ide_dma_check(drive:%s)\n", drive->name));167122168168- if (ide_use_dma(drive) && config_for_dma(drive))123123+ if (ide_tune_dma(drive))169124 return 0;170125171126 return -1;···264219265220 rc = __ide_dma_on(drive);266221 if (rc == 0) {267267- pci_write_config_word(dev, reg, 0x0200);222222+ pci_write_config_word(dev, reg, drive->drive_data >> 16);268223269224 printk(KERN_INFO "%s: DMA enabled\n", drive->name);270225 }···349304 /*350305 * The bridge should be part of the same device, but function 0.351306 */352352- bridge = pci_find_slot(dev->bus->number,307307+ bridge = pci_get_bus_and_slot(dev->bus->number,353308 PCI_DEVFN(PCI_SLOT(dev->devfn), 0));354309 if (!bridge)355310 return -1;···359314 */360315 if (bridge->vendor != PCI_VENDOR_ID_WINBOND ||361316 bridge->device != PCI_DEVICE_ID_WINBOND_83C553 ||362362- bridge->class >> 8 != PCI_CLASS_BRIDGE_ISA)317317+ bridge->class >> 8 != PCI_CLASS_BRIDGE_ISA) {318318+ pci_dev_put(bridge);363319 return -1;364364-320320+ }365321 /*366322 * We need to find function 0's revision, not function 1367323 */368324 pci_read_config_byte(bridge, PCI_REVISION_ID, &rev);325325+ pci_dev_put(bridge);369326370327 return rev;371328}···404357 DBG(("init_hwif_sl82c105(hwif: ide%d)\n", hwif->index));405358406359 hwif->tuneproc = &sl82c105_tune_drive;360360+ hwif->speedproc = &sl82c105_tune_chipset;407361 hwif->selectproc = &sl82c105_selectproc;408362 hwif->resetproc = &sl82c105_resetproc;409363···436388 }437389438390 hwif->atapi_dma = 1;439439- hwif->mwdma_mask = 0x04;391391+ hwif->mwdma_mask = 0x07;440392441393 hwif->ide_dma_check = &sl82c105_ide_dma_check;442394 hwif->ide_dma_on = &sl82c105_ide_dma_on;
+1
drivers/input/joystick/Kconfig
···255255256256config JOYSTICK_XPAD257257 tristate "X-Box gamepad support"258258+ depends on USB_ARCH_HAS_HCD258259 select USB259260 help260261 Say Y here if you want to use the X-Box pad with your computer.
+5
drivers/input/misc/Kconfig
···84848585config INPUT_ATI_REMOTE8686 tristate "ATI / X10 USB RF remote control"8787+ depends on USB_ARCH_HAS_HCD8788 select USB8889 help8990 Say Y here if you want to use an ATI or X10 "Lola" USB remote control.···10099101100config INPUT_ATI_REMOTE2102101 tristate "ATI / Philips USB RF remote control"102102+ depends on USB_ARCH_HAS_HCD103103 select USB104104 help105105 Say Y here if you want to use an ATI or Philips USB RF remote control.···116114config INPUT_KEYSPAN_REMOTE117115 tristate "Keyspan DMR USB remote control (EXPERIMENTAL)"118116 depends on EXPERIMENTAL117117+ depends on USB_ARCH_HAS_HCD119118 select USB120119 help121120 Say Y here if you want to use a Keyspan DMR USB remote control.···131128132129config INPUT_POWERMATE133130 tristate "Griffin PowerMate and Contour Jog support"131131+ depends on USB_ARCH_HAS_HCD134132 select USB135133 help136134 Say Y here if you want to use Griffin PowerMate or Contour Jog devices.···148144config INPUT_YEALINK149145 tristate "Yealink usb-p1k voip phone"150146 depends EXPERIMENTAL147147+ depends on USB_ARCH_HAS_HCD151148 select USB152149 help153150 Say Y here if you want to enable keyboard and LCD functions of the
+1
drivers/input/mouse/Kconfig
···111111112112config MOUSE_APPLETOUCH113113 tristate "Apple USB Touchpad support"114114+ depends on USB_ARCH_HAS_HCD114115 select USB115116 help116117 Say Y here if you want to use an Apple USB Touchpad.
+4
drivers/input/tablet/Kconfig
···13131414config TABLET_USB_ACECAD1515 tristate "Acecad Flair tablet support (USB)"1616+ depends on USB_ARCH_HAS_HCD1617 select USB1718 help1819 Say Y here if you want to use the USB version of the Acecad Flair···26252726config TABLET_USB_AIPTEK2827 tristate "Aiptek 6000U/8000U tablet support (USB)"2828+ depends on USB_ARCH_HAS_HCD2929 select USB3030 help3131 Say Y here if you want to use the USB version of the Aiptek 6000U···51495250config TABLET_USB_KBTAB5351 tristate "KB Gear JamStudio tablet support (USB)"5252+ depends on USB_ARCH_HAS_HCD5453 select USB5554 help5655 Say Y here if you want to use the USB version of the KB Gear···64616562config TABLET_USB_WACOM6663 tristate "Wacom Intuos/Graphire tablet support (USB)"6464+ depends on USB_ARCH_HAS_HCD6765 select USB6866 help6967 Say Y here if you want to use the USB version of the Wacom Intuos
+1
drivers/input/touchscreen/Kconfig
···166166167167config TOUCHSCREEN_USB_COMPOSITE168168 tristate "USB Touchscreen Driver"169169+ depends on USB_ARCH_HAS_HCD169170 select USB170171 help171172 USB Touchscreen driver for:
+1-1
drivers/media/video/em28xx/Kconfig
···11config VIDEO_EM28XX22 tristate "Empia EM2800/2820/2840 USB video capture support"33- depends on VIDEO_V4L1 && I2C33+ depends on VIDEO_V4L1 && I2C && PCI44 select VIDEO_BUF55 select VIDEO_TUNER66 select VIDEO_TVEEPROM
+1-1
drivers/media/video/ivtv/Kconfig
···11config VIDEO_IVTV22 tristate "Conexant cx23416/cx23415 MPEG encoder/decoder support"33- depends on VIDEO_V4L1 && VIDEO_V4L2 && USB && I2C && EXPERIMENTAL33+ depends on VIDEO_V4L1 && VIDEO_V4L2 && USB && I2C && EXPERIMENTAL && PCI44 select FW_LOADER55 select VIDEO_TUNER66 select VIDEO_TVEEPROM
···11/*22- * Copyright (C) Freescale Semicondutor, Inc. 2006. All rights reserved.22+ * Copyright (C) 2006-2007 Freescale Semicondutor, Inc. All rights reserved.33 *44 * Author: Shlomi Gridish <gridish@freescale.com>55 * Li Yang <leoli@freescale.com>···3737373737383738const struct ethtool_ops ucc_geth_ethtool_ops = { };3739373937403740-static phy_interface_t to_phy_interface(const char *interface_type)37403740+static phy_interface_t to_phy_interface(const char *phy_connection_type)37413741{37423742- if (strcasecmp(interface_type, "mii") == 0)37423742+ if (strcasecmp(phy_connection_type, "mii") == 0)37433743 return PHY_INTERFACE_MODE_MII;37443744- if (strcasecmp(interface_type, "gmii") == 0)37443744+ if (strcasecmp(phy_connection_type, "gmii") == 0)37453745 return PHY_INTERFACE_MODE_GMII;37463746- if (strcasecmp(interface_type, "tbi") == 0)37463746+ if (strcasecmp(phy_connection_type, "tbi") == 0)37473747 return PHY_INTERFACE_MODE_TBI;37483748- if (strcasecmp(interface_type, "rmii") == 0)37483748+ if (strcasecmp(phy_connection_type, "rmii") == 0)37493749 return PHY_INTERFACE_MODE_RMII;37503750- if (strcasecmp(interface_type, "rgmii") == 0)37503750+ if (strcasecmp(phy_connection_type, "rgmii") == 0)37513751 return PHY_INTERFACE_MODE_RGMII;37523752- if (strcasecmp(interface_type, "rgmii-id") == 0)37523752+ if (strcasecmp(phy_connection_type, "rgmii-id") == 0)37533753 return PHY_INTERFACE_MODE_RGMII_ID;37543754- if (strcasecmp(interface_type, "rtbi") == 0)37543754+ if (strcasecmp(phy_connection_type, "rtbi") == 0)37553755 return PHY_INTERFACE_MODE_RTBI;3756375637573757 return PHY_INTERFACE_MODE_MII;···38193819 ug_info->phy_address = *prop;3820382038213821 /* get the phy interface type, or default to MII */38223822- prop = of_get_property(np, "interface-type", NULL);38223822+ prop = of_get_property(np, "phy-connection-type", NULL);38233823 if (!prop) {38243824 /* handle interface property present in old trees */38253825 prop = of_get_property(phy, "interface", NULL);38263826- if (prop != NULL)38263826+ if (prop != NULL) {38273827 phy_interface = enet_to_phy_interface[*prop];38283828- else38283828+ max_speed = enet_to_speed[*prop];38293829+ } else38293830 phy_interface = PHY_INTERFACE_MODE_MII;38303831 } else {38313832 phy_interface = to_phy_interface((const char *)prop);38323833 }3833383438343834- /* get speed, or derive from interface */38353835- prop = of_get_property(np, "max-speed", NULL);38363836- if (!prop) {38373837- /* handle interface property present in old trees */38383838- prop = of_get_property(phy, "interface", NULL);38393839- if (prop != NULL)38403840- max_speed = enet_to_speed[*prop];38413841- } else {38423842- max_speed = *prop;38433843- }38443844- if (!max_speed) {38353835+ /* get speed, or derive from PHY interface */38363836+ if (max_speed == 0)38453837 switch (phy_interface) {38463838 case PHY_INTERFACE_MODE_GMII:38473839 case PHY_INTERFACE_MODE_RGMII:···38463854 max_speed = SPEED_100;38473855 break;38483856 }38493849- }3850385738513858 if (max_speed == SPEED_1000) {38593859+ /* configure muram FIFOs for gigabit operation */38523860 ug_info->uf_info.urfs = UCC_GETH_URFS_GIGA_INIT;38533861 ug_info->uf_info.urfet = UCC_GETH_URFET_GIGA_INIT;38543862 ug_info->uf_info.urfset = UCC_GETH_URFSET_GIGA_INIT;
+5-4
drivers/net/ucc_geth_mii.c
···11/*22 * drivers/net/ucc_geth_mii.c33 *44- * Gianfar Ethernet Driver -- MIIM bus implementation55- * Provides Bus interface for MIIM regs44+ * QE UCC Gigabit Ethernet Driver -- MII Management Bus Implementation55+ * Provides Bus interface for MII Management regs in the UCC register space66 *77- * Author: Li Yang77+ * Copyright (C) 2007 Freescale Semiconductor, Inc.88 *99- * Copyright (c) 2002-2004 Freescale Semiconductor, Inc.99+ * Authors: Li Yang <leoli@freescale.com>1010+ * Kim Phillips <kim.phillips@freescale.com>1011 *1112 * This program is free software; you can redistribute it and/or modify it1213 * under the terms of the GNU General Public License as published by the
+5-5
drivers/net/ucc_geth_mii.h
···11/*22 * drivers/net/ucc_geth_mii.h33 *44- * Gianfar Ethernet Driver -- MII Management Bus Implementation55- * Driver for the MDIO bus controller in the Gianfar register space44+ * QE UCC Gigabit Ethernet Driver -- MII Management Bus Implementation55+ * Provides Bus interface for MII Management regs in the UCC register space66 *77- * Author: Andy Fleming88- * Maintainer: Kumar Gala77+ * Copyright (C) 2007 Freescale Semiconductor, Inc.98 *1010- * Copyright (c) 2002-2004 Freescale Semiconductor, Inc.99+ * Authors: Li Yang <leoli@freescale.com>1010+ * Kim Phillips <kim.phillips@freescale.com>1111 *1212 * This program is free software; you can redistribute it and/or modify it1313 * under the terms of the GNU General Public License as published by the