Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus

* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
[MIPS] Fix wreckage after removal of tickadj; convert to GENERIC_TIME.
[MIPS] DECstation defconfig update
[MIPS] Fix size of zones_size and zholes_size array
[MIPS] BCM1480: Mask pending interrupts against c0_status.im.
[MIPS] SB1250: Interrupt handler fixes
[MIPS] Remove IT8172-based platforms, ITE 8172G and Globespan IVR support.
[MIPS] Remove Atlas and SEAD from feature-removal-schedule.
[MIPS] Remove Jaguar and Ocelot family from feature list.
[MIPS] BCM1250: TRDY timeout tweaks for Broadcom SiByte systems
[MIPS] Remove dead DECstation boot code
[MIPS] Let gcc align 'struct pt_regs' on 8 bytes boundary

+113 -9048
-36
Documentation/feature-removal-schedule.txt
··· 211 212 --------------------------- 213 214 - What: Support for the Momentum / PMC-Sierra Jaguar ATX evaluation board 215 - When: September 2006 216 - Why: Does no longer build since quite some time, and was never popular, 217 - due to the platform being replaced by successor models. Apparently 218 - no user base left. It also is one of the last users of 219 - WANT_PAGE_VIRTUAL. 220 - Who: Ralf Baechle <ralf@linux-mips.org> 221 - 222 - --------------------------- 223 - 224 - What: Support for the Momentum Ocelot, Ocelot 3, Ocelot C and Ocelot G 225 - When: September 2006 226 - Why: Some do no longer build and apparently there is no user base left 227 - for these platforms. 228 - Who: Ralf Baechle <ralf@linux-mips.org> 229 - 230 - --------------------------- 231 - 232 - What: Support for MIPS Technologies' Altas and SEAD evaluation board 233 - When: September 2006 234 - Why: Some do no longer build and apparently there is no user base left 235 - for these platforms. Hardware out of production since several years. 236 - Who: Ralf Baechle <ralf@linux-mips.org> 237 - 238 - --------------------------- 239 - 240 - What: Support for the IT8172-based platforms, ITE 8172G and Globespan IVR 241 - When: September 2006 242 - Why: Code does no longer build since at least 2.6.0, apparently there is 243 - no user base left for these platforms. Hardware out of production 244 - since several years and hardly a trace of the manufacturer left on 245 - the net. 246 - Who: Ralf Baechle <ralf@linux-mips.org> 247 - 248 - --------------------------- 249 - 250 What: Interrupt only SA_* flags 251 When: Januar 2007 252 Why: The interrupt related SA_* flags are replaced by IRQF_* to move them
··· 211 212 --------------------------- 213 214 What: Interrupt only SA_* flags 215 When: Januar 2007 216 Why: The interrupt related SA_* flags are replaced by IRQF_* to move them
+4 -47
arch/mips/Kconfig
··· 203 <http://www.marvell.com/>. Say Y here if you wish to build a 204 kernel for this platform. 205 206 - config MIPS_IVR 207 - bool "Globespan IVR board" 208 - select DMA_NONCOHERENT 209 - select HW_HAS_PCI 210 - select ITE_BOARD_GEN 211 - select SYS_HAS_CPU_NEVADA 212 - select SYS_SUPPORTS_32BIT_KERNEL 213 - select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL 214 - select SYS_SUPPORTS_LITTLE_ENDIAN 215 - help 216 - This is an evaluation board built by Globespan to showcase thir 217 - iVR (Internet Video Recorder) design. It utilizes a QED RM5231 218 - R5000 MIPS core. More information can be found out their website 219 - located at <http://www.globespan.net/>. Say Y here if you wish to 220 - build a kernel for this platform. 221 - 222 - config MIPS_ITE8172 223 - bool "ITE 8172G board" 224 - select DMA_NONCOHERENT 225 - select HW_HAS_PCI 226 - select ITE_BOARD_GEN 227 - select SYS_HAS_CPU_R5432 228 - select SYS_HAS_CPU_NEVADA 229 - select SYS_SUPPORTS_32BIT_KERNEL 230 - select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL 231 - select SYS_SUPPORTS_LITTLE_ENDIAN 232 - help 233 - Ths is an evaluation board made by ITE <http://www.ite.com.tw/> 234 - with ATX form factor that utilizes a MIPS R5000 to work with its 235 - ITE8172G companion internet appliance chip. The MIPS core can be 236 - either a NEC Vr5432 or QED RM5231. Say Y here if you wish to build 237 - a kernel for this platform. 238 - 239 config MACH_JAZZ 240 bool "Jazz family of machines" 241 select ARC ··· 771 source "arch/mips/ddb5xxx/Kconfig" 772 source "arch/mips/gt64120/ev64120/Kconfig" 773 source "arch/mips/jazz/Kconfig" 774 - source "arch/mips/ite-boards/Kconfig" 775 source "arch/mips/lasat/Kconfig" 776 source "arch/mips/momentum/Kconfig" 777 source "arch/mips/pmc-sierra/Kconfig" ··· 800 default y 801 802 config GENERIC_CALIBRATE_DELAY 803 bool 804 default y 805 ··· 934 config PCI_MARVELL 935 bool 936 937 - config ITE_BOARD_GEN 938 - bool 939 - 940 config SOC_AU1000 941 bool 942 select SOC_AU1X00 ··· 1016 bool 1017 depends on MIPS_PB1500 || MIPS_PB1100 || MIPS_PB1000 1018 default n 1019 - 1020 - config IT8172_CIR 1021 - bool 1022 - depends on MIPS_ITE8172 || MIPS_IVR 1023 - default y 1024 - 1025 - config IT8712 1026 - bool 1027 - depends on MIPS_ITE8172 1028 - default y 1029 1030 config BOOT_ELF32 1031 bool
··· 203 <http://www.marvell.com/>. Say Y here if you wish to build a 204 kernel for this platform. 205 206 config MACH_JAZZ 207 bool "Jazz family of machines" 208 select ARC ··· 804 source "arch/mips/ddb5xxx/Kconfig" 805 source "arch/mips/gt64120/ev64120/Kconfig" 806 source "arch/mips/jazz/Kconfig" 807 source "arch/mips/lasat/Kconfig" 808 source "arch/mips/momentum/Kconfig" 809 source "arch/mips/pmc-sierra/Kconfig" ··· 834 default y 835 836 config GENERIC_CALIBRATE_DELAY 837 + bool 838 + default y 839 + 840 + config GENERIC_TIME 841 bool 842 default y 843 ··· 964 config PCI_MARVELL 965 bool 966 967 config SOC_AU1000 968 bool 969 select SOC_AU1X00 ··· 1049 bool 1050 depends on MIPS_PB1500 || MIPS_PB1100 || MIPS_PB1000 1051 default n 1052 1053 config BOOT_ELF32 1054 bool
-13
arch/mips/Makefile
··· 287 load-$(CONFIG_WR_PPMC) += 0xffffffff80100000 288 289 # 290 - # Globespan IVR eval board with QED 5231 CPU 291 - # 292 - core-$(CONFIG_ITE_BOARD_GEN) += arch/mips/ite-boards/generic/ 293 - core-$(CONFIG_MIPS_IVR) += arch/mips/ite-boards/ivr/ 294 - load-$(CONFIG_MIPS_IVR) += 0xffffffff80100000 295 - 296 - # 297 - # ITE 8172 eval board with QED 5231 CPU 298 - # 299 - core-$(CONFIG_MIPS_ITE8172) += arch/mips/ite-boards/qed-4n-s01b/ 300 - load-$(CONFIG_MIPS_ITE8172) += 0xffffffff80100000 301 - 302 - # 303 # For all MIPS, Inc. eval boards 304 # 305 core-$(CONFIG_MIPS_BOARDS_GEN) += arch/mips/mips-boards/generic/
··· 287 load-$(CONFIG_WR_PPMC) += 0xffffffff80100000 288 289 # 290 # For all MIPS, Inc. eval boards 291 # 292 core-$(CONFIG_MIPS_BOARDS_GEN) += arch/mips/mips-boards/generic/
+73 -73
arch/mips/configs/decstation_defconfig
··· 1 # 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.18-rc1 4 - # Thu Jul 6 10:04:01 2006 5 # 6 CONFIG_MIPS=y 7 ··· 167 CONFIG_SYSVIPC=y 168 # CONFIG_POSIX_MQUEUE is not set 169 # CONFIG_BSD_PROCESS_ACCT is not set 170 - CONFIG_SYSCTL=y 171 # CONFIG_AUDIT is not set 172 # CONFIG_IKCONFIG is not set 173 - CONFIG_RELAY=y 174 CONFIG_INITRAMFS_SOURCE="" 175 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 176 CONFIG_EMBEDDED=y 177 CONFIG_KALLSYMS=y 178 - # CONFIG_KALLSYMS_ALL is not set 179 # CONFIG_KALLSYMS_EXTRA_PASS is not set 180 # CONFIG_HOTPLUG is not set 181 CONFIG_PRINTK=y 182 CONFIG_BUG=y 183 CONFIG_ELF_CORE=y 184 CONFIG_BASE_FULL=y 185 - CONFIG_RT_MUTEXES=y 186 CONFIG_FUTEX=y 187 CONFIG_EPOLL=y 188 CONFIG_SHMEM=y 189 CONFIG_SLAB=y 190 CONFIG_VM_EVENT_COUNTERS=y 191 # CONFIG_TINY_SHMEM is not set 192 CONFIG_BASE_SMALL=0 193 # CONFIG_SLOB is not set ··· 206 # 207 # Block layer 208 # 209 # CONFIG_LBD is not set 210 # CONFIG_BLK_DEV_IO_TRACE is not set 211 # CONFIG_LSF is not set ··· 233 # 234 # PCCARD (PCMCIA/CardBus) support 235 # 236 - # CONFIG_PCCARD is not set 237 238 # 239 # PCI Hotplug Support ··· 259 CONFIG_UNIX=y 260 CONFIG_XFRM=y 261 # CONFIG_XFRM_USER is not set 262 - # CONFIG_NET_KEY is not set 263 CONFIG_INET=y 264 - # CONFIG_IP_MULTICAST is not set 265 # CONFIG_IP_ADVANCED_ROUTER is not set 266 CONFIG_IP_FIB_HASH=y 267 CONFIG_IP_PNP=y ··· 271 # CONFIG_IP_PNP_RARP is not set 272 # CONFIG_NET_IPIP is not set 273 # CONFIG_NET_IPGRE is not set 274 # CONFIG_ARPD is not set 275 - # CONFIG_SYN_COOKIES is not set 276 - # CONFIG_INET_AH is not set 277 - # CONFIG_INET_ESP is not set 278 - # CONFIG_INET_IPCOMP is not set 279 - # CONFIG_INET_XFRM_TUNNEL is not set 280 - # CONFIG_INET_TUNNEL is not set 281 CONFIG_INET_XFRM_MODE_TRANSPORT=m 282 CONFIG_INET_XFRM_MODE_TUNNEL=m 283 CONFIG_INET_DIAG=y 284 CONFIG_INET_TCP_DIAG=y 285 # CONFIG_TCP_CONG_ADVANCED is not set 286 - CONFIG_TCP_CONG_BIC=y 287 - # CONFIG_IPV6 is not set 288 - # CONFIG_INET6_XFRM_TUNNEL is not set 289 - # CONFIG_INET6_TUNNEL is not set 290 CONFIG_NETWORK_SECMARK=y 291 # CONFIG_NETFILTER is not set 292 ··· 321 # CONFIG_TIPC is not set 322 # CONFIG_ATM is not set 323 # CONFIG_BRIDGE is not set 324 - # CONFIG_VLAN_8021Q is not set 325 # CONFIG_DECNET is not set 326 # CONFIG_LLC2 is not set 327 # CONFIG_IPX is not set 328 # CONFIG_ATALK is not set 329 # CONFIG_X25 is not set 330 # CONFIG_LAPB is not set 331 - # CONFIG_NET_DIVERT is not set 332 # CONFIG_ECONET is not set 333 # CONFIG_WAN_ROUTER is not set 334 ··· 343 # CONFIG_HAMRADIO is not set 344 # CONFIG_IRDA is not set 345 # CONFIG_BT is not set 346 - CONFIG_IEEE80211=m 347 - # CONFIG_IEEE80211_DEBUG is not set 348 - CONFIG_IEEE80211_CRYPT_WEP=m 349 - CONFIG_IEEE80211_CRYPT_CCMP=m 350 - CONFIG_IEEE80211_SOFTMAC=m 351 - # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 352 - CONFIG_WIRELESS_EXT=y 353 354 # 355 # Device Drivers ··· 355 # 356 CONFIG_STANDALONE=y 357 CONFIG_PREVENT_FIRMWARE_BUILD=y 358 - # CONFIG_FW_LOADER is not set 359 - # CONFIG_DEBUG_DRIVER is not set 360 # CONFIG_SYS_HYPERVISOR is not set 361 362 # ··· 396 # 397 # SCSI device support 398 # 399 - CONFIG_RAID_ATTRS=m 400 CONFIG_SCSI=y 401 CONFIG_SCSI_PROC_FS=y 402 403 # ··· 420 # CONFIG_SCSI_LOGGING is not set 421 422 # 423 - # SCSI Transport Attributes 424 # 425 CONFIG_SCSI_SPI_ATTRS=m 426 # CONFIG_SCSI_FC_ATTRS is not set 427 CONFIG_SCSI_ISCSI_ATTRS=m 428 CONFIG_SCSI_SAS_ATTRS=m 429 430 # 431 # SCSI low-level drivers ··· 434 CONFIG_ISCSI_TCP=m 435 CONFIG_SCSI_DECNCR=y 436 # CONFIG_SCSI_DECSII is not set 437 - # CONFIG_SCSI_SATA is not set 438 # CONFIG_SCSI_DEBUG is not set 439 440 # 441 # Multi-device support (RAID and LVM) ··· 471 # 472 # PHY device support 473 # 474 - CONFIG_PHYLIB=m 475 - 476 - # 477 - # MII PHY device drivers 478 - # 479 - CONFIG_MARVELL_PHY=m 480 - CONFIG_DAVICOM_PHY=m 481 - CONFIG_QSEMI_PHY=m 482 - CONFIG_LXT_PHY=m 483 - CONFIG_CICADA_PHY=m 484 - CONFIG_VITESSE_PHY=m 485 - CONFIG_SMSC_PHY=m 486 487 # 488 # Ethernet (10 or 100Mbit) ··· 716 CONFIG_EXT2_FS_POSIX_ACL=y 717 CONFIG_EXT2_FS_SECURITY=y 718 # CONFIG_EXT2_FS_XIP is not set 719 - # CONFIG_EXT3_FS is not set 720 CONFIG_FS_MBCACHE=y 721 # CONFIG_REISERFS_FS is not set 722 # CONFIG_JFS_FS is not set ··· 756 # 757 CONFIG_PROC_FS=y 758 CONFIG_PROC_KCORE=y 759 CONFIG_SYSFS=y 760 CONFIG_TMPFS=y 761 # CONFIG_HUGETLB_PAGE is not set 762 CONFIG_RAMFS=y 763 - # CONFIG_CONFIGFS_FS is not set 764 765 # 766 # Miscellaneous filesystems ··· 780 # CONFIG_QNX4FS_FS is not set 781 # CONFIG_SYSV_FS is not set 782 CONFIG_UFS_FS=y 783 - # CONFIG_UFS_FS_WRITE is not set 784 # CONFIG_UFS_DEBUG is not set 785 786 # ··· 788 # 789 CONFIG_NFS_FS=y 790 CONFIG_NFS_V3=y 791 - # CONFIG_NFS_V3_ACL is not set 792 # CONFIG_NFS_V4 is not set 793 # CONFIG_NFS_DIRECTIO is not set 794 # CONFIG_NFSD is not set 795 CONFIG_ROOT_NFS=y 796 CONFIG_LOCKD=y 797 CONFIG_LOCKD_V4=y 798 CONFIG_NFS_COMMON=y 799 CONFIG_SUNRPC=y 800 # CONFIG_RPCSEC_GSS_KRB5 is not set 801 # CONFIG_RPCSEC_GSS_SPKM3 is not set 802 # CONFIG_SMB_FS is not set 803 # CONFIG_CIFS is not set 804 - # CONFIG_CIFS_DEBUG2 is not set 805 # CONFIG_NCP_FS is not set 806 # CONFIG_CODA_FS is not set 807 # CONFIG_AFS_FS is not set 808 # CONFIG_9P_FS is not set 809 810 # 811 # Partition Types ··· 844 # 845 CONFIG_TRACE_IRQFLAGS_SUPPORT=y 846 # CONFIG_PRINTK_TIME is not set 847 CONFIG_MAGIC_SYSRQ=y 848 # CONFIG_UNUSED_SYMBOLS is not set 849 - CONFIG_DEBUG_KERNEL=y 850 CONFIG_LOG_BUF_SHIFT=14 851 - CONFIG_DETECT_SOFTLOCKUP=y 852 - # CONFIG_SCHEDSTATS is not set 853 - # CONFIG_DEBUG_SLAB is not set 854 - # CONFIG_DEBUG_RT_MUTEXES is not set 855 - # CONFIG_RT_MUTEX_TESTER is not set 856 - # CONFIG_DEBUG_SPINLOCK is not set 857 - CONFIG_DEBUG_MUTEXES=y 858 - # CONFIG_DEBUG_RWSEMS is not set 859 - # CONFIG_DEBUG_SPINLOCK_SLEEP is not set 860 - # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 861 - # CONFIG_DEBUG_KOBJECT is not set 862 - # CONFIG_DEBUG_INFO is not set 863 # CONFIG_DEBUG_FS is not set 864 - # CONFIG_DEBUG_VM is not set 865 - CONFIG_FORCED_INLINING=y 866 - # CONFIG_RCU_TORTURE_TEST is not set 867 CONFIG_CROSSCOMPILE=y 868 CONFIG_CMDLINE="" 869 - # CONFIG_DEBUG_STACK_USAGE is not set 870 - # CONFIG_KGDB is not set 871 - # CONFIG_RUNTIME_DEBUG is not set 872 - # CONFIG_MIPS_UNCACHED is not set 873 874 # 875 # Security options 876 # 877 - CONFIG_KEYS=y 878 - CONFIG_KEYS_DEBUG_PROC_KEYS=y 879 # CONFIG_SECURITY is not set 880 881 # 882 # Cryptographic options 883 # 884 CONFIG_CRYPTO=y 885 CONFIG_CRYPTO_HMAC=y 886 CONFIG_CRYPTO_NULL=m 887 CONFIG_CRYPTO_MD4=m ··· 876 CONFIG_CRYPTO_SHA512=m 877 CONFIG_CRYPTO_WP512=m 878 CONFIG_CRYPTO_TGR192=m 879 CONFIG_CRYPTO_DES=m 880 CONFIG_CRYPTO_BLOWFISH=m 881 CONFIG_CRYPTO_TWOFISH=m 882 CONFIG_CRYPTO_SERPENT=m 883 CONFIG_CRYPTO_AES=m 884 CONFIG_CRYPTO_CAST5=m ··· 903 # Library routines 904 # 905 # CONFIG_CRC_CCITT is not set 906 - CONFIG_CRC16=m 907 CONFIG_CRC32=y 908 CONFIG_LIBCRC32C=m 909 CONFIG_ZLIB_INFLATE=m
··· 1 # 2 # Automatically generated make config: don't edit 3 + # Linux kernel version: 2.6.18 4 + # Tue Oct 3 11:57:53 2006 5 # 6 CONFIG_MIPS=y 7 ··· 167 CONFIG_SYSVIPC=y 168 # CONFIG_POSIX_MQUEUE is not set 169 # CONFIG_BSD_PROCESS_ACCT is not set 170 + # CONFIG_TASKSTATS is not set 171 # CONFIG_AUDIT is not set 172 # CONFIG_IKCONFIG is not set 173 + # CONFIG_RELAY is not set 174 CONFIG_INITRAMFS_SOURCE="" 175 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 176 + CONFIG_SYSCTL=y 177 CONFIG_EMBEDDED=y 178 + # CONFIG_SYSCTL_SYSCALL is not set 179 CONFIG_KALLSYMS=y 180 # CONFIG_KALLSYMS_EXTRA_PASS is not set 181 # CONFIG_HOTPLUG is not set 182 CONFIG_PRINTK=y 183 CONFIG_BUG=y 184 CONFIG_ELF_CORE=y 185 CONFIG_BASE_FULL=y 186 CONFIG_FUTEX=y 187 CONFIG_EPOLL=y 188 CONFIG_SHMEM=y 189 CONFIG_SLAB=y 190 CONFIG_VM_EVENT_COUNTERS=y 191 + CONFIG_RT_MUTEXES=y 192 # CONFIG_TINY_SHMEM is not set 193 CONFIG_BASE_SMALL=0 194 # CONFIG_SLOB is not set ··· 205 # 206 # Block layer 207 # 208 + CONFIG_BLOCK=y 209 # CONFIG_LBD is not set 210 # CONFIG_BLK_DEV_IO_TRACE is not set 211 # CONFIG_LSF is not set ··· 231 # 232 # PCCARD (PCMCIA/CardBus) support 233 # 234 235 # 236 # PCI Hotplug Support ··· 258 CONFIG_UNIX=y 259 CONFIG_XFRM=y 260 # CONFIG_XFRM_USER is not set 261 + # CONFIG_XFRM_SUB_POLICY is not set 262 + CONFIG_NET_KEY=m 263 CONFIG_INET=y 264 + CONFIG_IP_MULTICAST=y 265 # CONFIG_IP_ADVANCED_ROUTER is not set 266 CONFIG_IP_FIB_HASH=y 267 CONFIG_IP_PNP=y ··· 269 # CONFIG_IP_PNP_RARP is not set 270 # CONFIG_NET_IPIP is not set 271 # CONFIG_NET_IPGRE is not set 272 + # CONFIG_IP_MROUTE is not set 273 # CONFIG_ARPD is not set 274 + CONFIG_SYN_COOKIES=y 275 + CONFIG_INET_AH=m 276 + CONFIG_INET_ESP=m 277 + CONFIG_INET_IPCOMP=m 278 + CONFIG_INET_XFRM_TUNNEL=m 279 + CONFIG_INET_TUNNEL=m 280 CONFIG_INET_XFRM_MODE_TRANSPORT=m 281 CONFIG_INET_XFRM_MODE_TUNNEL=m 282 CONFIG_INET_DIAG=y 283 CONFIG_INET_TCP_DIAG=y 284 # CONFIG_TCP_CONG_ADVANCED is not set 285 + CONFIG_TCP_CONG_CUBIC=y 286 + CONFIG_DEFAULT_TCP_CONG="cubic" 287 + CONFIG_IPV6=m 288 + CONFIG_IPV6_PRIVACY=y 289 + CONFIG_IPV6_ROUTER_PREF=y 290 + CONFIG_IPV6_ROUTE_INFO=y 291 + CONFIG_INET6_AH=m 292 + CONFIG_INET6_ESP=m 293 + CONFIG_INET6_IPCOMP=m 294 + CONFIG_IPV6_MIP6=y 295 + CONFIG_INET6_XFRM_TUNNEL=m 296 + CONFIG_INET6_TUNNEL=m 297 + CONFIG_INET6_XFRM_MODE_TRANSPORT=m 298 + CONFIG_INET6_XFRM_MODE_TUNNEL=m 299 + CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m 300 + # CONFIG_IPV6_TUNNEL is not set 301 + CONFIG_IPV6_SUBTREES=y 302 + CONFIG_IPV6_MULTIPLE_TABLES=y 303 CONFIG_NETWORK_SECMARK=y 304 # CONFIG_NETFILTER is not set 305 ··· 304 # CONFIG_TIPC is not set 305 # CONFIG_ATM is not set 306 # CONFIG_BRIDGE is not set 307 + CONFIG_VLAN_8021Q=m 308 # CONFIG_DECNET is not set 309 # CONFIG_LLC2 is not set 310 # CONFIG_IPX is not set 311 # CONFIG_ATALK is not set 312 # CONFIG_X25 is not set 313 # CONFIG_LAPB is not set 314 # CONFIG_ECONET is not set 315 # CONFIG_WAN_ROUTER is not set 316 ··· 327 # CONFIG_HAMRADIO is not set 328 # CONFIG_IRDA is not set 329 # CONFIG_BT is not set 330 + # CONFIG_IEEE80211 is not set 331 + CONFIG_FIB_RULES=y 332 333 # 334 # Device Drivers ··· 344 # 345 CONFIG_STANDALONE=y 346 CONFIG_PREVENT_FIRMWARE_BUILD=y 347 # CONFIG_SYS_HYPERVISOR is not set 348 349 # ··· 387 # 388 # SCSI device support 389 # 390 + # CONFIG_RAID_ATTRS is not set 391 CONFIG_SCSI=y 392 + # CONFIG_SCSI_NETLINK is not set 393 CONFIG_SCSI_PROC_FS=y 394 395 # ··· 410 # CONFIG_SCSI_LOGGING is not set 411 412 # 413 + # SCSI Transports 414 # 415 CONFIG_SCSI_SPI_ATTRS=m 416 # CONFIG_SCSI_FC_ATTRS is not set 417 CONFIG_SCSI_ISCSI_ATTRS=m 418 CONFIG_SCSI_SAS_ATTRS=m 419 + # CONFIG_SCSI_SAS_LIBSAS is not set 420 421 # 422 # SCSI low-level drivers ··· 423 CONFIG_ISCSI_TCP=m 424 CONFIG_SCSI_DECNCR=y 425 # CONFIG_SCSI_DECSII is not set 426 # CONFIG_SCSI_DEBUG is not set 427 + 428 + # 429 + # Serial ATA (prod) and Parallel ATA (experimental) drivers 430 + # 431 + # CONFIG_ATA is not set 432 433 # 434 # Multi-device support (RAID and LVM) ··· 456 # 457 # PHY device support 458 # 459 + # CONFIG_PHYLIB is not set 460 461 # 462 # Ethernet (10 or 100Mbit) ··· 712 CONFIG_EXT2_FS_POSIX_ACL=y 713 CONFIG_EXT2_FS_SECURITY=y 714 # CONFIG_EXT2_FS_XIP is not set 715 + CONFIG_EXT3_FS=y 716 + CONFIG_EXT3_FS_XATTR=y 717 + CONFIG_EXT3_FS_POSIX_ACL=y 718 + CONFIG_EXT3_FS_SECURITY=y 719 + CONFIG_JBD=y 720 + # CONFIG_JBD_DEBUG is not set 721 CONFIG_FS_MBCACHE=y 722 # CONFIG_REISERFS_FS is not set 723 # CONFIG_JFS_FS is not set ··· 747 # 748 CONFIG_PROC_FS=y 749 CONFIG_PROC_KCORE=y 750 + CONFIG_PROC_SYSCTL=y 751 CONFIG_SYSFS=y 752 CONFIG_TMPFS=y 753 + CONFIG_TMPFS_POSIX_ACL=y 754 # CONFIG_HUGETLB_PAGE is not set 755 CONFIG_RAMFS=y 756 + CONFIG_CONFIGFS_FS=y 757 758 # 759 # Miscellaneous filesystems ··· 769 # CONFIG_QNX4FS_FS is not set 770 # CONFIG_SYSV_FS is not set 771 CONFIG_UFS_FS=y 772 + CONFIG_UFS_FS_WRITE=y 773 # CONFIG_UFS_DEBUG is not set 774 775 # ··· 777 # 778 CONFIG_NFS_FS=y 779 CONFIG_NFS_V3=y 780 + CONFIG_NFS_V3_ACL=y 781 # CONFIG_NFS_V4 is not set 782 # CONFIG_NFS_DIRECTIO is not set 783 # CONFIG_NFSD is not set 784 CONFIG_ROOT_NFS=y 785 CONFIG_LOCKD=y 786 CONFIG_LOCKD_V4=y 787 + CONFIG_NFS_ACL_SUPPORT=y 788 CONFIG_NFS_COMMON=y 789 CONFIG_SUNRPC=y 790 # CONFIG_RPCSEC_GSS_KRB5 is not set 791 # CONFIG_RPCSEC_GSS_SPKM3 is not set 792 # CONFIG_SMB_FS is not set 793 # CONFIG_CIFS is not set 794 # CONFIG_NCP_FS is not set 795 # CONFIG_CODA_FS is not set 796 # CONFIG_AFS_FS is not set 797 # CONFIG_9P_FS is not set 798 + CONFIG_GENERIC_ACL=y 799 800 # 801 # Partition Types ··· 832 # 833 CONFIG_TRACE_IRQFLAGS_SUPPORT=y 834 # CONFIG_PRINTK_TIME is not set 835 + CONFIG_ENABLE_MUST_CHECK=y 836 CONFIG_MAGIC_SYSRQ=y 837 # CONFIG_UNUSED_SYMBOLS is not set 838 + # CONFIG_DEBUG_KERNEL is not set 839 CONFIG_LOG_BUF_SHIFT=14 840 # CONFIG_DEBUG_FS is not set 841 CONFIG_CROSSCOMPILE=y 842 CONFIG_CMDLINE="" 843 844 # 845 # Security options 846 # 847 + # CONFIG_KEYS is not set 848 # CONFIG_SECURITY is not set 849 850 # 851 # Cryptographic options 852 # 853 CONFIG_CRYPTO=y 854 + CONFIG_CRYPTO_ALGAPI=y 855 + CONFIG_CRYPTO_BLKCIPHER=m 856 + CONFIG_CRYPTO_HASH=y 857 + CONFIG_CRYPTO_MANAGER=m 858 CONFIG_CRYPTO_HMAC=y 859 CONFIG_CRYPTO_NULL=m 860 CONFIG_CRYPTO_MD4=m ··· 879 CONFIG_CRYPTO_SHA512=m 880 CONFIG_CRYPTO_WP512=m 881 CONFIG_CRYPTO_TGR192=m 882 + CONFIG_CRYPTO_ECB=m 883 + CONFIG_CRYPTO_CBC=m 884 CONFIG_CRYPTO_DES=m 885 CONFIG_CRYPTO_BLOWFISH=m 886 CONFIG_CRYPTO_TWOFISH=m 887 + CONFIG_CRYPTO_TWOFISH_COMMON=m 888 CONFIG_CRYPTO_SERPENT=m 889 CONFIG_CRYPTO_AES=m 890 CONFIG_CRYPTO_CAST5=m ··· 903 # Library routines 904 # 905 # CONFIG_CRC_CCITT is not set 906 + # CONFIG_CRC16 is not set 907 CONFIG_CRC32=y 908 CONFIG_LIBCRC32C=m 909 CONFIG_ZLIB_INFLATE=m
-964
arch/mips/configs/it8172_defconfig
··· 1 - # 2 - # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.18-rc1 4 - # Thu Jul 6 10:04:11 2006 5 - # 6 - CONFIG_MIPS=y 7 - 8 - # 9 - # Machine selection 10 - # 11 - # CONFIG_MIPS_MTX1 is not set 12 - # CONFIG_MIPS_BOSPORUS is not set 13 - # CONFIG_MIPS_PB1000 is not set 14 - # CONFIG_MIPS_PB1100 is not set 15 - # CONFIG_MIPS_PB1500 is not set 16 - # CONFIG_MIPS_PB1550 is not set 17 - # CONFIG_MIPS_PB1200 is not set 18 - # CONFIG_MIPS_DB1000 is not set 19 - # CONFIG_MIPS_DB1100 is not set 20 - # CONFIG_MIPS_DB1500 is not set 21 - # CONFIG_MIPS_DB1550 is not set 22 - # CONFIG_MIPS_DB1200 is not set 23 - # CONFIG_MIPS_MIRAGE is not set 24 - # CONFIG_BASLER_EXCITE is not set 25 - # CONFIG_MIPS_COBALT is not set 26 - # CONFIG_MACH_DECSTATION is not set 27 - # CONFIG_MIPS_EV64120 is not set 28 - # CONFIG_MIPS_IVR is not set 29 - CONFIG_MIPS_ITE8172=y 30 - # CONFIG_MACH_JAZZ is not set 31 - # CONFIG_LASAT is not set 32 - # CONFIG_MIPS_ATLAS is not set 33 - # CONFIG_MIPS_MALTA is not set 34 - # CONFIG_MIPS_SEAD is not set 35 - # CONFIG_WR_PPMC is not set 36 - # CONFIG_MIPS_SIM is not set 37 - # CONFIG_MOMENCO_JAGUAR_ATX is not set 38 - # CONFIG_MOMENCO_OCELOT is not set 39 - # CONFIG_MOMENCO_OCELOT_3 is not set 40 - # CONFIG_MOMENCO_OCELOT_C is not set 41 - # CONFIG_MOMENCO_OCELOT_G is not set 42 - # CONFIG_MIPS_XXS1500 is not set 43 - # CONFIG_PNX8550_V2PCI is not set 44 - # CONFIG_PNX8550_JBS is not set 45 - # CONFIG_DDB5477 is not set 46 - # CONFIG_MACH_VR41XX is not set 47 - # CONFIG_PMC_YOSEMITE is not set 48 - # CONFIG_QEMU is not set 49 - # CONFIG_MARKEINS is not set 50 - # CONFIG_SGI_IP22 is not set 51 - # CONFIG_SGI_IP27 is not set 52 - # CONFIG_SGI_IP32 is not set 53 - # CONFIG_SIBYTE_BIGSUR is not set 54 - # CONFIG_SIBYTE_SWARM is not set 55 - # CONFIG_SIBYTE_SENTOSA is not set 56 - # CONFIG_SIBYTE_RHONE is not set 57 - # CONFIG_SIBYTE_CARMEL is not set 58 - # CONFIG_SIBYTE_PTSWARM is not set 59 - # CONFIG_SIBYTE_LITTLESUR is not set 60 - # CONFIG_SIBYTE_CRHINE is not set 61 - # CONFIG_SIBYTE_CRHONE is not set 62 - # CONFIG_SNI_RM200_PCI is not set 63 - # CONFIG_TOSHIBA_JMR3927 is not set 64 - # CONFIG_TOSHIBA_RBTX4927 is not set 65 - # CONFIG_TOSHIBA_RBTX4938 is not set 66 - # CONFIG_IT8172_REVC is not set 67 - CONFIG_RWSEM_GENERIC_SPINLOCK=y 68 - CONFIG_GENERIC_FIND_NEXT_BIT=y 69 - CONFIG_GENERIC_HWEIGHT=y 70 - CONFIG_GENERIC_CALIBRATE_DELAY=y 71 - CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 72 - CONFIG_DMA_NONCOHERENT=y 73 - CONFIG_DMA_NEED_PCI_MAP_STATE=y 74 - # CONFIG_CPU_BIG_ENDIAN is not set 75 - CONFIG_CPU_LITTLE_ENDIAN=y 76 - CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 77 - CONFIG_ITE_BOARD_GEN=y 78 - CONFIG_IT8172_CIR=y 79 - CONFIG_IT8712=y 80 - CONFIG_MIPS_L1_CACHE_SHIFT=5 81 - 82 - # 83 - # CPU selection 84 - # 85 - # CONFIG_CPU_MIPS32_R1 is not set 86 - # CONFIG_CPU_MIPS32_R2 is not set 87 - # CONFIG_CPU_MIPS64_R1 is not set 88 - # CONFIG_CPU_MIPS64_R2 is not set 89 - # CONFIG_CPU_R3000 is not set 90 - # CONFIG_CPU_TX39XX is not set 91 - # CONFIG_CPU_VR41XX is not set 92 - # CONFIG_CPU_R4300 is not set 93 - # CONFIG_CPU_R4X00 is not set 94 - # CONFIG_CPU_TX49XX is not set 95 - # CONFIG_CPU_R5000 is not set 96 - # CONFIG_CPU_R5432 is not set 97 - # CONFIG_CPU_R6000 is not set 98 - CONFIG_CPU_NEVADA=y 99 - # CONFIG_CPU_R8000 is not set 100 - # CONFIG_CPU_R10000 is not set 101 - # CONFIG_CPU_RM7000 is not set 102 - # CONFIG_CPU_RM9000 is not set 103 - # CONFIG_CPU_SB1 is not set 104 - CONFIG_SYS_HAS_CPU_R5432=y 105 - CONFIG_SYS_HAS_CPU_NEVADA=y 106 - CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 107 - CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y 108 - CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 109 - CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y 110 - 111 - # 112 - # Kernel type 113 - # 114 - CONFIG_32BIT=y 115 - # CONFIG_64BIT is not set 116 - CONFIG_PAGE_SIZE_4KB=y 117 - # CONFIG_PAGE_SIZE_8KB is not set 118 - # CONFIG_PAGE_SIZE_16KB is not set 119 - # CONFIG_PAGE_SIZE_64KB is not set 120 - CONFIG_MIPS_MT_DISABLED=y 121 - # CONFIG_MIPS_MT_SMTC is not set 122 - # CONFIG_MIPS_MT_SMP is not set 123 - # CONFIG_MIPS_VPE_LOADER is not set 124 - CONFIG_CPU_HAS_LLSC=y 125 - CONFIG_CPU_HAS_SYNC=y 126 - CONFIG_GENERIC_HARDIRQS=y 127 - CONFIG_GENERIC_IRQ_PROBE=y 128 - CONFIG_ARCH_FLATMEM_ENABLE=y 129 - CONFIG_SELECT_MEMORY_MODEL=y 130 - CONFIG_FLATMEM_MANUAL=y 131 - # CONFIG_DISCONTIGMEM_MANUAL is not set 132 - # CONFIG_SPARSEMEM_MANUAL is not set 133 - CONFIG_FLATMEM=y 134 - CONFIG_FLAT_NODE_MEM_MAP=y 135 - # CONFIG_SPARSEMEM_STATIC is not set 136 - CONFIG_SPLIT_PTLOCK_CPUS=4 137 - # CONFIG_RESOURCES_64BIT is not set 138 - # CONFIG_HZ_48 is not set 139 - # CONFIG_HZ_100 is not set 140 - # CONFIG_HZ_128 is not set 141 - # CONFIG_HZ_250 is not set 142 - # CONFIG_HZ_256 is not set 143 - CONFIG_HZ_1000=y 144 - # CONFIG_HZ_1024 is not set 145 - CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 146 - CONFIG_HZ=1000 147 - CONFIG_PREEMPT_NONE=y 148 - # CONFIG_PREEMPT_VOLUNTARY is not set 149 - # CONFIG_PREEMPT is not set 150 - CONFIG_LOCKDEP_SUPPORT=y 151 - CONFIG_STACKTRACE_SUPPORT=y 152 - CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 153 - 154 - # 155 - # Code maturity level options 156 - # 157 - CONFIG_EXPERIMENTAL=y 158 - CONFIG_BROKEN_ON_SMP=y 159 - CONFIG_INIT_ENV_ARG_LIMIT=32 160 - 161 - # 162 - # General setup 163 - # 164 - CONFIG_LOCALVERSION="" 165 - CONFIG_LOCALVERSION_AUTO=y 166 - CONFIG_SWAP=y 167 - CONFIG_SYSVIPC=y 168 - # CONFIG_POSIX_MQUEUE is not set 169 - CONFIG_BSD_PROCESS_ACCT=y 170 - # CONFIG_BSD_PROCESS_ACCT_V3 is not set 171 - CONFIG_SYSCTL=y 172 - # CONFIG_AUDIT is not set 173 - # CONFIG_IKCONFIG is not set 174 - CONFIG_RELAY=y 175 - CONFIG_INITRAMFS_SOURCE="" 176 - # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 177 - CONFIG_EMBEDDED=y 178 - CONFIG_KALLSYMS=y 179 - # CONFIG_KALLSYMS_EXTRA_PASS is not set 180 - # CONFIG_HOTPLUG is not set 181 - CONFIG_PRINTK=y 182 - CONFIG_BUG=y 183 - CONFIG_ELF_CORE=y 184 - CONFIG_BASE_FULL=y 185 - CONFIG_RT_MUTEXES=y 186 - CONFIG_FUTEX=y 187 - CONFIG_EPOLL=y 188 - CONFIG_SHMEM=y 189 - CONFIG_SLAB=y 190 - CONFIG_VM_EVENT_COUNTERS=y 191 - # CONFIG_TINY_SHMEM is not set 192 - CONFIG_BASE_SMALL=0 193 - # CONFIG_SLOB is not set 194 - 195 - # 196 - # Loadable module support 197 - # 198 - CONFIG_MODULES=y 199 - CONFIG_MODULE_UNLOAD=y 200 - # CONFIG_MODULE_FORCE_UNLOAD is not set 201 - CONFIG_MODVERSIONS=y 202 - CONFIG_MODULE_SRCVERSION_ALL=y 203 - CONFIG_KMOD=y 204 - 205 - # 206 - # Block layer 207 - # 208 - # CONFIG_LBD is not set 209 - # CONFIG_BLK_DEV_IO_TRACE is not set 210 - # CONFIG_LSF is not set 211 - 212 - # 213 - # IO Schedulers 214 - # 215 - CONFIG_IOSCHED_NOOP=y 216 - CONFIG_IOSCHED_AS=y 217 - CONFIG_IOSCHED_DEADLINE=y 218 - CONFIG_IOSCHED_CFQ=y 219 - CONFIG_DEFAULT_AS=y 220 - # CONFIG_DEFAULT_DEADLINE is not set 221 - # CONFIG_DEFAULT_CFQ is not set 222 - # CONFIG_DEFAULT_NOOP is not set 223 - CONFIG_DEFAULT_IOSCHED="anticipatory" 224 - 225 - # 226 - # Bus options (PCI, PCMCIA, EISA, ISA, TC) 227 - # 228 - CONFIG_HW_HAS_PCI=y 229 - # CONFIG_PCI is not set 230 - CONFIG_MMU=y 231 - 232 - # 233 - # PCCARD (PCMCIA/CardBus) support 234 - # 235 - # CONFIG_PCCARD is not set 236 - 237 - # 238 - # PCI Hotplug Support 239 - # 240 - 241 - # 242 - # Executable file formats 243 - # 244 - CONFIG_BINFMT_ELF=y 245 - # CONFIG_BINFMT_MISC is not set 246 - CONFIG_TRAD_SIGNALS=y 247 - 248 - # 249 - # Networking 250 - # 251 - CONFIG_NET=y 252 - 253 - # 254 - # Networking options 255 - # 256 - # CONFIG_NETDEBUG is not set 257 - CONFIG_PACKET=y 258 - CONFIG_PACKET_MMAP=y 259 - CONFIG_UNIX=y 260 - CONFIG_XFRM=y 261 - CONFIG_XFRM_USER=m 262 - CONFIG_NET_KEY=y 263 - CONFIG_INET=y 264 - # CONFIG_IP_MULTICAST is not set 265 - # CONFIG_IP_ADVANCED_ROUTER is not set 266 - CONFIG_IP_FIB_HASH=y 267 - CONFIG_IP_PNP=y 268 - # CONFIG_IP_PNP_DHCP is not set 269 - CONFIG_IP_PNP_BOOTP=y 270 - # CONFIG_IP_PNP_RARP is not set 271 - # CONFIG_NET_IPIP is not set 272 - # CONFIG_NET_IPGRE is not set 273 - # CONFIG_ARPD is not set 274 - # CONFIG_SYN_COOKIES is not set 275 - # CONFIG_INET_AH is not set 276 - # CONFIG_INET_ESP is not set 277 - # CONFIG_INET_IPCOMP is not set 278 - # CONFIG_INET_XFRM_TUNNEL is not set 279 - # CONFIG_INET_TUNNEL is not set 280 - CONFIG_INET_XFRM_MODE_TRANSPORT=m 281 - CONFIG_INET_XFRM_MODE_TUNNEL=m 282 - CONFIG_INET_DIAG=y 283 - CONFIG_INET_TCP_DIAG=y 284 - # CONFIG_TCP_CONG_ADVANCED is not set 285 - CONFIG_TCP_CONG_BIC=y 286 - # CONFIG_IPV6 is not set 287 - # CONFIG_INET6_XFRM_TUNNEL is not set 288 - # CONFIG_INET6_TUNNEL is not set 289 - CONFIG_NETWORK_SECMARK=y 290 - # CONFIG_NETFILTER is not set 291 - 292 - # 293 - # DCCP Configuration (EXPERIMENTAL) 294 - # 295 - # CONFIG_IP_DCCP is not set 296 - 297 - # 298 - # SCTP Configuration (EXPERIMENTAL) 299 - # 300 - # CONFIG_IP_SCTP is not set 301 - 302 - # 303 - # TIPC Configuration (EXPERIMENTAL) 304 - # 305 - # CONFIG_TIPC is not set 306 - # CONFIG_ATM is not set 307 - # CONFIG_BRIDGE is not set 308 - # CONFIG_VLAN_8021Q is not set 309 - # CONFIG_DECNET is not set 310 - # CONFIG_LLC2 is not set 311 - # CONFIG_IPX is not set 312 - # CONFIG_ATALK is not set 313 - # CONFIG_X25 is not set 314 - # CONFIG_LAPB is not set 315 - # CONFIG_NET_DIVERT is not set 316 - # CONFIG_ECONET is not set 317 - # CONFIG_WAN_ROUTER is not set 318 - 319 - # 320 - # QoS and/or fair queueing 321 - # 322 - # CONFIG_NET_SCHED is not set 323 - 324 - # 325 - # Network testing 326 - # 327 - # CONFIG_NET_PKTGEN is not set 328 - # CONFIG_HAMRADIO is not set 329 - # CONFIG_IRDA is not set 330 - # CONFIG_BT is not set 331 - CONFIG_IEEE80211=m 332 - # CONFIG_IEEE80211_DEBUG is not set 333 - CONFIG_IEEE80211_CRYPT_WEP=m 334 - CONFIG_IEEE80211_CRYPT_CCMP=m 335 - CONFIG_IEEE80211_SOFTMAC=m 336 - # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 337 - CONFIG_WIRELESS_EXT=y 338 - 339 - # 340 - # Device Drivers 341 - # 342 - 343 - # 344 - # Generic Driver Options 345 - # 346 - CONFIG_STANDALONE=y 347 - CONFIG_PREVENT_FIRMWARE_BUILD=y 348 - # CONFIG_FW_LOADER is not set 349 - # CONFIG_SYS_HYPERVISOR is not set 350 - 351 - # 352 - # Connector - unified userspace <-> kernelspace linker 353 - # 354 - CONFIG_CONNECTOR=m 355 - 356 - # 357 - # Memory Technology Devices (MTD) 358 - # 359 - CONFIG_MTD=y 360 - # CONFIG_MTD_DEBUG is not set 361 - # CONFIG_MTD_CONCAT is not set 362 - # CONFIG_MTD_PARTITIONS is not set 363 - 364 - # 365 - # User Modules And Translation Layers 366 - # 367 - CONFIG_MTD_CHAR=y 368 - # CONFIG_MTD_BLOCK is not set 369 - # CONFIG_MTD_BLOCK_RO is not set 370 - # CONFIG_FTL is not set 371 - # CONFIG_NFTL is not set 372 - # CONFIG_INFTL is not set 373 - # CONFIG_RFD_FTL is not set 374 - 375 - # 376 - # RAM/ROM/Flash chip drivers 377 - # 378 - CONFIG_MTD_CFI=y 379 - # CONFIG_MTD_JEDECPROBE is not set 380 - CONFIG_MTD_GEN_PROBE=y 381 - # CONFIG_MTD_CFI_ADV_OPTIONS is not set 382 - CONFIG_MTD_MAP_BANK_WIDTH_1=y 383 - CONFIG_MTD_MAP_BANK_WIDTH_2=y 384 - CONFIG_MTD_MAP_BANK_WIDTH_4=y 385 - # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set 386 - # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set 387 - # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set 388 - CONFIG_MTD_CFI_I1=y 389 - CONFIG_MTD_CFI_I2=y 390 - # CONFIG_MTD_CFI_I4 is not set 391 - # CONFIG_MTD_CFI_I8 is not set 392 - CONFIG_MTD_CFI_INTELEXT=y 393 - # CONFIG_MTD_CFI_AMDSTD is not set 394 - # CONFIG_MTD_CFI_STAA is not set 395 - CONFIG_MTD_CFI_UTIL=y 396 - # CONFIG_MTD_RAM is not set 397 - # CONFIG_MTD_ROM is not set 398 - # CONFIG_MTD_ABSENT is not set 399 - # CONFIG_MTD_OBSOLETE_CHIPS is not set 400 - 401 - # 402 - # Mapping drivers for chip access 403 - # 404 - # CONFIG_MTD_COMPLEX_MAPPINGS is not set 405 - CONFIG_MTD_PHYSMAP=y 406 - CONFIG_MTD_PHYSMAP_START=0x8000000 407 - CONFIG_MTD_PHYSMAP_LEN=0x2000000 408 - CONFIG_MTD_PHYSMAP_BANKWIDTH=2 409 - # CONFIG_MTD_PLATRAM is not set 410 - 411 - # 412 - # Self-contained MTD device drivers 413 - # 414 - # CONFIG_MTD_SLRAM is not set 415 - # CONFIG_MTD_PHRAM is not set 416 - # CONFIG_MTD_MTDRAM is not set 417 - # CONFIG_MTD_BLOCK2MTD is not set 418 - 419 - # 420 - # Disk-On-Chip Device Drivers 421 - # 422 - # CONFIG_MTD_DOC2000 is not set 423 - # CONFIG_MTD_DOC2001 is not set 424 - # CONFIG_MTD_DOC2001PLUS is not set 425 - 426 - # 427 - # NAND Flash Device Drivers 428 - # 429 - # CONFIG_MTD_NAND is not set 430 - 431 - # 432 - # OneNAND Flash Device Drivers 433 - # 434 - # CONFIG_MTD_ONENAND is not set 435 - 436 - # 437 - # Parallel port support 438 - # 439 - # CONFIG_PARPORT is not set 440 - 441 - # 442 - # Plug and Play support 443 - # 444 - 445 - # 446 - # Block devices 447 - # 448 - # CONFIG_BLK_DEV_COW_COMMON is not set 449 - CONFIG_BLK_DEV_LOOP=y 450 - # CONFIG_BLK_DEV_CRYPTOLOOP is not set 451 - # CONFIG_BLK_DEV_NBD is not set 452 - # CONFIG_BLK_DEV_RAM is not set 453 - # CONFIG_BLK_DEV_INITRD is not set 454 - CONFIG_CDROM_PKTCDVD=m 455 - CONFIG_CDROM_PKTCDVD_BUFFERS=8 456 - # CONFIG_CDROM_PKTCDVD_WCACHE is not set 457 - CONFIG_ATA_OVER_ETH=m 458 - 459 - # 460 - # ATA/ATAPI/MFM/RLL support 461 - # 462 - CONFIG_IDE=y 463 - CONFIG_BLK_DEV_IDE=y 464 - 465 - # 466 - # Please see Documentation/ide.txt for help/info on IDE drives 467 - # 468 - # CONFIG_BLK_DEV_IDE_SATA is not set 469 - CONFIG_BLK_DEV_IDEDISK=y 470 - # CONFIG_IDEDISK_MULTI_MODE is not set 471 - # CONFIG_BLK_DEV_IDECD is not set 472 - # CONFIG_BLK_DEV_IDETAPE is not set 473 - # CONFIG_BLK_DEV_IDEFLOPPY is not set 474 - # CONFIG_IDE_TASK_IOCTL is not set 475 - 476 - # 477 - # IDE chipset support/bugfixes 478 - # 479 - CONFIG_IDE_GENERIC=y 480 - # CONFIG_IDE_ARM is not set 481 - # CONFIG_BLK_DEV_IDEDMA is not set 482 - # CONFIG_IDEDMA_AUTO is not set 483 - # CONFIG_BLK_DEV_HD is not set 484 - 485 - # 486 - # SCSI device support 487 - # 488 - CONFIG_RAID_ATTRS=m 489 - # CONFIG_SCSI is not set 490 - 491 - # 492 - # Multi-device support (RAID and LVM) 493 - # 494 - # CONFIG_MD is not set 495 - 496 - # 497 - # Fusion MPT device support 498 - # 499 - # CONFIG_FUSION is not set 500 - 501 - # 502 - # IEEE 1394 (FireWire) support 503 - # 504 - 505 - # 506 - # I2O device support 507 - # 508 - 509 - # 510 - # Network device support 511 - # 512 - CONFIG_NETDEVICES=y 513 - # CONFIG_DUMMY is not set 514 - # CONFIG_BONDING is not set 515 - # CONFIG_EQUALIZER is not set 516 - # CONFIG_TUN is not set 517 - 518 - # 519 - # PHY device support 520 - # 521 - CONFIG_PHYLIB=m 522 - 523 - # 524 - # MII PHY device drivers 525 - # 526 - CONFIG_MARVELL_PHY=m 527 - CONFIG_DAVICOM_PHY=m 528 - CONFIG_QSEMI_PHY=m 529 - CONFIG_LXT_PHY=m 530 - CONFIG_CICADA_PHY=m 531 - CONFIG_VITESSE_PHY=m 532 - CONFIG_SMSC_PHY=m 533 - 534 - # 535 - # Ethernet (10 or 100Mbit) 536 - # 537 - CONFIG_NET_ETHERNET=y 538 - # CONFIG_MII is not set 539 - # CONFIG_DM9000 is not set 540 - 541 - # 542 - # Ethernet (1000 Mbit) 543 - # 544 - 545 - # 546 - # Ethernet (10000 Mbit) 547 - # 548 - 549 - # 550 - # Token Ring devices 551 - # 552 - 553 - # 554 - # Wireless LAN (non-hamradio) 555 - # 556 - # CONFIG_NET_RADIO is not set 557 - 558 - # 559 - # Wan interfaces 560 - # 561 - # CONFIG_WAN is not set 562 - # CONFIG_PPP is not set 563 - # CONFIG_SLIP is not set 564 - # CONFIG_SHAPER is not set 565 - # CONFIG_NETCONSOLE is not set 566 - # CONFIG_NETPOLL is not set 567 - # CONFIG_NET_POLL_CONTROLLER is not set 568 - 569 - # 570 - # ISDN subsystem 571 - # 572 - # CONFIG_ISDN is not set 573 - 574 - # 575 - # Telephony Support 576 - # 577 - # CONFIG_PHONE is not set 578 - 579 - # 580 - # Input device support 581 - # 582 - CONFIG_INPUT=y 583 - 584 - # 585 - # Userland interfaces 586 - # 587 - CONFIG_INPUT_MOUSEDEV=y 588 - CONFIG_INPUT_MOUSEDEV_PSAUX=y 589 - CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 590 - CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 591 - # CONFIG_INPUT_JOYDEV is not set 592 - # CONFIG_INPUT_TSDEV is not set 593 - # CONFIG_INPUT_EVDEV is not set 594 - # CONFIG_INPUT_EVBUG is not set 595 - 596 - # 597 - # Input Device Drivers 598 - # 599 - # CONFIG_INPUT_KEYBOARD is not set 600 - # CONFIG_INPUT_MOUSE is not set 601 - # CONFIG_INPUT_JOYSTICK is not set 602 - # CONFIG_INPUT_TOUCHSCREEN is not set 603 - # CONFIG_INPUT_MISC is not set 604 - 605 - # 606 - # Hardware I/O ports 607 - # 608 - CONFIG_SERIO=y 609 - # CONFIG_SERIO_I8042 is not set 610 - CONFIG_SERIO_SERPORT=y 611 - # CONFIG_SERIO_LIBPS2 is not set 612 - CONFIG_SERIO_RAW=m 613 - # CONFIG_GAMEPORT is not set 614 - 615 - # 616 - # Character devices 617 - # 618 - CONFIG_VT=y 619 - CONFIG_VT_CONSOLE=y 620 - CONFIG_HW_CONSOLE=y 621 - CONFIG_VT_HW_CONSOLE_BINDING=y 622 - # CONFIG_SERIAL_NONSTANDARD is not set 623 - # CONFIG_QTRONIX_KEYBOARD is not set 624 - # CONFIG_IT8172_SCR0 is not set 625 - # CONFIG_IT8172_SCR1 is not set 626 - # CONFIG_ITE_GPIO is not set 627 - 628 - # 629 - # Serial drivers 630 - # 631 - CONFIG_SERIAL_8250=y 632 - CONFIG_SERIAL_8250_CONSOLE=y 633 - CONFIG_SERIAL_8250_NR_UARTS=4 634 - CONFIG_SERIAL_8250_RUNTIME_UARTS=4 635 - # CONFIG_SERIAL_8250_EXTENDED is not set 636 - 637 - # 638 - # Non-8250 serial port support 639 - # 640 - CONFIG_SERIAL_CORE=y 641 - CONFIG_SERIAL_CORE_CONSOLE=y 642 - CONFIG_UNIX98_PTYS=y 643 - CONFIG_LEGACY_PTYS=y 644 - CONFIG_LEGACY_PTY_COUNT=256 645 - 646 - # 647 - # IPMI 648 - # 649 - # CONFIG_IPMI_HANDLER is not set 650 - 651 - # 652 - # Watchdog Cards 653 - # 654 - # CONFIG_WATCHDOG is not set 655 - # CONFIG_HW_RANDOM is not set 656 - # CONFIG_RTC is not set 657 - # CONFIG_GEN_RTC is not set 658 - # CONFIG_DTLK is not set 659 - # CONFIG_R3964 is not set 660 - 661 - # 662 - # Ftape, the floppy tape device driver 663 - # 664 - # CONFIG_RAW_DRIVER is not set 665 - 666 - # 667 - # TPM devices 668 - # 669 - # CONFIG_TCG_TPM is not set 670 - # CONFIG_TELCLOCK is not set 671 - 672 - # 673 - # I2C support 674 - # 675 - # CONFIG_I2C is not set 676 - 677 - # 678 - # SPI support 679 - # 680 - # CONFIG_SPI is not set 681 - # CONFIG_SPI_MASTER is not set 682 - 683 - # 684 - # Dallas's 1-wire bus 685 - # 686 - # CONFIG_W1 is not set 687 - 688 - # 689 - # Hardware Monitoring support 690 - # 691 - # CONFIG_HWMON is not set 692 - # CONFIG_HWMON_VID is not set 693 - 694 - # 695 - # Misc devices 696 - # 697 - 698 - # 699 - # Multimedia devices 700 - # 701 - # CONFIG_VIDEO_DEV is not set 702 - CONFIG_VIDEO_V4L2=y 703 - 704 - # 705 - # Digital Video Broadcasting Devices 706 - # 707 - # CONFIG_DVB is not set 708 - 709 - # 710 - # Graphics support 711 - # 712 - # CONFIG_FIRMWARE_EDID is not set 713 - # CONFIG_FB is not set 714 - 715 - # 716 - # Console display driver support 717 - # 718 - # CONFIG_VGA_CONSOLE is not set 719 - CONFIG_DUMMY_CONSOLE=y 720 - 721 - # 722 - # Sound 723 - # 724 - CONFIG_SOUND=y 725 - 726 - # 727 - # Advanced Linux Sound Architecture 728 - # 729 - # CONFIG_SND is not set 730 - 731 - # 732 - # Open Sound System 733 - # 734 - CONFIG_SOUND_PRIME=y 735 - CONFIG_SOUND_IT8172=y 736 - # CONFIG_SOUND_MSNDCLAS is not set 737 - # CONFIG_SOUND_MSNDPIN is not set 738 - 739 - # 740 - # USB support 741 - # 742 - # CONFIG_USB_ARCH_HAS_HCD is not set 743 - # CONFIG_USB_ARCH_HAS_OHCI is not set 744 - # CONFIG_USB_ARCH_HAS_EHCI is not set 745 - 746 - # 747 - # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 748 - # 749 - 750 - # 751 - # USB Gadget Support 752 - # 753 - # CONFIG_USB_GADGET is not set 754 - 755 - # 756 - # MMC/SD Card support 757 - # 758 - # CONFIG_MMC is not set 759 - 760 - # 761 - # LED devices 762 - # 763 - # CONFIG_NEW_LEDS is not set 764 - 765 - # 766 - # LED drivers 767 - # 768 - 769 - # 770 - # LED Triggers 771 - # 772 - 773 - # 774 - # InfiniBand support 775 - # 776 - 777 - # 778 - # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 779 - # 780 - 781 - # 782 - # Real Time Clock 783 - # 784 - # CONFIG_RTC_CLASS is not set 785 - 786 - # 787 - # DMA Engine support 788 - # 789 - # CONFIG_DMA_ENGINE is not set 790 - 791 - # 792 - # DMA Clients 793 - # 794 - 795 - # 796 - # DMA Devices 797 - # 798 - 799 - # 800 - # File systems 801 - # 802 - CONFIG_EXT2_FS=y 803 - # CONFIG_EXT2_FS_XATTR is not set 804 - # CONFIG_EXT2_FS_XIP is not set 805 - # CONFIG_EXT3_FS is not set 806 - # CONFIG_REISERFS_FS is not set 807 - # CONFIG_JFS_FS is not set 808 - # CONFIG_FS_POSIX_ACL is not set 809 - # CONFIG_XFS_FS is not set 810 - # CONFIG_OCFS2_FS is not set 811 - # CONFIG_MINIX_FS is not set 812 - # CONFIG_ROMFS_FS is not set 813 - CONFIG_INOTIFY=y 814 - CONFIG_INOTIFY_USER=y 815 - # CONFIG_QUOTA is not set 816 - CONFIG_DNOTIFY=y 817 - # CONFIG_AUTOFS_FS is not set 818 - # CONFIG_AUTOFS4_FS is not set 819 - CONFIG_FUSE_FS=m 820 - 821 - # 822 - # CD-ROM/DVD Filesystems 823 - # 824 - # CONFIG_ISO9660_FS is not set 825 - # CONFIG_UDF_FS is not set 826 - 827 - # 828 - # DOS/FAT/NT Filesystems 829 - # 830 - # CONFIG_MSDOS_FS is not set 831 - # CONFIG_VFAT_FS is not set 832 - # CONFIG_NTFS_FS is not set 833 - 834 - # 835 - # Pseudo filesystems 836 - # 837 - CONFIG_PROC_FS=y 838 - CONFIG_PROC_KCORE=y 839 - CONFIG_SYSFS=y 840 - # CONFIG_TMPFS is not set 841 - # CONFIG_HUGETLB_PAGE is not set 842 - CONFIG_RAMFS=y 843 - # CONFIG_CONFIGFS_FS is not set 844 - 845 - # 846 - # Miscellaneous filesystems 847 - # 848 - # CONFIG_ADFS_FS is not set 849 - # CONFIG_AFFS_FS is not set 850 - # CONFIG_HFS_FS is not set 851 - # CONFIG_HFSPLUS_FS is not set 852 - # CONFIG_BEFS_FS is not set 853 - # CONFIG_BFS_FS is not set 854 - # CONFIG_EFS_FS is not set 855 - # CONFIG_JFFS_FS is not set 856 - # CONFIG_JFFS2_FS is not set 857 - # CONFIG_CRAMFS is not set 858 - # CONFIG_VXFS_FS is not set 859 - # CONFIG_HPFS_FS is not set 860 - # CONFIG_QNX4FS_FS is not set 861 - # CONFIG_SYSV_FS is not set 862 - # CONFIG_UFS_FS is not set 863 - 864 - # 865 - # Network File Systems 866 - # 867 - CONFIG_NFS_FS=y 868 - # CONFIG_NFS_V3 is not set 869 - # CONFIG_NFS_V4 is not set 870 - # CONFIG_NFS_DIRECTIO is not set 871 - # CONFIG_NFSD is not set 872 - CONFIG_ROOT_NFS=y 873 - CONFIG_LOCKD=y 874 - CONFIG_NFS_COMMON=y 875 - CONFIG_SUNRPC=y 876 - # CONFIG_RPCSEC_GSS_KRB5 is not set 877 - # CONFIG_RPCSEC_GSS_SPKM3 is not set 878 - # CONFIG_SMB_FS is not set 879 - # CONFIG_CIFS is not set 880 - # CONFIG_CIFS_DEBUG2 is not set 881 - # CONFIG_NCP_FS is not set 882 - # CONFIG_CODA_FS is not set 883 - # CONFIG_AFS_FS is not set 884 - # CONFIG_9P_FS is not set 885 - 886 - # 887 - # Partition Types 888 - # 889 - # CONFIG_PARTITION_ADVANCED is not set 890 - CONFIG_MSDOS_PARTITION=y 891 - 892 - # 893 - # Native Language Support 894 - # 895 - # CONFIG_NLS is not set 896 - 897 - # 898 - # Profiling support 899 - # 900 - # CONFIG_PROFILING is not set 901 - 902 - # 903 - # Kernel hacking 904 - # 905 - CONFIG_TRACE_IRQFLAGS_SUPPORT=y 906 - # CONFIG_PRINTK_TIME is not set 907 - # CONFIG_MAGIC_SYSRQ is not set 908 - # CONFIG_UNUSED_SYMBOLS is not set 909 - # CONFIG_DEBUG_KERNEL is not set 910 - CONFIG_LOG_BUF_SHIFT=14 911 - # CONFIG_DEBUG_FS is not set 912 - CONFIG_CROSSCOMPILE=y 913 - CONFIG_CMDLINE="" 914 - 915 - # 916 - # Security options 917 - # 918 - CONFIG_KEYS=y 919 - CONFIG_KEYS_DEBUG_PROC_KEYS=y 920 - # CONFIG_SECURITY is not set 921 - 922 - # 923 - # Cryptographic options 924 - # 925 - CONFIG_CRYPTO=y 926 - CONFIG_CRYPTO_HMAC=y 927 - CONFIG_CRYPTO_NULL=m 928 - CONFIG_CRYPTO_MD4=m 929 - CONFIG_CRYPTO_MD5=m 930 - CONFIG_CRYPTO_SHA1=m 931 - CONFIG_CRYPTO_SHA256=m 932 - CONFIG_CRYPTO_SHA512=m 933 - CONFIG_CRYPTO_WP512=m 934 - CONFIG_CRYPTO_TGR192=m 935 - CONFIG_CRYPTO_DES=m 936 - CONFIG_CRYPTO_BLOWFISH=m 937 - CONFIG_CRYPTO_TWOFISH=m 938 - CONFIG_CRYPTO_SERPENT=m 939 - CONFIG_CRYPTO_AES=m 940 - CONFIG_CRYPTO_CAST5=m 941 - CONFIG_CRYPTO_CAST6=m 942 - CONFIG_CRYPTO_TEA=m 943 - CONFIG_CRYPTO_ARC4=m 944 - CONFIG_CRYPTO_KHAZAD=m 945 - CONFIG_CRYPTO_ANUBIS=m 946 - CONFIG_CRYPTO_DEFLATE=m 947 - CONFIG_CRYPTO_MICHAEL_MIC=m 948 - CONFIG_CRYPTO_CRC32C=m 949 - # CONFIG_CRYPTO_TEST is not set 950 - 951 - # 952 - # Hardware crypto devices 953 - # 954 - 955 - # 956 - # Library routines 957 - # 958 - # CONFIG_CRC_CCITT is not set 959 - CONFIG_CRC16=m 960 - CONFIG_CRC32=m 961 - CONFIG_LIBCRC32C=m 962 - CONFIG_ZLIB_INFLATE=m 963 - CONFIG_ZLIB_DEFLATE=m 964 - CONFIG_PLIST=y
···
-920
arch/mips/configs/ivr_defconfig
··· 1 - # 2 - # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.18-rc1 4 - # Thu Jul 6 10:04:12 2006 5 - # 6 - CONFIG_MIPS=y 7 - 8 - # 9 - # Machine selection 10 - # 11 - # CONFIG_MIPS_MTX1 is not set 12 - # CONFIG_MIPS_BOSPORUS is not set 13 - # CONFIG_MIPS_PB1000 is not set 14 - # CONFIG_MIPS_PB1100 is not set 15 - # CONFIG_MIPS_PB1500 is not set 16 - # CONFIG_MIPS_PB1550 is not set 17 - # CONFIG_MIPS_PB1200 is not set 18 - # CONFIG_MIPS_DB1000 is not set 19 - # CONFIG_MIPS_DB1100 is not set 20 - # CONFIG_MIPS_DB1500 is not set 21 - # CONFIG_MIPS_DB1550 is not set 22 - # CONFIG_MIPS_DB1200 is not set 23 - # CONFIG_MIPS_MIRAGE is not set 24 - # CONFIG_BASLER_EXCITE is not set 25 - # CONFIG_MIPS_COBALT is not set 26 - # CONFIG_MACH_DECSTATION is not set 27 - # CONFIG_MIPS_EV64120 is not set 28 - CONFIG_MIPS_IVR=y 29 - # CONFIG_MIPS_ITE8172 is not set 30 - # CONFIG_MACH_JAZZ is not set 31 - # CONFIG_LASAT is not set 32 - # CONFIG_MIPS_ATLAS is not set 33 - # CONFIG_MIPS_MALTA is not set 34 - # CONFIG_MIPS_SEAD is not set 35 - # CONFIG_WR_PPMC is not set 36 - # CONFIG_MIPS_SIM is not set 37 - # CONFIG_MOMENCO_JAGUAR_ATX is not set 38 - # CONFIG_MOMENCO_OCELOT is not set 39 - # CONFIG_MOMENCO_OCELOT_3 is not set 40 - # CONFIG_MOMENCO_OCELOT_C is not set 41 - # CONFIG_MOMENCO_OCELOT_G is not set 42 - # CONFIG_MIPS_XXS1500 is not set 43 - # CONFIG_PNX8550_V2PCI is not set 44 - # CONFIG_PNX8550_JBS is not set 45 - # CONFIG_DDB5477 is not set 46 - # CONFIG_MACH_VR41XX is not set 47 - # CONFIG_PMC_YOSEMITE is not set 48 - # CONFIG_QEMU is not set 49 - # CONFIG_MARKEINS is not set 50 - # CONFIG_SGI_IP22 is not set 51 - # CONFIG_SGI_IP27 is not set 52 - # CONFIG_SGI_IP32 is not set 53 - # CONFIG_SIBYTE_BIGSUR is not set 54 - # CONFIG_SIBYTE_SWARM is not set 55 - # CONFIG_SIBYTE_SENTOSA is not set 56 - # CONFIG_SIBYTE_RHONE is not set 57 - # CONFIG_SIBYTE_CARMEL is not set 58 - # CONFIG_SIBYTE_PTSWARM is not set 59 - # CONFIG_SIBYTE_LITTLESUR is not set 60 - # CONFIG_SIBYTE_CRHINE is not set 61 - # CONFIG_SIBYTE_CRHONE is not set 62 - # CONFIG_SNI_RM200_PCI is not set 63 - # CONFIG_TOSHIBA_JMR3927 is not set 64 - # CONFIG_TOSHIBA_RBTX4927 is not set 65 - # CONFIG_TOSHIBA_RBTX4938 is not set 66 - CONFIG_RWSEM_GENERIC_SPINLOCK=y 67 - CONFIG_GENERIC_FIND_NEXT_BIT=y 68 - CONFIG_GENERIC_HWEIGHT=y 69 - CONFIG_GENERIC_CALIBRATE_DELAY=y 70 - CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 71 - CONFIG_DMA_NONCOHERENT=y 72 - CONFIG_DMA_NEED_PCI_MAP_STATE=y 73 - # CONFIG_CPU_BIG_ENDIAN is not set 74 - CONFIG_CPU_LITTLE_ENDIAN=y 75 - CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 76 - CONFIG_ITE_BOARD_GEN=y 77 - CONFIG_IT8172_CIR=y 78 - CONFIG_MIPS_L1_CACHE_SHIFT=5 79 - 80 - # 81 - # CPU selection 82 - # 83 - # CONFIG_CPU_MIPS32_R1 is not set 84 - # CONFIG_CPU_MIPS32_R2 is not set 85 - # CONFIG_CPU_MIPS64_R1 is not set 86 - # CONFIG_CPU_MIPS64_R2 is not set 87 - # CONFIG_CPU_R3000 is not set 88 - # CONFIG_CPU_TX39XX is not set 89 - # CONFIG_CPU_VR41XX is not set 90 - # CONFIG_CPU_R4300 is not set 91 - # CONFIG_CPU_R4X00 is not set 92 - # CONFIG_CPU_TX49XX is not set 93 - # CONFIG_CPU_R5000 is not set 94 - # CONFIG_CPU_R5432 is not set 95 - # CONFIG_CPU_R6000 is not set 96 - CONFIG_CPU_NEVADA=y 97 - # CONFIG_CPU_R8000 is not set 98 - # CONFIG_CPU_R10000 is not set 99 - # CONFIG_CPU_RM7000 is not set 100 - # CONFIG_CPU_RM9000 is not set 101 - # CONFIG_CPU_SB1 is not set 102 - CONFIG_SYS_HAS_CPU_NEVADA=y 103 - CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 104 - CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y 105 - CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 106 - CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y 107 - 108 - # 109 - # Kernel type 110 - # 111 - CONFIG_32BIT=y 112 - # CONFIG_64BIT is not set 113 - CONFIG_PAGE_SIZE_4KB=y 114 - # CONFIG_PAGE_SIZE_8KB is not set 115 - # CONFIG_PAGE_SIZE_16KB is not set 116 - # CONFIG_PAGE_SIZE_64KB is not set 117 - CONFIG_MIPS_MT_DISABLED=y 118 - # CONFIG_MIPS_MT_SMTC is not set 119 - # CONFIG_MIPS_MT_SMP is not set 120 - # CONFIG_MIPS_VPE_LOADER is not set 121 - CONFIG_CPU_HAS_LLSC=y 122 - CONFIG_CPU_HAS_SYNC=y 123 - CONFIG_GENERIC_HARDIRQS=y 124 - CONFIG_GENERIC_IRQ_PROBE=y 125 - CONFIG_ARCH_FLATMEM_ENABLE=y 126 - CONFIG_SELECT_MEMORY_MODEL=y 127 - CONFIG_FLATMEM_MANUAL=y 128 - # CONFIG_DISCONTIGMEM_MANUAL is not set 129 - # CONFIG_SPARSEMEM_MANUAL is not set 130 - CONFIG_FLATMEM=y 131 - CONFIG_FLAT_NODE_MEM_MAP=y 132 - # CONFIG_SPARSEMEM_STATIC is not set 133 - CONFIG_SPLIT_PTLOCK_CPUS=4 134 - # CONFIG_RESOURCES_64BIT is not set 135 - # CONFIG_HZ_48 is not set 136 - # CONFIG_HZ_100 is not set 137 - # CONFIG_HZ_128 is not set 138 - # CONFIG_HZ_250 is not set 139 - # CONFIG_HZ_256 is not set 140 - CONFIG_HZ_1000=y 141 - # CONFIG_HZ_1024 is not set 142 - CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 143 - CONFIG_HZ=1000 144 - CONFIG_PREEMPT_NONE=y 145 - # CONFIG_PREEMPT_VOLUNTARY is not set 146 - # CONFIG_PREEMPT is not set 147 - CONFIG_LOCKDEP_SUPPORT=y 148 - CONFIG_STACKTRACE_SUPPORT=y 149 - CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 150 - 151 - # 152 - # Code maturity level options 153 - # 154 - CONFIG_EXPERIMENTAL=y 155 - CONFIG_BROKEN_ON_SMP=y 156 - CONFIG_INIT_ENV_ARG_LIMIT=32 157 - 158 - # 159 - # General setup 160 - # 161 - CONFIG_LOCALVERSION="" 162 - CONFIG_LOCALVERSION_AUTO=y 163 - CONFIG_SWAP=y 164 - CONFIG_SYSVIPC=y 165 - # CONFIG_POSIX_MQUEUE is not set 166 - CONFIG_BSD_PROCESS_ACCT=y 167 - # CONFIG_BSD_PROCESS_ACCT_V3 is not set 168 - CONFIG_SYSCTL=y 169 - # CONFIG_AUDIT is not set 170 - # CONFIG_IKCONFIG is not set 171 - CONFIG_RELAY=y 172 - CONFIG_INITRAMFS_SOURCE="" 173 - # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 174 - CONFIG_EMBEDDED=y 175 - CONFIG_KALLSYMS=y 176 - # CONFIG_KALLSYMS_EXTRA_PASS is not set 177 - CONFIG_HOTPLUG=y 178 - CONFIG_PRINTK=y 179 - CONFIG_BUG=y 180 - CONFIG_ELF_CORE=y 181 - CONFIG_BASE_FULL=y 182 - CONFIG_RT_MUTEXES=y 183 - CONFIG_FUTEX=y 184 - CONFIG_EPOLL=y 185 - CONFIG_SHMEM=y 186 - CONFIG_SLAB=y 187 - CONFIG_VM_EVENT_COUNTERS=y 188 - # CONFIG_TINY_SHMEM is not set 189 - CONFIG_BASE_SMALL=0 190 - # CONFIG_SLOB is not set 191 - 192 - # 193 - # Loadable module support 194 - # 195 - CONFIG_MODULES=y 196 - CONFIG_MODULE_UNLOAD=y 197 - # CONFIG_MODULE_FORCE_UNLOAD is not set 198 - CONFIG_MODVERSIONS=y 199 - CONFIG_MODULE_SRCVERSION_ALL=y 200 - CONFIG_KMOD=y 201 - 202 - # 203 - # Block layer 204 - # 205 - # CONFIG_LBD is not set 206 - # CONFIG_BLK_DEV_IO_TRACE is not set 207 - # CONFIG_LSF is not set 208 - 209 - # 210 - # IO Schedulers 211 - # 212 - CONFIG_IOSCHED_NOOP=y 213 - CONFIG_IOSCHED_AS=y 214 - CONFIG_IOSCHED_DEADLINE=y 215 - CONFIG_IOSCHED_CFQ=y 216 - CONFIG_DEFAULT_AS=y 217 - # CONFIG_DEFAULT_DEADLINE is not set 218 - # CONFIG_DEFAULT_CFQ is not set 219 - # CONFIG_DEFAULT_NOOP is not set 220 - CONFIG_DEFAULT_IOSCHED="anticipatory" 221 - 222 - # 223 - # Bus options (PCI, PCMCIA, EISA, ISA, TC) 224 - # 225 - CONFIG_HW_HAS_PCI=y 226 - CONFIG_PCI=y 227 - CONFIG_MMU=y 228 - 229 - # 230 - # PCCARD (PCMCIA/CardBus) support 231 - # 232 - # CONFIG_PCCARD is not set 233 - 234 - # 235 - # PCI Hotplug Support 236 - # 237 - # CONFIG_HOTPLUG_PCI is not set 238 - 239 - # 240 - # Executable file formats 241 - # 242 - CONFIG_BINFMT_ELF=y 243 - # CONFIG_BINFMT_MISC is not set 244 - CONFIG_TRAD_SIGNALS=y 245 - 246 - # 247 - # Networking 248 - # 249 - CONFIG_NET=y 250 - 251 - # 252 - # Networking options 253 - # 254 - # CONFIG_NETDEBUG is not set 255 - CONFIG_PACKET=y 256 - CONFIG_PACKET_MMAP=y 257 - CONFIG_UNIX=y 258 - CONFIG_XFRM=y 259 - CONFIG_XFRM_USER=m 260 - CONFIG_NET_KEY=y 261 - CONFIG_INET=y 262 - # CONFIG_IP_MULTICAST is not set 263 - # CONFIG_IP_ADVANCED_ROUTER is not set 264 - CONFIG_IP_FIB_HASH=y 265 - CONFIG_IP_PNP=y 266 - # CONFIG_IP_PNP_DHCP is not set 267 - CONFIG_IP_PNP_BOOTP=y 268 - # CONFIG_IP_PNP_RARP is not set 269 - # CONFIG_NET_IPIP is not set 270 - # CONFIG_NET_IPGRE is not set 271 - # CONFIG_ARPD is not set 272 - # CONFIG_SYN_COOKIES is not set 273 - # CONFIG_INET_AH is not set 274 - # CONFIG_INET_ESP is not set 275 - # CONFIG_INET_IPCOMP is not set 276 - # CONFIG_INET_XFRM_TUNNEL is not set 277 - # CONFIG_INET_TUNNEL is not set 278 - CONFIG_INET_XFRM_MODE_TRANSPORT=m 279 - CONFIG_INET_XFRM_MODE_TUNNEL=m 280 - CONFIG_INET_DIAG=y 281 - CONFIG_INET_TCP_DIAG=y 282 - # CONFIG_TCP_CONG_ADVANCED is not set 283 - CONFIG_TCP_CONG_BIC=y 284 - # CONFIG_IPV6 is not set 285 - # CONFIG_INET6_XFRM_TUNNEL is not set 286 - # CONFIG_INET6_TUNNEL is not set 287 - CONFIG_NETWORK_SECMARK=y 288 - # CONFIG_NETFILTER is not set 289 - 290 - # 291 - # DCCP Configuration (EXPERIMENTAL) 292 - # 293 - # CONFIG_IP_DCCP is not set 294 - 295 - # 296 - # SCTP Configuration (EXPERIMENTAL) 297 - # 298 - # CONFIG_IP_SCTP is not set 299 - 300 - # 301 - # TIPC Configuration (EXPERIMENTAL) 302 - # 303 - # CONFIG_TIPC is not set 304 - # CONFIG_ATM is not set 305 - # CONFIG_BRIDGE is not set 306 - # CONFIG_VLAN_8021Q is not set 307 - # CONFIG_DECNET is not set 308 - # CONFIG_LLC2 is not set 309 - # CONFIG_IPX is not set 310 - # CONFIG_ATALK is not set 311 - # CONFIG_X25 is not set 312 - # CONFIG_LAPB is not set 313 - # CONFIG_NET_DIVERT is not set 314 - # CONFIG_ECONET is not set 315 - # CONFIG_WAN_ROUTER is not set 316 - 317 - # 318 - # QoS and/or fair queueing 319 - # 320 - # CONFIG_NET_SCHED is not set 321 - 322 - # 323 - # Network testing 324 - # 325 - # CONFIG_NET_PKTGEN is not set 326 - # CONFIG_HAMRADIO is not set 327 - # CONFIG_IRDA is not set 328 - # CONFIG_BT is not set 329 - CONFIG_IEEE80211=m 330 - # CONFIG_IEEE80211_DEBUG is not set 331 - CONFIG_IEEE80211_CRYPT_WEP=m 332 - CONFIG_IEEE80211_CRYPT_CCMP=m 333 - CONFIG_IEEE80211_SOFTMAC=m 334 - # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 335 - CONFIG_WIRELESS_EXT=y 336 - 337 - # 338 - # Device Drivers 339 - # 340 - 341 - # 342 - # Generic Driver Options 343 - # 344 - CONFIG_STANDALONE=y 345 - CONFIG_PREVENT_FIRMWARE_BUILD=y 346 - CONFIG_FW_LOADER=m 347 - # CONFIG_SYS_HYPERVISOR is not set 348 - 349 - # 350 - # Connector - unified userspace <-> kernelspace linker 351 - # 352 - CONFIG_CONNECTOR=m 353 - 354 - # 355 - # Memory Technology Devices (MTD) 356 - # 357 - # CONFIG_MTD is not set 358 - 359 - # 360 - # Parallel port support 361 - # 362 - # CONFIG_PARPORT is not set 363 - 364 - # 365 - # Plug and Play support 366 - # 367 - 368 - # 369 - # Block devices 370 - # 371 - # CONFIG_BLK_CPQ_DA is not set 372 - # CONFIG_BLK_CPQ_CISS_DA is not set 373 - # CONFIG_BLK_DEV_DAC960 is not set 374 - # CONFIG_BLK_DEV_UMEM is not set 375 - # CONFIG_BLK_DEV_COW_COMMON is not set 376 - # CONFIG_BLK_DEV_LOOP is not set 377 - # CONFIG_BLK_DEV_NBD is not set 378 - # CONFIG_BLK_DEV_SX8 is not set 379 - # CONFIG_BLK_DEV_RAM is not set 380 - # CONFIG_BLK_DEV_INITRD is not set 381 - CONFIG_CDROM_PKTCDVD=m 382 - CONFIG_CDROM_PKTCDVD_BUFFERS=8 383 - # CONFIG_CDROM_PKTCDVD_WCACHE is not set 384 - CONFIG_ATA_OVER_ETH=m 385 - 386 - # 387 - # ATA/ATAPI/MFM/RLL support 388 - # 389 - CONFIG_IDE=y 390 - CONFIG_BLK_DEV_IDE=y 391 - 392 - # 393 - # Please see Documentation/ide.txt for help/info on IDE drives 394 - # 395 - # CONFIG_BLK_DEV_IDE_SATA is not set 396 - CONFIG_BLK_DEV_IDEDISK=y 397 - # CONFIG_IDEDISK_MULTI_MODE is not set 398 - # CONFIG_BLK_DEV_IDECD is not set 399 - # CONFIG_BLK_DEV_IDETAPE is not set 400 - # CONFIG_BLK_DEV_IDEFLOPPY is not set 401 - # CONFIG_IDE_TASK_IOCTL is not set 402 - 403 - # 404 - # IDE chipset support/bugfixes 405 - # 406 - CONFIG_IDE_GENERIC=y 407 - # CONFIG_BLK_DEV_IDEPCI is not set 408 - # CONFIG_IDE_ARM is not set 409 - # CONFIG_BLK_DEV_IDEDMA is not set 410 - # CONFIG_IDEDMA_AUTO is not set 411 - # CONFIG_BLK_DEV_HD is not set 412 - 413 - # 414 - # SCSI device support 415 - # 416 - CONFIG_RAID_ATTRS=m 417 - # CONFIG_SCSI is not set 418 - 419 - # 420 - # Multi-device support (RAID and LVM) 421 - # 422 - # CONFIG_MD is not set 423 - 424 - # 425 - # Fusion MPT device support 426 - # 427 - # CONFIG_FUSION is not set 428 - 429 - # 430 - # IEEE 1394 (FireWire) support 431 - # 432 - # CONFIG_IEEE1394 is not set 433 - 434 - # 435 - # I2O device support 436 - # 437 - # CONFIG_I2O is not set 438 - 439 - # 440 - # Network device support 441 - # 442 - CONFIG_NETDEVICES=y 443 - # CONFIG_DUMMY is not set 444 - # CONFIG_BONDING is not set 445 - # CONFIG_EQUALIZER is not set 446 - # CONFIG_TUN is not set 447 - 448 - # 449 - # ARCnet devices 450 - # 451 - # CONFIG_ARCNET is not set 452 - 453 - # 454 - # PHY device support 455 - # 456 - CONFIG_PHYLIB=m 457 - 458 - # 459 - # MII PHY device drivers 460 - # 461 - CONFIG_MARVELL_PHY=m 462 - CONFIG_DAVICOM_PHY=m 463 - CONFIG_QSEMI_PHY=m 464 - CONFIG_LXT_PHY=m 465 - CONFIG_CICADA_PHY=m 466 - CONFIG_VITESSE_PHY=m 467 - CONFIG_SMSC_PHY=m 468 - 469 - # 470 - # Ethernet (10 or 100Mbit) 471 - # 472 - CONFIG_NET_ETHERNET=y 473 - # CONFIG_MII is not set 474 - # CONFIG_HAPPYMEAL is not set 475 - # CONFIG_SUNGEM is not set 476 - # CONFIG_CASSINI is not set 477 - # CONFIG_NET_VENDOR_3COM is not set 478 - # CONFIG_DM9000 is not set 479 - 480 - # 481 - # Tulip family network device support 482 - # 483 - # CONFIG_NET_TULIP is not set 484 - # CONFIG_HP100 is not set 485 - # CONFIG_NET_PCI is not set 486 - 487 - # 488 - # Ethernet (1000 Mbit) 489 - # 490 - # CONFIG_ACENIC is not set 491 - # CONFIG_DL2K is not set 492 - # CONFIG_E1000 is not set 493 - # CONFIG_NS83820 is not set 494 - # CONFIG_HAMACHI is not set 495 - # CONFIG_YELLOWFIN is not set 496 - # CONFIG_R8169 is not set 497 - # CONFIG_SIS190 is not set 498 - # CONFIG_SKGE is not set 499 - # CONFIG_SKY2 is not set 500 - # CONFIG_SK98LIN is not set 501 - # CONFIG_TIGON3 is not set 502 - # CONFIG_BNX2 is not set 503 - 504 - # 505 - # Ethernet (10000 Mbit) 506 - # 507 - # CONFIG_CHELSIO_T1 is not set 508 - # CONFIG_IXGB is not set 509 - # CONFIG_S2IO is not set 510 - # CONFIG_MYRI10GE is not set 511 - 512 - # 513 - # Token Ring devices 514 - # 515 - # CONFIG_TR is not set 516 - 517 - # 518 - # Wireless LAN (non-hamradio) 519 - # 520 - # CONFIG_NET_RADIO is not set 521 - 522 - # 523 - # Wan interfaces 524 - # 525 - # CONFIG_WAN is not set 526 - # CONFIG_FDDI is not set 527 - # CONFIG_HIPPI is not set 528 - # CONFIG_PPP is not set 529 - # CONFIG_SLIP is not set 530 - # CONFIG_SHAPER is not set 531 - # CONFIG_NETCONSOLE is not set 532 - # CONFIG_NETPOLL is not set 533 - # CONFIG_NET_POLL_CONTROLLER is not set 534 - 535 - # 536 - # ISDN subsystem 537 - # 538 - # CONFIG_ISDN is not set 539 - 540 - # 541 - # Telephony Support 542 - # 543 - # CONFIG_PHONE is not set 544 - 545 - # 546 - # Input device support 547 - # 548 - CONFIG_INPUT=y 549 - 550 - # 551 - # Userland interfaces 552 - # 553 - CONFIG_INPUT_MOUSEDEV=y 554 - CONFIG_INPUT_MOUSEDEV_PSAUX=y 555 - CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 556 - CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 557 - # CONFIG_INPUT_JOYDEV is not set 558 - # CONFIG_INPUT_TSDEV is not set 559 - # CONFIG_INPUT_EVDEV is not set 560 - # CONFIG_INPUT_EVBUG is not set 561 - 562 - # 563 - # Input Device Drivers 564 - # 565 - # CONFIG_INPUT_KEYBOARD is not set 566 - # CONFIG_INPUT_MOUSE is not set 567 - # CONFIG_INPUT_JOYSTICK is not set 568 - # CONFIG_INPUT_TOUCHSCREEN is not set 569 - # CONFIG_INPUT_MISC is not set 570 - 571 - # 572 - # Hardware I/O ports 573 - # 574 - CONFIG_SERIO=y 575 - # CONFIG_SERIO_I8042 is not set 576 - CONFIG_SERIO_SERPORT=y 577 - # CONFIG_SERIO_PCIPS2 is not set 578 - # CONFIG_SERIO_LIBPS2 is not set 579 - CONFIG_SERIO_RAW=m 580 - # CONFIG_GAMEPORT is not set 581 - 582 - # 583 - # Character devices 584 - # 585 - CONFIG_VT=y 586 - CONFIG_VT_CONSOLE=y 587 - CONFIG_HW_CONSOLE=y 588 - CONFIG_VT_HW_CONSOLE_BINDING=y 589 - # CONFIG_SERIAL_NONSTANDARD is not set 590 - CONFIG_QTRONIX_KEYBOARD=y 591 - CONFIG_IT8172_SCR0=y 592 - CONFIG_IT8172_SCR1=y 593 - 594 - # 595 - # Serial drivers 596 - # 597 - CONFIG_SERIAL_8250=y 598 - CONFIG_SERIAL_8250_CONSOLE=y 599 - CONFIG_SERIAL_8250_PCI=y 600 - CONFIG_SERIAL_8250_NR_UARTS=4 601 - CONFIG_SERIAL_8250_RUNTIME_UARTS=4 602 - # CONFIG_SERIAL_8250_EXTENDED is not set 603 - 604 - # 605 - # Non-8250 serial port support 606 - # 607 - CONFIG_SERIAL_CORE=y 608 - CONFIG_SERIAL_CORE_CONSOLE=y 609 - # CONFIG_SERIAL_JSM is not set 610 - CONFIG_UNIX98_PTYS=y 611 - CONFIG_LEGACY_PTYS=y 612 - CONFIG_LEGACY_PTY_COUNT=256 613 - 614 - # 615 - # IPMI 616 - # 617 - # CONFIG_IPMI_HANDLER is not set 618 - 619 - # 620 - # Watchdog Cards 621 - # 622 - # CONFIG_WATCHDOG is not set 623 - # CONFIG_HW_RANDOM is not set 624 - CONFIG_RTC=y 625 - # CONFIG_DTLK is not set 626 - # CONFIG_R3964 is not set 627 - # CONFIG_APPLICOM is not set 628 - 629 - # 630 - # Ftape, the floppy tape device driver 631 - # 632 - # CONFIG_DRM is not set 633 - # CONFIG_RAW_DRIVER is not set 634 - 635 - # 636 - # TPM devices 637 - # 638 - # CONFIG_TCG_TPM is not set 639 - # CONFIG_TELCLOCK is not set 640 - 641 - # 642 - # I2C support 643 - # 644 - # CONFIG_I2C is not set 645 - 646 - # 647 - # SPI support 648 - # 649 - # CONFIG_SPI is not set 650 - # CONFIG_SPI_MASTER is not set 651 - 652 - # 653 - # Dallas's 1-wire bus 654 - # 655 - # CONFIG_W1 is not set 656 - 657 - # 658 - # Hardware Monitoring support 659 - # 660 - # CONFIG_HWMON is not set 661 - # CONFIG_HWMON_VID is not set 662 - 663 - # 664 - # Misc devices 665 - # 666 - 667 - # 668 - # Multimedia devices 669 - # 670 - # CONFIG_VIDEO_DEV is not set 671 - CONFIG_VIDEO_V4L2=y 672 - 673 - # 674 - # Digital Video Broadcasting Devices 675 - # 676 - # CONFIG_DVB is not set 677 - 678 - # 679 - # Graphics support 680 - # 681 - # CONFIG_FIRMWARE_EDID is not set 682 - # CONFIG_FB is not set 683 - 684 - # 685 - # Console display driver support 686 - # 687 - # CONFIG_VGA_CONSOLE is not set 688 - CONFIG_DUMMY_CONSOLE=y 689 - 690 - # 691 - # Sound 692 - # 693 - # CONFIG_SOUND is not set 694 - 695 - # 696 - # USB support 697 - # 698 - CONFIG_USB_ARCH_HAS_HCD=y 699 - CONFIG_USB_ARCH_HAS_OHCI=y 700 - CONFIG_USB_ARCH_HAS_EHCI=y 701 - # CONFIG_USB is not set 702 - 703 - # 704 - # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 705 - # 706 - 707 - # 708 - # USB Gadget Support 709 - # 710 - # CONFIG_USB_GADGET is not set 711 - 712 - # 713 - # MMC/SD Card support 714 - # 715 - # CONFIG_MMC is not set 716 - 717 - # 718 - # LED devices 719 - # 720 - # CONFIG_NEW_LEDS is not set 721 - 722 - # 723 - # LED drivers 724 - # 725 - 726 - # 727 - # LED Triggers 728 - # 729 - 730 - # 731 - # InfiniBand support 732 - # 733 - # CONFIG_INFINIBAND is not set 734 - 735 - # 736 - # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 737 - # 738 - 739 - # 740 - # Real Time Clock 741 - # 742 - # CONFIG_RTC_CLASS is not set 743 - 744 - # 745 - # DMA Engine support 746 - # 747 - # CONFIG_DMA_ENGINE is not set 748 - 749 - # 750 - # DMA Clients 751 - # 752 - 753 - # 754 - # DMA Devices 755 - # 756 - 757 - # 758 - # File systems 759 - # 760 - CONFIG_EXT2_FS=y 761 - # CONFIG_EXT2_FS_XATTR is not set 762 - # CONFIG_EXT2_FS_XIP is not set 763 - # CONFIG_EXT3_FS is not set 764 - # CONFIG_REISERFS_FS is not set 765 - # CONFIG_JFS_FS is not set 766 - # CONFIG_FS_POSIX_ACL is not set 767 - # CONFIG_XFS_FS is not set 768 - # CONFIG_OCFS2_FS is not set 769 - # CONFIG_MINIX_FS is not set 770 - # CONFIG_ROMFS_FS is not set 771 - CONFIG_INOTIFY=y 772 - CONFIG_INOTIFY_USER=y 773 - # CONFIG_QUOTA is not set 774 - CONFIG_DNOTIFY=y 775 - # CONFIG_AUTOFS_FS is not set 776 - # CONFIG_AUTOFS4_FS is not set 777 - CONFIG_FUSE_FS=m 778 - 779 - # 780 - # CD-ROM/DVD Filesystems 781 - # 782 - # CONFIG_ISO9660_FS is not set 783 - # CONFIG_UDF_FS is not set 784 - 785 - # 786 - # DOS/FAT/NT Filesystems 787 - # 788 - # CONFIG_MSDOS_FS is not set 789 - # CONFIG_VFAT_FS is not set 790 - # CONFIG_NTFS_FS is not set 791 - 792 - # 793 - # Pseudo filesystems 794 - # 795 - CONFIG_PROC_FS=y 796 - CONFIG_PROC_KCORE=y 797 - CONFIG_SYSFS=y 798 - # CONFIG_TMPFS is not set 799 - # CONFIG_HUGETLB_PAGE is not set 800 - CONFIG_RAMFS=y 801 - # CONFIG_CONFIGFS_FS is not set 802 - 803 - # 804 - # Miscellaneous filesystems 805 - # 806 - # CONFIG_ADFS_FS is not set 807 - # CONFIG_AFFS_FS is not set 808 - # CONFIG_HFS_FS is not set 809 - # CONFIG_HFSPLUS_FS is not set 810 - # CONFIG_BEFS_FS is not set 811 - # CONFIG_BFS_FS is not set 812 - # CONFIG_EFS_FS is not set 813 - # CONFIG_CRAMFS is not set 814 - # CONFIG_VXFS_FS is not set 815 - # CONFIG_HPFS_FS is not set 816 - # CONFIG_QNX4FS_FS is not set 817 - # CONFIG_SYSV_FS is not set 818 - # CONFIG_UFS_FS is not set 819 - 820 - # 821 - # Network File Systems 822 - # 823 - CONFIG_NFS_FS=y 824 - # CONFIG_NFS_V3 is not set 825 - # CONFIG_NFS_V4 is not set 826 - # CONFIG_NFS_DIRECTIO is not set 827 - # CONFIG_NFSD is not set 828 - CONFIG_ROOT_NFS=y 829 - CONFIG_LOCKD=y 830 - CONFIG_NFS_COMMON=y 831 - CONFIG_SUNRPC=y 832 - # CONFIG_RPCSEC_GSS_KRB5 is not set 833 - # CONFIG_RPCSEC_GSS_SPKM3 is not set 834 - # CONFIG_SMB_FS is not set 835 - # CONFIG_CIFS is not set 836 - # CONFIG_CIFS_DEBUG2 is not set 837 - # CONFIG_NCP_FS is not set 838 - # CONFIG_CODA_FS is not set 839 - # CONFIG_AFS_FS is not set 840 - # CONFIG_9P_FS is not set 841 - 842 - # 843 - # Partition Types 844 - # 845 - # CONFIG_PARTITION_ADVANCED is not set 846 - CONFIG_MSDOS_PARTITION=y 847 - 848 - # 849 - # Native Language Support 850 - # 851 - # CONFIG_NLS is not set 852 - 853 - # 854 - # Profiling support 855 - # 856 - # CONFIG_PROFILING is not set 857 - 858 - # 859 - # Kernel hacking 860 - # 861 - CONFIG_TRACE_IRQFLAGS_SUPPORT=y 862 - # CONFIG_PRINTK_TIME is not set 863 - # CONFIG_MAGIC_SYSRQ is not set 864 - # CONFIG_UNUSED_SYMBOLS is not set 865 - # CONFIG_DEBUG_KERNEL is not set 866 - CONFIG_LOG_BUF_SHIFT=14 867 - # CONFIG_DEBUG_FS is not set 868 - CONFIG_CROSSCOMPILE=y 869 - CONFIG_CMDLINE="" 870 - 871 - # 872 - # Security options 873 - # 874 - CONFIG_KEYS=y 875 - CONFIG_KEYS_DEBUG_PROC_KEYS=y 876 - # CONFIG_SECURITY is not set 877 - 878 - # 879 - # Cryptographic options 880 - # 881 - CONFIG_CRYPTO=y 882 - CONFIG_CRYPTO_HMAC=y 883 - CONFIG_CRYPTO_NULL=m 884 - CONFIG_CRYPTO_MD4=m 885 - CONFIG_CRYPTO_MD5=m 886 - CONFIG_CRYPTO_SHA1=m 887 - CONFIG_CRYPTO_SHA256=m 888 - CONFIG_CRYPTO_SHA512=m 889 - CONFIG_CRYPTO_WP512=m 890 - CONFIG_CRYPTO_TGR192=m 891 - CONFIG_CRYPTO_DES=m 892 - CONFIG_CRYPTO_BLOWFISH=m 893 - CONFIG_CRYPTO_TWOFISH=m 894 - CONFIG_CRYPTO_SERPENT=m 895 - CONFIG_CRYPTO_AES=m 896 - CONFIG_CRYPTO_CAST5=m 897 - CONFIG_CRYPTO_CAST6=m 898 - CONFIG_CRYPTO_TEA=m 899 - CONFIG_CRYPTO_ARC4=m 900 - CONFIG_CRYPTO_KHAZAD=m 901 - CONFIG_CRYPTO_ANUBIS=m 902 - CONFIG_CRYPTO_DEFLATE=m 903 - CONFIG_CRYPTO_MICHAEL_MIC=m 904 - CONFIG_CRYPTO_CRC32C=m 905 - # CONFIG_CRYPTO_TEST is not set 906 - 907 - # 908 - # Hardware crypto devices 909 - # 910 - 911 - # 912 - # Library routines 913 - # 914 - # CONFIG_CRC_CCITT is not set 915 - CONFIG_CRC16=m 916 - CONFIG_CRC32=m 917 - CONFIG_LIBCRC32C=m 918 - CONFIG_ZLIB_INFLATE=m 919 - CONFIG_ZLIB_DEFLATE=m 920 - CONFIG_PLIST=y
···
-12
arch/mips/dec/boot/Makefile
··· 1 - # 2 - # Makefile for the DECstation family specific parts of the kernel 3 - # 4 - 5 - netboot: all 6 - $(LD) -N -G 0 -T ld.ecoff ../../boot/zImage \ 7 - dec_boot.o ramdisk.img -o nbImage 8 - 9 - obj-y := decstation.o 10 - 11 - clean: 12 - rm -f nbImage
···
-84
arch/mips/dec/boot/decstation.c
··· 1 - /* 2 - * arch/mips/dec/decstation.c 3 - */ 4 - #include <asm/sections.h> 5 - 6 - #define RELOC 7 - #define INITRD 8 - #define DEBUG_BOOT 9 - 10 - /* 11 - * Magic number indicating REX PROM available on DECSTATION. 12 - */ 13 - #define REX_PROM_MAGIC 0x30464354 14 - 15 - #define REX_PROM_CLEARCACHE 0x7c/4 16 - #define REX_PROM_PRINTF 0x30/4 17 - 18 - #define VEC_RESET 0xBFC00000 /* Prom base address */ 19 - #define PMAX_PROM_ENTRY(x) (VEC_RESET+((x)*8)) /* Prom jump table */ 20 - #define PMAX_PROM_PRINTF PMAX_PROM_ENTRY(17) 21 - 22 - #define PARAM (k_start + 0x2000) 23 - 24 - #define LOADER_TYPE (*(unsigned char *) (PARAM+0x210)) 25 - #define INITRD_START (*(unsigned long *) (PARAM+0x218)) 26 - #define INITRD_SIZE (*(unsigned long *) (PARAM+0x21c)) 27 - 28 - extern int _ftext; /* begin and end of kernel image */ 29 - extern void kernel_entry(int, char **, unsigned long, int *); 30 - 31 - void * memcpy(void * dest, const void *src, unsigned int count) 32 - { 33 - unsigned long *tmp = (unsigned long *) dest, *s = (unsigned long *) src; 34 - 35 - count >>= 2; 36 - while (count--) 37 - *tmp++ = *s++; 38 - 39 - return dest; 40 - } 41 - 42 - void dec_entry(int argc, char **argv, 43 - unsigned long magic, int *prom_vec) 44 - { 45 - void (*rex_clear_cache)(void); 46 - int (*prom_printf)(char *, ...); 47 - unsigned long k_start, len; 48 - 49 - /* 50 - * The DS5100 leaves cpu with BEV enabled, clear it. 51 - */ 52 - asm( "lui\t$8,0x3000\n\t" 53 - "mtc0\t$8,$12\n\t" 54 - ".section\t.sdata\n\t" 55 - ".section\t.sbss\n\t" 56 - ".section\t.text" 57 - : : : "$8"); 58 - 59 - #ifdef DEBUG_BOOT 60 - if (magic == REX_PROM_MAGIC) { 61 - prom_printf = (int (*)(char *, ...)) *(prom_vec + REX_PROM_PRINTF); 62 - } else { 63 - prom_printf = (int (*)(char *, ...)) PMAX_PROM_PRINTF; 64 - } 65 - prom_printf("Launching kernel...\n"); 66 - #endif 67 - 68 - k_start = (unsigned long) (&kernel_entry) & 0xffff0000; 69 - 70 - #ifdef RELOC 71 - /* 72 - * Now copy kernel image to its destination. 73 - */ 74 - len = ((unsigned long) (&_end) - k_start); 75 - memcpy((void *)k_start, &_ftext, len); 76 - #endif 77 - 78 - if (magic == REX_PROM_MAGIC) { 79 - rex_clear_cache = (void (*)(void)) * (prom_vec + REX_PROM_CLEARCACHE); 80 - rex_clear_cache(); 81 - } 82 - 83 - kernel_entry(argc, argv, magic, prom_vec); 84 - }
···
-43
arch/mips/dec/boot/ld.ecoff
··· 1 - OUTPUT_FORMAT("ecoff-littlemips") 2 - OUTPUT_ARCH(mips) 3 - ENTRY(dec_entry) 4 - SECTIONS 5 - { 6 - . = 0x80200000; 7 - 8 - .text : 9 - { 10 - _ftext = .; 11 - *(.text) 12 - *(.fixup) 13 - } 14 - .rdata : 15 - { 16 - *(.rodata .rodata.* .rdata) 17 - } 18 - .data : 19 - { 20 - . = ALIGN(0x1000); 21 - ramdisk.img (.data) 22 - *(.data) 23 - } 24 - .sdata : 25 - { 26 - *(.sdata) 27 - } 28 - _gp = .; 29 - .sbss : 30 - { 31 - *(.sbss) 32 - *(.scommon) 33 - } 34 - .bss : 35 - { 36 - *(.dynbss) 37 - *(.bss) 38 - *(COMMON) 39 - } 40 - /DISCARD/ : { 41 - *(.reginfo .mdebug .note) 42 - } 43 - }
···
-2
arch/mips/dec/time.c
··· 184 CMOS_WRITE(RTC_REF_CLCK_32KHZ | (16 - __ffs(HZ)), RTC_REG_A); 185 } 186 187 - EXPORT_SYMBOL(do_settimeofday); 188 - 189 void __init plat_timer_setup(struct irqaction *irq) 190 { 191 setup_irq(dec_interrupt[DEC_IRQ_RTC], irq);
··· 184 CMOS_WRITE(RTC_REF_CLCK_32KHZ | (16 - __ffs(HZ)), RTC_REG_A); 185 } 186 187 void __init plat_timer_setup(struct irqaction *irq) 188 { 189 setup_irq(dec_interrupt[DEC_IRQ_RTC], irq);
-8
arch/mips/ite-boards/Kconfig
··· 1 - config IT8172_REVC 2 - bool "Support for older IT8172 (Rev C)" 3 - depends on MIPS_ITE8172 4 - help 5 - Say Y here to support the older, Revision C version of the Integrated 6 - Technology Express, Inc. ITE8172 SBC. Vendor page at 7 - <http://www.ite.com.tw/ia/brief_it8172bsp.htm>; picture of the 8 - board at <http://www.mvista.com/partners/semiconductor/ite.html>.
···
-15
arch/mips/ite-boards/generic/Makefile
··· 1 - # 2 - # Copyright 2000 MontaVista Software Inc. 3 - # Author: MontaVista Software, Inc. 4 - # ppopov@mvista.com or source@mvista.com 5 - # 6 - # Makefile for the ITE 8172 (qed-4n-s01b) board, generic files. 7 - # 8 - 9 - obj-y += it8172_setup.o irq.o pmon_prom.o \ 10 - time.o lpc.o puts.o reset.o 11 - 12 - obj-$(CONFIG_IT8172_CIR)+= it8172_cir.o 13 - obj-$(CONFIG_KGDB) += dbg_io.o 14 - 15 - EXTRA_AFLAGS := $(CFLAGS)
···
-124
arch/mips/ite-boards/generic/dbg_io.c
··· 1 - 2 - 3 - #ifdef CONFIG_KGDB 4 - 5 - /* --- CONFIG --- */ 6 - 7 - /* we need uint32 uint8 */ 8 - /* #include "types.h" */ 9 - typedef unsigned char uint8; 10 - typedef unsigned int uint32; 11 - 12 - /* --- END OF CONFIG --- */ 13 - 14 - #define UART16550_BAUD_2400 2400 15 - #define UART16550_BAUD_4800 4800 16 - #define UART16550_BAUD_9600 9600 17 - #define UART16550_BAUD_19200 19200 18 - #define UART16550_BAUD_38400 38400 19 - #define UART16550_BAUD_57600 57600 20 - #define UART16550_BAUD_115200 115200 21 - 22 - #define UART16550_PARITY_NONE 0 23 - #define UART16550_PARITY_ODD 0x08 24 - #define UART16550_PARITY_EVEN 0x18 25 - #define UART16550_PARITY_MARK 0x28 26 - #define UART16550_PARITY_SPACE 0x38 27 - 28 - #define UART16550_DATA_5BIT 0x0 29 - #define UART16550_DATA_6BIT 0x1 30 - #define UART16550_DATA_7BIT 0x2 31 - #define UART16550_DATA_8BIT 0x3 32 - 33 - #define UART16550_STOP_1BIT 0x0 34 - #define UART16550_STOP_2BIT 0x4 35 - 36 - /* ----------------------------------------------------- */ 37 - 38 - /* === CONFIG === */ 39 - 40 - /* [stevel] we use the IT8712 serial port for kgdb */ 41 - #define DEBUG_BASE 0xB40003F8 /* 8712 serial port 1 base address */ 42 - #define MAX_BAUD 115200 43 - 44 - /* === END OF CONFIG === */ 45 - 46 - /* register offset */ 47 - #define OFS_RCV_BUFFER 0 48 - #define OFS_TRANS_HOLD 0 49 - #define OFS_SEND_BUFFER 0 50 - #define OFS_INTR_ENABLE 1 51 - #define OFS_INTR_ID 2 52 - #define OFS_DATA_FORMAT 3 53 - #define OFS_LINE_CONTROL 3 54 - #define OFS_MODEM_CONTROL 4 55 - #define OFS_RS232_OUTPUT 4 56 - #define OFS_LINE_STATUS 5 57 - #define OFS_MODEM_STATUS 6 58 - #define OFS_RS232_INPUT 6 59 - #define OFS_SCRATCH_PAD 7 60 - 61 - #define OFS_DIVISOR_LSB 0 62 - #define OFS_DIVISOR_MSB 1 63 - 64 - 65 - /* memory-mapped read/write of the port */ 66 - #define UART16550_READ(y) (*((volatile uint8*)(DEBUG_BASE + y))) 67 - #define UART16550_WRITE(y,z) ((*((volatile uint8*)(DEBUG_BASE + y))) = z) 68 - 69 - void debugInit(uint32 baud, uint8 data, uint8 parity, uint8 stop) 70 - { 71 - /* disable interrupts */ 72 - UART16550_WRITE(OFS_INTR_ENABLE, 0); 73 - 74 - /* set up baud rate */ 75 - { 76 - uint32 divisor; 77 - 78 - /* set DIAB bit */ 79 - UART16550_WRITE(OFS_LINE_CONTROL, 0x80); 80 - 81 - /* set divisor */ 82 - divisor = MAX_BAUD / baud; 83 - UART16550_WRITE(OFS_DIVISOR_LSB, divisor & 0xff); 84 - UART16550_WRITE(OFS_DIVISOR_MSB, (divisor & 0xff00) >> 8); 85 - 86 - /* clear DIAB bit */ 87 - UART16550_WRITE(OFS_LINE_CONTROL, 0x0); 88 - } 89 - 90 - /* set data format */ 91 - UART16550_WRITE(OFS_DATA_FORMAT, data | parity | stop); 92 - } 93 - 94 - static int remoteDebugInitialized = 0; 95 - 96 - uint8 getDebugChar(void) 97 - { 98 - if (!remoteDebugInitialized) { 99 - remoteDebugInitialized = 1; 100 - debugInit(UART16550_BAUD_115200, 101 - UART16550_DATA_8BIT, 102 - UART16550_PARITY_NONE, UART16550_STOP_1BIT); 103 - } 104 - 105 - while ((UART16550_READ(OFS_LINE_STATUS) & 0x1) == 0); 106 - return UART16550_READ(OFS_RCV_BUFFER); 107 - } 108 - 109 - 110 - int putDebugChar(uint8 byte) 111 - { 112 - if (!remoteDebugInitialized) { 113 - remoteDebugInitialized = 1; 114 - debugInit(UART16550_BAUD_115200, 115 - UART16550_DATA_8BIT, 116 - UART16550_PARITY_NONE, UART16550_STOP_1BIT); 117 - } 118 - 119 - while ((UART16550_READ(OFS_LINE_STATUS) & 0x20) == 0); 120 - UART16550_WRITE(OFS_SEND_BUFFER, byte); 121 - return 1; 122 - } 123 - 124 - #endif
···
-308
arch/mips/ite-boards/generic/irq.c
··· 1 - /* 2 - * BRIEF MODULE DESCRIPTION 3 - * ITE 8172G interrupt/setup routines. 4 - * 5 - * Copyright 2000,2001 MontaVista Software Inc. 6 - * Author: MontaVista Software, Inc. 7 - * ppopov@mvista.com or source@mvista.com 8 - * 9 - * Part of this file was derived from Carsten Langgaard's 10 - * arch/mips/mips-boards/atlas/atlas_int.c. 11 - * 12 - * Carsten Langgaard, carstenl@mips.com 13 - * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved. 14 - * 15 - * This program is free software; you can redistribute it and/or modify it 16 - * under the terms of the GNU General Public License as published by the 17 - * Free Software Foundation; either version 2 of the License, or (at your 18 - * option) any later version. 19 - * 20 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 21 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 22 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 23 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 24 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 25 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 26 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 27 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 29 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 - * 31 - * You should have received a copy of the GNU General Public License along 32 - * with this program; if not, write to the Free Software Foundation, Inc., 33 - * 675 Mass Ave, Cambridge, MA 02139, USA. 34 - */ 35 - #include <linux/errno.h> 36 - #include <linux/init.h> 37 - #include <linux/irq.h> 38 - #include <linux/kernel_stat.h> 39 - #include <linux/module.h> 40 - #include <linux/signal.h> 41 - #include <linux/sched.h> 42 - #include <linux/types.h> 43 - #include <linux/interrupt.h> 44 - #include <linux/ioport.h> 45 - #include <linux/timex.h> 46 - #include <linux/slab.h> 47 - #include <linux/random.h> 48 - #include <linux/serial_reg.h> 49 - #include <linux/bitops.h> 50 - 51 - #include <asm/bootinfo.h> 52 - #include <asm/io.h> 53 - #include <asm/mipsregs.h> 54 - #include <asm/system.h> 55 - #include <asm/it8172/it8172.h> 56 - #include <asm/it8172/it8172_int.h> 57 - #include <asm/it8172/it8172_dbg.h> 58 - 59 - /* revisit */ 60 - #define EXT_IRQ0_TO_IP 2 /* IP 2 */ 61 - #define EXT_IRQ5_TO_IP 7 /* IP 7 */ 62 - 63 - #define ALLINTS_NOTIMER (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4) 64 - 65 - extern void set_debug_traps(void); 66 - extern void mips_timer_interrupt(int irq, struct pt_regs *regs); 67 - 68 - struct it8172_intc_regs volatile *it8172_hw0_icregs = 69 - (struct it8172_intc_regs volatile *)(KSEG1ADDR(IT8172_PCI_IO_BASE + IT_INTC_BASE)); 70 - 71 - static void disable_it8172_irq(unsigned int irq_nr) 72 - { 73 - if ( (irq_nr >= IT8172_LPC_IRQ_BASE) && (irq_nr <= IT8172_SERIRQ_15)) { 74 - /* LPC interrupt */ 75 - it8172_hw0_icregs->lpc_mask |= 76 - (1 << (irq_nr - IT8172_LPC_IRQ_BASE)); 77 - } else if ( (irq_nr >= IT8172_LB_IRQ_BASE) && (irq_nr <= IT8172_IOCHK_IRQ)) { 78 - /* Local Bus interrupt */ 79 - it8172_hw0_icregs->lb_mask |= 80 - (1 << (irq_nr - IT8172_LB_IRQ_BASE)); 81 - } else if ( (irq_nr >= IT8172_PCI_DEV_IRQ_BASE) && (irq_nr <= IT8172_DMA_IRQ)) { 82 - /* PCI and other interrupts */ 83 - it8172_hw0_icregs->pci_mask |= 84 - (1 << (irq_nr - IT8172_PCI_DEV_IRQ_BASE)); 85 - } else if ( (irq_nr >= IT8172_NMI_IRQ_BASE) && (irq_nr <= IT8172_POWER_NMI_IRQ)) { 86 - /* NMI interrupts */ 87 - it8172_hw0_icregs->nmi_mask |= 88 - (1 << (irq_nr - IT8172_NMI_IRQ_BASE)); 89 - } else { 90 - panic("disable_it8172_irq: bad irq %d", irq_nr); 91 - } 92 - } 93 - 94 - static void enable_it8172_irq(unsigned int irq_nr) 95 - { 96 - if ( (irq_nr >= IT8172_LPC_IRQ_BASE) && (irq_nr <= IT8172_SERIRQ_15)) { 97 - /* LPC interrupt */ 98 - it8172_hw0_icregs->lpc_mask &= 99 - ~(1 << (irq_nr - IT8172_LPC_IRQ_BASE)); 100 - } 101 - else if ( (irq_nr >= IT8172_LB_IRQ_BASE) && (irq_nr <= IT8172_IOCHK_IRQ)) { 102 - /* Local Bus interrupt */ 103 - it8172_hw0_icregs->lb_mask &= 104 - ~(1 << (irq_nr - IT8172_LB_IRQ_BASE)); 105 - } 106 - else if ( (irq_nr >= IT8172_PCI_DEV_IRQ_BASE) && (irq_nr <= IT8172_DMA_IRQ)) { 107 - /* PCI and other interrupts */ 108 - it8172_hw0_icregs->pci_mask &= 109 - ~(1 << (irq_nr - IT8172_PCI_DEV_IRQ_BASE)); 110 - } 111 - else if ( (irq_nr >= IT8172_NMI_IRQ_BASE) && (irq_nr <= IT8172_POWER_NMI_IRQ)) { 112 - /* NMI interrupts */ 113 - it8172_hw0_icregs->nmi_mask &= 114 - ~(1 << (irq_nr - IT8172_NMI_IRQ_BASE)); 115 - } 116 - else { 117 - panic("enable_it8172_irq: bad irq %d", irq_nr); 118 - } 119 - } 120 - 121 - static unsigned int startup_ite_irq(unsigned int irq) 122 - { 123 - enable_it8172_irq(irq); 124 - return 0; 125 - } 126 - 127 - #define shutdown_ite_irq disable_it8172_irq 128 - #define mask_and_ack_ite_irq disable_it8172_irq 129 - 130 - static void end_ite_irq(unsigned int irq) 131 - { 132 - if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) 133 - enable_it8172_irq(irq); 134 - } 135 - 136 - static struct irq_chip it8172_irq_type = { 137 - .typename = "ITE8172", 138 - .startup = startup_ite_irq, 139 - .shutdown = shutdown_ite_irq, 140 - .enable = enable_it8172_irq, 141 - .disable = disable_it8172_irq, 142 - .ack = mask_and_ack_ite_irq, 143 - .end = end_ite_irq, 144 - }; 145 - 146 - 147 - static void enable_none(unsigned int irq) { } 148 - static unsigned int startup_none(unsigned int irq) { return 0; } 149 - static void disable_none(unsigned int irq) { } 150 - static void ack_none(unsigned int irq) { } 151 - 152 - /* startup is the same as "enable", shutdown is same as "disable" */ 153 - #define shutdown_none disable_none 154 - #define end_none enable_none 155 - 156 - static struct irq_chip cp0_irq_type = { 157 - .typename = "CP0 Count", 158 - .startup = startup_none, 159 - .shutdown = shutdown_none, 160 - .enable = enable_none, 161 - .disable = disable_none, 162 - .ack = ack_none, 163 - .end = end_none 164 - }; 165 - 166 - void enable_cpu_timer(void) 167 - { 168 - unsigned long flags; 169 - 170 - local_irq_save(flags); 171 - set_c0_status(0x100 << EXT_IRQ5_TO_IP); 172 - local_irq_restore(flags); 173 - } 174 - 175 - void __init arch_init_irq(void) 176 - { 177 - int i; 178 - unsigned long flags; 179 - 180 - /* mask all interrupts */ 181 - it8172_hw0_icregs->lb_mask = 0xffff; 182 - it8172_hw0_icregs->lpc_mask = 0xffff; 183 - it8172_hw0_icregs->pci_mask = 0xffff; 184 - it8172_hw0_icregs->nmi_mask = 0xffff; 185 - 186 - /* make all interrupts level triggered */ 187 - it8172_hw0_icregs->lb_trigger = 0; 188 - it8172_hw0_icregs->lpc_trigger = 0; 189 - it8172_hw0_icregs->pci_trigger = 0; 190 - it8172_hw0_icregs->nmi_trigger = 0; 191 - 192 - /* active level setting */ 193 - /* uart, keyboard, and mouse are active high */ 194 - it8172_hw0_icregs->lpc_level = (0x10 | 0x2 | 0x1000); 195 - it8172_hw0_icregs->lb_level |= 0x20; 196 - 197 - /* keyboard and mouse are edge triggered */ 198 - it8172_hw0_icregs->lpc_trigger |= (0x2 | 0x1000); 199 - 200 - 201 - #if 0 202 - // Enable this piece of code to make internal USB interrupt 203 - // edge triggered. 204 - it8172_hw0_icregs->pci_trigger |= 205 - (1 << (IT8172_USB_IRQ - IT8172_PCI_DEV_IRQ_BASE)); 206 - it8172_hw0_icregs->pci_level &= 207 - ~(1 << (IT8172_USB_IRQ - IT8172_PCI_DEV_IRQ_BASE)); 208 - #endif 209 - 210 - for (i = 0; i <= IT8172_LAST_IRQ; i++) { 211 - irq_desc[i].chip = &it8172_irq_type; 212 - spin_lock_init(&irq_desc[i].lock); 213 - } 214 - irq_desc[MIPS_CPU_TIMER_IRQ].chip = &cp0_irq_type; 215 - set_c0_status(ALLINTS_NOTIMER); 216 - } 217 - 218 - void mips_spurious_interrupt(struct pt_regs *regs) 219 - { 220 - #if 1 221 - return; 222 - #else 223 - unsigned long status, cause; 224 - 225 - printk("got spurious interrupt\n"); 226 - status = read_c0_status(); 227 - cause = read_c0_cause(); 228 - printk("status %x cause %x\n", status, cause); 229 - printk("epc %x badvaddr %x \n", regs->cp0_epc, regs->cp0_badvaddr); 230 - #endif 231 - } 232 - 233 - void it8172_hw0_irqdispatch(struct pt_regs *regs) 234 - { 235 - int irq; 236 - unsigned short intstatus = 0, status = 0; 237 - 238 - intstatus = it8172_hw0_icregs->intstatus; 239 - if (intstatus & 0x8) { 240 - panic("Got NMI interrupt"); 241 - } else if (intstatus & 0x4) { 242 - /* PCI interrupt */ 243 - irq = 0; 244 - status |= it8172_hw0_icregs->pci_req; 245 - while (!(status & 0x1)) { 246 - irq++; 247 - status >>= 1; 248 - } 249 - irq += IT8172_PCI_DEV_IRQ_BASE; 250 - } else if (intstatus & 0x1) { 251 - /* Local Bus interrupt */ 252 - irq = 0; 253 - status |= it8172_hw0_icregs->lb_req; 254 - while (!(status & 0x1)) { 255 - irq++; 256 - status >>= 1; 257 - } 258 - irq += IT8172_LB_IRQ_BASE; 259 - } else if (intstatus & 0x2) { 260 - /* LPC interrupt */ 261 - /* Since some lpc interrupts are edge triggered, 262 - * we could lose an interrupt this way because 263 - * we acknowledge all ints at onces. Revisit. 264 - */ 265 - status |= it8172_hw0_icregs->lpc_req; 266 - it8172_hw0_icregs->lpc_req = 0; /* acknowledge ints */ 267 - irq = 0; 268 - while (!(status & 0x1)) { 269 - irq++; 270 - status >>= 1; 271 - } 272 - irq += IT8172_LPC_IRQ_BASE; 273 - } else 274 - return; 275 - 276 - do_IRQ(irq, regs); 277 - } 278 - 279 - asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 280 - { 281 - unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; 282 - 283 - if (!pending) 284 - mips_spurious_interrupt(regs); 285 - else if (pending & CAUSEF_IP7) 286 - ll_timer_interrupt(127, regs); 287 - else if (pending & CAUSEF_IP2) 288 - it8172_hw0_irqdispatch(regs); 289 - } 290 - 291 - void show_pending_irqs(void) 292 - { 293 - fputs("intstatus: "); 294 - put32(it8172_hw0_icregs->intstatus); 295 - puts(""); 296 - 297 - fputs("pci_req: "); 298 - put32(it8172_hw0_icregs->pci_req); 299 - puts(""); 300 - 301 - fputs("lb_req: "); 302 - put32(it8172_hw0_icregs->lb_req); 303 - puts(""); 304 - 305 - fputs("lpc_req: "); 306 - put32(it8172_hw0_icregs->lpc_req); 307 - puts(""); 308 - }
···
-170
arch/mips/ite-boards/generic/it8172_cir.c
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * IT8172 Consumer IR port generic routines. 5 - * 6 - * Copyright 2001 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * ppopov@mvista.com or source@mvista.com 9 - * 10 - * This program is free software; you can redistribute it and/or modify it 11 - * under the terms of the GNU General Public License as published by the 12 - * Free Software Foundation; either version 2 of the License, or (at your 13 - * option) any later version. 14 - * 15 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 - * 26 - * You should have received a copy of the GNU General Public License along 27 - * with this program; if not, write to the Free Software Foundation, Inc., 28 - * 675 Mass Ave, Cambridge, MA 02139, USA. 29 - */ 30 - 31 - 32 - #ifdef CONFIG_IT8172_CIR 33 - 34 - #include <linux/types.h> 35 - #include <linux/pci.h> 36 - #include <linux/kernel.h> 37 - #include <linux/init.h> 38 - 39 - #include <asm/it8172/it8172.h> 40 - #include <asm/it8172/it8172_cir.h> 41 - 42 - 43 - volatile struct it8172_cir_regs *cir_regs[NUM_CIR_PORTS] = { 44 - (volatile struct it8172_cir_regs *)(KSEG1ADDR(IT8172_PCI_IO_BASE + IT_CIR0_BASE)), 45 - (volatile struct it8172_cir_regs *)(KSEG1ADDR(IT8172_PCI_IO_BASE + IT_CIR1_BASE))}; 46 - 47 - 48 - /* 49 - * Initialize Consumer IR Port. 50 - */ 51 - int cir_port_init(struct cir_port *cir) 52 - { 53 - int port = cir->port; 54 - unsigned char data; 55 - 56 - /* set baud rate */ 57 - cir_regs[port]->bdlr = cir->baud_rate & 0xff; 58 - cir_regs[port]->bdhr = (cir->baud_rate >> 8) & 0xff; 59 - 60 - /* set receiver control register */ 61 - cir_regs[port]->rcr = (CIR_SET_RDWOS(cir->rdwos) | CIR_SET_RXDCR(cir->rxdcr)); 62 - 63 - /* set carrier frequency register */ 64 - cir_regs[port]->cfr = (CIR_SET_CF(cir->cfq) | CIR_SET_HS(cir->hcfs)); 65 - 66 - /* set fifo threshold */ 67 - data = cir_regs[port]->mstcr & 0xf3; 68 - data |= CIR_SET_FIFO_TL(cir->fifo_tl); 69 - cir_regs[port]->mstcr = data; 70 - 71 - clear_fifo(cir); 72 - enable_receiver(cir); 73 - disable_rx_demodulation(cir); 74 - 75 - set_rx_active(cir); 76 - int_enable(cir); 77 - rx_int_enable(cir); 78 - 79 - return 0; 80 - } 81 - 82 - 83 - void clear_fifo(struct cir_port *cir) 84 - { 85 - cir_regs[cir->port]->mstcr |= CIR_FIFO_CLEAR; 86 - } 87 - 88 - void enable_receiver(struct cir_port *cir) 89 - { 90 - cir_regs[cir->port]->rcr |= CIR_RXEN; 91 - } 92 - 93 - void disable_receiver(struct cir_port *cir) 94 - { 95 - cir_regs[cir->port]->rcr &= ~CIR_RXEN; 96 - } 97 - 98 - void enable_rx_demodulation(struct cir_port *cir) 99 - { 100 - cir_regs[cir->port]->rcr |= CIR_RXEND; 101 - } 102 - 103 - void disable_rx_demodulation(struct cir_port *cir) 104 - { 105 - cir_regs[cir->port]->rcr &= ~CIR_RXEND; 106 - } 107 - 108 - void set_rx_active(struct cir_port *cir) 109 - { 110 - cir_regs[cir->port]->rcr |= CIR_RXACT; 111 - } 112 - 113 - void int_enable(struct cir_port *cir) 114 - { 115 - cir_regs[cir->port]->ier |= CIR_IEC; 116 - } 117 - 118 - void rx_int_enable(struct cir_port *cir) 119 - { 120 - cir_regs[cir->port]->ier |= CIR_RDAIE; 121 - } 122 - 123 - void dump_regs(struct cir_port *cir) 124 - { 125 - printk("mstcr %x ier %x iir %x cfr %x rcr %x tcr %x tfsr %x rfsr %x\n", 126 - cir_regs[cir->port]->mstcr, 127 - cir_regs[cir->port]->ier, 128 - cir_regs[cir->port]->iir, 129 - cir_regs[cir->port]->cfr, 130 - cir_regs[cir->port]->rcr, 131 - cir_regs[cir->port]->tcr, 132 - cir_regs[cir->port]->tfsr, 133 - cir_regs[cir->port]->rfsr); 134 - 135 - while (cir_regs[cir->port]->iir & CIR_RDAI) { 136 - printk("data %x\n", cir_regs[cir->port]->dr); 137 - } 138 - } 139 - 140 - void dump_reg_addr(struct cir_port *cir) 141 - { 142 - printk("dr %x mstcr %x ier %x iir %x cfr %x rcr %x tcr %x bdlr %x bdhr %x tfsr %x rfsr %x\n", 143 - (unsigned)&cir_regs[cir->port]->dr, 144 - (unsigned)&cir_regs[cir->port]->mstcr, 145 - (unsigned)&cir_regs[cir->port]->ier, 146 - (unsigned)&cir_regs[cir->port]->iir, 147 - (unsigned)&cir_regs[cir->port]->cfr, 148 - (unsigned)&cir_regs[cir->port]->rcr, 149 - (unsigned)&cir_regs[cir->port]->tcr, 150 - (unsigned)&cir_regs[cir->port]->bdlr, 151 - (unsigned)&cir_regs[cir->port]->bdhr, 152 - (unsigned)&cir_regs[cir->port]->tfsr, 153 - (unsigned)&cir_regs[cir->port]->rfsr); 154 - } 155 - 156 - int cir_get_rx_count(struct cir_port *cir) 157 - { 158 - return cir_regs[cir->port]->rfsr & CIR_RXFBC_MASK; 159 - } 160 - 161 - char cir_read_data(struct cir_port *cir) 162 - { 163 - return cir_regs[cir->port]->dr; 164 - } 165 - 166 - char get_int_status(struct cir_port *cir) 167 - { 168 - return cir_regs[cir->port]->iir; 169 - } 170 - #endif
···
-352
arch/mips/ite-boards/generic/it8172_setup.c
··· 1 - /* 2 - * BRIEF MODULE DESCRIPTION 3 - * IT8172/QED5231 board setup. 4 - * 5 - * Copyright 2000 MontaVista Software Inc. 6 - * Author: MontaVista Software, Inc. 7 - * ppopov@mvista.com or source@mvista.com 8 - * 9 - * This program is free software; you can redistribute it and/or modify it 10 - * under the terms of the GNU General Public License as published by the 11 - * Free Software Foundation; either version 2 of the License, or (at your 12 - * option) any later version. 13 - * 14 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 15 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 17 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 20 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 21 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 - * 25 - * You should have received a copy of the GNU General Public License along 26 - * with this program; if not, write to the Free Software Foundation, Inc., 27 - * 675 Mass Ave, Cambridge, MA 02139, USA. 28 - */ 29 - #include <linux/init.h> 30 - #include <linux/sched.h> 31 - #include <linux/ioport.h> 32 - #include <linux/irq.h> 33 - #include <linux/serial_reg.h> 34 - #include <linux/major.h> 35 - #include <linux/kdev_t.h> 36 - #include <linux/root_dev.h> 37 - #include <linux/pm.h> 38 - 39 - #include <asm/cpu.h> 40 - #include <asm/time.h> 41 - #include <asm/io.h> 42 - #include <asm/bootinfo.h> 43 - #include <asm/irq.h> 44 - #include <asm/mipsregs.h> 45 - #include <asm/reboot.h> 46 - #include <asm/traps.h> 47 - #include <asm/it8172/it8172.h> 48 - #include <asm/it8712.h> 49 - 50 - extern struct resource ioport_resource; 51 - #ifdef CONFIG_SERIO_I8042 52 - int init_8712_keyboard(void); 53 - #endif 54 - 55 - extern int SearchIT8712(void); 56 - extern void InitLPCInterface(void); 57 - extern char * __init prom_getcmdline(void); 58 - extern void it8172_restart(char *command); 59 - extern void it8172_halt(void); 60 - extern void it8172_power_off(void); 61 - 62 - extern void it8172_time_init(void); 63 - 64 - #ifdef CONFIG_IT8172_REVC 65 - struct { 66 - struct resource ram; 67 - struct resource pci_mem; 68 - struct resource pci_io; 69 - struct resource flash; 70 - struct resource boot; 71 - } it8172_resources = { 72 - { 73 - .start = 0, /* to be initted */ 74 - .end = 0, 75 - .name = "RAM", 76 - .flags = IORESOURCE_MEM 77 - }, { 78 - .start = 0x10000000, 79 - .end = 0x13FFFFFF, 80 - .name = "PCI Mem", 81 - .flags = IORESOURCE_MEM 82 - }, { 83 - .start = 0x14000000, 84 - .end = 0x17FFFFFF 85 - .name = "PCI I/O", 86 - }, { 87 - .start = 0x08000000, 88 - .end = 0x0CFFFFFF 89 - .name = "Flash", 90 - }, { 91 - .start = 0x1FC00000, 92 - .end = 0x1FFFFFFF 93 - .name = "Boot ROM", 94 - } 95 - }; 96 - #else 97 - struct { 98 - struct resource ram; 99 - struct resource pci_mem0; 100 - struct resource pci_mem1; 101 - struct resource pci_io; 102 - struct resource pci_mem2; 103 - struct resource pci_mem3; 104 - struct resource flash; 105 - struct resource boot; 106 - } it8172_resources = { 107 - { 108 - .start = 0, /* to be initted */ 109 - .end = 0, 110 - .name = "RAM", 111 - .flags = IORESOURCE_MEM 112 - }, { 113 - .start = 0x0C000000, 114 - .end = 0x0FFFFFFF, 115 - .name = "PCI Mem0", 116 - .flags = IORESOURCE_MEM 117 - }, { 118 - .start = 0x10000000, 119 - .end = 0x13FFFFFF, 120 - .name = "PCI Mem1", 121 - .flags = IORESOURCE_MEM 122 - }, { 123 - .start = 0x14000000, 124 - .end = 0x17FFFFFF 125 - .name = "PCI I/O", 126 - }, { 127 - .start = 0x1A000000, 128 - .end = 0x1BFFFFFF, 129 - .name = "PCI Mem2", 130 - .flags = IORESOURCE_MEM 131 - }, { 132 - .start = 0x1C000000, 133 - .end = 0x1FBFFFFF, 134 - .name = "PCI Mem3", 135 - .flags = IORESOURCE_MEM 136 - }, { 137 - .start = 0x08000000, 138 - .end = 0x0CFFFFFF 139 - .name = "Flash", 140 - }, { 141 - .start = 0x1FC00000, 142 - .end = 0x1FFFFFFF 143 - .name = "Boot ROM", 144 - } 145 - }; 146 - #endif 147 - 148 - 149 - void __init it8172_init_ram_resource(unsigned long memsize) 150 - { 151 - it8172_resources.ram.end = memsize; 152 - } 153 - 154 - void __init plat_mem_setup(void) 155 - { 156 - unsigned short dsr; 157 - char *argptr; 158 - 159 - argptr = prom_getcmdline(); 160 - #ifdef CONFIG_SERIAL_CONSOLE 161 - if ((argptr = strstr(argptr, "console=")) == NULL) { 162 - argptr = prom_getcmdline(); 163 - strcat(argptr, " console=ttyS0,115200"); 164 - } 165 - #endif 166 - 167 - clear_c0_status(ST0_FR); 168 - 169 - board_time_init = it8172_time_init; 170 - 171 - _machine_restart = it8172_restart; 172 - _machine_halt = it8172_halt; 173 - pm_power_off = it8172_power_off; 174 - 175 - /* 176 - * IO/MEM resources. 177 - * 178 - * revisit this area. 179 - */ 180 - set_io_port_base(KSEG1); 181 - ioport_resource.start = it8172_resources.pci_io.start; 182 - ioport_resource.end = it8172_resources.pci_io.end; 183 - #ifdef CONFIG_IT8172_REVC 184 - iomem_resource.start = it8172_resources.pci_mem.start; 185 - iomem_resource.end = it8172_resources.pci_mem.end; 186 - #else 187 - iomem_resource.start = it8172_resources.pci_mem0.start; 188 - iomem_resource.end = it8172_resources.pci_mem3.end; 189 - #endif 190 - 191 - #ifdef CONFIG_BLK_DEV_INITRD 192 - ROOT_DEV = Root_RAM0; 193 - #endif 194 - 195 - /* 196 - * Pull enabled devices out of standby 197 - */ 198 - IT_IO_READ16(IT_PM_DSR, dsr); 199 - 200 - /* 201 - * Fixme: This breaks when these drivers are modules!!! 202 - */ 203 - #ifdef CONFIG_SOUND_IT8172 204 - dsr &= ~IT_PM_DSR_ACSB; 205 - #else 206 - dsr |= IT_PM_DSR_ACSB; 207 - #endif 208 - #ifdef CONFIG_BLK_DEV_IT8172 209 - dsr &= ~IT_PM_DSR_IDESB; 210 - #else 211 - dsr |= IT_PM_DSR_IDESB; 212 - #endif 213 - IT_IO_WRITE16(IT_PM_DSR, dsr); 214 - 215 - InitLPCInterface(); 216 - 217 - #ifdef CONFIG_MIPS_ITE8172 218 - if (SearchIT8712()) { 219 - printk("Found IT8712 Super IO\n"); 220 - /* enable IT8712 serial port */ 221 - LPCSetConfig(LDN_SERIAL1, 0x30, 0x01); /* enable */ 222 - LPCSetConfig(LDN_SERIAL1, 0x23, 0x01); /* clock selection */ 223 - #ifdef CONFIG_SERIO_I8042 224 - if (init_8712_keyboard()) { 225 - printk("Unable to initialize keyboard\n"); 226 - LPCSetConfig(LDN_KEYBOARD, 0x30, 0x0); /* disable keyboard */ 227 - } else { 228 - LPCSetConfig(LDN_KEYBOARD, 0x30, 0x1); /* enable keyboard */ 229 - LPCSetConfig(LDN_KEYBOARD, 0xf0, 0x2); 230 - LPCSetConfig(LDN_KEYBOARD, 0x71, 0x3); 231 - 232 - LPCSetConfig(LDN_MOUSE, 0x30, 0x1); /* enable mouse */ 233 - 234 - LPCSetConfig(0x4, 0x30, 0x1); 235 - LPCSetConfig(0x4, 0xf4, LPCGetConfig(0x4, 0xf4) | 0x80); 236 - 237 - if ((LPCGetConfig(LDN_KEYBOARD, 0x30) == 0) || 238 - (LPCGetConfig(LDN_MOUSE, 0x30) == 0)) 239 - printk("Error: keyboard or mouse not enabled\n"); 240 - 241 - } 242 - #endif 243 - } 244 - else { 245 - printk("IT8712 Super IO not found\n"); 246 - } 247 - #endif 248 - 249 - #ifdef CONFIG_IT8172_CIR 250 - { 251 - unsigned long data; 252 - //printk("Enabling CIR0\n"); 253 - IT_IO_READ16(IT_PM_DSR, data); 254 - data &= ~IT_PM_DSR_CIR0SB; 255 - IT_IO_WRITE16(IT_PM_DSR, data); 256 - //printk("DSR register: %x\n", (unsigned)IT_IO_READ16(IT_PM_DSR, data)); 257 - } 258 - #endif 259 - #ifdef CONFIG_IT8172_SCR0 260 - { 261 - unsigned i; 262 - /* Enable Smart Card Reader 0 */ 263 - /* First power it up */ 264 - IT_IO_READ16(IT_PM_DSR, i); 265 - i &= ~IT_PM_DSR_SCR0SB; 266 - IT_IO_WRITE16(IT_PM_DSR, i); 267 - /* Then initialize its registers */ 268 - outb(( IT_SCR_SFR_GATE_UART_OFF << IT_SCR_SFR_GATE_UART_BIT 269 - |IT_SCR_SFR_FET_CHARGE_213_US << IT_SCR_SFR_FET_CHARGE_BIT 270 - |IT_SCR_SFR_CARD_FREQ_3_5_MHZ << IT_SCR_SFR_CARD_FREQ_BIT 271 - |IT_SCR_SFR_FET_ACTIVE_INVERT << IT_SCR_SFR_FET_ACTIVE_BIT 272 - |IT_SCR_SFR_ENABLE_ON << IT_SCR_SFR_ENABLE_BIT), 273 - IT8172_PCI_IO_BASE + IT_SCR0_BASE + IT_SCR_SFR); 274 - outb(IT_SCR_SCDR_RESET_MODE_ASYNC << IT_SCR_SCDR_RESET_MODE_BIT, 275 - IT8172_PCI_IO_BASE + IT_SCR0_BASE + IT_SCR_SCDR); 276 - } 277 - #endif /* CONFIG_IT8172_SCR0 */ 278 - #ifdef CONFIG_IT8172_SCR1 279 - { 280 - unsigned i; 281 - /* Enable Smart Card Reader 1 */ 282 - /* First power it up */ 283 - IT_IO_READ16(IT_PM_DSR, i); 284 - i &= ~IT_PM_DSR_SCR1SB; 285 - IT_IO_WRITE16(IT_PM_DSR, i); 286 - /* Then initialize its registers */ 287 - outb(( IT_SCR_SFR_GATE_UART_OFF << IT_SCR_SFR_GATE_UART_BIT 288 - |IT_SCR_SFR_FET_CHARGE_213_US << IT_SCR_SFR_FET_CHARGE_BIT 289 - |IT_SCR_SFR_CARD_FREQ_3_5_MHZ << IT_SCR_SFR_CARD_FREQ_BIT 290 - |IT_SCR_SFR_FET_ACTIVE_INVERT << IT_SCR_SFR_FET_ACTIVE_BIT 291 - |IT_SCR_SFR_ENABLE_ON << IT_SCR_SFR_ENABLE_BIT), 292 - IT8172_PCI_IO_BASE + IT_SCR1_BASE + IT_SCR_SFR); 293 - outb(IT_SCR_SCDR_RESET_MODE_ASYNC << IT_SCR_SCDR_RESET_MODE_BIT, 294 - IT8172_PCI_IO_BASE + IT_SCR1_BASE + IT_SCR_SCDR); 295 - } 296 - #endif /* CONFIG_IT8172_SCR1 */ 297 - } 298 - 299 - #ifdef CONFIG_SERIO_I8042 300 - /* 301 - * According to the ITE Special BIOS Note for waking up the 302 - * keyboard controller... 303 - */ 304 - static int init_8712_keyboard(void) 305 - { 306 - unsigned int cmd_port = 0x14000064; 307 - unsigned int data_port = 0x14000060; 308 - ^^^^^^^^^^^ 309 - Somebody here doesn't grok the concept of io ports. 310 - 311 - unsigned char data; 312 - int i; 313 - 314 - outb(0xaa, cmd_port); /* send self-test cmd */ 315 - i = 0; 316 - while (!(inb(cmd_port) & 0x1)) { /* wait output buffer full */ 317 - i++; 318 - if (i > 0xffffff) 319 - return 1; 320 - } 321 - 322 - data = inb(data_port); 323 - outb(0xcb, cmd_port); /* set ps2 mode */ 324 - while (inb(cmd_port) & 0x2) { /* wait while input buffer full */ 325 - i++; 326 - if (i > 0xffffff) 327 - return 1; 328 - } 329 - outb(0x01, data_port); 330 - while (inb(cmd_port) & 0x2) { /* wait while input buffer full */ 331 - i++; 332 - if (i > 0xffffff) 333 - return 1; 334 - } 335 - 336 - outb(0x60, cmd_port); /* write 8042 command byte */ 337 - while (inb(cmd_port) & 0x2) { /* wait while input buffer full */ 338 - i++; 339 - if (i > 0xffffff) 340 - return 1; 341 - } 342 - outb(0x45, data_port); /* at interface, keyboard enabled, system flag */ 343 - while (inb(cmd_port) & 0x2) { /* wait while input buffer full */ 344 - i++; 345 - if (i > 0xffffff) 346 - return 1; 347 - } 348 - 349 - outb(0xae, cmd_port); /* enable interface */ 350 - return 0; 351 - } 352 - #endif
···
-144
arch/mips/ite-boards/generic/lpc.c
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * ITE Semi IT8712 Super I/O functions. 5 - * 6 - * Copyright 2001 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * ppopov@mvista.com or source@mvista.com 9 - * 10 - * This program is free software; you can redistribute it and/or modify it 11 - * under the terms of the GNU General Public License as published by the 12 - * Free Software Foundation; either version 2 of the License, or (at your 13 - * option) any later version. 14 - * 15 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 - * 26 - * You should have received a copy of the GNU General Public License along 27 - * with this program; if not, write to the Free Software Foundation, Inc., 28 - * 675 Mass Ave, Cambridge, MA 02139, USA. 29 - */ 30 - 31 - #include <asm/io.h> 32 - #include <asm/types.h> 33 - #include <asm/it8712.h> 34 - #include <asm/it8172/it8172.h> 35 - 36 - #ifndef TRUE 37 - #define TRUE 1 38 - #endif 39 - 40 - #ifndef FALSE 41 - #define FALSE 0 42 - #endif 43 - 44 - void LPCEnterMBPnP(void) 45 - { 46 - int i; 47 - unsigned char key[4] = {0x87, 0x01, 0x55, 0x55}; 48 - 49 - for (i = 0; i<4; i++) 50 - outb(key[i], LPC_KEY_ADDR); 51 - 52 - } 53 - 54 - void LPCExitMBPnP(void) 55 - { 56 - outb(0x02, LPC_KEY_ADDR); 57 - outb(0x02, LPC_DATA_ADDR); 58 - } 59 - 60 - void LPCSetConfig(char LdnNumber, char Index, char data) 61 - { 62 - LPCEnterMBPnP(); // Enter IT8712 MB PnP mode 63 - outb(0x07, LPC_KEY_ADDR); 64 - outb(LdnNumber, LPC_DATA_ADDR); 65 - outb(Index, LPC_KEY_ADDR); 66 - outb(data, LPC_DATA_ADDR); 67 - LPCExitMBPnP(); 68 - } 69 - 70 - char LPCGetConfig(char LdnNumber, char Index) 71 - { 72 - char rtn; 73 - 74 - LPCEnterMBPnP(); // Enter IT8712 MB PnP mode 75 - outb(0x07, LPC_KEY_ADDR); 76 - outb(LdnNumber, LPC_DATA_ADDR); 77 - outb(Index, LPC_KEY_ADDR); 78 - rtn = inb(LPC_DATA_ADDR); 79 - LPCExitMBPnP(); 80 - return rtn; 81 - } 82 - 83 - int SearchIT8712(void) 84 - { 85 - unsigned char Id1, Id2; 86 - unsigned short Id; 87 - 88 - LPCEnterMBPnP(); 89 - outb(0x20, LPC_KEY_ADDR); /* chip id byte 1 */ 90 - Id1 = inb(LPC_DATA_ADDR); 91 - outb(0x21, LPC_KEY_ADDR); /* chip id byte 2 */ 92 - Id2 = inb(LPC_DATA_ADDR); 93 - Id = (Id1 << 8) | Id2; 94 - LPCExitMBPnP(); 95 - if (Id == 0x8712) 96 - return TRUE; 97 - else 98 - return FALSE; 99 - } 100 - 101 - void InitLPCInterface(void) 102 - { 103 - unsigned char bus, dev_fn; 104 - unsigned long data; 105 - 106 - bus = 0; 107 - dev_fn = 1<<3 | 4; 108 - 109 - 110 - /* pci cmd, SERR# Enable */ 111 - IT_WRITE(IT_CONFADDR, 112 - (bus << IT_BUSNUM_SHF) | 113 - (dev_fn << IT_FUNCNUM_SHF) | 114 - ((0x4 / 4) << IT_REGNUM_SHF)); 115 - IT_READ(IT_CONFDATA, data); 116 - data |= 0x0100; 117 - IT_WRITE(IT_CONFADDR, 118 - (bus << IT_BUSNUM_SHF) | 119 - (dev_fn << IT_FUNCNUM_SHF) | 120 - ((0x4 / 4) << IT_REGNUM_SHF)); 121 - IT_WRITE(IT_CONFDATA, data); 122 - 123 - /* setup serial irq control register */ 124 - IT_WRITE(IT_CONFADDR, 125 - (bus << IT_BUSNUM_SHF) | 126 - (dev_fn << IT_FUNCNUM_SHF) | 127 - ((0x48 / 4) << IT_REGNUM_SHF)); 128 - IT_READ(IT_CONFDATA, data); 129 - data = (data & 0xffff00ff) | 0xc400; 130 - IT_WRITE(IT_CONFADDR, 131 - (bus << IT_BUSNUM_SHF) | 132 - (dev_fn << IT_FUNCNUM_SHF) | 133 - ((0x48 / 4) << IT_REGNUM_SHF)); 134 - IT_WRITE(IT_CONFDATA, data); 135 - 136 - 137 - /* Enable I/O Space Subtractive Decode */ 138 - /* default 0x4C is 0x3f220000 */ 139 - IT_WRITE(IT_CONFADDR, 140 - (bus << IT_BUSNUM_SHF) | 141 - (dev_fn << IT_FUNCNUM_SHF) | 142 - ((0x4C / 4) << IT_REGNUM_SHF)); 143 - IT_WRITE(IT_CONFDATA, 0x3f2200f3); 144 - }
···
-135
arch/mips/ite-boards/generic/pmon_prom.c
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * PROM library initialisation code, assuming a version of 5 - * pmon is the boot code. 6 - * 7 - * Copyright 2000 MontaVista Software Inc. 8 - * Author: MontaVista Software, Inc. 9 - * ppopov@mvista.com or source@mvista.com 10 - * 11 - * This file was derived from Carsten Langgaard's 12 - * arch/mips/mips-boards/xx files. 13 - * 14 - * Carsten Langgaard, carstenl@mips.com 15 - * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved. 16 - * 17 - * This program is free software; you can redistribute it and/or modify it 18 - * under the terms of the GNU General Public License as published by the 19 - * Free Software Foundation; either version 2 of the License, or (at your 20 - * option) any later version. 21 - * 22 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 23 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 24 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 25 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 26 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 27 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 28 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 29 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 31 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 - * 33 - * You should have received a copy of the GNU General Public License along 34 - * with this program; if not, write to the Free Software Foundation, Inc., 35 - * 675 Mass Ave, Cambridge, MA 02139, USA. 36 - */ 37 - 38 - #include <linux/kernel.h> 39 - #include <linux/init.h> 40 - #include <linux/string.h> 41 - 42 - #include <asm/bootinfo.h> 43 - 44 - extern int prom_argc; 45 - extern char **prom_argv, **prom_envp; 46 - 47 - typedef struct 48 - { 49 - char *name; 50 - /* char *val; */ 51 - }t_env_var; 52 - 53 - 54 - char * __init prom_getcmdline(void) 55 - { 56 - return &(arcs_cmdline[0]); 57 - } 58 - 59 - void __init prom_init_cmdline(void) 60 - { 61 - char *cp; 62 - int actr; 63 - 64 - actr = 1; /* Always ignore argv[0] */ 65 - 66 - cp = &(arcs_cmdline[0]); 67 - while(actr < prom_argc) { 68 - strcpy(cp, prom_argv[actr]); 69 - cp += strlen(prom_argv[actr]); 70 - *cp++ = ' '; 71 - actr++; 72 - } 73 - if (cp != &(arcs_cmdline[0])) /* get rid of trailing space */ 74 - --cp; 75 - *cp = '\0'; 76 - 77 - } 78 - 79 - 80 - char *prom_getenv(char *envname) 81 - { 82 - /* 83 - * Return a pointer to the given environment variable. 84 - * Environment variables are stored in the form of "memsize=64". 85 - */ 86 - 87 - t_env_var *env = (t_env_var *)prom_envp; 88 - int i; 89 - 90 - i = strlen(envname); 91 - 92 - while(env->name) { 93 - if(strncmp(envname, env->name, i) == 0) { 94 - return(env->name + strlen(envname) + 1); 95 - } 96 - env++; 97 - } 98 - return(NULL); 99 - } 100 - 101 - static inline unsigned char str2hexnum(unsigned char c) 102 - { 103 - if(c >= '0' && c <= '9') 104 - return c - '0'; 105 - if(c >= 'a' && c <= 'f') 106 - return c - 'a' + 10; 107 - return 0; /* foo */ 108 - } 109 - 110 - unsigned long __init prom_free_prom_memory(void) 111 - { 112 - return 0; 113 - } 114 - 115 - unsigned long __init prom_get_memsize(void) 116 - { 117 - char *memsize_str; 118 - unsigned int memsize; 119 - 120 - memsize_str = prom_getenv("memsize"); 121 - if (!memsize_str) { 122 - #ifdef CONFIG_MIPS_ITE8172 123 - memsize = 32; 124 - #elif defined(CONFIG_MIPS_IVR) 125 - memsize = 64; 126 - #else 127 - memsize = 8; 128 - #endif 129 - printk("memsize unknown: setting to %dMB\n", memsize); 130 - } else { 131 - printk("memsize: %s\n", memsize_str); 132 - memsize = simple_strtol(memsize_str, NULL, 0); 133 - } 134 - return memsize; 135 - }
···
-139
arch/mips/ite-boards/generic/puts.c
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * Low level uart routines to directly access a 16550 uart. 5 - * 6 - * Copyright 2000,2001 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * ppopov@mvista.com or source@mvista.com 9 - * 10 - * This program is free software; you can redistribute it and/or modify it 11 - * under the terms of the GNU General Public License as published by the 12 - * Free Software Foundation; either version 2 of the License, or (at your 13 - * option) any later version. 14 - * 15 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 - * 26 - * You should have received a copy of the GNU General Public License along 27 - * with this program; if not, write to the Free Software Foundation, Inc., 28 - * 675 Mass Ave, Cambridge, MA 02139, USA. 29 - */ 30 - 31 - #include <linux/types.h> 32 - 33 - #define SERIAL_BASE 0xB4011800 /* it8172 */ 34 - #define SER_CMD 5 35 - #define SER_DATA 0x00 36 - #define TX_BUSY 0x20 37 - 38 - #define TIMEOUT 0xffff 39 - #undef SLOW_DOWN 40 - 41 - static const char digits[16] = "0123456789abcdef"; 42 - static volatile unsigned char *const com1 = (unsigned char *) SERIAL_BASE; 43 - 44 - 45 - #ifdef SLOW_DOWN 46 - static inline void slow_down() 47 - { 48 - int k; 49 - for (k = 0; k < 10000; k++); 50 - } 51 - #else 52 - #define slow_down() 53 - #endif 54 - 55 - void putch(const unsigned char c) 56 - { 57 - unsigned char ch; 58 - int i = 0; 59 - 60 - do { 61 - ch = com1[SER_CMD]; 62 - slow_down(); 63 - i++; 64 - if (i > TIMEOUT) { 65 - break; 66 - } 67 - } while (0 == (ch & TX_BUSY)); 68 - com1[SER_DATA] = c; 69 - } 70 - 71 - void puts(unsigned char *cp) 72 - { 73 - unsigned char ch; 74 - int i = 0; 75 - 76 - while (*cp) { 77 - do { 78 - ch = com1[SER_CMD]; 79 - slow_down(); 80 - i++; 81 - if (i > TIMEOUT) { 82 - break; 83 - } 84 - } while (0 == (ch & TX_BUSY)); 85 - com1[SER_DATA] = *cp++; 86 - } 87 - putch('\r'); 88 - putch('\n'); 89 - } 90 - 91 - void fputs(unsigned char *cp) 92 - { 93 - unsigned char ch; 94 - int i = 0; 95 - 96 - while (*cp) { 97 - 98 - do { 99 - ch = com1[SER_CMD]; 100 - slow_down(); 101 - i++; 102 - if (i > TIMEOUT) { 103 - break; 104 - } 105 - } while (0 == (ch & TX_BUSY)); 106 - com1[SER_DATA] = *cp++; 107 - } 108 - } 109 - 110 - 111 - void put64(uint64_t ul) 112 - { 113 - int cnt; 114 - unsigned ch; 115 - 116 - cnt = 16; /* 16 nibbles in a 64 bit long */ 117 - putch('0'); 118 - putch('x'); 119 - do { 120 - cnt--; 121 - ch = (unsigned char) (ul >> cnt * 4) & 0x0F; 122 - putch(digits[ch]); 123 - } while (cnt > 0); 124 - } 125 - 126 - void put32(unsigned u) 127 - { 128 - int cnt; 129 - unsigned ch; 130 - 131 - cnt = 8; /* 8 nibbles in a 32 bit long */ 132 - putch('0'); 133 - putch('x'); 134 - do { 135 - cnt--; 136 - ch = (unsigned char) (u >> cnt * 4) & 0x0F; 137 - putch(digits[ch]); 138 - } while (cnt > 0); 139 - }
···
-60
arch/mips/ite-boards/generic/reset.c
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * ITE 8172 reset routines. 5 - * 6 - * Copyright 2001 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * ppopov@mvista.com or source@mvista.com 9 - * 10 - * This program is free software; you can redistribute it and/or modify it 11 - * under the terms of the GNU General Public License as published by the 12 - * Free Software Foundation; either version 2 of the License, or (at your 13 - * option) any later version. 14 - * 15 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 - * 26 - * You should have received a copy of the GNU General Public License along 27 - * with this program; if not, write to the Free Software Foundation, Inc., 28 - * 675 Mass Ave, Cambridge, MA 02139, USA. 29 - */ 30 - 31 - #include <linux/sched.h> 32 - #include <linux/mm.h> 33 - #include <asm/cacheflush.h> 34 - #include <asm/io.h> 35 - #include <asm/processor.h> 36 - #include <asm/reboot.h> 37 - #include <asm/system.h> 38 - 39 - void it8172_restart() 40 - { 41 - set_c0_status(ST0_BEV | ST0_ERL); 42 - change_c0_config(CONF_CM_CMASK, CONF_CM_UNCACHED); 43 - flush_cache_all(); 44 - write_c0_wired(0); 45 - __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000)); 46 - } 47 - 48 - void it8172_halt(void) 49 - { 50 - printk(KERN_NOTICE "\n** You can safely turn off the power\n"); 51 - while (1) 52 - __asm__(".set\tmips3\n\t" 53 - "wait\n\t" 54 - ".set\tmips0"); 55 - } 56 - 57 - void it8172_power_off(void) 58 - { 59 - it8172_halt(); 60 - }
···
-249
arch/mips/ite-boards/generic/time.c
··· 1 - /* 2 - * Carsten Langgaard, carstenl@mips.com 3 - * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved. 4 - * 5 - * Copyright (C) 2003 MontaVista Software Inc. 6 - * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net 7 - * 8 - * ######################################################################## 9 - * 10 - * This program is free software; you can distribute it and/or modify it 11 - * under the terms of the GNU General Public License (Version 2) as 12 - * published by the Free Software Foundation. 13 - * 14 - * This program is distributed in the hope it will be useful, but WITHOUT 15 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 16 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 17 - * for more details. 18 - * 19 - * You should have received a copy of the GNU General Public License along 20 - * with this program; if not, write to the Free Software Foundation, Inc., 21 - * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 22 - * 23 - * ######################################################################## 24 - * 25 - * Setting up the clock on the MIPS boards. 26 - */ 27 - #include <linux/init.h> 28 - #include <linux/kernel_stat.h> 29 - #include <linux/sched.h> 30 - #include <linux/time.h> 31 - #include <linux/spinlock.h> 32 - #include <linux/mc146818rtc.h> 33 - 34 - #include <asm/time.h> 35 - #include <asm/mipsregs.h> 36 - #include <asm/ptrace.h> 37 - #include <asm/it8172/it8172.h> 38 - #include <asm/it8172/it8172_int.h> 39 - #include <asm/debug.h> 40 - 41 - #define IT8172_RTC_ADR_REG (IT8172_PCI_IO_BASE + IT_RTC_BASE) 42 - #define IT8172_RTC_DAT_REG (IT8172_RTC_ADR_REG + 1) 43 - #define IT8172_RTC_CENTURY_REG (IT8172_PCI_IO_BASE + IT_RTC_CENTURY) 44 - 45 - static volatile char *rtc_adr_reg = (char*)KSEG1ADDR(IT8172_RTC_ADR_REG); 46 - static volatile char *rtc_dat_reg = (char*)KSEG1ADDR(IT8172_RTC_DAT_REG); 47 - static volatile char *rtc_century_reg = (char*)KSEG1ADDR(IT8172_RTC_CENTURY_REG); 48 - 49 - unsigned char it8172_rtc_read_data(unsigned long addr) 50 - { 51 - unsigned char retval; 52 - 53 - *rtc_adr_reg = addr; 54 - retval = *rtc_dat_reg; 55 - return retval; 56 - } 57 - 58 - void it8172_rtc_write_data(unsigned char data, unsigned long addr) 59 - { 60 - *rtc_adr_reg = addr; 61 - *rtc_dat_reg = data; 62 - } 63 - 64 - #undef CMOS_READ 65 - #undef CMOS_WRITE 66 - #define CMOS_READ(addr) it8172_rtc_read_data(addr) 67 - #define CMOS_WRITE(data, addr) it8172_rtc_write_data(data, addr) 68 - 69 - static unsigned char saved_control; /* remember rtc control reg */ 70 - static inline int rtc_24h(void) { return saved_control & RTC_24H; } 71 - static inline int rtc_dm_binary(void) { return saved_control & RTC_DM_BINARY; } 72 - 73 - static inline unsigned char 74 - bin_to_hw(unsigned char c) 75 - { 76 - if (rtc_dm_binary()) 77 - return c; 78 - else 79 - return ((c/10) << 4) + (c%10); 80 - } 81 - 82 - static inline unsigned char 83 - hw_to_bin(unsigned char c) 84 - { 85 - if (rtc_dm_binary()) 86 - return c; 87 - else 88 - return (c>>4)*10 + (c &0xf); 89 - } 90 - 91 - /* 0x80 bit indicates pm in 12-hour format */ 92 - static inline unsigned char 93 - hour_bin_to_hw(unsigned char c) 94 - { 95 - if (rtc_24h()) 96 - return bin_to_hw(c); 97 - if (c >= 12) 98 - return 0x80 | bin_to_hw((c==12)?12:c-12); /* 12 is 12pm */ 99 - else 100 - return bin_to_hw((c==0)?12:c); /* 0 is 12 AM, not 0 am */ 101 - } 102 - 103 - static inline unsigned char 104 - hour_hw_to_bin(unsigned char c) 105 - { 106 - unsigned char tmp = hw_to_bin(c&0x3f); 107 - if (rtc_24h()) 108 - return tmp; 109 - if (c & 0x80) 110 - return (tmp==12)?12:tmp+12; /* 12pm is 12, not 24 */ 111 - else 112 - return (tmp==12)?0:tmp; /* 12am is 0 */ 113 - } 114 - 115 - static unsigned long r4k_offset; /* Amount to increment compare reg each time */ 116 - static unsigned long r4k_cur; /* What counter should be at next timer irq */ 117 - extern unsigned int mips_hpt_frequency; 118 - 119 - /* 120 - * Figure out the r4k offset, the amount to increment the compare 121 - * register for each time tick. 122 - * Use the RTC to calculate offset. 123 - */ 124 - static unsigned long __init cal_r4koff(void) 125 - { 126 - unsigned int flags; 127 - 128 - local_irq_save(flags); 129 - 130 - /* Start counter exactly on falling edge of update flag */ 131 - while (CMOS_READ(RTC_REG_A) & RTC_UIP); 132 - while (!(CMOS_READ(RTC_REG_A) & RTC_UIP)); 133 - 134 - /* Start r4k counter. */ 135 - write_c0_count(0); 136 - 137 - /* Read counter exactly on falling edge of update flag */ 138 - while (CMOS_READ(RTC_REG_A) & RTC_UIP); 139 - while (!(CMOS_READ(RTC_REG_A) & RTC_UIP)); 140 - 141 - mips_hpt_frequency = read_c0_count(); 142 - 143 - /* restore interrupts */ 144 - local_irq_restore(flags); 145 - 146 - return (mips_hpt_frequency / HZ); 147 - } 148 - 149 - static unsigned long 150 - it8172_rtc_get_time(void) 151 - { 152 - unsigned int year, mon, day, hour, min, sec; 153 - unsigned int flags; 154 - 155 - /* avoid update-in-progress. */ 156 - for (;;) { 157 - local_irq_save(flags); 158 - if (! (CMOS_READ(RTC_REG_A) & RTC_UIP)) 159 - break; 160 - /* don't hold intr closed all the time */ 161 - local_irq_restore(flags); 162 - } 163 - 164 - /* Read regs. */ 165 - sec = hw_to_bin(CMOS_READ(RTC_SECONDS)); 166 - min = hw_to_bin(CMOS_READ(RTC_MINUTES)); 167 - hour = hour_hw_to_bin(CMOS_READ(RTC_HOURS)); 168 - day = hw_to_bin(CMOS_READ(RTC_DAY_OF_MONTH)); 169 - mon = hw_to_bin(CMOS_READ(RTC_MONTH)); 170 - year = hw_to_bin(CMOS_READ(RTC_YEAR)) + 171 - hw_to_bin(*rtc_century_reg) * 100; 172 - 173 - /* restore interrupts */ 174 - local_irq_restore(flags); 175 - 176 - return mktime(year, mon, day, hour, min, sec); 177 - } 178 - 179 - static int 180 - it8172_rtc_set_time(unsigned long t) 181 - { 182 - struct rtc_time tm; 183 - unsigned int flags; 184 - 185 - /* convert */ 186 - to_tm(t, &tm); 187 - 188 - /* avoid update-in-progress. */ 189 - for (;;) { 190 - local_irq_save(flags); 191 - if (! (CMOS_READ(RTC_REG_A) & RTC_UIP)) 192 - break; 193 - /* don't hold intr closed all the time */ 194 - local_irq_restore(flags); 195 - } 196 - 197 - *rtc_century_reg = bin_to_hw(tm.tm_year/100); 198 - CMOS_WRITE(bin_to_hw(tm.tm_sec), RTC_SECONDS); 199 - CMOS_WRITE(bin_to_hw(tm.tm_min), RTC_MINUTES); 200 - CMOS_WRITE(hour_bin_to_hw(tm.tm_hour), RTC_HOURS); 201 - CMOS_WRITE(bin_to_hw(tm.tm_mday), RTC_DAY_OF_MONTH); 202 - CMOS_WRITE(bin_to_hw(tm.tm_mon+1), RTC_MONTH); /* tm_mon starts from 0 */ 203 - CMOS_WRITE(bin_to_hw(tm.tm_year%100), RTC_YEAR); 204 - 205 - /* restore interrupts */ 206 - local_irq_restore(flags); 207 - 208 - return 0; 209 - } 210 - 211 - void __init it8172_time_init(void) 212 - { 213 - unsigned int est_freq, flags; 214 - 215 - local_irq_save(flags); 216 - 217 - saved_control = CMOS_READ(RTC_CONTROL); 218 - 219 - printk("calculating r4koff... "); 220 - r4k_offset = cal_r4koff(); 221 - printk("%08lx(%d)\n", r4k_offset, (int) r4k_offset); 222 - 223 - est_freq = 2*r4k_offset*HZ; 224 - est_freq += 5000; /* round */ 225 - est_freq -= est_freq%10000; 226 - printk("CPU frequency %d.%02d MHz\n", est_freq/1000000, 227 - (est_freq%1000000)*100/1000000); 228 - 229 - local_irq_restore(flags); 230 - 231 - rtc_mips_get_time = it8172_rtc_get_time; 232 - rtc_mips_set_time = it8172_rtc_set_time; 233 - } 234 - 235 - #define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4 | IE_IRQ5) 236 - 237 - void __init plat_timer_setup(struct irqaction *irq) 238 - { 239 - puts("timer_setup\n"); 240 - put32(NR_IRQS); 241 - puts(""); 242 - /* we are using the cpu counter for timer interrupts */ 243 - setup_irq(MIPS_CPU_TIMER_IRQ, irq); 244 - 245 - /* to generate the first timer interrupt */ 246 - r4k_cur = (read_c0_count() + r4k_offset); 247 - write_c0_compare(r4k_cur); 248 - set_c0_status(ALLINTS); 249 - }
···
-10
arch/mips/ite-boards/ivr/Makefile
··· 1 - # 2 - # Copyright 2000 MontaVista Software Inc. 3 - # Author: MontaVista Software, Inc. 4 - # ppopov@mvista.com or source@mvista.com 5 - # 6 - # Makefile for the Globespan IVR board, 7 - # board-specific files. 8 - # 9 - 10 - obj-y += init.o
···
-3
arch/mips/ite-boards/ivr/README
··· 1 - This is not really a board made by ITE Semi, but it's very 2 - similar to the ITE QED-4N-S01B board. The IVR board is made 3 - by Globespan and it's a reference board for the PVR chip.
···
-81
arch/mips/ite-boards/ivr/init.c
··· 1 - /* 2 - * BRIEF MODULE DESCRIPTION 3 - * IVR board setup. 4 - * 5 - * Copyright 2000 MontaVista Software Inc. 6 - * Author: MontaVista Software, Inc. 7 - * ppopov@mvista.com or source@mvista.com 8 - * 9 - * This program is free software; you can redistribute it and/or modify it 10 - * under the terms of the GNU General Public License as published by the 11 - * Free Software Foundation; either version 2 of the License, or (at your 12 - * option) any later version. 13 - * 14 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 15 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 17 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 20 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 21 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 - * 25 - * You should have received a copy of the GNU General Public License along 26 - * with this program; if not, write to the Free Software Foundation, Inc., 27 - * 675 Mass Ave, Cambridge, MA 02139, USA. 28 - */ 29 - #include <linux/init.h> 30 - #include <linux/mm.h> 31 - #include <linux/sched.h> 32 - #include <linux/bootmem.h> 33 - #include <asm/addrspace.h> 34 - #include <asm/bootinfo.h> 35 - #include <linux/string.h> 36 - #include <linux/kernel.h> 37 - #include <asm/sections.h> 38 - #include <asm/it8172/it8172.h> 39 - #include <asm/it8172/it8172_dbg.h> 40 - 41 - int prom_argc; 42 - char **prom_argv, **prom_envp; 43 - 44 - extern void __init prom_init_cmdline(void); 45 - extern unsigned long __init prom_get_memsize(void); 46 - extern void __init it8172_init_ram_resource(unsigned long memsize); 47 - 48 - const char *get_system_type(void) 49 - { 50 - return "Globespan IVR"; 51 - } 52 - 53 - void __init prom_init(void) 54 - { 55 - unsigned long mem_size; 56 - unsigned long pcicr; 57 - 58 - prom_argc = fw_arg0; 59 - prom_argv = (char **) fw_arg1; 60 - prom_envp = (int *) fw_arg3; 61 - 62 - mips_machgroup = MACH_GROUP_GLOBESPAN; 63 - mips_machtype = MACH_IVR; /* Globespan's iTVC15 reference board */ 64 - 65 - prom_init_cmdline(); 66 - 67 - /* pmon does not set memsize */ 68 - mem_size = prom_get_memsize(); 69 - mem_size = mem_size << 20; 70 - 71 - /* 72 - * make the entire physical memory visible to pci bus masters 73 - */ 74 - IT_READ(IT_MC_PCICR, pcicr); 75 - pcicr &= ~0x1f; 76 - pcicr |= (mem_size - 1) >> 22; 77 - IT_WRITE(IT_MC_PCICR, pcicr); 78 - 79 - it8172_init_ram_resource(mem_size); 80 - add_memory_region(0, mem_size, BOOT_MEM_RAM); 81 - }
···
-10
arch/mips/ite-boards/qed-4n-s01b/Makefile
··· 1 - # 2 - # Copyright 2000 MontaVista Software Inc. 3 - # Author: MontaVista Software, Inc. 4 - # ppopov@mvista.com or source@mvista.com 5 - # 6 - # Makefile for the ITE 8172 (qed-4n-s01b) board, board 7 - # specific files. 8 - # 9 - 10 - obj-y := init.o
···
-2
arch/mips/ite-boards/qed-4n-s01b/README
··· 1 - This is an ITE (www.iteusa.com) eval board for the ITE 8172G 2 - system controller, with a QED 5231 CPU.
···
-82
arch/mips/ite-boards/qed-4n-s01b/init.c
··· 1 - /* 2 - * BRIEF MODULE DESCRIPTION 3 - * IT8172/QED5231 board setup. 4 - * 5 - * Copyright 2000 MontaVista Software Inc. 6 - * Author: MontaVista Software, Inc. 7 - * ppopov@mvista.com or source@mvista.com 8 - * 9 - * This program is free software; you can redistribute it and/or modify it 10 - * under the terms of the GNU General Public License as published by the 11 - * Free Software Foundation; either version 2 of the License, or (at your 12 - * option) any later version. 13 - * 14 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 15 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 17 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 20 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 21 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 - * 25 - * You should have received a copy of the GNU General Public License along 26 - * with this program; if not, write to the Free Software Foundation, Inc., 27 - * 675 Mass Ave, Cambridge, MA 02139, USA. 28 - */ 29 - #include <linux/init.h> 30 - #include <linux/mm.h> 31 - #include <linux/sched.h> 32 - #include <linux/bootmem.h> 33 - #include <asm/addrspace.h> 34 - #include <asm/bootinfo.h> 35 - #include <linux/string.h> 36 - #include <linux/kernel.h> 37 - #include <asm/sections.h> 38 - #include <asm/it8172/it8172.h> 39 - #include <asm/it8172/it8172_dbg.h> 40 - 41 - int prom_argc; 42 - char **prom_argv, **prom_envp; 43 - 44 - extern void __init prom_init_cmdline(void); 45 - extern unsigned long __init prom_get_memsize(void); 46 - extern void __init it8172_init_ram_resource(unsigned long memsize); 47 - 48 - const char *get_system_type(void) 49 - { 50 - return "ITE QED-4N-S01B"; 51 - } 52 - 53 - void __init prom_init(void) 54 - { 55 - unsigned long mem_size; 56 - unsigned long pcicr; 57 - 58 - prom_argc = fw_arg0; 59 - prom_argv = (char **) fw_arg1; 60 - prom_envp = (int *) fw_arg3; 61 - 62 - mips_machgroup = MACH_GROUP_ITE; 63 - mips_machtype = MACH_QED_4N_S01B; /* ITE board name/number */ 64 - 65 - prom_init_cmdline(); 66 - mem_size = prom_get_memsize(); 67 - 68 - printk("Memory size: %dMB\n", (unsigned)mem_size); 69 - 70 - mem_size <<= 20; /* MB */ 71 - 72 - /* 73 - * make the entire physical memory visible to pci bus masters 74 - */ 75 - IT_READ(IT_MC_PCICR, pcicr); 76 - pcicr &= ~0x1f; 77 - pcicr |= (mem_size - 1) >> 22; 78 - IT_WRITE(IT_MC_PCICR, pcicr); 79 - 80 - it8172_init_ram_resource(mem_size); 81 - add_memory_region(0, mem_size, BOOT_MEM_RAM); 82 - }
···
-74
arch/mips/kernel/time.c
··· 149 unsigned int (*mips_hpt_read)(void); 150 void (*mips_hpt_init)(unsigned int); 151 152 - 153 - /* 154 - * This version of gettimeofday has microsecond resolution and better than 155 - * microsecond precision on fast machines with cycle counter. 156 - */ 157 - void do_gettimeofday(struct timeval *tv) 158 - { 159 - unsigned long seq; 160 - unsigned long usec, sec; 161 - unsigned long max_ntp_tick; 162 - 163 - do { 164 - seq = read_seqbegin(&xtime_lock); 165 - 166 - usec = do_gettimeoffset(); 167 - 168 - /* 169 - * If time_adjust is negative then NTP is slowing the clock 170 - * so make sure not to go into next possible interval. 171 - * Better to lose some accuracy than have time go backwards.. 172 - */ 173 - if (unlikely(time_adjust < 0)) { 174 - max_ntp_tick = (USEC_PER_SEC / HZ) - tickadj; 175 - usec = min(usec, max_ntp_tick); 176 - } 177 - 178 - sec = xtime.tv_sec; 179 - usec += (xtime.tv_nsec / 1000); 180 - 181 - } while (read_seqretry(&xtime_lock, seq)); 182 - 183 - while (usec >= 1000000) { 184 - usec -= 1000000; 185 - sec++; 186 - } 187 - 188 - tv->tv_sec = sec; 189 - tv->tv_usec = usec; 190 - } 191 - 192 - EXPORT_SYMBOL(do_gettimeofday); 193 - 194 - int do_settimeofday(struct timespec *tv) 195 - { 196 - time_t wtm_sec, sec = tv->tv_sec; 197 - long wtm_nsec, nsec = tv->tv_nsec; 198 - 199 - if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) 200 - return -EINVAL; 201 - 202 - write_seqlock_irq(&xtime_lock); 203 - 204 - /* 205 - * This is revolting. We need to set "xtime" correctly. However, 206 - * the value in this location is the value at the most recent update 207 - * of wall time. Discover what correction gettimeofday() would have 208 - * made, and then undo it! 209 - */ 210 - nsec -= do_gettimeoffset() * NSEC_PER_USEC; 211 - 212 - wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); 213 - wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); 214 - 215 - set_normalized_timespec(&xtime, sec, nsec); 216 - set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); 217 - 218 - ntp_clear(); 219 - write_sequnlock_irq(&xtime_lock); 220 - clock_was_set(); 221 - return 0; 222 - } 223 - 224 - EXPORT_SYMBOL(do_settimeofday); 225 - 226 /* 227 * Gettimeoffset routines. These routines returns the time duration 228 * since last timer interrupt in usecs.
··· 149 unsigned int (*mips_hpt_read)(void); 150 void (*mips_hpt_init)(unsigned int); 151 152 /* 153 * Gettimeoffset routines. These routines returns the time duration 154 * since last timer interrupt in usecs.
+2 -2
arch/mips/mm/init.c
··· 163 164 void __init paging_init(void) 165 { 166 - unsigned long zones_size[] = { 0, }; 167 unsigned long max_dma, high, low; 168 #ifndef CONFIG_FLATMEM 169 - unsigned long zholes_size[] = { 0, }; 170 unsigned long i, j, pfn; 171 #endif 172
··· 163 164 void __init paging_init(void) 165 { 166 + unsigned long zones_size[MAX_NR_ZONES] = { 0, }; 167 unsigned long max_dma, high, low; 168 #ifndef CONFIG_FLATMEM 169 + unsigned long zholes_size[MAX_NR_ZONES] = { 0, }; 170 unsigned long i, j, pfn; 171 #endif 172
-3
arch/mips/pci/Makefile
··· 7 # 8 # PCI bus host bridge specific code 9 # 10 - obj-$(CONFIG_ITE_BOARD_GEN) += ops-it8172.o 11 obj-$(CONFIG_MIPS_BONITO64) += ops-bonito64.o 12 obj-$(CONFIG_MIPS_GT64111) += ops-gt64111.o 13 obj-$(CONFIG_MIPS_GT64120) += ops-gt64120.o ··· 27 obj-$(CONFIG_MIPS_ATLAS) += fixup-atlas.o 28 obj-$(CONFIG_MIPS_COBALT) += fixup-cobalt.o 29 obj-$(CONFIG_MIPS_EV64120) += fixup-ev64120.o 30 - obj-$(CONFIG_MIPS_ITE8172) += fixup-ite8172g.o 31 - obj-$(CONFIG_MIPS_IVR) += fixup-ivr.o 32 obj-$(CONFIG_SOC_AU1500) += fixup-au1000.o ops-au1000.o 33 obj-$(CONFIG_SOC_AU1550) += fixup-au1000.o ops-au1000.o 34 obj-$(CONFIG_SOC_PNX8550) += fixup-pnx8550.o ops-pnx8550.o
··· 7 # 8 # PCI bus host bridge specific code 9 # 10 obj-$(CONFIG_MIPS_BONITO64) += ops-bonito64.o 11 obj-$(CONFIG_MIPS_GT64111) += ops-gt64111.o 12 obj-$(CONFIG_MIPS_GT64120) += ops-gt64120.o ··· 28 obj-$(CONFIG_MIPS_ATLAS) += fixup-atlas.o 29 obj-$(CONFIG_MIPS_COBALT) += fixup-cobalt.o 30 obj-$(CONFIG_MIPS_EV64120) += fixup-ev64120.o 31 obj-$(CONFIG_SOC_AU1500) += fixup-au1000.o ops-au1000.o 32 obj-$(CONFIG_SOC_AU1550) += fixup-au1000.o ops-au1000.o 33 obj-$(CONFIG_SOC_PNX8550) += fixup-pnx8550.o ops-pnx8550.o
-80
arch/mips/pci/fixup-ite8172g.c
··· 1 - /* 2 - * BRIEF MODULE DESCRIPTION 3 - * Board specific pci fixups. 4 - * 5 - * Copyright 2000 MontaVista Software Inc. 6 - * Author: MontaVista Software, Inc. 7 - * ppopov@mvista.com or source@mvista.com 8 - * 9 - * This program is free software; you can redistribute it and/or modify it 10 - * under the terms of the GNU General Public License as published by the 11 - * Free Software Foundation; either version 2 of the License, or (at your 12 - * option) any later version. 13 - * 14 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 15 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 17 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 20 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 21 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 - * 25 - * You should have received a copy of the GNU General Public License along 26 - * with this program; if not, write to the Free Software Foundation, Inc., 27 - * 675 Mass Ave, Cambridge, MA 02139, USA. 28 - */ 29 - #include <linux/types.h> 30 - #include <linux/pci.h> 31 - #include <linux/kernel.h> 32 - #include <linux/init.h> 33 - 34 - #include <asm/it8172/it8172.h> 35 - #include <asm/it8172/it8172_pci.h> 36 - #include <asm/it8172/it8172_int.h> 37 - 38 - /* 39 - * Shortcuts 40 - */ 41 - #define INTA IT8172_PCI_INTA_IRQ 42 - #define INTB IT8172_PCI_INTB_IRQ 43 - #define INTC IT8172_PCI_INTC_IRQ 44 - #define INTD IT8172_PCI_INTD_IRQ 45 - 46 - static const int internal_func_irqs[7] __initdata = { 47 - IT8172_AC97_IRQ, 48 - IT8172_DMA_IRQ, 49 - IT8172_CDMA_IRQ, 50 - IT8172_USB_IRQ, 51 - IT8172_BRIDGE_MASTER_IRQ, 52 - IT8172_IDE_IRQ, 53 - IT8172_MC68K_IRQ 54 - }; 55 - 56 - static char irq_tab_ite8172g[][5] __initdata = { 57 - [0x10] = { 0, INTA, INTB, INTC, INTD }, 58 - [0x11] = { 0, INTA, INTB, INTC, INTD }, 59 - [0x12] = { 0, INTB, INTC, INTD, INTA }, 60 - [0x13] = { 0, INTC, INTD, INTA, INTB }, 61 - [0x14] = { 0, INTD, INTA, INTB, INTC }, 62 - }; 63 - 64 - int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 65 - { 66 - /* 67 - * Internal device 1 is actually 7 different internal devices on the 68 - * IT8172G (a multifunction device). 69 - */ 70 - if (slot == 1) 71 - return internal_func_irqs[PCI_FUNC(dev->devfn)]; 72 - 73 - return irq_tab_ite8172g[slot][pin]; 74 - } 75 - 76 - /* Do platform specific device initialization at pci_enable_device() time */ 77 - int pcibios_plat_dev_init(struct pci_dev *dev) 78 - { 79 - return 0; 80 - }
···
-75
arch/mips/pci/fixup-ivr.c
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * Globespan IVR board-specific pci fixups. 5 - * 6 - * Copyright 2000 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * ppopov@mvista.com or source@mvista.com 9 - * 10 - * This program is free software; you can redistribute it and/or modify it 11 - * under the terms of the GNU General Public License as published by the 12 - * Free Software Foundation; either version 2 of the License, or (at your 13 - * option) any later version. 14 - * 15 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 - * 26 - * You should have received a copy of the GNU General Public License along 27 - * with this program; if not, write to the Free Software Foundation, Inc., 28 - * 675 Mass Ave, Cambridge, MA 02139, USA. 29 - */ 30 - #include <linux/types.h> 31 - #include <linux/pci.h> 32 - #include <linux/kernel.h> 33 - #include <linux/init.h> 34 - 35 - #include <asm/it8172/it8172.h> 36 - #include <asm/it8172/it8172_pci.h> 37 - #include <asm/it8172/it8172_int.h> 38 - 39 - /* 40 - * Shortcuts 41 - */ 42 - #define INTA IT8172_PCI_INTA_IRQ 43 - #define INTB IT8172_PCI_INTB_IRQ 44 - #define INTC IT8172_PCI_INTC_IRQ 45 - #define INTD IT8172_PCI_INTD_IRQ 46 - 47 - static const int internal_func_irqs[7] __initdata = { 48 - IT8172_AC97_IRQ, 49 - IT8172_DMA_IRQ, 50 - IT8172_CDMA_IRQ, 51 - IT8172_USB_IRQ, 52 - IT8172_BRIDGE_MASTER_IRQ, 53 - IT8172_IDE_IRQ, 54 - IT8172_MC68K_IRQ 55 - }; 56 - 57 - static char irq_tab_ivr[][5] __initdata = { 58 - [0x11] = { INTC, INTC, INTD, INTA, INTB }, /* Realtek RTL-8139 */ 59 - [0x12] = { INTB, INTB, INTB, INTC, INTC }, /* IVR slot */ 60 - [0x13] = { INTA, INTA, INTB, INTC, INTD } /* Expansion slot */ 61 - }; 62 - 63 - int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 64 - { 65 - if (slot == 1) 66 - return internal_func_irqs[PCI_FUNC(dev->devfn)]; 67 - 68 - return irq_tab_ivr[slot][pin]; 69 - } 70 - 71 - /* Do platform specific device initialization at pci_enable_device() time */ 72 - int pcibios_plat_dev_init(struct pci_dev *dev) 73 - { 74 - return 0; 75 - }
···
+22 -1
arch/mips/pci/fixup-sb1250.c
··· 1 /* 2 * arch/mips/pci/fixup-sb1250.c 3 * 4 - * Copyright (C) 2004 MIPS Technologies, Inc. All rights reserved. 5 * Author: Maciej W. Rozycki <macro@mips.com> 6 * 7 * This program is free software; you can redistribute it and/or ··· 14 #include <linux/pci.h> 15 16 /* 17 * The BCM1250, etc. PCI/HT bridge reports as a host bridge. 18 */ 19 static void __init quirk_sb1250_ht(struct pci_dev *dev) ··· 33 } 34 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SIBYTE, PCI_DEVICE_ID_BCM1250_HT, 35 quirk_sb1250_ht);
··· 1 /* 2 * arch/mips/pci/fixup-sb1250.c 3 * 4 + * Copyright (C) 2004, 2006 MIPS Technologies, Inc. All rights reserved. 5 * Author: Maciej W. Rozycki <macro@mips.com> 6 * 7 * This program is free software; you can redistribute it and/or ··· 14 #include <linux/pci.h> 15 16 /* 17 + * Set the the BCM1250, etc. PCI host bridge's TRDY timeout 18 + * to the finite max. 19 + */ 20 + static void __init quirk_sb1250_pci(struct pci_dev *dev) 21 + { 22 + pci_write_config_byte(dev, 0x40, 0xff); 23 + } 24 + DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SIBYTE, PCI_DEVICE_ID_BCM1250_PCI, 25 + quirk_sb1250_pci); 26 + 27 + /* 28 * The BCM1250, etc. PCI/HT bridge reports as a host bridge. 29 */ 30 static void __init quirk_sb1250_ht(struct pci_dev *dev) ··· 22 } 23 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SIBYTE, PCI_DEVICE_ID_BCM1250_HT, 24 quirk_sb1250_ht); 25 + 26 + /* 27 + * Set the the SP1011 HT/PCI bridge's TRDY timeout to the finite max. 28 + */ 29 + static void __init quirk_sp1011(struct pci_dev *dev) 30 + { 31 + pci_write_config_byte(dev, 0x64, 0xff); 32 + } 33 + DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SIPACKETS, PCI_DEVICE_ID_SP1011, 34 + quirk_sp1011);
-213
arch/mips/pci/ops-it8172.c
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * IT8172 system controller specific pci support. 5 - * 6 - * Copyright 2000 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * ppopov@mvista.com or source@mvista.com 9 - * 10 - * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org) 11 - * 12 - * This program is free software; you can redistribute it and/or modify it 13 - * under the terms of the GNU General Public License as published by the 14 - * Free Software Foundation; either version 2 of the License, or (at your 15 - * option) any later version. 16 - * 17 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 18 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 20 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 23 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 24 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 - * 28 - * You should have received a copy of the GNU General Public License along 29 - * with this program; if not, write to the Free Software Foundation, Inc., 30 - * 675 Mass Ave, Cambridge, MA 02139, USA. 31 - */ 32 - #include <linux/types.h> 33 - #include <linux/pci.h> 34 - #include <linux/kernel.h> 35 - #include <linux/init.h> 36 - 37 - #include <asm/it8172/it8172.h> 38 - #include <asm/it8172/it8172_pci.h> 39 - 40 - #define PCI_ACCESS_READ 0 41 - #define PCI_ACCESS_WRITE 1 42 - 43 - #undef DEBUG 44 - #ifdef DEBUG 45 - #define DBG(x...) printk(x) 46 - #else 47 - #define DBG(x...) 48 - #endif 49 - 50 - static struct resource pci_mem_resource_1; 51 - 52 - static struct resource pci_io_resource = { 53 - .start = 0x14018000, 54 - .end = 0x17FFFFFF, 55 - .name = "io pci IO space", 56 - .flags = IORESOURCE_IO 57 - }; 58 - 59 - static struct resource pci_mem_resource_0 = { 60 - .start = 0x10101000, 61 - .end = 0x13FFFFFF, 62 - .name = "ext pci memory space 0/1", 63 - .flags = IORESOURCE_MEM, 64 - .parent = &pci_mem_resource_0, 65 - .sibling = NULL, 66 - .child = &pci_mem_resource_1 67 - }; 68 - 69 - static struct resource pci_mem_resource_1 = { 70 - .start = 0x1A000000, 71 - .end = 0x1FBFFFFF, 72 - .name = "ext pci memory space 2/3", 73 - .flags = IORESOURCE_MEM, 74 - .parent = &pci_mem_resource_0 75 - }; 76 - 77 - extern struct pci_ops it8172_pci_ops; 78 - 79 - struct pci_controller it8172_controller = { 80 - .pci_ops = &it8172_pci_ops, 81 - .io_resource = &pci_io_resource, 82 - .mem_resource = &pci_mem_resource_0, 83 - }; 84 - 85 - static int it8172_pcibios_config_access(unsigned char access_type, 86 - struct pci_bus *bus, 87 - unsigned int devfn, int where, 88 - u32 * data) 89 - { 90 - /* 91 - * config cycles are on 4 byte boundary only 92 - */ 93 - 94 - /* Setup address */ 95 - IT_WRITE(IT_CONFADDR, (bus->number << IT_BUSNUM_SHF) | 96 - (devfn << IT_FUNCNUM_SHF) | (where & ~0x3)); 97 - 98 - if (access_type == PCI_ACCESS_WRITE) { 99 - IT_WRITE(IT_CONFDATA, *data); 100 - } else { 101 - IT_READ(IT_CONFDATA, *data); 102 - } 103 - 104 - /* 105 - * Revisit: check for master or target abort. 106 - */ 107 - return 0; 108 - } 109 - 110 - 111 - /* 112 - * We can't address 8 and 16 bit words directly. Instead we have to 113 - * read/write a 32bit word and mask/modify the data we actually want. 114 - */ 115 - static write_config(struct pci_bus *bus, unsigned int devfn, int where, 116 - int size, u32 val) 117 - { 118 - u32 data = 0; 119 - 120 - switch (size) { 121 - case 1: 122 - if (it8172_pcibios_config_access 123 - (PCI_ACCESS_READ, dev, where, &data)) 124 - return -1; 125 - 126 - *val = (data >> ((where & 3) << 3)) & 0xff; 127 - 128 - return PCIBIOS_SUCCESSFUL; 129 - 130 - case 2: 131 - 132 - if (where & 1) 133 - return PCIBIOS_BAD_REGISTER_NUMBER; 134 - 135 - if (it8172_pcibios_config_access 136 - (PCI_ACCESS_READ, dev, where, &data)) 137 - return -1; 138 - 139 - *val = (data >> ((where & 3) << 3)) & 0xffff; 140 - DBG("cfg read word: bus %d dev_fn %x where %x: val %x\n", 141 - dev->bus->number, dev->devfn, where, *val); 142 - 143 - return PCIBIOS_SUCCESSFUL; 144 - 145 - case 4: 146 - 147 - if (where & 3) 148 - return PCIBIOS_BAD_REGISTER_NUMBER; 149 - 150 - if (it8172_pcibios_config_access 151 - (PCI_ACCESS_READ, dev, where, &data)) 152 - return -1; 153 - 154 - *val = data; 155 - 156 - return PCIBIOS_SUCCESSFUL; 157 - } 158 - } 159 - 160 - 161 - static write_config(struct pci_bus *bus, unsigned int devfn, int where, 162 - int size, u32 val) 163 - { 164 - u32 data = 0; 165 - 166 - switch (size) { 167 - case 1: 168 - if (it8172_pcibios_config_access 169 - (PCI_ACCESS_READ, dev, where, &data)) 170 - return -1; 171 - 172 - data = (data & ~(0xff << ((where & 3) << 3))) | 173 - (val << ((where & 3) << 3)); 174 - 175 - if (it8172_pcibios_config_access 176 - (PCI_ACCESS_WRITE, dev, where, &data)) 177 - return -1; 178 - 179 - return PCIBIOS_SUCCESSFUL; 180 - 181 - case 2: 182 - if (where & 1) 183 - return PCIBIOS_BAD_REGISTER_NUMBER; 184 - 185 - if (it8172_pcibios_config_access 186 - (PCI_ACCESS_READ, dev, where, &data)) 187 - eturn - 1; 188 - 189 - data = (data & ~(0xffff << ((where & 3) << 3))) | 190 - (val << ((where & 3) << 3)); 191 - 192 - if (it8172_pcibios_config_access 193 - (PCI_ACCESS_WRITE, dev, where, &data)) 194 - return -1; 195 - 196 - return PCIBIOS_SUCCESSFUL; 197 - 198 - case 4: 199 - if (where & 3) 200 - return PCIBIOS_BAD_REGISTER_NUMBER; 201 - 202 - if (it8172_pcibios_config_access 203 - (PCI_ACCESS_WRITE, dev, where, &val)) 204 - return -1; 205 - 206 - return PCIBIOS_SUCCESSFUL; 207 - } 208 - } 209 - 210 - struct pci_ops it8172_pci_ops = { 211 - .read = read_config, 212 - .write = write_config, 213 - };
···
+1 -1
arch/mips/sibyte/bcm1480/irq.c
··· 482 write_c0_compare(read_c0_count()); 483 #endif 484 485 - pending = read_c0_cause(); 486 487 #ifdef CONFIG_SIBYTE_BCM1480_PROF 488 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
··· 482 write_c0_compare(read_c0_count()); 483 #endif 484 485 + pending = read_c0_cause() & read_c0_status(); 486 487 #ifdef CONFIG_SIBYTE_BCM1480_PROF 488 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
+5 -2
arch/mips/sibyte/sb1250/irq.c
··· 442 * blasting the high 32 bits. 443 */ 444 445 - pending = read_c0_cause(); 446 447 #ifdef CONFIG_SIBYTE_SB1250_PROF 448 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ ··· 476 R_IMR_INTERRUPT_STATUS_BASE))); 477 if (mask) 478 do_IRQ(fls64(mask) - 1, regs); 479 - } 480 }
··· 442 * blasting the high 32 bits. 443 */ 444 445 + pending = read_c0_cause() & read_c0_status(); 446 447 #ifdef CONFIG_SIBYTE_SB1250_PROF 448 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ ··· 476 R_IMR_INTERRUPT_STATUS_BASE))); 477 if (mask) 478 do_IRQ(fls64(mask) - 1, regs); 479 + else 480 + spurious_interrupt(regs); 481 + } else 482 + spurious_interrupt(regs); 483 }
-1
drivers/char/.gitignore
··· 1 consolemap_deftbl.c 2 defkeymap.c 3 - qtronixmap.c
··· 1 consolemap_deftbl.c 2 defkeymap.c
-30
drivers/char/Kconfig
··· 371 If you have an Alchemy AU1000 processor (MIPS based) and you want 372 to use a console on a serial port, say Y. Otherwise, say N. 373 374 - config QTRONIX_KEYBOARD 375 - bool "Enable Qtronix 990P Keyboard Support" 376 - depends on IT8712 377 - help 378 - Images of Qtronix keyboards are at 379 - <http://www.qtronix.com/keyboard.html>. 380 - 381 - config IT8172_CIR 382 - bool 383 - depends on QTRONIX_KEYBOARD 384 - default y 385 - 386 - config IT8172_SCR0 387 - bool "Enable Smart Card Reader 0 Support " 388 - depends on IT8712 389 - help 390 - Say Y here to support smart-card reader 0 (SCR0) on the Integrated 391 - Technology Express, Inc. ITE8172 SBC. Vendor page at 392 - <http://www.ite.com.tw/ia/brief_it8172bsp.htm>; picture of the 393 - board at <http://www.mvista.com/partners/semiconductor/ite.html>. 394 - 395 - config IT8172_SCR1 396 - bool "Enable Smart Card Reader 1 Support " 397 - depends on IT8712 398 - help 399 - Say Y here to support smart-card reader 1 (SCR1) on the Integrated 400 - Technology Express, Inc. ITE8172 SBC. Vendor page at 401 - <http://www.ite.com.tw/ia/brief_it8172bsp.htm>; picture of the 402 - board at <http://www.mvista.com/partners/semiconductor/ite.html>. 403 - 404 config A2232 405 tristate "Commodore A2232 serial support (EXPERIMENTAL)" 406 depends on EXPERIMENTAL && ZORRO && BROKEN_ON_SMP
··· 371 If you have an Alchemy AU1000 processor (MIPS based) and you want 372 to use a console on a serial port, say Y. Otherwise, say N. 373 374 config A2232 375 tristate "Commodore A2232 serial support (EXPERIMENTAL)" 376 depends on EXPERIMENTAL && ZORRO && BROKEN_ON_SMP
+2 -4
drivers/char/Makefile
··· 102 obj-$(CONFIG_TCG_TPM) += tpm/ 103 104 # Files generated that shall be removed upon make clean 105 - clean-files := consolemap_deftbl.c defkeymap.c qtronixmap.c 106 107 quiet_cmd_conmk = CONMK $@ 108 cmd_conmk = scripts/conmakehash $< > $@ ··· 112 113 $(obj)/defkeymap.o: $(obj)/defkeymap.c 114 115 - $(obj)/qtronixmap.o: $(obj)/qtronixmap.c 116 - 117 # Uncomment if you're changing the keymap and have an appropriate 118 # loadkeys version for the map. By default, we'll use the shipped 119 # versions. ··· 119 120 ifdef GENERATE_KEYMAP 121 122 - $(obj)/defkeymap.c $(obj)/qtronixmap.c: $(obj)/%.c: $(src)/%.map 123 loadkeys --mktable $< > $@.tmp 124 sed -e 's/^static *//' $@.tmp > $@ 125 rm $@.tmp
··· 102 obj-$(CONFIG_TCG_TPM) += tpm/ 103 104 # Files generated that shall be removed upon make clean 105 + clean-files := consolemap_deftbl.c defkeymap.c 106 107 quiet_cmd_conmk = CONMK $@ 108 cmd_conmk = scripts/conmakehash $< > $@ ··· 112 113 $(obj)/defkeymap.o: $(obj)/defkeymap.c 114 115 # Uncomment if you're changing the keymap and have an appropriate 116 # loadkeys version for the map. By default, we'll use the shipped 117 # versions. ··· 121 122 ifdef GENERATE_KEYMAP 123 124 + $(obj)/defkeymap.c $(obj)/%.c: $(src)/%.map 125 loadkeys --mktable $< > $@.tmp 126 sed -e 's/^static *//' $@.tmp > $@ 127 rm $@.tmp
-419
drivers/char/ite_gpio.c
··· 1 - /* 2 - * FILE NAME ite_gpio.c 3 - * 4 - * BRIEF MODULE DESCRIPTION 5 - * API for ITE GPIO device. 6 - * Driver for ITE GPIO device. 7 - * 8 - * Author: MontaVista Software, Inc. <source@mvista.com> 9 - * Hai-Pao Fan <haipao@mvista.com> 10 - * 11 - * Copyright 2001 MontaVista Software Inc. 12 - * 13 - * This program is free software; you can redistribute it and/or modify it 14 - * under the terms of the GNU General Public License as published by the 15 - * Free Software Foundation; either version 2 of the License, or (at your 16 - * option) any later version. 17 - * 18 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 19 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 20 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 21 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 22 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 24 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 25 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 - * 29 - * You should have received a copy of the GNU General Public License along 30 - * with this program; if not, write to the Free Software Foundation, Inc., 31 - * 675 Mass Ave, Cambridge, MA 02139, USA. 32 - */ 33 - #include <linux/module.h> 34 - #include <linux/types.h> 35 - #include <linux/kernel.h> 36 - #include <linux/miscdevice.h> 37 - #include <linux/init.h> 38 - #include <linux/ioport.h> 39 - #include <asm/uaccess.h> 40 - #include <asm/addrspace.h> 41 - #include <asm/it8172/it8172_int.h> 42 - #include <linux/sched.h> 43 - #include <linux/ite_gpio.h> 44 - 45 - #define ite_gpio_base 0x14013800 46 - 47 - #define ITE_GPADR (*(volatile __u8 *)(0x14013800 + KSEG1)) 48 - #define ITE_GPBDR (*(volatile __u8 *)(0x14013808 + KSEG1)) 49 - #define ITE_GPCDR (*(volatile __u8 *)(0x14013810 + KSEG1)) 50 - #define ITE_GPACR (*(volatile __u16 *)(0x14013802 + KSEG1)) 51 - #define ITE_GPBCR (*(volatile __u16 *)(0x1401380a + KSEG1)) 52 - #define ITE_GPCCR (*(volatile __u16 *)(0x14013812 + KSEG1)) 53 - #define ITE_GPAICR (*(volatile __u16 *)(0x14013804 + KSEG1)) 54 - #define ITE_GPBICR (*(volatile __u16 *)(0x1401380c + KSEG1)) 55 - #define ITE_GPCICR (*(volatile __u16 *)(0x14013814 + KSEG1)) 56 - #define ITE_GPAISR (*(volatile __u8 *)(0x14013806 + KSEG1)) 57 - #define ITE_GPBISR (*(volatile __u8 *)(0x1401380e + KSEG1)) 58 - #define ITE_GPCISR (*(volatile __u8 *)(0x14013816 + KSEG1)) 59 - #define ITE_GCR (*(volatile __u8 *)(0x14013818 + KSEG1)) 60 - 61 - #define MAX_GPIO_LINE 21 62 - static int ite_gpio_irq=IT8172_GPIO_IRQ; 63 - 64 - static long ite_irq_counter[MAX_GPIO_LINE]; 65 - wait_queue_head_t ite_gpio_wait[MAX_GPIO_LINE]; 66 - static int ite_gpio_irq_pending[MAX_GPIO_LINE]; 67 - 68 - static int ite_gpio_debug=0; 69 - #define DEB(x) if (ite_gpio_debug>=1) x 70 - 71 - int ite_gpio_in(__u32 device, __u32 mask, volatile __u32 *data) 72 - { 73 - DEB(printk("ite_gpio_in mask=0x%x\n",mask)); 74 - 75 - switch (device) { 76 - case ITE_GPIO_PORTA: 77 - ITE_GPACR = (__u16)mask; /* 0xffff */ 78 - *data = ITE_GPADR; 79 - break; 80 - case ITE_GPIO_PORTB: 81 - ITE_GPBCR = (__u16)mask; /* 0xffff */ 82 - *data = ITE_GPBDR; 83 - break; 84 - case ITE_GPIO_PORTC: 85 - ITE_GPCCR = (__u16)mask; /* 0x03ff */ 86 - *data = ITE_GPCDR; 87 - break; 88 - default: 89 - return -EFAULT; 90 - } 91 - 92 - return 0; 93 - } 94 - 95 - 96 - int ite_gpio_out(__u32 device, __u32 mask, __u32 data) 97 - { 98 - switch (device) { 99 - case ITE_GPIO_PORTA: 100 - ITE_GPACR = (__u16)mask; /* 0x5555 */ 101 - ITE_GPADR = (__u8)data; 102 - break; 103 - case ITE_GPIO_PORTB: 104 - ITE_GPBCR = (__u16)mask; /* 0x5555 */ 105 - ITE_GPBDR = (__u8)data; 106 - break; 107 - case ITE_GPIO_PORTC: 108 - ITE_GPCCR = (__u16)mask; /* 0x0155 */ 109 - ITE_GPCDR = (__u8)data; 110 - break; 111 - default: 112 - return -EFAULT; 113 - } 114 - 115 - return 0; 116 - } 117 - 118 - int ite_gpio_int_ctrl(__u32 device, __u32 mask, __u32 data) 119 - { 120 - switch (device) { 121 - case ITE_GPIO_PORTA: 122 - ITE_GPAICR = (ITE_GPAICR & ~mask) | (data & mask); 123 - break; 124 - case ITE_GPIO_PORTB: 125 - ITE_GPBICR = (ITE_GPBICR & ~mask) | (data & mask); 126 - break; 127 - case ITE_GPIO_PORTC: 128 - ITE_GPCICR = (ITE_GPCICR & ~mask) | (data & mask); 129 - break; 130 - default: 131 - return -EFAULT; 132 - } 133 - 134 - return 0; 135 - } 136 - 137 - int ite_gpio_in_status(__u32 device, __u32 mask, volatile __u32 *data) 138 - { 139 - int ret=-1; 140 - 141 - if ((MAX_GPIO_LINE > *data) && (*data >= 0)) 142 - ret=ite_gpio_irq_pending[*data]; 143 - 144 - DEB(printk("ite_gpio_in_status %d ret=%d\n",*data, ret)); 145 - 146 - switch (device) { 147 - case ITE_GPIO_PORTA: 148 - *data = ITE_GPAISR & mask; 149 - break; 150 - case ITE_GPIO_PORTB: 151 - *data = ITE_GPBISR & mask; 152 - break; 153 - case ITE_GPIO_PORTC: 154 - *data = ITE_GPCISR & mask; 155 - break; 156 - default: 157 - return -EFAULT; 158 - } 159 - 160 - return ret; 161 - } 162 - 163 - int ite_gpio_out_status(__u32 device, __u32 mask, __u32 data) 164 - { 165 - switch (device) { 166 - case ITE_GPIO_PORTA: 167 - ITE_GPAISR = (ITE_GPAISR & ~mask) | (data & mask); 168 - break; 169 - case ITE_GPIO_PORTB: 170 - ITE_GPBISR = (ITE_GPBISR & ~mask) | (data & mask); 171 - break; 172 - case ITE_GPIO_PORTC: 173 - ITE_GPCISR = (ITE_GPCISR & ~mask) | (data & mask); 174 - break; 175 - default: 176 - return -EFAULT; 177 - } 178 - 179 - return 0; 180 - } 181 - 182 - int ite_gpio_gen_ctrl(__u32 device, __u32 mask, __u32 data) 183 - { 184 - ITE_GCR = (ITE_GCR & ~mask) | (data & mask); 185 - 186 - return 0; 187 - } 188 - 189 - int ite_gpio_int_wait (__u32 device, __u32 mask, __u32 data) 190 - { 191 - int i,line=0, ret=0; 192 - unsigned long flags; 193 - 194 - switch (device) { 195 - case ITE_GPIO_PORTA: 196 - line = data & mask; 197 - break; 198 - case ITE_GPIO_PORTB: 199 - line = (data & mask) <<8; 200 - break; 201 - case ITE_GPIO_PORTC: 202 - line = (data & mask) <<16; 203 - break; 204 - } 205 - for (i=MAX_GPIO_LINE-1; i >= 0; i--) { 206 - if ( (line) & (1 << i)) 207 - break; 208 - } 209 - 210 - DEB(printk("wait device=0x%d mask=0x%x data=0x%x index %d\n", 211 - device, mask, data, i)); 212 - 213 - if (line & ~(1<<i)) 214 - return -EFAULT; 215 - 216 - if (ite_gpio_irq_pending[i]==1) 217 - return -EFAULT; 218 - 219 - save_flags (flags); 220 - cli(); 221 - ite_gpio_irq_pending[i] = 1; 222 - ret = interruptible_sleep_on_timeout(&ite_gpio_wait[i], 3*HZ); 223 - restore_flags (flags); 224 - ite_gpio_irq_pending[i] = 0; 225 - 226 - return ret; 227 - } 228 - 229 - EXPORT_SYMBOL(ite_gpio_in); 230 - EXPORT_SYMBOL(ite_gpio_out); 231 - EXPORT_SYMBOL(ite_gpio_int_ctrl); 232 - EXPORT_SYMBOL(ite_gpio_in_status); 233 - EXPORT_SYMBOL(ite_gpio_out_status); 234 - EXPORT_SYMBOL(ite_gpio_gen_ctrl); 235 - EXPORT_SYMBOL(ite_gpio_int_wait); 236 - 237 - static int ite_gpio_open(struct inode *inode, struct file *file) 238 - { 239 - return 0; 240 - } 241 - 242 - 243 - static int ite_gpio_release(struct inode *inode, struct file *file) 244 - { 245 - return 0; 246 - } 247 - 248 - 249 - static int ite_gpio_ioctl(struct inode *inode, struct file *file, 250 - unsigned int cmd, unsigned long arg) 251 - { 252 - static struct ite_gpio_ioctl_data ioctl_data; 253 - 254 - if (copy_from_user(&ioctl_data, (struct ite_gpio_ioctl_data *)arg, 255 - sizeof(ioctl_data))) 256 - return -EFAULT; 257 - if ((ioctl_data.device < ITE_GPIO_PORTA) || 258 - (ioctl_data.device > ITE_GPIO_PORTC) ) 259 - return -EFAULT; 260 - 261 - switch(cmd) { 262 - case ITE_GPIO_IN: 263 - if (ite_gpio_in(ioctl_data.device, ioctl_data.mask, 264 - &ioctl_data.data)) 265 - return -EFAULT; 266 - 267 - if (copy_to_user((struct ite_gpio_ioctl_data *)arg, 268 - &ioctl_data, sizeof(ioctl_data))) 269 - return -EFAULT; 270 - break; 271 - 272 - case ITE_GPIO_OUT: 273 - return ite_gpio_out(ioctl_data.device, 274 - ioctl_data.mask, ioctl_data.data); 275 - break; 276 - 277 - case ITE_GPIO_INT_CTRL: 278 - return ite_gpio_int_ctrl(ioctl_data.device, 279 - ioctl_data.mask, ioctl_data.data); 280 - break; 281 - 282 - case ITE_GPIO_IN_STATUS: 283 - if (ite_gpio_in_status(ioctl_data.device, ioctl_data.mask, 284 - &ioctl_data.data)) 285 - return -EFAULT; 286 - if (copy_to_user((struct ite_gpio_ioctl_data *)arg, 287 - &ioctl_data, sizeof(ioctl_data))) 288 - return -EFAULT; 289 - break; 290 - 291 - case ITE_GPIO_OUT_STATUS: 292 - return ite_gpio_out_status(ioctl_data.device, 293 - ioctl_data.mask, ioctl_data.data); 294 - break; 295 - 296 - case ITE_GPIO_GEN_CTRL: 297 - return ite_gpio_gen_ctrl(ioctl_data.device, 298 - ioctl_data.mask, ioctl_data.data); 299 - break; 300 - 301 - case ITE_GPIO_INT_WAIT: 302 - return ite_gpio_int_wait(ioctl_data.device, 303 - ioctl_data.mask, ioctl_data.data); 304 - break; 305 - 306 - default: 307 - return -ENOIOCTLCMD; 308 - 309 - } 310 - 311 - return 0; 312 - } 313 - 314 - static void ite_gpio_irq_handler(int this_irq, void *dev_id, 315 - struct pt_regs *regs) 316 - { 317 - int i,line; 318 - 319 - line = ITE_GPCISR & 0x1f; 320 - for (i=4; i >=0; i--) { 321 - if ( line & (1 << i)) { 322 - ++ite_irq_counter[i+16]; 323 - ite_gpio_irq_pending[i+16] = 2; 324 - wake_up_interruptible(&ite_gpio_wait[i+16]); 325 - 326 - DEB(printk("interrupt 0x%x %d\n", &ite_gpio_wait[i+16], i+16)); 327 - 328 - ITE_GPCISR = ITE_GPCISR & (1<<i); 329 - return; 330 - } 331 - } 332 - line = ITE_GPBISR; 333 - for (i=7; i >= 0; i--) { 334 - if ( line & (1 << i)) { 335 - ++ite_irq_counter[i+8]; 336 - ite_gpio_irq_pending[i+8] = 2; 337 - wake_up_interruptible(&ite_gpio_wait[i+8]); 338 - 339 - DEB(printk("interrupt 0x%x %d\n",ITE_GPBISR, i+8)); 340 - 341 - ITE_GPBISR = ITE_GPBISR & (1<<i); 342 - return; 343 - } 344 - } 345 - line = ITE_GPAISR; 346 - for (i=7; i >= 0; i--) { 347 - if ( line & (1 << i)) { 348 - ++ite_irq_counter[i]; 349 - ite_gpio_irq_pending[i] = 2; 350 - wake_up_interruptible(&ite_gpio_wait[i]); 351 - 352 - DEB(printk("interrupt 0x%x %d\n",ITE_GPAISR, i)); 353 - 354 - ITE_GPAISR = ITE_GPAISR & (1<<i); 355 - return; 356 - } 357 - } 358 - } 359 - 360 - static const struct file_operations ite_gpio_fops = { 361 - .owner = THIS_MODULE, 362 - .ioctl = ite_gpio_ioctl, 363 - .open = ite_gpio_open, 364 - .release = ite_gpio_release, 365 - }; 366 - 367 - static struct miscdevice ite_gpio_miscdev = { 368 - MISC_DYNAMIC_MINOR, 369 - "ite_gpio", 370 - &ite_gpio_fops 371 - }; 372 - 373 - int __init ite_gpio_init(void) 374 - { 375 - int i; 376 - 377 - if (misc_register(&ite_gpio_miscdev)) 378 - return -ENODEV; 379 - 380 - if (!request_region(ite_gpio_base, 0x1c, "ITE GPIO")) 381 - { 382 - misc_deregister(&ite_gpio_miscdev); 383 - return -EIO; 384 - } 385 - 386 - /* initialize registers */ 387 - ITE_GPACR = 0xffff; 388 - ITE_GPBCR = 0xffff; 389 - ITE_GPCCR = 0xffff; 390 - ITE_GPAICR = 0x00ff; 391 - ITE_GPBICR = 0x00ff; 392 - ITE_GPCICR = 0x00ff; 393 - ITE_GCR = 0; 394 - 395 - for (i = 0; i < MAX_GPIO_LINE; i++) { 396 - ite_gpio_irq_pending[i]=0; 397 - init_waitqueue_head(&ite_gpio_wait[i]); 398 - } 399 - 400 - if (request_irq(ite_gpio_irq, ite_gpio_irq_handler, IRQF_SHARED, "gpio", 0) < 0) { 401 - misc_deregister(&ite_gpio_miscdev); 402 - release_region(ite_gpio_base, 0x1c); 403 - return 0; 404 - } 405 - 406 - printk("GPIO at 0x%x (irq = %d)\n", ite_gpio_base, ite_gpio_irq); 407 - 408 - return 0; 409 - } 410 - 411 - static void __exit ite_gpio_exit(void) 412 - { 413 - misc_deregister(&ite_gpio_miscdev); 414 - } 415 - 416 - module_init(ite_gpio_init); 417 - module_exit(ite_gpio_exit); 418 - 419 - MODULE_LICENSE("GPL");
···
-265
drivers/char/qtronixmap.c_shipped
··· 1 - 2 - /* Do not edit this file! It was automatically generated by */ 3 - /* loadkeys --mktable defkeymap.map > defkeymap.c */ 4 - 5 - #include <linux/types.h> 6 - #include <linux/keyboard.h> 7 - #include <linux/kd.h> 8 - 9 - u_short plain_map[NR_KEYS] = { 10 - 0xf200, 0xf060, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 11 - 0xf037, 0xf038, 0xf039, 0xf030, 0xf02d, 0xf03d, 0xf200, 0xf07f, 12 - 0xf009, 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 13 - 0xfb69, 0xfb6f, 0xfb70, 0xf05b, 0xf05d, 0xf05c, 0xf207, 0xfb61, 14 - 0xfb73, 0xfb64, 0xfb66, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 15 - 0xf03b, 0xf027, 0xf060, 0xf201, 0xf700, 0xf200, 0xfb7a, 0xfb78, 16 - 0xfb63, 0xfb76, 0xfb62, 0xfb6e, 0xfb6d, 0xf02c, 0xf02e, 0xf02f, 17 - 0xf200, 0xf700, 0xf702, 0xf200, 0xf703, 0xf020, 0xf703, 0xf200, 18 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 19 - 0xf200, 0xf200, 0xf200, 0xf115, 0xf07f, 0xf200, 0xf200, 0xf601, 20 - 0xf200, 0xf200, 0xf200, 0xf603, 0xf600, 0xf118, 0xf119, 0xf200, 21 - 0xf200, 0xf602, 0xf208, 0xf02d, 0xf02b, 0xf30c, 0xf02e, 0xf30d, 22 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 23 - 0xf200, 0xf200, 0xf200, 0xf117, 0xf600, 0xf200, 0xf01b, 0xf200, 24 - 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106, 0xf107, 25 - 0xf108, 0xf109, 0xf200, 0xf200, 0xf200, 0xf200, 0xf11d, 0xf200, 26 - }; 27 - 28 - u_short shift_map[NR_KEYS] = { 29 - 0xf200, 0xf07e, 0xf021, 0xf040, 0xf023, 0xf024, 0xf025, 0xf05e, 30 - 0xf026, 0xf02a, 0xf028, 0xf029, 0xf05f, 0xf02b, 0xf200, 0xf07f, 31 - 0xf009, 0xfb51, 0xfb57, 0xfb45, 0xfb52, 0xfb54, 0xfb59, 0xfb55, 32 - 0xfb49, 0xfb4f, 0xfb50, 0xf07b, 0xf07d, 0xf07c, 0xf207, 0xfb41, 33 - 0xfb53, 0xfb44, 0xfb46, 0xfb47, 0xfb48, 0xfb4a, 0xfb4b, 0xfb4c, 34 - 0xf03a, 0xf022, 0xf07e, 0xf201, 0xf700, 0xf200, 0xfb5a, 0xfb58, 35 - 0xfb43, 0xfb56, 0xfb42, 0xfb4e, 0xfb4d, 0xf03c, 0xf03e, 0xf03f, 36 - 0xf200, 0xf700, 0xf702, 0xf200, 0xf703, 0xf020, 0xf703, 0xf200, 37 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 38 - 0xf200, 0xf200, 0xf200, 0xf115, 0xf07f, 0xf200, 0xf200, 0xf601, 39 - 0xf200, 0xf200, 0xf200, 0xf603, 0xf600, 0xf20b, 0xf20a, 0xf200, 40 - 0xf200, 0xf602, 0xf213, 0xf02d, 0xf02b, 0xf30c, 0xf02e, 0xf30d, 41 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 42 - 0xf200, 0xf200, 0xf200, 0xf117, 0xf600, 0xf200, 0xf01b, 0xf200, 43 - 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e, 0xf10f, 0xf110, 0xf111, 44 - 0xf112, 0xf113, 0xf200, 0xf200, 0xf200, 0xf200, 0xf11d, 0xf200, 45 - }; 46 - 47 - u_short altgr_map[NR_KEYS] = { 48 - 0xf200, 0xf200, 0xf200, 0xf040, 0xf200, 0xf024, 0xf200, 0xf200, 49 - 0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf05c, 0xf200, 0xf200, 0xf200, 50 - 0xf200, 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 51 - 0xfb69, 0xfb6f, 0xfb70, 0xf200, 0xf200, 0xf200, 0xf207, 0xfb61, 52 - 0xfb73, 0xfb64, 0xfb66, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 53 - 0xf200, 0xf200, 0xf200, 0xf201, 0xf700, 0xf200, 0xfb7a, 0xfb78, 54 - 0xfb63, 0xfb76, 0xfb62, 0xfb6e, 0xfb6d, 0xf200, 0xf200, 0xf200, 55 - 0xf200, 0xf700, 0xf702, 0xf200, 0xf703, 0xf200, 0xf703, 0xf200, 56 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 57 - 0xf200, 0xf200, 0xf200, 0xf115, 0xf07f, 0xf200, 0xf200, 0xf601, 58 - 0xf200, 0xf200, 0xf200, 0xf603, 0xf600, 0xf118, 0xf119, 0xf200, 59 - 0xf200, 0xf602, 0xf208, 0xf02d, 0xf02b, 0xf30c, 0xf02e, 0xf30d, 60 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 61 - 0xf200, 0xf200, 0xf200, 0xf117, 0xf600, 0xf200, 0xf200, 0xf200, 62 - 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510, 0xf511, 0xf512, 0xf513, 63 - 0xf514, 0xf515, 0xf200, 0xf200, 0xf200, 0xf200, 0xf11d, 0xf200, 64 - }; 65 - 66 - u_short ctrl_map[NR_KEYS] = { 67 - 0xf200, 0xf200, 0xf200, 0xf000, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 68 - 0xf01f, 0xf07f, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf200, 0xf008, 69 - 0xf200, 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 70 - 0xf009, 0xf00f, 0xf010, 0xf01b, 0xf01d, 0xf01c, 0xf207, 0xf001, 71 - 0xf013, 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 72 - 0xf007, 0xf000, 0xf200, 0xf201, 0xf700, 0xf200, 0xf01a, 0xf018, 73 - 0xf003, 0xf016, 0xf002, 0xf00e, 0xf20e, 0xf07f, 0xf200, 0xf200, 74 - 0xf200, 0xf700, 0xf702, 0xf200, 0xf703, 0xf000, 0xf703, 0xf200, 75 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 76 - 0xf200, 0xf200, 0xf200, 0xf115, 0xf07f, 0xf200, 0xf200, 0xf601, 77 - 0xf200, 0xf200, 0xf200, 0xf603, 0xf600, 0xf118, 0xf119, 0xf200, 78 - 0xf200, 0xf602, 0xf208, 0xf02d, 0xf02b, 0xf30c, 0xf02e, 0xf30d, 79 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 80 - 0xf200, 0xf200, 0xf200, 0xf117, 0xf600, 0xf200, 0xf200, 0xf200, 81 - 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106, 0xf107, 82 - 0xf108, 0xf109, 0xf200, 0xf200, 0xf200, 0xf200, 0xf11d, 0xf200, 83 - }; 84 - 85 - u_short shift_ctrl_map[NR_KEYS] = { 86 - 0xf200, 0xf200, 0xf200, 0xf000, 0xf200, 0xf200, 0xf200, 0xf200, 87 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf200, 0xf200, 88 - 0xf200, 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 89 - 0xf009, 0xf00f, 0xf010, 0xf200, 0xf200, 0xf200, 0xf207, 0xf001, 90 - 0xf013, 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 91 - 0xf200, 0xf200, 0xf200, 0xf201, 0xf700, 0xf200, 0xf01a, 0xf018, 92 - 0xf003, 0xf016, 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf200, 0xf200, 93 - 0xf200, 0xf700, 0xf702, 0xf200, 0xf703, 0xf200, 0xf703, 0xf200, 94 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 95 - 0xf200, 0xf200, 0xf200, 0xf115, 0xf07f, 0xf200, 0xf200, 0xf601, 96 - 0xf200, 0xf200, 0xf200, 0xf603, 0xf600, 0xf118, 0xf119, 0xf200, 97 - 0xf200, 0xf602, 0xf208, 0xf02d, 0xf02b, 0xf30c, 0xf02e, 0xf30d, 98 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 99 - 0xf200, 0xf200, 0xf200, 0xf117, 0xf600, 0xf200, 0xf200, 0xf200, 100 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 101 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf11d, 0xf200, 102 - }; 103 - 104 - u_short alt_map[NR_KEYS] = { 105 - 0xf200, 0xf81b, 0xf831, 0xf832, 0xf833, 0xf834, 0xf835, 0xf836, 106 - 0xf837, 0xf838, 0xf839, 0xf830, 0xf82d, 0xf83d, 0xf200, 0xf87f, 107 - 0xf809, 0xf871, 0xf877, 0xf865, 0xf872, 0xf874, 0xf879, 0xf875, 108 - 0xf869, 0xf86f, 0xf870, 0xf85b, 0xf85d, 0xf85c, 0xf207, 0xf861, 109 - 0xf873, 0xf864, 0xf866, 0xf867, 0xf868, 0xf86a, 0xf86b, 0xf83b, 110 - 0xf827, 0xf860, 0xf200, 0xf80d, 0xf700, 0xf200, 0xf87a, 0xf878, 111 - 0xf863, 0xf876, 0xf862, 0xf82c, 0xf82e, 0xf82f, 0xf200, 0xf200, 112 - 0xf200, 0xf700, 0xf702, 0xf200, 0xf703, 0xf820, 0xf703, 0xf200, 113 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 114 - 0xf200, 0xf200, 0xf200, 0xf115, 0xf07f, 0xf200, 0xf200, 0xf210, 115 - 0xf200, 0xf200, 0xf200, 0xf603, 0xf600, 0xf118, 0xf119, 0xf200, 116 - 0xf200, 0xf211, 0xf208, 0xf02d, 0xf02b, 0xf30c, 0xf02e, 0xf30d, 117 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 118 - 0xf200, 0xf200, 0xf200, 0xf117, 0xf600, 0xf200, 0xf200, 0xf200, 119 - 0xf500, 0xf501, 0xf502, 0xf503, 0xf504, 0xf505, 0xf506, 0xf507, 120 - 0xf508, 0xf509, 0xf200, 0xf200, 0xf200, 0xf200, 0xf11d, 0xf200, 121 - }; 122 - 123 - u_short ctrl_alt_map[NR_KEYS] = { 124 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 125 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 126 - 0xf200, 0xf811, 0xf817, 0xf805, 0xf812, 0xf814, 0xf819, 0xf815, 127 - 0xf809, 0xf80f, 0xf810, 0xf200, 0xf200, 0xf200, 0xf207, 0xf801, 128 - 0xf813, 0xf804, 0xf806, 0xf807, 0xf808, 0xf80a, 0xf80b, 0xf80c, 129 - 0xf200, 0xf200, 0xf200, 0xf201, 0xf700, 0xf200, 0xf81a, 0xf818, 130 - 0xf803, 0xf816, 0xf802, 0xf80e, 0xf80d, 0xf200, 0xf200, 0xf200, 131 - 0xf200, 0xf700, 0xf702, 0xf200, 0xf703, 0xf200, 0xf703, 0xf200, 132 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 133 - 0xf200, 0xf200, 0xf200, 0xf115, 0xf07f, 0xf200, 0xf200, 0xf601, 134 - 0xf200, 0xf200, 0xf200, 0xf603, 0xf600, 0xf118, 0xf119, 0xf200, 135 - 0xf200, 0xf602, 0xf208, 0xf02d, 0xf02b, 0xf30c, 0xf02e, 0xf30d, 136 - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 137 - 0xf200, 0xf200, 0xf200, 0xf117, 0xf600, 0xf200, 0xf200, 0xf200, 138 - 0xf500, 0xf501, 0xf502, 0xf503, 0xf504, 0xf505, 0xf506, 0xf507, 139 - 0xf508, 0xf509, 0xf200, 0xf200, 0xf200, 0xf200, 0xf11d, 0xf200, 140 - }; 141 - 142 - ushort *key_maps[MAX_NR_KEYMAPS] = { 143 - plain_map, shift_map, altgr_map, 0, 144 - ctrl_map, shift_ctrl_map, 0, 0, 145 - alt_map, 0, 0, 0, 146 - ctrl_alt_map, 0 147 - }; 148 - 149 - unsigned int keymap_count = 7; 150 - 151 - 152 - /* 153 - * Philosophy: most people do not define more strings, but they who do 154 - * often want quite a lot of string space. So, we statically allocate 155 - * the default and allocate dynamically in chunks of 512 bytes. 156 - */ 157 - 158 - char func_buf[] = { 159 - '\033', '[', '[', 'A', 0, 160 - '\033', '[', '[', 'B', 0, 161 - '\033', '[', '[', 'C', 0, 162 - '\033', '[', '[', 'D', 0, 163 - '\033', '[', '[', 'E', 0, 164 - '\033', '[', '1', '7', '~', 0, 165 - '\033', '[', '1', '8', '~', 0, 166 - '\033', '[', '1', '9', '~', 0, 167 - '\033', '[', '2', '0', '~', 0, 168 - '\033', '[', '2', '1', '~', 0, 169 - '\033', '[', '2', '3', '~', 0, 170 - '\033', '[', '2', '4', '~', 0, 171 - '\033', '[', '2', '5', '~', 0, 172 - '\033', '[', '2', '6', '~', 0, 173 - '\033', '[', '2', '8', '~', 0, 174 - '\033', '[', '2', '9', '~', 0, 175 - '\033', '[', '3', '1', '~', 0, 176 - '\033', '[', '3', '2', '~', 0, 177 - '\033', '[', '3', '3', '~', 0, 178 - '\033', '[', '3', '4', '~', 0, 179 - '\033', '[', '1', '~', 0, 180 - '\033', '[', '2', '~', 0, 181 - '\033', '[', '3', '~', 0, 182 - '\033', '[', '4', '~', 0, 183 - '\033', '[', '5', '~', 0, 184 - '\033', '[', '6', '~', 0, 185 - '\033', '[', 'M', 0, 186 - '\033', '[', 'P', 0, 187 - }; 188 - 189 - 190 - char *funcbufptr = func_buf; 191 - int funcbufsize = sizeof(func_buf); 192 - int funcbufleft = 0; /* space left */ 193 - 194 - char *func_table[MAX_NR_FUNC] = { 195 - func_buf + 0, 196 - func_buf + 5, 197 - func_buf + 10, 198 - func_buf + 15, 199 - func_buf + 20, 200 - func_buf + 25, 201 - func_buf + 31, 202 - func_buf + 37, 203 - func_buf + 43, 204 - func_buf + 49, 205 - func_buf + 55, 206 - func_buf + 61, 207 - func_buf + 67, 208 - func_buf + 73, 209 - func_buf + 79, 210 - func_buf + 85, 211 - func_buf + 91, 212 - func_buf + 97, 213 - func_buf + 103, 214 - func_buf + 109, 215 - func_buf + 115, 216 - func_buf + 120, 217 - func_buf + 125, 218 - func_buf + 130, 219 - func_buf + 135, 220 - func_buf + 140, 221 - func_buf + 145, 222 - 0, 223 - 0, 224 - func_buf + 149, 225 - 0, 226 - }; 227 - 228 - struct kbdiacr accent_table[MAX_DIACR] = { 229 - {'`', 'A', '�'}, {'`', 'a', '�'}, 230 - {'\'', 'A', '�'}, {'\'', 'a', '�'}, 231 - {'^', 'A', '�'}, {'^', 'a', '�'}, 232 - {'~', 'A', '�'}, {'~', 'a', '�'}, 233 - {'"', 'A', '�'}, {'"', 'a', '�'}, 234 - {'O', 'A', '�'}, {'o', 'a', '�'}, 235 - {'0', 'A', '�'}, {'0', 'a', '�'}, 236 - {'A', 'A', '�'}, {'a', 'a', '�'}, 237 - {'A', 'E', '�'}, {'a', 'e', '�'}, 238 - {',', 'C', '�'}, {',', 'c', '�'}, 239 - {'`', 'E', '�'}, {'`', 'e', '�'}, 240 - {'\'', 'E', '�'}, {'\'', 'e', '�'}, 241 - {'^', 'E', '�'}, {'^', 'e', '�'}, 242 - {'"', 'E', '�'}, {'"', 'e', '�'}, 243 - {'`', 'I', '�'}, {'`', 'i', '�'}, 244 - {'\'', 'I', '�'}, {'\'', 'i', '�'}, 245 - {'^', 'I', '�'}, {'^', 'i', '�'}, 246 - {'"', 'I', '�'}, {'"', 'i', '�'}, 247 - {'-', 'D', '�'}, {'-', 'd', '�'}, 248 - {'~', 'N', '�'}, {'~', 'n', '�'}, 249 - {'`', 'O', '�'}, {'`', 'o', '�'}, 250 - {'\'', 'O', '�'}, {'\'', 'o', '�'}, 251 - {'^', 'O', '�'}, {'^', 'o', '�'}, 252 - {'~', 'O', '�'}, {'~', 'o', '�'}, 253 - {'"', 'O', '�'}, {'"', 'o', '�'}, 254 - {'/', 'O', '�'}, {'/', 'o', '�'}, 255 - {'`', 'U', '�'}, {'`', 'u', '�'}, 256 - {'\'', 'U', '�'}, {'\'', 'u', '�'}, 257 - {'^', 'U', '�'}, {'^', 'u', '�'}, 258 - {'"', 'U', '�'}, {'"', 'u', '�'}, 259 - {'\'', 'Y', '�'}, {'\'', 'y', '�'}, 260 - {'T', 'H', '�'}, {'t', 'h', '�'}, 261 - {'s', 's', '�'}, {'"', 'y', '�'}, 262 - {'s', 'z', '�'}, {'i', 'j', '�'}, 263 - }; 264 - 265 - unsigned int accent_table_size = 68;
···
-287
drivers/char/qtronixmap.map
··· 1 - # Default kernel keymap. This uses 7 modifier combinations. 2 - keymaps 0-2,4-5,8,12 3 - # Change the above line into 4 - # keymaps 0-2,4-6,8,12 5 - # in case you want the entries 6 - # altgr control keycode 83 = Boot 7 - # altgr control keycode 111 = Boot 8 - # below. 9 - # 10 - # In fact AltGr is used very little, and one more keymap can 11 - # be saved by mapping AltGr to Alt (and adapting a few entries): 12 - # keycode 100 = Alt 13 - # 14 - keycode 1 = grave asciitilde 15 - alt keycode 1 = Meta_Escape 16 - keycode 2 = one exclam 17 - alt keycode 2 = Meta_one 18 - keycode 3 = two at at 19 - control keycode 3 = nul 20 - shift control keycode 3 = nul 21 - alt keycode 3 = Meta_two 22 - keycode 4 = three numbersign 23 - control keycode 4 = Escape 24 - alt keycode 4 = Meta_three 25 - keycode 5 = four dollar dollar 26 - control keycode 5 = Control_backslash 27 - alt keycode 5 = Meta_four 28 - keycode 6 = five percent 29 - control keycode 6 = Control_bracketright 30 - alt keycode 6 = Meta_five 31 - keycode 7 = six asciicircum 32 - control keycode 7 = Control_asciicircum 33 - alt keycode 7 = Meta_six 34 - keycode 8 = seven ampersand braceleft 35 - control keycode 8 = Control_underscore 36 - alt keycode 8 = Meta_seven 37 - keycode 9 = eight asterisk bracketleft 38 - control keycode 9 = Delete 39 - alt keycode 9 = Meta_eight 40 - keycode 10 = nine parenleft bracketright 41 - alt keycode 10 = Meta_nine 42 - keycode 11 = zero parenright braceright 43 - alt keycode 11 = Meta_zero 44 - keycode 12 = minus underscore backslash 45 - control keycode 12 = Control_underscore 46 - shift control keycode 12 = Control_underscore 47 - alt keycode 12 = Meta_minus 48 - keycode 13 = equal plus 49 - alt keycode 13 = Meta_equal 50 - keycode 15 = Delete Delete 51 - control keycode 15 = BackSpace 52 - alt keycode 15 = Meta_Delete 53 - keycode 16 = Tab Tab 54 - alt keycode 16 = Meta_Tab 55 - keycode 17 = q 56 - keycode 18 = w 57 - keycode 19 = e 58 - keycode 20 = r 59 - keycode 21 = t 60 - keycode 22 = y 61 - keycode 23 = u 62 - keycode 24 = i 63 - keycode 25 = o 64 - keycode 26 = p 65 - keycode 27 = bracketleft braceleft 66 - control keycode 27 = Escape 67 - alt keycode 27 = Meta_bracketleft 68 - keycode 28 = bracketright braceright 69 - control keycode 28 = Control_bracketright 70 - alt keycode 28 = Meta_bracketright 71 - keycode 29 = backslash bar 72 - control keycode 29 = Control_backslash 73 - alt keycode 29 = Meta_backslash 74 - keycode 30 = Caps_Lock 75 - keycode 31 = a 76 - keycode 32 = s 77 - keycode 33 = d 78 - keycode 34 = f 79 - keycode 35 = g 80 - keycode 36 = h 81 - keycode 37 = j 82 - keycode 38 = k 83 - keycode 39 = l 84 - keycode 40 = semicolon colon 85 - alt keycode 39 = Meta_semicolon 86 - keycode 41 = apostrophe quotedbl 87 - control keycode 40 = Control_g 88 - alt keycode 40 = Meta_apostrophe 89 - keycode 42 = grave asciitilde 90 - control keycode 41 = nul 91 - alt keycode 41 = Meta_grave 92 - keycode 43 = Return 93 - alt keycode 43 = Meta_Control_m 94 - keycode 44 = Shift 95 - keycode 46 = z 96 - keycode 47 = x 97 - keycode 48 = c 98 - keycode 49 = v 99 - keycode 50 = b 100 - keycode 51 = n 101 - keycode 52 = m 102 - keycode 53 = comma less 103 - alt keycode 51 = Meta_comma 104 - keycode 54 = period greater 105 - control keycode 52 = Compose 106 - alt keycode 52 = Meta_period 107 - keycode 55 = slash question 108 - control keycode 53 = Delete 109 - alt keycode 53 = Meta_slash 110 - keycode 57 = Shift 111 - keycode 58 = Control 112 - keycode 60 = Alt 113 - keycode 61 = space space 114 - control keycode 61 = nul 115 - alt keycode 61 = Meta_space 116 - keycode 62 = Alt 117 - 118 - keycode 75 = Insert 119 - keycode 76 = Delete 120 - 121 - keycode 83 = Up 122 - keycode 84 = Down 123 - 124 - keycode 85 = Prior 125 - shift keycode 85 = Scroll_Backward 126 - keycode 86 = Next 127 - shift keycode 86 = Scroll_Forward 128 - keycode 89 = Right 129 - alt keycode 89 = Incr_Console 130 - keycode 79 = Left 131 - alt keycode 79 = Decr_Console 132 - 133 - keycode 90 = Num_Lock 134 - shift keycode 90 = Bare_Num_Lock 135 - 136 - keycode 91 = minus 137 - keycode 92 = plus 138 - keycode 93 = KP_Multiply 139 - keycode 94 = period 140 - keycode 95 = KP_Divide 141 - 142 - keycode 107 = Select 143 - keycode 108 = Down 144 - 145 - keycode 110 = Escape Escape 146 - alt keycode 1 = Meta_Escape 147 - 148 - keycode 112 = F1 F11 Console_13 149 - control keycode 112 = F1 150 - alt keycode 112 = Console_1 151 - control alt keycode 112 = Console_1 152 - keycode 113 = F2 F12 Console_14 153 - control keycode 113 = F2 154 - alt keycode 113 = Console_2 155 - control alt keycode 113 = Console_2 156 - keycode 114 = F3 F13 Console_15 157 - control keycode 114 = F3 158 - alt keycode 114 = Console_3 159 - control alt keycode 114 = Console_3 160 - keycode 115 = F4 F14 Console_16 161 - control keycode 115 = F4 162 - alt keycode 115 = Console_4 163 - control alt keycode 115 = Console_4 164 - keycode 116 = F5 F15 Console_17 165 - control keycode 116 = F5 166 - alt keycode 116 = Console_5 167 - control alt keycode 116 = Console_5 168 - keycode 117 = F6 F16 Console_18 169 - control keycode 117 = F6 170 - alt keycode 117 = Console_6 171 - control alt keycode 117 = Console_6 172 - keycode 118 = F7 F17 Console_19 173 - control keycode 118 = F7 174 - alt keycode 118 = Console_7 175 - control alt keycode 118 = Console_7 176 - keycode 119 = F8 F18 Console_20 177 - control keycode 119 = F8 178 - alt keycode 119 = Console_8 179 - control alt keycode 119 = Console_8 180 - keycode 120 = F9 F19 Console_21 181 - control keycode 120 = F9 182 - alt keycode 120 = Console_9 183 - control alt keycode 120 = Console_9 184 - keycode 121 = F10 F20 Console_22 185 - control keycode 121 = F10 186 - alt keycode 121 = Console_10 187 - control alt keycode 121 = Console_10 188 - 189 - keycode 126 = Pause 190 - 191 - 192 - string F1 = "\033[[A" 193 - string F2 = "\033[[B" 194 - string F3 = "\033[[C" 195 - string F4 = "\033[[D" 196 - string F5 = "\033[[E" 197 - string F6 = "\033[17~" 198 - string F7 = "\033[18~" 199 - string F8 = "\033[19~" 200 - string F9 = "\033[20~" 201 - string F10 = "\033[21~" 202 - string F11 = "\033[23~" 203 - string F12 = "\033[24~" 204 - string F13 = "\033[25~" 205 - string F14 = "\033[26~" 206 - string F15 = "\033[28~" 207 - string F16 = "\033[29~" 208 - string F17 = "\033[31~" 209 - string F18 = "\033[32~" 210 - string F19 = "\033[33~" 211 - string F20 = "\033[34~" 212 - string Find = "\033[1~" 213 - string Insert = "\033[2~" 214 - string Remove = "\033[3~" 215 - string Select = "\033[4~" 216 - string Prior = "\033[5~" 217 - string Next = "\033[6~" 218 - string Macro = "\033[M" 219 - string Pause = "\033[P" 220 - compose '`' 'A' to '�' 221 - compose '`' 'a' to '�' 222 - compose '\'' 'A' to '�' 223 - compose '\'' 'a' to '�' 224 - compose '^' 'A' to '�' 225 - compose '^' 'a' to '�' 226 - compose '~' 'A' to '�' 227 - compose '~' 'a' to '�' 228 - compose '"' 'A' to '�' 229 - compose '"' 'a' to '�' 230 - compose 'O' 'A' to '�' 231 - compose 'o' 'a' to '�' 232 - compose '0' 'A' to '�' 233 - compose '0' 'a' to '�' 234 - compose 'A' 'A' to '�' 235 - compose 'a' 'a' to '�' 236 - compose 'A' 'E' to '�' 237 - compose 'a' 'e' to '�' 238 - compose ',' 'C' to '�' 239 - compose ',' 'c' to '�' 240 - compose '`' 'E' to '�' 241 - compose '`' 'e' to '�' 242 - compose '\'' 'E' to '�' 243 - compose '\'' 'e' to '�' 244 - compose '^' 'E' to '�' 245 - compose '^' 'e' to '�' 246 - compose '"' 'E' to '�' 247 - compose '"' 'e' to '�' 248 - compose '`' 'I' to '�' 249 - compose '`' 'i' to '�' 250 - compose '\'' 'I' to '�' 251 - compose '\'' 'i' to '�' 252 - compose '^' 'I' to '�' 253 - compose '^' 'i' to '�' 254 - compose '"' 'I' to '�' 255 - compose '"' 'i' to '�' 256 - compose '-' 'D' to '�' 257 - compose '-' 'd' to '�' 258 - compose '~' 'N' to '�' 259 - compose '~' 'n' to '�' 260 - compose '`' 'O' to '�' 261 - compose '`' 'o' to '�' 262 - compose '\'' 'O' to '�' 263 - compose '\'' 'o' to '�' 264 - compose '^' 'O' to '�' 265 - compose '^' 'o' to '�' 266 - compose '~' 'O' to '�' 267 - compose '~' 'o' to '�' 268 - compose '"' 'O' to '�' 269 - compose '"' 'o' to '�' 270 - compose '/' 'O' to '�' 271 - compose '/' 'o' to '�' 272 - compose '`' 'U' to '�' 273 - compose '`' 'u' to '�' 274 - compose '\'' 'U' to '�' 275 - compose '\'' 'u' to '�' 276 - compose '^' 'U' to '�' 277 - compose '^' 'u' to '�' 278 - compose '"' 'U' to '�' 279 - compose '"' 'u' to '�' 280 - compose '\'' 'Y' to '�' 281 - compose '\'' 'y' to '�' 282 - compose 'T' 'H' to '�' 283 - compose 't' 'h' to '�' 284 - compose 's' 's' to '�' 285 - compose '"' 'y' to '�' 286 - compose 's' 'z' to '�' 287 - compose 'i' 'j' to '�'
···
-9
drivers/ide/Kconfig
··· 614 the kernel to change PIO, DMA and UDMA speeds and to configure 615 the chip to optimum performance. 616 617 - config BLK_DEV_IT8172 618 - bool "IT8172 IDE support" 619 - depends on (MIPS_ITE8172 || MIPS_IVR) 620 - help 621 - Say Y here to support the on-board IDE controller on the Integrated 622 - Technology Express, Inc. ITE8172 SBC. Vendor page at 623 - <http://www.ite.com.tw/ia/brief_it8172bsp.htm>; picture of the 624 - board at <http://www.mvista.com/partners/semiconductor/ite.html>. 625 - 626 config BLK_DEV_IT821X 627 tristate "IT821X IDE support" 628 help
··· 614 the kernel to change PIO, DMA and UDMA speeds and to configure 615 the chip to optimum performance. 616 617 config BLK_DEV_IT821X 618 tristate "IT821X IDE support" 619 help
-1
drivers/ide/pci/Makefile
··· 12 obj-$(CONFIG_BLK_DEV_HPT34X) += hpt34x.o 13 obj-$(CONFIG_BLK_DEV_HPT366) += hpt366.o 14 #obj-$(CONFIG_BLK_DEV_HPT37X) += hpt37x.o 15 - obj-$(CONFIG_BLK_DEV_IT8172) += it8172.o 16 obj-$(CONFIG_BLK_DEV_IT821X) += it821x.o 17 obj-$(CONFIG_BLK_DEV_JMICRON) += jmicron.o 18 obj-$(CONFIG_BLK_DEV_NS87415) += ns87415.o
··· 12 obj-$(CONFIG_BLK_DEV_HPT34X) += hpt34x.o 13 obj-$(CONFIG_BLK_DEV_HPT366) += hpt366.o 14 #obj-$(CONFIG_BLK_DEV_HPT37X) += hpt37x.o 15 obj-$(CONFIG_BLK_DEV_IT821X) += it821x.o 16 obj-$(CONFIG_BLK_DEV_JMICRON) += jmicron.o 17 obj-$(CONFIG_BLK_DEV_NS87415) += ns87415.o
-307
drivers/ide/pci/it8172.c
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * IT8172 IDE controller support 5 - * 6 - * Copyright 2000 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * stevel@mvista.com or source@mvista.com 9 - * 10 - * This program is free software; you can redistribute it and/or modify it 11 - * under the terms of the GNU General Public License as published by the 12 - * Free Software Foundation; either version 2 of the License, or (at your 13 - * option) any later version. 14 - * 15 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 - * 26 - * You should have received a copy of the GNU General Public License along 27 - * with this program; if not, write to the Free Software Foundation, Inc., 28 - * 675 Mass Ave, Cambridge, MA 02139, USA. 29 - */ 30 - 31 - #include <linux/module.h> 32 - #include <linux/types.h> 33 - #include <linux/kernel.h> 34 - #include <linux/ioport.h> 35 - #include <linux/pci.h> 36 - #include <linux/hdreg.h> 37 - #include <linux/ide.h> 38 - #include <linux/delay.h> 39 - #include <linux/init.h> 40 - 41 - #include <asm/io.h> 42 - #include <asm/it8172/it8172_int.h> 43 - 44 - /* 45 - * Prototypes 46 - */ 47 - static u8 it8172_ratemask (ide_drive_t *drive) 48 - { 49 - return 1; 50 - } 51 - 52 - static void it8172_tune_drive (ide_drive_t *drive, u8 pio) 53 - { 54 - ide_hwif_t *hwif = HWIF(drive); 55 - struct pci_dev *dev = hwif->pci_dev; 56 - int is_slave = (&hwif->drives[1] == drive); 57 - unsigned long flags; 58 - u16 drive_enables; 59 - u32 drive_timing; 60 - 61 - pio = ide_get_best_pio_mode(drive, pio, 4, NULL); 62 - spin_lock_irqsave(&ide_lock, flags); 63 - pci_read_config_word(dev, 0x40, &drive_enables); 64 - pci_read_config_dword(dev, 0x44, &drive_timing); 65 - 66 - /* 67 - * FIX! The DIOR/DIOW pulse width and recovery times in port 0x44 68 - * are being left at the default values of 8 PCI clocks (242 nsec 69 - * for a 33 MHz clock). These can be safely shortened at higher 70 - * PIO modes. The DIOR/DIOW pulse width and recovery times only 71 - * apply to PIO modes, not to the DMA modes. 72 - */ 73 - 74 - /* 75 - * Enable port 0x44. The IT8172G spec is confused; it calls 76 - * this register the "Slave IDE Timing Register", but in fact, 77 - * it controls timing for both master and slave drives. 78 - */ 79 - drive_enables |= 0x4000; 80 - 81 - if (is_slave) { 82 - drive_enables &= 0xc006; 83 - if (pio > 1) 84 - /* enable prefetch and IORDY sample-point */ 85 - drive_enables |= 0x0060; 86 - } else { 87 - drive_enables &= 0xc060; 88 - if (pio > 1) 89 - /* enable prefetch and IORDY sample-point */ 90 - drive_enables |= 0x0006; 91 - } 92 - 93 - pci_write_config_word(dev, 0x40, drive_enables); 94 - spin_unlock_irqrestore(&ide_lock, flags); 95 - } 96 - 97 - static u8 it8172_dma_2_pio (u8 xfer_rate) 98 - { 99 - switch(xfer_rate) { 100 - case XFER_UDMA_5: 101 - case XFER_UDMA_4: 102 - case XFER_UDMA_3: 103 - case XFER_UDMA_2: 104 - case XFER_UDMA_1: 105 - case XFER_UDMA_0: 106 - case XFER_MW_DMA_2: 107 - case XFER_PIO_4: 108 - return 4; 109 - case XFER_MW_DMA_1: 110 - case XFER_PIO_3: 111 - return 3; 112 - case XFER_SW_DMA_2: 113 - case XFER_PIO_2: 114 - return 2; 115 - case XFER_MW_DMA_0: 116 - case XFER_SW_DMA_1: 117 - case XFER_SW_DMA_0: 118 - case XFER_PIO_1: 119 - case XFER_PIO_0: 120 - case XFER_PIO_SLOW: 121 - default: 122 - return 0; 123 - } 124 - } 125 - 126 - static int it8172_tune_chipset (ide_drive_t *drive, u8 xferspeed) 127 - { 128 - ide_hwif_t *hwif = HWIF(drive); 129 - struct pci_dev *dev = hwif->pci_dev; 130 - u8 speed = ide_rate_filter(it8172_ratemask(drive), xferspeed); 131 - int a_speed = 3 << (drive->dn * 4); 132 - int u_flag = 1 << drive->dn; 133 - int u_speed = 0; 134 - u8 reg48, reg4a; 135 - 136 - pci_read_config_byte(dev, 0x48, &reg48); 137 - pci_read_config_byte(dev, 0x4a, &reg4a); 138 - 139 - /* 140 - * Setting the DMA cycle time to 2 or 3 PCI clocks (60 and 91 nsec 141 - * at 33 MHz PCI clock) seems to cause BadCRC errors during DMA 142 - * transfers on some drives, even though both numbers meet the minimum 143 - * ATAPI-4 spec of 73 and 54 nsec for UDMA 1 and 2 respectively. 144 - * So the faster times are just commented out here. The good news is 145 - * that the slower cycle time has very little affect on transfer 146 - * performance. 147 - */ 148 - 149 - switch(speed) { 150 - case XFER_UDMA_4: 151 - case XFER_UDMA_2: //u_speed = 2 << (drive->dn * 4); break; 152 - case XFER_UDMA_5: 153 - case XFER_UDMA_3: 154 - case XFER_UDMA_1: //u_speed = 1 << (drive->dn * 4); break; 155 - case XFER_UDMA_0: u_speed = 0 << (drive->dn * 4); break; 156 - case XFER_MW_DMA_2: 157 - case XFER_MW_DMA_1: 158 - case XFER_MW_DMA_0: 159 - case XFER_SW_DMA_2: break; 160 - case XFER_PIO_4: 161 - case XFER_PIO_3: 162 - case XFER_PIO_2: 163 - case XFER_PIO_0: break; 164 - default: return -1; 165 - } 166 - 167 - if (speed >= XFER_UDMA_0) { 168 - pci_write_config_byte(dev, 0x48, reg48 | u_flag); 169 - reg4a &= ~a_speed; 170 - pci_write_config_byte(dev, 0x4a, reg4a | u_speed); 171 - } else { 172 - pci_write_config_byte(dev, 0x48, reg48 & ~u_flag); 173 - pci_write_config_byte(dev, 0x4a, reg4a & ~a_speed); 174 - } 175 - 176 - it8172_tune_drive(drive, it8172_dma_2_pio(speed)); 177 - return (ide_config_drive_speed(drive, speed)); 178 - } 179 - 180 - static int it8172_config_chipset_for_dma (ide_drive_t *drive) 181 - { 182 - u8 speed = ide_dma_speed(drive, it8172_ratemask(drive)); 183 - 184 - if (!(speed)) { 185 - u8 tspeed = ide_get_best_pio_mode(drive, 255, 4, NULL); 186 - speed = it8172_dma_2_pio(XFER_PIO_0 + tspeed); 187 - } 188 - 189 - (void) it8172_tune_chipset(drive, speed); 190 - return ide_dma_enable(drive); 191 - } 192 - 193 - static int it8172_config_drive_xfer_rate (ide_drive_t *drive) 194 - { 195 - ide_hwif_t *hwif = HWIF(drive); 196 - struct hd_driveid *id = drive->id; 197 - 198 - drive->init_speed = 0; 199 - 200 - if (id && (id->capability & 1) && drive->autodma) { 201 - 202 - if (ide_use_dma(drive)) { 203 - if (it8172_config_chipset_for_dma(drive)) 204 - return hwif->ide_dma_on(drive); 205 - } 206 - 207 - goto fast_ata_pio; 208 - 209 - } else if ((id->capability & 8) || (id->field_valid & 2)) { 210 - fast_ata_pio: 211 - it8172_tune_drive(drive, 5); 212 - return hwif->ide_dma_off_quietly(drive); 213 - } 214 - /* IORDY not supported */ 215 - return 0; 216 - } 217 - 218 - static unsigned int __devinit init_chipset_it8172 (struct pci_dev *dev, const char *name) 219 - { 220 - unsigned char progif; 221 - 222 - /* 223 - * Place both IDE interfaces into PCI "native" mode 224 - */ 225 - pci_read_config_byte(dev, PCI_CLASS_PROG, &progif); 226 - pci_write_config_byte(dev, PCI_CLASS_PROG, progif | 0x05); 227 - 228 - return IT8172_IDE_IRQ; 229 - } 230 - 231 - 232 - static void __devinit init_hwif_it8172 (ide_hwif_t *hwif) 233 - { 234 - struct pci_dev* dev = hwif->pci_dev; 235 - unsigned long cmdBase, ctrlBase; 236 - 237 - hwif->autodma = 0; 238 - hwif->tuneproc = &it8172_tune_drive; 239 - hwif->speedproc = &it8172_tune_chipset; 240 - 241 - cmdBase = dev->resource[0].start; 242 - ctrlBase = dev->resource[1].start; 243 - 244 - ide_init_hwif_ports(&hwif->hw, cmdBase, ctrlBase | 2, NULL); 245 - memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports)); 246 - hwif->noprobe = 0; 247 - 248 - if (!hwif->dma_base) { 249 - hwif->drives[0].autotune = 1; 250 - hwif->drives[1].autotune = 1; 251 - return; 252 - } 253 - 254 - hwif->atapi_dma = 1; 255 - hwif->ultra_mask = 0x07; 256 - hwif->mwdma_mask = 0x06; 257 - hwif->swdma_mask = 0x04; 258 - 259 - hwif->ide_dma_check = &it8172_config_drive_xfer_rate; 260 - if (!noautodma) 261 - hwif->autodma = 1; 262 - hwif->drives[0].autodma = hwif->autodma; 263 - hwif->drives[1].autodma = hwif->autodma; 264 - } 265 - 266 - static ide_pci_device_t it8172_chipsets[] __devinitdata = { 267 - { /* 0 */ 268 - .name = "IT8172G", 269 - .init_chipset = init_chipset_it8172, 270 - .init_hwif = init_hwif_it8172, 271 - .channels = 2, 272 - .autodma = AUTODMA, 273 - .enablebits = {{0x00,0x00,0x00}, {0x40,0x00,0x01}}, 274 - .bootable = ON_BOARD, 275 - } 276 - }; 277 - 278 - static int __devinit it8172_init_one(struct pci_dev *dev, const struct pci_device_id *id) 279 - { 280 - if ((!(PCI_FUNC(dev->devfn) & 1) || 281 - (!((dev->class >> 8) == PCI_CLASS_STORAGE_IDE)))) 282 - return -ENODEV; /* IT8172 is more than an IDE controller */ 283 - return ide_setup_pci_device(dev, &it8172_chipsets[id->driver_data]); 284 - } 285 - 286 - static struct pci_device_id it8172_pci_tbl[] = { 287 - { PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_IT8172G, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 288 - { 0, }, 289 - }; 290 - MODULE_DEVICE_TABLE(pci, it8172_pci_tbl); 291 - 292 - static struct pci_driver driver = { 293 - .name = "IT8172_IDE", 294 - .id_table = it8172_pci_tbl, 295 - .probe = it8172_init_one, 296 - }; 297 - 298 - static int it8172_ide_init(void) 299 - { 300 - return ide_pci_register_driver(&driver); 301 - } 302 - 303 - module_init(it8172_ide_init); 304 - 305 - MODULE_AUTHOR("SteveL@mvista.com"); 306 - MODULE_DESCRIPTION("PCI driver module for ITE 8172 IDE"); 307 - MODULE_LICENSE("GPL");
···
-12
include/asm-mips/bootinfo.h
··· 125 #define MACH_MOMENCO_OCELOT_3 4 126 127 /* 128 - * Valid machtype for group ITE 129 - */ 130 - #define MACH_GROUP_ITE 13 /* ITE Semi Eval Boards */ 131 - #define MACH_QED_4N_S01B 0 /* ITE8172 based eval board */ 132 - 133 - /* 134 * Valid machtype for group PHILIPS 135 */ 136 #define MACH_GROUP_PHILIPS 14 137 #define MACH_PHILIPS_NINO 0 /* Nino */ 138 #define MACH_PHILIPS_VELO 1 /* Velo */ 139 #define MACH_PHILIPS_JBS 2 /* JBS */ 140 - 141 - /* 142 - * Valid machtype for group Globespan 143 - */ 144 - #define MACH_GROUP_GLOBESPAN 15 /* Globespan */ 145 - #define MACH_IVR 0 /* IVR eval board */ 146 147 /* 148 * Valid machtype for group SIBYTE
··· 125 #define MACH_MOMENCO_OCELOT_3 4 126 127 /* 128 * Valid machtype for group PHILIPS 129 */ 130 #define MACH_GROUP_PHILIPS 14 131 #define MACH_PHILIPS_NINO 0 /* Nino */ 132 #define MACH_PHILIPS_VELO 1 /* Velo */ 133 #define MACH_PHILIPS_JBS 2 /* JBS */ 134 135 /* 136 * Valid machtype for group SIBYTE
-348
include/asm-mips/it8172/it8172.h
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * IT8172 system controller defines. 5 - * 6 - * Copyright 2000 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * ppopov@mvista.com or source@mvista.com 9 - * 10 - * This program is free software; you can redistribute it and/or modify it 11 - * under the terms of the GNU General Public License as published by the 12 - * Free Software Foundation; either version 2 of the License, or (at your 13 - * option) any later version. 14 - * 15 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 - * 26 - * You should have received a copy of the GNU General Public License along 27 - * with this program; if not, write to the Free Software Foundation, Inc., 28 - * 675 Mass Ave, Cambridge, MA 02139, USA. 29 - */ 30 - 31 - #ifndef __IT8172__H__ 32 - #define __IT8172__H__ 33 - 34 - #include <asm/addrspace.h> 35 - 36 - #define IT8172_BASE 0x18000000 37 - #define IT8172_PCI_IO_BASE 0x14000000 38 - #define IT8172_PCI_MEM_BASE 0x10000000 39 - 40 - // System registers offsets from IT8172_BASE 41 - #define IT_CMFPCR 0x0 42 - #define IT_DSRR 0x2 43 - #define IT_PCDCR 0x4 44 - #define IT_SPLLCR 0x6 45 - #define IT_CIDR 0x10 46 - #define IT_CRNR 0x12 47 - #define IT_CPUTR 0x14 48 - #define IT_CTCR 0x16 49 - #define IT_SDPR 0xF0 50 - 51 - // Power management register offset from IT8172_PCI_IO_BASE 52 - // Power Management Device Standby Register 53 - #define IT_PM_DSR 0x15800 54 - 55 - #define IT_PM_DSR_TMR0SB 0x0001 56 - #define IT_PM_DSR_TMR1SB 0x0002 57 - #define IT_PM_DSR_CIR0SB 0x0004 58 - #define IT_PM_DSR_CIR1SB 0x0008 59 - #define IT_PM_DSR_SCR0SB 0x0010 60 - #define IT_PM_DSR_SCR1SB 0x0020 61 - #define IT_PM_DSR_PPSB 0x0040 62 - #define IT_PM_DSR_I2CSB 0x0080 63 - #define IT_PM_DSR_UARTSB 0x0100 64 - #define IT_PM_DSR_IDESB 0x0200 65 - #define IT_PM_DSR_ACSB 0x0400 66 - #define IT_PM_DSR_M68KSB 0x0800 67 - 68 - // Power Management PCI Device Software Reset Register 69 - #define IT_PM_PCISR 0x15802 70 - 71 - #define IT_PM_PCISR_IDESR 0x0001 72 - #define IT_PM_PCISR_CDMASR 0x0002 73 - #define IT_PM_PCISR_USBSR 0x0004 74 - #define IT_PM_PCISR_DMASR 0x0008 75 - #define IT_PM_PCISR_ACSR 0x0010 76 - #define IT_PM_PCISR_MEMSR 0x0020 77 - #define IT_PM_PCISR_68KSR 0x0040 78 - 79 - 80 - // PCI Configuration address and data register offsets 81 - // from IT8172_BASE 82 - #define IT_CONFADDR 0x4000 83 - #define IT_BUSNUM_SHF 16 84 - #define IT_DEVNUM_SHF 11 85 - #define IT_FUNCNUM_SHF 8 86 - #define IT_REGNUM_SHF 2 87 - 88 - #define IT_CONFDATA 0x4004 89 - 90 - // PCI configuration header common register offsets 91 - #define IT_VID 0x00 92 - #define IT_DID 0x02 93 - #define IT_PCICMD 0x04 94 - #define IT_PCISTS 0x06 95 - #define IT_RID 0x08 96 - #define IT_CLASSC 0x09 97 - #define IT_HEADT 0x0E 98 - #define IT_SERIRQC 0x49 99 - 100 - // PCI to Internal/LPC Bus Bridge configuration header register offset 101 - #define IT_P2I_BCR 0x4C 102 - #define IT_P2I_D0IOSC 0x50 103 - #define IT_P2I_D1IOSC 0x54 104 - #define IT_P2I_D2IOSC 0x58 105 - #define IT_P2I_D3IOSC 0x5C 106 - #define IT_P2I_D4IOSC 0x60 107 - #define IT_P2I_D5IOSC 0x64 108 - #define IT_P2I_D6IOSC 0x68 109 - #define IT_P2I_D7IOSC 0x6C 110 - #define IT_P2I_D8IOSC 0x70 111 - #define IT_P2I_D9IOSC 0x74 112 - #define IT_P2I_D10IOSC 0x78 113 - #define IT_P2I_D11IOSC 0x7C 114 - 115 - // Memory controller register offsets from IT8172_BASE 116 - #define IT_MC_SDRMR 0x1000 117 - #define IT_MC_SDRTR 0x1004 118 - #define IT_MC_MCR 0x1008 119 - #define IT_MC_SDTYPE 0x100C 120 - #define IT_MC_WPBA 0x1010 121 - #define IT_MC_WPTA 0x1014 122 - #define IT_MC_HATR 0x1018 123 - #define IT_MC_PCICR 0x101C 124 - 125 - // Flash/ROM control register offsets from IT8172_BASE 126 - #define IT_FC_BRCR 0x2000 127 - #define IT_FC_FCR 0x2004 128 - #define IT_FC_DCR 0x2008 129 - 130 - // M68K interface bridge configuration header register offset 131 - #define IT_M68K_MBCSR 0x54 132 - #define IT_M68K_TMR 0x58 133 - #define IT_M68K_BCR 0x5C 134 - #define IT_M68K_BSR 0x5D 135 - #define IT_M68K_DTR 0x5F 136 - 137 - // Register offset from IT8172_PCI_IO_BASE 138 - // These registers are accessible through 8172 PCI IO window. 139 - 140 - // INTC 141 - #define IT_INTC_BASE 0x10000 142 - #define IT_INTC_LBDNIRR 0x10000 143 - #define IT_INTC_LBDNIMR 0x10002 144 - #define IT_INTC_LBDNITR 0x10004 145 - #define IT_INTC_LBDNIAR 0x10006 146 - #define IT_INTC_LPCNIRR 0x10010 147 - #define IT_INTC_LPCNIMR 0x10012 148 - #define IT_INTC_LPCNITR 0x10014 149 - #define IT_INTC_LPCNIAR 0x10016 150 - #define IT_INTC_PDNIRR 0x10020 151 - #define IT_INTC_PDNIMR 0x10022 152 - #define IT_INTC_PDNITR 0x10024 153 - #define IT_INTC_PDNIAR 0x10026 154 - #define IT_INTC_UMNIRR 0x10030 155 - #define IT_INTC_UMNITR 0x10034 156 - #define IT_INTC_UMNIAR 0x10036 157 - #define IT_INTC_TYPER 0x107FE 158 - 159 - // IT8172 PCI device number 160 - #define IT_C2P_DEVICE 0 161 - #define IT_AUDIO_DEVICE 1 162 - #define IT_DMAC_DEVICE 1 163 - #define IT_CDMAC_DEVICE 1 164 - #define IT_USB_DEVICE 1 165 - #define IT_P2I_DEVICE 1 166 - #define IT_IDE_DEVICE 1 167 - #define IT_M68K_DEVICE 1 168 - 169 - // IT8172 PCI function number 170 - #define IT_C2P_FUNCION 0 171 - #define IT_AUDIO_FUNCTION 0 172 - #define IT_DMAC_FUNCTION 1 173 - #define IT_CDMAC_FUNCTION 2 174 - #define IT_USB_FUNCTION 3 175 - #define IT_P2I_FUNCTION 4 176 - #define IT_IDE_FUNCTION 5 177 - #define IT_M68K_FUNCTION 6 178 - 179 - // IT8172 GPIO 180 - #define IT_GPADR 0x13800 181 - #define IT_GPBDR 0x13808 182 - #define IT_GPCDR 0x13810 183 - #define IT_GPACR 0x13802 184 - #define IT_GPBCR 0x1380A 185 - #define IT_GPCCR 0x13812 186 - #define IT_GPAICR 0x13804 187 - #define IT_GPBICR 0x1380C 188 - #define IT_GPCICR 0x13814 189 - #define IT_GPAISR 0x13806 190 - #define IT_GPBISR 0x1380E 191 - #define IT_GPCISR 0x13816 192 - #define IT_GCR 0x13818 193 - 194 - // IT8172 RTC 195 - #define IT_RTC_BASE 0x14800 196 - #define IT_RTC_CENTURY 0x14808 197 - 198 - #define IT_RTC_RIR0 0x00 199 - #define IT_RTC_RTR0 0x01 200 - #define IT_RTC_RIR1 0x02 201 - #define IT_RTC_RTR1 0x03 202 - #define IT_RTC_RIR2 0x04 203 - #define IT_RTC_RTR2 0x05 204 - #define IT_RTC_RCTR 0x08 205 - #define IT_RTC_RA 0x0A 206 - #define IT_RTC_RB 0x0B 207 - #define IT_RTC_RC 0x0C 208 - #define IT_RTC_RD 0x0D 209 - 210 - #define RTC_SEC_INDEX 0x00 211 - #define RTC_MIN_INDEX 0x02 212 - #define RTC_HOUR_INDEX 0x04 213 - #define RTC_DAY_INDEX 0x06 214 - #define RTC_DATE_INDEX 0x07 215 - #define RTC_MONTH_INDEX 0x08 216 - #define RTC_YEAR_INDEX 0x09 217 - 218 - // IT8172 internal device registers 219 - #define IT_TIMER_BASE 0x10800 220 - #define IT_CIR0_BASE 0x11000 221 - #define IT_UART_BASE 0x11800 222 - #define IT_SCR0_BASE 0x12000 223 - #define IT_SCR1_BASE 0x12800 224 - #define IT_PP_BASE 0x13000 225 - #define IT_I2C_BASE 0x14000 226 - #define IT_CIR1_BASE 0x15000 227 - 228 - // IT8172 Smart Card Reader offsets from IT_SCR*_BASE 229 - #define IT_SCR_SFR 0x08 230 - #define IT_SCR_SCDR 0x09 231 - 232 - // IT8172 IT_SCR_SFR bit definition & mask 233 - #define IT_SCR_SFR_GATE_UART 0x40 234 - #define IT_SCR_SFR_GATE_UART_BIT 6 235 - #define IT_SCR_SFR_GATE_UART_OFF 0 236 - #define IT_SCR_SFR_GATE_UART_ON 1 237 - #define IT_SCR_SFR_FET_CHARGE 0x30 238 - #define IT_SCR_SFR_FET_CHARGE_BIT 4 239 - #define IT_SCR_SFR_FET_CHARGE_3_3_US 3 240 - #define IT_SCR_SFR_FET_CHARGE_13_US 2 241 - #define IT_SCR_SFR_FET_CHARGE_53_US 1 242 - #define IT_SCR_SFR_FET_CHARGE_213_US 0 243 - #define IT_SCR_SFR_CARD_FREQ 0x0C 244 - #define IT_SCR_SFR_CARD_FREQ_BIT 2 245 - #define IT_SCR_SFR_CARD_FREQ_STOP 3 246 - #define IT_SCR_SFR_CARD_FREQ_3_5_MHZ 0 247 - #define IT_SCR_SFR_CARD_FREQ_7_1_MHZ 2 248 - #define IT_SCR_SFR_CARD_FREQ_96_DIV_MHZ 1 249 - #define IT_SCR_SFR_FET_ACTIVE 0x02 250 - #define IT_SCR_SFR_FET_ACTIVE_BIT 1 251 - #define IT_SCR_SFR_FET_ACTIVE_INVERT 0 252 - #define IT_SCR_SFR_FET_ACTIVE_NONINVERT 1 253 - #define IT_SCR_SFR_ENABLE 0x01 254 - #define IT_SCR_SFR_ENABLE_BIT 0 255 - #define IT_SCR_SFR_ENABLE_OFF 0 256 - #define IT_SCR_SFR_ENABLE_ON 1 257 - 258 - // IT8172 IT_SCR_SCDR bit definition & mask 259 - #define IT_SCR_SCDR_RESET_MODE 0x80 260 - #define IT_SCR_SCDR_RESET_MODE_BIT 7 261 - #define IT_SCR_SCDR_RESET_MODE_ASYNC 0 262 - #define IT_SCR_SCDR_RESET_MODE_SYNC 1 263 - #define IT_SCR_SCDR_DIVISOR 0x7F 264 - #define IT_SCR_SCDR_DIVISOR_BIT 0 265 - #define IT_SCR_SCDR_DIVISOR_STOP_VAL_1 0x00 266 - #define IT_SCR_SCDR_DIVISOR_STOP_VAL_2 0x01 267 - #define IT_SCR_SCDR_DIVISOR_STOP_VAL_3 0x7F 268 - 269 - // IT8172 DMA 270 - #define IT_DMAC_BASE 0x16000 271 - #define IT_DMAC_BCAR0 0x00 272 - #define IT_DMAC_BCAR1 0x04 273 - #define IT_DMAC_BCAR2 0x08 274 - #define IT_DMAC_BCAR3 0x0C 275 - #define IT_DMAC_BCCR0 0x02 276 - #define IT_DMAC_BCCR1 0x06 277 - #define IT_DMAC_BCCR2 0x0a 278 - #define IT_DMAC_BCCR3 0x0e 279 - #define IT_DMAC_CR 0x10 280 - #define IT_DMAC_SR 0x12 281 - #define IT_DMAC_ESR 0x13 282 - #define IT_DMAC_RQR 0x14 283 - #define IT_DMAC_MR 0x16 284 - #define IT_DMAC_EMR 0x17 285 - #define IT_DMAC_MKR 0x18 286 - #define IT_DMAC_PAR0 0x20 287 - #define IT_DMAC_PAR1 0x22 288 - #define IT_DMAC_PAR2 0x24 289 - #define IT_DMAC_PAR3 0x26 290 - 291 - // IT8172 IDE 292 - #define IT_IDE_BASE 0x17800 293 - #define IT_IDE_STATUS 0x1F7 294 - 295 - // IT8172 Audio Controller 296 - #define IT_AC_BASE 0x17000 297 - #define IT_AC_PCMOV 0x00 298 - #define IT_AC_FMOV 0x02 299 - #define IT_AC_I2SV 0x04 300 - #define IT_AC_DRSS 0x06 301 - #define IT_AC_PCC 0x08 302 - #define IT_AC_PCDL 0x0A 303 - #define IT_AC_PCB1STA 0x0C 304 - #define IT_AC_PCB2STA 0x10 305 - #define IT_AC_CAPCC 0x14 306 - #define IT_AC_CAPCDL 0x16 307 - #define IT_AC_CAPB1STA 0x18 308 - #define IT_AC_CAPB2STA 0x1C 309 - #define IT_AC_CODECC 0x22 310 - #define IT_AC_I2SMC 0x24 311 - #define IT_AC_VS 0x26 312 - #define IT_AC_SRCS 0x28 313 - #define IT_AC_CIRCP 0x2A 314 - #define IT_AC_CIRDP 0x2C 315 - #define IT_AC_TM 0x4A 316 - #define IT_AC_PFDP 0x4C 317 - #define IT_AC_GC 0x54 318 - #define IT_AC_IMC 0x56 319 - #define IT_AC_ISC 0x5B 320 - #define IT_AC_OPL3SR 0x68 321 - #define IT_AC_OPL3DWDR 0x69 322 - #define IT_AC_OPL3AB1W 0x6A 323 - #define IT_AC_OPL3DW 0x6B 324 - #define IT_AC_BPDC 0x70 325 - 326 - 327 - // IT8172 Timer 328 - #define IT_TIMER_BASE 0x10800 329 - #define TIMER_TCVR0 0x00 330 - #define TIMER_TRVR0 0x02 331 - #define TIMER_TCR0 0x04 332 - #define TIMER_TIRR 0x06 333 - #define TIMER_TCVR1 0x08 334 - #define TIMER_TRVR1 0x0A 335 - #define TIMER_TCR1 0x0C 336 - #define TIMER_TIDR 0x0E 337 - 338 - 339 - #define IT_WRITE(ofs, data) *(volatile u32 *)KSEG1ADDR((IT8172_BASE+ofs)) = data 340 - #define IT_READ(ofs, data) data = *(volatile u32 *)KSEG1ADDR((IT8172_BASE+ofs)) 341 - 342 - #define IT_IO_WRITE(ofs, data) *(volatile u32 *)KSEG1ADDR((IT8172_PCI_IO_BASE+ofs)) = data 343 - #define IT_IO_READ(ofs, data) data = *(volatile u32 *)KSEG1ADDR((IT8172_PCI_IO_BASE+ofs)) 344 - 345 - #define IT_IO_WRITE16(ofs, data) *(volatile u16 *)KSEG1ADDR((IT8172_PCI_IO_BASE+ofs)) = data 346 - #define IT_IO_READ16(ofs, data) data = *(volatile u16 *)KSEG1ADDR((IT8172_PCI_IO_BASE+ofs)) 347 - 348 - #endif
···
-140
include/asm-mips/it8172/it8172_cir.h
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * IT8172 Consumer IR port defines. 5 - * 6 - * Copyright 2001 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * ppopov@mvista.com or source@mvista.com 9 - * 10 - * This program is free software; you can redistribute it and/or modify it 11 - * under the terms of the GNU General Public License as published by the 12 - * Free Software Foundation; either version 2 of the License, or (at your 13 - * option) any later version. 14 - * 15 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 - * 26 - * You should have received a copy of the GNU General Public License along 27 - * with this program; if not, write to the Free Software Foundation, Inc., 28 - * 675 Mass Ave, Cambridge, MA 02139, USA. 29 - */ 30 - 31 - #define NUM_CIR_PORTS 2 32 - 33 - /* Master Control Register */ 34 - #define CIR_RESET 0x1 35 - #define CIR_FIFO_CLEAR 0x2 36 - #define CIR_SET_FIFO_TL(x) (((x)&0x3)<<2) 37 - #define CIR_ILE 0x10 38 - #define CIR_ILSEL 0x20 39 - 40 - /* Interrupt Enable Register */ 41 - #define CIR_TLDLIE 0x1 42 - #define CIR_RDAIE 0x2 43 - #define CIR_RFOIE 0x4 44 - #define CIR_IEC 0x80 45 - 46 - /* Interrupt Identification Register */ 47 - #define CIR_TLDLI 0x1 48 - #define CIR_RDAI 0x2 49 - #define CIR_RFOI 0x4 50 - #define CIR_NIP 0x80 51 - 52 - /* Carrier Frequency Register */ 53 - #define CIR_SET_CF(x) ((x)&0x1f) 54 - #define CFQ_38_480 0xB /* 38 KHz low, 480 KHz high */ 55 - #define CIR_HCFS 0x20 56 - #define CIR_SET_HS(x) (((x)&0x1)<<5) 57 - 58 - 59 - /* Receiver Control Register */ 60 - #define CIR_SET_RXDCR(x) ((x)&0x7) 61 - #define CIR_RXACT 0x8 62 - #define CIR_RXEND 0x10 63 - #define CIR_RDWOS 0x20 64 - #define CIR_SET_RDWOS(x) (((x)&0x1)<<5) 65 - #define CIR_RXEN 0x80 66 - 67 - /* Transmitter Control Register */ 68 - #define CIR_SET_TXMPW(x) ((x)&0x7) 69 - #define CIR_SET_TXMPM(x) (((x)&0x3)<<3) 70 - #define CIR_TXENDF 0x20 71 - #define CIR_TXRLE 0x40 72 - 73 - /* Receiver FIFO Status Register */ 74 - #define CIR_RXFBC_MASK 0x3f 75 - #define CIR_RXFTO 0x80 76 - 77 - /* Wakeup Code Length Register */ 78 - #define CIR_SET_WCL ((x)&0x3f) 79 - #define CIR_WCL_MASK(x) ((x)&0x3f) 80 - 81 - /* Wakeup Power Control/Status Register */ 82 - #define CIR_BTMON 0x2 83 - #define CIR_CIRON 0x4 84 - #define CIR_RCRST 0x10 85 - #define CIR_WCRST 0x20 86 - 87 - struct cir_port { 88 - int port; 89 - unsigned short baud_rate; 90 - unsigned char fifo_tl; 91 - unsigned char cfq; 92 - unsigned char hcfs; 93 - unsigned char rdwos; 94 - unsigned char rxdcr; 95 - }; 96 - 97 - struct it8172_cir_regs { 98 - unsigned char dr; /* data */ 99 - char pad; 100 - unsigned char mstcr; /* master control */ 101 - char pad1; 102 - unsigned char ier; /* interrupt enable */ 103 - char pad2; 104 - unsigned char iir; /* interrupt identification */ 105 - char pad3; 106 - unsigned char cfr; /* carrier frequency */ 107 - char pad4; 108 - unsigned char rcr; /* receiver control */ 109 - char pad5; 110 - unsigned char tcr; /* transmitter control */ 111 - char pad6; 112 - char pad7; 113 - char pad8; 114 - unsigned char bdlr; /* baud rate divisor low byte */ 115 - char pad9; 116 - unsigned char bdhr; /* baud rate divisor high byte */ 117 - char pad10; 118 - unsigned char tfsr; /* tx fifo byte count */ 119 - char pad11; 120 - unsigned char rfsr; /* rx fifo status */ 121 - char pad12; 122 - unsigned char wcl; /* wakeup code length */ 123 - char pad13; 124 - unsigned char wcr; /* wakeup code read/write */ 125 - char pad14; 126 - unsigned char wps; /* wakeup power control/status */ 127 - }; 128 - 129 - int cir_port_init(struct cir_port *cir); 130 - extern void clear_fifo(struct cir_port *cir); 131 - extern void enable_receiver(struct cir_port *cir); 132 - extern void disable_receiver(struct cir_port *cir); 133 - extern void enable_rx_demodulation(struct cir_port *cir); 134 - extern void disable_rx_demodulation(struct cir_port *cir); 135 - extern void set_rx_active(struct cir_port *cir); 136 - extern void int_enable(struct cir_port *cir); 137 - extern void rx_int_enable(struct cir_port *cir); 138 - extern char get_int_status(struct cir_port *cir); 139 - extern int cir_get_rx_count(struct cir_port *cir); 140 - extern char cir_read_data(struct cir_port *cir);
···
-38
include/asm-mips/it8172/it8172_dbg.h
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * Function prototypes for low level uart routines to 5 - * directly access a 16550 uart. 6 - * 7 - * Copyright 2000 MontaVista Software Inc. 8 - * Author: MontaVista Software, Inc. 9 - * ppopov@mvista.com or source@mvista.com 10 - * 11 - * This program is free software; you can redistribute it and/or modify it 12 - * under the terms of the GNU General Public License as published by the 13 - * Free Software Foundation; either version 2 of the License, or (at your 14 - * option) any later version. 15 - * 16 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 17 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 19 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 22 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 23 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 - * 27 - * You should have received a copy of the GNU General Public License along 28 - * with this program; if not, write to the Free Software Foundation, Inc., 29 - * 675 Mass Ave, Cambridge, MA 02139, USA. 30 - */ 31 - 32 - #include <linux/types.h> 33 - 34 - extern void putch(const unsigned char c); 35 - extern void puts(unsigned char *cp); 36 - extern void fputs(unsigned char *cp); 37 - extern void put64(uint64_t ul); 38 - extern void put32(unsigned u);
···
-144
include/asm-mips/it8172/it8172_int.h
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * ITE 8172 Interrupt Numbering 5 - * 6 - * Copyright 2000 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * ppopov@mvista.com or source@mvista.com 9 - * 10 - * This program is free software; you can redistribute it and/or modify it 11 - * under the terms of the GNU General Public License as published by the 12 - * Free Software Foundation; either version 2 of the License, or (at your 13 - * option) any later version. 14 - * 15 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 - * 26 - * You should have received a copy of the GNU General Public License along 27 - * with this program; if not, write to the Free Software Foundation, Inc., 28 - * 675 Mass Ave, Cambridge, MA 02139, USA. 29 - */ 30 - 31 - #ifndef _MIPS_ITEINT_H 32 - #define _MIPS_ITEINT_H 33 - 34 - /* 35 - * Here's the "strategy": 36 - * We number the LPC serial irqs from 0 to 15, 37 - * the local bus irqs from 16 to 31, 38 - * the pci dev register interrupts from 32 to 47, 39 - * and the non-maskable ints from 48 to 53. 40 - */ 41 - 42 - #define IT8172_LPC_IRQ_BASE 0 /* first LPC int number */ 43 - #define IT8172_SERIRQ_0 (IT8172_LPC_IRQ_BASE + 0) 44 - #define IT8172_SERIRQ_1 (IT8172_LPC_IRQ_BASE + 1) 45 - #define IT8172_SERIRQ_2 (IT8172_LPC_IRQ_BASE + 2) 46 - #define IT8172_SERIRQ_3 (IT8172_LPC_IRQ_BASE + 3) 47 - #define IT8172_SERIRQ_4 (IT8172_LPC_IRQ_BASE + 4) 48 - #define IT8172_SERIRQ_5 (IT8172_LPC_IRQ_BASE + 5) 49 - #define IT8172_SERIRQ_6 (IT8172_LPC_IRQ_BASE + 6) 50 - #define IT8172_SERIRQ_7 (IT8172_LPC_IRQ_BASE + 7) 51 - #define IT8172_SERIRQ_8 (IT8172_LPC_IRQ_BASE + 8) 52 - #define IT8172_SERIRQ_9 (IT8172_LPC_IRQ_BASE + 9) 53 - #define IT8172_SERIRQ_10 (IT8172_LPC_IRQ_BASE + 10) 54 - #define IT8172_SERIRQ_11 (IT8172_LPC_IRQ_BASE + 11) 55 - #define IT8172_SERIRQ_12 (IT8172_LPC_IRQ_BASE + 12) 56 - #define IT8172_SERIRQ_13 (IT8172_LPC_IRQ_BASE + 13) 57 - #define IT8172_SERIRQ_14 (IT8172_LPC_IRQ_BASE + 14) 58 - #define IT8172_SERIRQ_15 (IT8172_LPC_IRQ_BASE + 15) 59 - 60 - #define IT8172_LB_IRQ_BASE 16 /* first local bus int number */ 61 - #define IT8172_PPR_IRQ (IT8172_LB_IRQ_BASE + 0) /* parallel port */ 62 - #define IT8172_TIMER0_IRQ (IT8172_LB_IRQ_BASE + 1) 63 - #define IT8172_TIMER1_IRQ (IT8172_LB_IRQ_BASE + 2) 64 - #define IT8172_I2C_IRQ (IT8172_LB_IRQ_BASE + 3) 65 - #define IT8172_GPIO_IRQ (IT8172_LB_IRQ_BASE + 4) 66 - #define IT8172_CIR0_IRQ (IT8172_LB_IRQ_BASE + 5) 67 - #define IT8172_CIR1_IRQ (IT8172_LB_IRQ_BASE + 6) 68 - #define IT8172_UART_IRQ (IT8172_LB_IRQ_BASE + 7) 69 - #define IT8172_SCR0_IRQ (IT8172_LB_IRQ_BASE + 8) 70 - #define IT8172_SCR1_IRQ (IT8172_LB_IRQ_BASE + 9) 71 - #define IT8172_RTC_IRQ (IT8172_LB_IRQ_BASE + 10) 72 - #define IT8172_IOCHK_IRQ (IT8172_LB_IRQ_BASE + 11) 73 - /* 12 - 15 reserved */ 74 - 75 - /* 76 - * Note here that the pci dev registers includes bits for more than 77 - * just the pci devices. 78 - */ 79 - #define IT8172_PCI_DEV_IRQ_BASE 32 /* first pci dev irq */ 80 - #define IT8172_AC97_IRQ (IT8172_PCI_DEV_IRQ_BASE + 0) 81 - #define IT8172_MC68K_IRQ (IT8172_PCI_DEV_IRQ_BASE + 1) 82 - #define IT8172_IDE_IRQ (IT8172_PCI_DEV_IRQ_BASE + 2) 83 - #define IT8172_USB_IRQ (IT8172_PCI_DEV_IRQ_BASE + 3) 84 - #define IT8172_BRIDGE_MASTER_IRQ (IT8172_PCI_DEV_IRQ_BASE + 4) 85 - #define IT8172_BRIDGE_TARGET_IRQ (IT8172_PCI_DEV_IRQ_BASE + 5) 86 - #define IT8172_PCI_INTA_IRQ (IT8172_PCI_DEV_IRQ_BASE + 6) 87 - #define IT8172_PCI_INTB_IRQ (IT8172_PCI_DEV_IRQ_BASE + 7) 88 - #define IT8172_PCI_INTC_IRQ (IT8172_PCI_DEV_IRQ_BASE + 8) 89 - #define IT8172_PCI_INTD_IRQ (IT8172_PCI_DEV_IRQ_BASE + 9) 90 - #define IT8172_S_INTA_IRQ (IT8172_PCI_DEV_IRQ_BASE + 10) 91 - #define IT8172_S_INTB_IRQ (IT8172_PCI_DEV_IRQ_BASE + 11) 92 - #define IT8172_S_INTC_IRQ (IT8172_PCI_DEV_IRQ_BASE + 12) 93 - #define IT8172_S_INTD_IRQ (IT8172_PCI_DEV_IRQ_BASE + 13) 94 - #define IT8172_CDMA_IRQ (IT8172_PCI_DEV_IRQ_BASE + 14) 95 - #define IT8172_DMA_IRQ (IT8172_PCI_DEV_IRQ_BASE + 15) 96 - 97 - #define IT8172_NMI_IRQ_BASE 48 98 - #define IT8172_SER_NMI_IRQ (IT8172_NMI_IRQ_BASE + 0) 99 - #define IT8172_PCI_NMI_IRQ (IT8172_NMI_IRQ_BASE + 1) 100 - #define IT8172_RTC_NMI_IRQ (IT8172_NMI_IRQ_BASE + 2) 101 - #define IT8172_CPUIF_NMI_IRQ (IT8172_NMI_IRQ_BASE + 3) 102 - #define IT8172_PMER_NMI_IRQ (IT8172_NMI_IRQ_BASE + 4) 103 - #define IT8172_POWER_NMI_IRQ (IT8172_NMI_IRQ_BASE + 5) 104 - 105 - #define IT8172_LAST_IRQ (IT8172_POWER_NMI_IRQ) 106 - /* Finally, let's move over here the mips cpu timer interrupt. 107 - */ 108 - #define MIPS_CPU_TIMER_IRQ (NR_IRQS-1) 109 - 110 - /* 111 - * IT8172 Interrupt Controller Registers 112 - */ 113 - struct it8172_intc_regs { 114 - volatile unsigned short lb_req; /* offset 0 */ 115 - volatile unsigned short lb_mask; 116 - volatile unsigned short lb_trigger; 117 - volatile unsigned short lb_level; 118 - unsigned char pad0[8]; 119 - 120 - volatile unsigned short lpc_req; /* offset 0x10 */ 121 - volatile unsigned short lpc_mask; 122 - volatile unsigned short lpc_trigger; 123 - volatile unsigned short lpc_level; 124 - unsigned char pad1[8]; 125 - 126 - volatile unsigned short pci_req; /* offset 0x20 */ 127 - volatile unsigned short pci_mask; 128 - volatile unsigned short pci_trigger; 129 - volatile unsigned short pci_level; 130 - unsigned char pad2[8]; 131 - 132 - volatile unsigned short nmi_req; /* offset 0x30 */ 133 - volatile unsigned short nmi_mask; 134 - volatile unsigned short nmi_trigger; 135 - volatile unsigned short nmi_level; 136 - unsigned char pad3[6]; 137 - 138 - volatile unsigned short nmi_redir; /* offset 0x3E */ 139 - unsigned char pad4[0xBE]; 140 - 141 - volatile unsigned short intstatus; /* offset 0xFE */ 142 - }; 143 - 144 - #endif /* _MIPS_ITEINT_H */
···
-108
include/asm-mips/it8172/it8172_pci.h
··· 1 - /* 2 - * 3 - * BRIEF MODULE DESCRIPTION 4 - * IT8172 system controller specific pci defines. 5 - * 6 - * Copyright 2000 MontaVista Software Inc. 7 - * Author: MontaVista Software, Inc. 8 - * ppopov@mvista.com or source@mvista.com 9 - * 10 - * This program is free software; you can redistribute it and/or modify it 11 - * under the terms of the GNU General Public License as published by the 12 - * Free Software Foundation; either version 2 of the License, or (at your 13 - * option) any later version. 14 - * 15 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 - * 26 - * You should have received a copy of the GNU General Public License along 27 - * with this program; if not, write to the Free Software Foundation, Inc., 28 - * 675 Mass Ave, Cambridge, MA 02139, USA. 29 - */ 30 - 31 - #ifndef _8172PCI_H_ 32 - #define _8172PCI_H_ 33 - 34 - // PCI configuration space Type0 35 - #define PCI_IDREG 0x00 36 - #define PCI_CMDSTSREG 0x04 37 - #define PCI_CLASSREG 0x08 38 - #define PCI_BHLCREG 0x0C 39 - #define PCI_BASE1REG 0x10 40 - #define PCI_BASE2REG 0x14 41 - #define PCI_BASE3REG 0x18 42 - #define PCI_BASE4REG 0x1C 43 - #define PCI_BASE5REG 0x20 44 - #define PCI_BASE6REG 0x24 45 - #define PCI_ROMBASEREG 0x30 46 - #define PCI_INTRREG 0x3C 47 - 48 - // PCI configuration space Type1 49 - #define PCI_BUSNOREG 0x18 50 - 51 - #define IT_PCI_VENDORID(x) ((x) & 0xFFFF) 52 - #define IT_PCI_DEVICEID(x) (((x)>>16) & 0xFFFF) 53 - 54 - // Command register 55 - #define PCI_CMD_IOEN 0x00000001 56 - #define PCI_CMD_MEMEN 0x00000002 57 - #define PCI_CMD_BUSMASTER 0x00000004 58 - #define PCI_CMD_SPCYCLE 0x00000008 59 - #define PCI_CMD_WRINV 0x00000010 60 - #define PCI_CMD_VGASNOOP 0x00000020 61 - #define PCI_CMD_PERR 0x00000040 62 - #define PCI_CMD_WAITCTRL 0x00000080 63 - #define PCI_CMD_SERR 0x00000100 64 - #define PCI_CMD_FAST_BACKTOBACK 0x00000200 65 - 66 - // Status register 67 - #define PCI_STS_66MHZ 0x00200000 68 - #define PCI_STS_SUPPORT_UDF 0x00400000 69 - #define PCI_STS_FAST_BACKTOBACK 0x00800000 70 - #define PCI_STS_DATA_PERR 0x01000000 71 - #define PCI_STS_DEVSEL0 0x02000000 72 - #define PCI_STS_DEVSEL1 0x04000000 73 - #define PCI_STS_SIG_TGTABORT 0x08000000 74 - #define PCI_STS_RCV_TGTABORT 0x10000000 75 - #define PCI_STS_RCV_MSTABORT 0x20000000 76 - #define PCI_STS_SYSERR 0x40000000 77 - #define PCI_STS_DETCT_PERR 0x80000000 78 - 79 - #define IT_PCI_CLASS(x) (((x)>>24) & 0xFF) 80 - #define IT_PCI_SUBCLASS(x) (((x)>>16) & 0xFF) 81 - #define IT_PCI_INTERFACE(x) (((x)>>8) & 0xFF) 82 - #define IT_PCI_REVISION(x) ((x) & 0xFF) 83 - 84 - // PCI class code 85 - #define PCI_CLASS_BRIDGE 0x06 86 - 87 - // bridge subclass 88 - #define PCI_SUBCLASS_BRIDGE_HOST 0x00 89 - #define PCI_SUBCLASS_BRIDGE_PCI 0x04 90 - 91 - // BHLCREG 92 - #define IT_PCI_BIST(x) (((x)>>24) & 0xFF) 93 - #define IT_PCI_HEADERTYPE(x) (((x)>>16) & 0xFF) 94 - #define IT_PCI_LATENCYTIMER(x) (((x)>>8) & 0xFF) 95 - #define IT_PCI_CACHELINESIZE(x) ((x) & 0xFF) 96 - 97 - #define PCI_MULTIFUNC 0x80 98 - 99 - // INTRREG 100 - #define IT_PCI_MAXLAT(x) (((x)>>24) & 0xFF) 101 - #define IT_PCI_MINGNT(x) (((x)>>16) & 0xFF) 102 - #define IT_PCI_INTRPIN(x) (((x)>>8) & 0xFF) 103 - #define IT_PCI_INTRLINE(x) ((x) & 0xFF) 104 - 105 - #define PCI_VENDOR_NEC 0x1033 106 - #define PCI_VENDOR_DEC 0x1101 107 - 108 - #endif // _8172PCI_H_
···
-28
include/asm-mips/it8712.h
··· 1 - 2 - #ifndef __IT8712_H__ 3 - #define __IT8712_H__ 4 - 5 - #define LPC_BASE_ADDR 0x14000000 6 - 7 - // MB PnP configuration register 8 - #define LPC_KEY_ADDR 0x1400002E 9 - #define LPC_DATA_ADDR 0x1400002F 10 - 11 - // Device LDN 12 - #define LDN_SERIAL1 0x01 13 - #define LDN_SERIAL2 0x02 14 - #define LDN_PARALLEL 0x03 15 - #define LDN_KEYBOARD 0x05 16 - #define LDN_MOUSE 0x06 17 - 18 - #define IT8712_UART1_PORT 0x3F8 19 - #define IT8712_UART2_PORT 0x2F8 20 - 21 - #ifndef ASM_ONLY 22 - 23 - void LPCSetConfig(char LdnNumber, char Index, char data); 24 - char LPCGetConfig(char LdnNumber, char Index); 25 - 26 - #endif 27 - 28 - #endif
···
+1 -2
include/asm-mips/ptrace.h
··· 44 unsigned long cp0_epc; 45 #ifdef CONFIG_MIPS_MT_SMTC 46 unsigned long cp0_tcstatus; 47 - unsigned long smtc_pad; 48 #endif /* CONFIG_MIPS_MT_SMTC */ 49 - }; 50 51 /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ 52 #define PTRACE_GETREGS 12
··· 44 unsigned long cp0_epc; 45 #ifdef CONFIG_MIPS_MT_SMTC 46 unsigned long cp0_tcstatus; 47 #endif /* CONFIG_MIPS_MT_SMTC */ 48 + } __attribute__ ((aligned (8))); 49 50 /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ 51 #define PTRACE_GETREGS 12
-34
include/asm-mips/serial.h
··· 69 #define EV64120_SERIAL_PORT_DEFNS 70 #endif 71 72 - #ifdef CONFIG_MIPS_ITE8172 73 - #include <asm/it8172/it8172.h> 74 - #include <asm/it8172/it8172_int.h> 75 - #include <asm/it8712.h> 76 - #define ITE_SERIAL_PORT_DEFNS \ 77 - { .baud_base = BASE_BAUD, .port = (IT8172_PCI_IO_BASE + IT_UART_BASE), \ 78 - .irq = IT8172_UART_IRQ, .flags = STD_COM_FLAGS, .port = PORT_16550 }, \ 79 - { .baud_base = (24000000/(16*13)), .port = (IT8172_PCI_IO_BASE + IT8712_UART1_PORT), \ 80 - .irq = IT8172_SERIRQ_4, .flags = STD_COM_FLAGS, .port = PORT_16550 }, \ 81 - /* Smart Card Reader 0 */ \ 82 - { .baud_base = BASE_BAUD, .port = (IT8172_PCI_IO_BASE + IT_SCR0_BASE), \ 83 - .irq = IT8172_SCR0_IRQ, .flags = STD_COM_FLAGS, .port = PORT_16550 }, \ 84 - /* Smart Card Reader 1 */ \ 85 - { .baud_base = BASE_BAUD, .port = (IT8172_PCI_IO_BASE + IT_SCR1_BASE), \ 86 - .irq = IT8172_SCR1_IRQ, .flags = STD_COM_FLAGS, .port = PORT_16550 }, 87 - #else 88 - #define ITE_SERIAL_PORT_DEFNS 89 - #endif 90 - 91 - #ifdef CONFIG_MIPS_IVR 92 - #include <asm/it8172/it8172.h> 93 - #include <asm/it8172/it8172_int.h> 94 - #define IVR_SERIAL_PORT_DEFNS \ 95 - { .baud_base = BASE_BAUD, .port = (IT8172_PCI_IO_BASE + IT_UART_BASE), \ 96 - .irq = IT8172_UART_IRQ, .flags = STD_COM_FLAGS, .port = PORT_16550 }, \ 97 - /* Smart Card Reader 1 */ \ 98 - { .baud_base = BASE_BAUD, .port = (IT8172_PCI_IO_BASE + IT_SCR1_BASE), \ 99 - .irq = IT8172_SCR1_IRQ, .flags = STD_COM_FLAGS, .port = PORT_16550 }, 100 - #else 101 - #define IVR_SERIAL_PORT_DEFNS 102 - #endif 103 - 104 #ifdef CONFIG_HAVE_STD_PC_SERIAL_PORT 105 #define STD_SERIAL_PORT_DEFNS \ 106 /* UART CLK PORT IRQ FLAGS */ \ ··· 208 DDB5477_SERIAL_PORT_DEFNS \ 209 EV64120_SERIAL_PORT_DEFNS \ 210 IP32_SERIAL_PORT_DEFNS \ 211 - ITE_SERIAL_PORT_DEFNS \ 212 - IVR_SERIAL_PORT_DEFNS \ 213 JAZZ_SERIAL_PORT_DEFNS \ 214 STD_SERIAL_PORT_DEFNS \ 215 MOMENCO_OCELOT_G_SERIAL_PORT_DEFNS \
··· 69 #define EV64120_SERIAL_PORT_DEFNS 70 #endif 71 72 #ifdef CONFIG_HAVE_STD_PC_SERIAL_PORT 73 #define STD_SERIAL_PORT_DEFNS \ 74 /* UART CLK PORT IRQ FLAGS */ \ ··· 240 DDB5477_SERIAL_PORT_DEFNS \ 241 EV64120_SERIAL_PORT_DEFNS \ 242 IP32_SERIAL_PORT_DEFNS \ 243 JAZZ_SERIAL_PORT_DEFNS \ 244 STD_SERIAL_PORT_DEFNS \ 245 MOMENCO_OCELOT_G_SERIAL_PORT_DEFNS \
-66
include/linux/ite_gpio.h
··· 1 - /* 2 - * FILE NAME ite_gpio.h 3 - * 4 - * BRIEF MODULE DESCRIPTION 5 - * Generic gpio. 6 - * 7 - * Author: MontaVista Software, Inc. <source@mvista.com> 8 - * Hai-Pao Fan <haipao@mvista.com> 9 - * 10 - * Copyright 2001 MontaVista Software Inc. 11 - * 12 - * This program is free software; you can redistribute it and/or modify it 13 - * under the terms of the GNU General Public License as published by the 14 - * Free Software Foundation; either version 2 of the License, or (at your 15 - * option) any later version. 16 - * 17 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 18 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 20 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 23 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 24 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 - * 28 - * You should have received a copy of the GNU General Public License along 29 - * with this program; if not, write to the Free Software Foundation, Inc., 30 - * 675 Mass Ave, Cambridge, MA 02139, USA. 31 - */ 32 - 33 - #ifndef __ITE_GPIO_H 34 - #define __ITE_GPIO_H 35 - 36 - #include <linux/ioctl.h> 37 - 38 - struct ite_gpio_ioctl_data { 39 - __u32 device; 40 - __u32 mask; 41 - __u32 data; 42 - }; 43 - 44 - #define ITE_GPIO_IOCTL_BASE 'Z' 45 - 46 - #define ITE_GPIO_IN _IOWR(ITE_GPIO_IOCTL_BASE, 0, struct ite_gpio_ioctl_data) 47 - #define ITE_GPIO_OUT _IOW (ITE_GPIO_IOCTL_BASE, 1, struct ite_gpio_ioctl_data) 48 - #define ITE_GPIO_INT_CTRL _IOW (ITE_GPIO_IOCTL_BASE, 2, struct ite_gpio_ioctl_data) 49 - #define ITE_GPIO_IN_STATUS _IOW (ITE_GPIO_IOCTL_BASE, 3, struct ite_gpio_ioctl_data) 50 - #define ITE_GPIO_OUT_STATUS _IOW (ITE_GPIO_IOCTL_BASE, 4, struct ite_gpio_ioctl_data) 51 - #define ITE_GPIO_GEN_CTRL _IOW (ITE_GPIO_IOCTL_BASE, 5, struct ite_gpio_ioctl_data) 52 - #define ITE_GPIO_INT_WAIT _IOW (ITE_GPIO_IOCTL_BASE, 6, struct ite_gpio_ioctl_data) 53 - 54 - #define ITE_GPIO_PORTA 0x01 55 - #define ITE_GPIO_PORTB 0x02 56 - #define ITE_GPIO_PORTC 0x04 57 - 58 - extern int ite_gpio_in(__u32 device, __u32 mask, volatile __u32 *data); 59 - extern int ite_gpio_out(__u32 device, __u32 mask, __u32 data); 60 - extern int ite_gpio_int_ctrl(__u32 device, __u32 mask, __u32 data); 61 - extern int ite_gpio_in_status(__u32 device, __u32 mask, volatile __u32 *data); 62 - extern int ite_gpio_out_status(__u32 device, __u32 mask, __u32 data); 63 - extern int ite_gpio_gen_ctrl(__u32 device, __u32 mask, __u32 data); 64 - extern int ite_gpio_int_wait(__u32 device, __u32 mask, __u32 data); 65 - 66 - #endif
···
+3 -2
include/linux/pci_ids.h
··· 1615 #define PCI_VENDOR_ID_ROCKWELL 0x127A 1616 1617 #define PCI_VENDOR_ID_ITE 0x1283 1618 - #define PCI_DEVICE_ID_ITE_IT8172G 0x8172 1619 - #define PCI_DEVICE_ID_ITE_IT8172G_AUDIO 0x0801 1620 #define PCI_DEVICE_ID_ITE_8211 0x8211 1621 #define PCI_DEVICE_ID_ITE_8212 0x8212 1622 #define PCI_DEVICE_ID_ITE_8872 0x8872 ··· 1881 #define PCI_DEVICE_ID_PANACOM_QUADMODEM 0x0400 1882 #define PCI_DEVICE_ID_PANACOM_DUALMODEM 0x0402 1883 1884 1885 #define PCI_VENDOR_ID_AFAVLAB 0x14db 1886 #define PCI_DEVICE_ID_AFAVLAB_P028 0x2180 ··· 1997 #define PCI_DEVICE_ID_FARSITE_TE1C 0x1612 1998 1999 #define PCI_VENDOR_ID_SIBYTE 0x166d 2000 #define PCI_DEVICE_ID_BCM1250_HT 0x0002 2001 2002 #define PCI_VENDOR_ID_NETCELL 0x169c
··· 1615 #define PCI_VENDOR_ID_ROCKWELL 0x127A 1616 1617 #define PCI_VENDOR_ID_ITE 0x1283 1618 #define PCI_DEVICE_ID_ITE_8211 0x8211 1619 #define PCI_DEVICE_ID_ITE_8212 0x8212 1620 #define PCI_DEVICE_ID_ITE_8872 0x8872 ··· 1883 #define PCI_DEVICE_ID_PANACOM_QUADMODEM 0x0400 1884 #define PCI_DEVICE_ID_PANACOM_DUALMODEM 0x0402 1885 1886 + #define PCI_VENDOR_ID_SIPACKETS 0x14d9 1887 + #define PCI_DEVICE_ID_SP1011 0x0010 1888 1889 #define PCI_VENDOR_ID_AFAVLAB 0x14db 1890 #define PCI_DEVICE_ID_AFAVLAB_P028 0x2180 ··· 1997 #define PCI_DEVICE_ID_FARSITE_TE1C 0x1612 1998 1999 #define PCI_VENDOR_ID_SIBYTE 0x166d 2000 + #define PCI_DEVICE_ID_BCM1250_PCI 0x0001 2001 #define PCI_DEVICE_ID_BCM1250_HT 0x0002 2002 2003 #define PCI_VENDOR_ID_NETCELL 0x169c
-4
sound/oss/Kconfig
··· 115 Say Y or M if you have an SGI Indy or Indigo2 system and want to be able to 116 use its on-board A2 audio system. 117 118 - config SOUND_IT8172 119 - tristate "IT8172G Sound" 120 - depends on SOUND_PRIME && (MIPS_ITE8172 || MIPS_IVR) 121 - 122 config SOUND_VRC5477 123 tristate "NEC Vrc5477 AC97 sound" 124 depends on SOUND_PRIME && DDB5477
··· 115 Say Y or M if you have an SGI Indy or Indigo2 system and want to be able to 116 use its on-board A2 audio system. 117 118 config SOUND_VRC5477 119 tristate "NEC Vrc5477 AC97 sound" 120 depends on SOUND_PRIME && DDB5477
-1
sound/oss/Makefile
··· 77 obj-$(CONFIG_SOUND_RME96XX) += rme96xx.o 78 obj-$(CONFIG_SOUND_BT878) += btaudio.o 79 obj-$(CONFIG_SOUND_ALI5455) += ali5455.o ac97_codec.o 80 - obj-$(CONFIG_SOUND_IT8172) += ite8172.o ac97_codec.o 81 obj-$(CONFIG_SOUND_FORTE) += forte.o ac97_codec.o 82 83 obj-$(CONFIG_SOUND_AD1980) += ac97_plugin_ad1980.o ac97_codec.o
··· 77 obj-$(CONFIG_SOUND_RME96XX) += rme96xx.o 78 obj-$(CONFIG_SOUND_BT878) += btaudio.o 79 obj-$(CONFIG_SOUND_ALI5455) += ali5455.o ac97_codec.o 80 obj-$(CONFIG_SOUND_FORTE) += forte.o ac97_codec.o 81 82 obj-$(CONFIG_SOUND_AD1980) += ac97_plugin_ad1980.o ac97_codec.o
-2261
sound/oss/ite8172.c
··· 1 - /* 2 - * ite8172.c -- ITE IT8172G Sound Driver. 3 - * 4 - * Copyright 2001 MontaVista Software Inc. 5 - * Author: MontaVista Software, Inc. 6 - * stevel@mvista.com or source@mvista.com 7 - * 8 - * This program is free software; you can redistribute it and/or modify it 9 - * under the terms of the GNU General Public License as published by the 10 - * Free Software Foundation; either version 2 of the License, or (at your 11 - * option) any later version. 12 - * 13 - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 14 - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 15 - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 16 - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 17 - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 18 - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 19 - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 20 - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 - * 24 - * You should have received a copy of the GNU General Public License along 25 - * with this program; if not, write to the Free Software Foundation, Inc., 26 - * 675 Mass Ave, Cambridge, MA 02139, USA. 27 - * 28 - * 29 - * Module command line parameters: 30 - * 31 - * Supported devices: 32 - * /dev/dsp standard OSS /dev/dsp device 33 - * /dev/mixer standard OSS /dev/mixer device 34 - * 35 - * Notes: 36 - * 37 - * 1. Much of the OSS buffer allocation, ioctl's, and mmap'ing are 38 - * taken, slightly modified or not at all, from the ES1371 driver, 39 - * so refer to the credits in es1371.c for those. The rest of the 40 - * code (probe, open, read, write, the ISR, etc.) is new. 41 - * 2. The following support is untested: 42 - * * Memory mapping the audio buffers, and the ioctl controls that go 43 - * with it. 44 - * * S/PDIF output. 45 - * * I2S support. 46 - * 3. The following is not supported: 47 - * * legacy audio mode. 48 - * 4. Support for volume button interrupts is implemented but doesn't 49 - * work yet. 50 - * 51 - * Revision history 52 - * 02.08.2001 Initial release 53 - * 06.22.2001 Added I2S support 54 - * 07.30.2003 Removed initialisation to zero for static variables 55 - * (spdif[NR_DEVICE], i2s_fmt[NR_DEVICE], and devindex) 56 - */ 57 - #include <linux/module.h> 58 - #include <linux/string.h> 59 - #include <linux/ioport.h> 60 - #include <linux/sched.h> 61 - #include <linux/delay.h> 62 - #include <linux/sound.h> 63 - #include <linux/slab.h> 64 - #include <linux/soundcard.h> 65 - #include <linux/pci.h> 66 - #include <linux/init.h> 67 - #include <linux/poll.h> 68 - #include <linux/bitops.h> 69 - #include <linux/proc_fs.h> 70 - #include <linux/spinlock.h> 71 - #include <linux/smp_lock.h> 72 - #include <linux/ac97_codec.h> 73 - #include <linux/interrupt.h> 74 - #include <linux/mutex.h> 75 - 76 - #include <asm/io.h> 77 - #include <asm/dma.h> 78 - #include <asm/uaccess.h> 79 - #include <asm/it8172/it8172.h> 80 - 81 - /* --------------------------------------------------------------------- */ 82 - 83 - #undef OSS_DOCUMENTED_MIXER_SEMANTICS 84 - #define IT8172_DEBUG 85 - #undef IT8172_VERBOSE_DEBUG 86 - #define DBG(x) {} 87 - 88 - #define IT8172_MODULE_NAME "IT8172 audio" 89 - #define PFX IT8172_MODULE_NAME 90 - 91 - #ifdef IT8172_DEBUG 92 - #define dbg(format, arg...) printk(KERN_DEBUG PFX ": " format "\n" , ## arg) 93 - #else 94 - #define dbg(format, arg...) do {} while (0) 95 - #endif 96 - #define err(format, arg...) printk(KERN_ERR PFX ": " format "\n" , ## arg) 97 - #define info(format, arg...) printk(KERN_INFO PFX ": " format "\n" , ## arg) 98 - #define warn(format, arg...) printk(KERN_WARNING PFX ": " format "\n" , ## arg) 99 - 100 - 101 - #define IT8172_MODULE_NAME "IT8172 audio" 102 - #define PFX IT8172_MODULE_NAME 103 - 104 - #ifdef IT8172_DEBUG 105 - #define dbg(format, arg...) printk(KERN_DEBUG PFX ": " format "\n" , ## arg) 106 - #else 107 - #define dbg(format, arg...) do {} while (0) 108 - #endif 109 - #define err(format, arg...) printk(KERN_ERR PFX ": " format "\n" , ## arg) 110 - #define info(format, arg...) printk(KERN_INFO PFX ": " format "\n" , ## arg) 111 - #define warn(format, arg...) printk(KERN_WARNING PFX ": " format "\n" , ## arg) 112 - 113 - 114 - static const unsigned sample_shift[] = { 0, 1, 1, 2 }; 115 - 116 - 117 - /* 118 - * Audio Controller register bit definitions follow. See 119 - * include/asm/it8172/it8172.h for register offsets. 120 - */ 121 - 122 - /* PCM Out Volume Reg */ 123 - #define PCMOV_PCMOM (1<<15) /* PCM Out Mute default 1: mute */ 124 - #define PCMOV_PCMRCG_BIT 8 /* PCM Right channel Gain */ 125 - #define PCMOV_PCMRCG_MASK (0x1f<<PCMOV_PCMRCG_BIT) 126 - #define PCMOV_PCMLCG_BIT 0 /* PCM Left channel gain */ 127 - #define PCMOV_PCMLCG_MASK 0x1f 128 - 129 - /* FM Out Volume Reg */ 130 - #define FMOV_FMOM (1<<15) /* FM Out Mute default 1: mute */ 131 - #define FMOV_FMRCG_BIT 8 /* FM Right channel Gain */ 132 - #define FMOV_FMRCG_MASK (0x1f<<FMOV_FMRCG_BIT) 133 - #define FMOV_FMLCG_BIT 0 /* FM Left channel gain */ 134 - #define FMOV_FMLCG_MASK 0x1f 135 - 136 - /* I2S Out Volume Reg */ 137 - #define I2SV_I2SOM (1<<15) /* I2S Out Mute default 1: mute */ 138 - #define I2SV_I2SRCG_BIT 8 /* I2S Right channel Gain */ 139 - #define I2SV_I2SRCG_MASK (0x1f<<I2SV_I2SRCG_BIT) 140 - #define I2SV_I2SLCG_BIT 0 /* I2S Left channel gain */ 141 - #define I2SV_I2SLCG_MASK 0x1f 142 - 143 - /* Digital Recording Source Select Reg */ 144 - #define DRSS_BIT 0 145 - #define DRSS_MASK 0x07 146 - #define DRSS_AC97_PRIM 0 147 - #define DRSS_FM 1 148 - #define DRSS_I2S 2 149 - #define DRSS_PCM 3 150 - #define DRSS_AC97_SEC 4 151 - 152 - /* Playback/Capture Channel Control Registers */ 153 - #define CC_SM (1<<15) /* Stereo, Mone 0: mono 1: stereo */ 154 - #define CC_DF (1<<14) /* Data Format 0: 8 bit 1: 16 bit */ 155 - #define CC_FMT_BIT 14 156 - #define CC_FMT_MASK (0x03<<CC_FMT_BIT) 157 - #define CC_CF_BIT 12 /* Channel format (Playback only) */ 158 - #define CC_CF_MASK (0x03<<CC_CF_BIT) 159 - #define CC_CF_2 0 160 - #define CC_CF_4 (1<<CC_CF_BIT) 161 - #define CC_CF_6 (2<<CC_CF_BIT) 162 - #define CC_SR_BIT 8 /* sample Rate */ 163 - #define CC_SR_MASK (0x0f<<CC_SR_BIT) 164 - #define CC_SR_5500 0 165 - #define CC_SR_8000 (1<<CC_SR_BIT) 166 - #define CC_SR_9600 (2<<CC_SR_BIT) 167 - #define CC_SR_11025 (3<<CC_SR_BIT) 168 - #define CC_SR_16000 (4<<CC_SR_BIT) 169 - #define CC_SR_19200 (5<<CC_SR_BIT) 170 - #define CC_SR_22050 (6<<CC_SR_BIT) 171 - #define CC_SR_32000 (7<<CC_SR_BIT) 172 - #define CC_SR_38400 (8<<CC_SR_BIT) 173 - #define CC_SR_44100 (9<<CC_SR_BIT) 174 - #define CC_SR_48000 (10<<CC_SR_BIT) 175 - #define CC_CSP (1<<7) /* Channel stop 176 - * 0: End of Current buffer 177 - * 1: Immediately stop when rec stop */ 178 - #define CC_CP (1<<6) /* Channel pause 0: normal, 1: pause */ 179 - #define CC_CA (1<<5) /* Channel Action 0: Stop , 1: start */ 180 - #define CC_CB2L (1<<2) /* Cur. buf. 2 xfr is last 0: No, 1: Yes */ 181 - #define CC_CB1L (1<<1) /* Cur. buf. 1 xfr is last 0: No, 1: Yes */ 182 - #define CC_DE 1 /* DFC/DFIFO Data Empty 1: empty, 0: not empty 183 - * (Playback only) 184 - */ 185 - 186 - /* Codec Control Reg */ 187 - #define CODECC_GME (1<<9) /* AC97 GPIO Mode enable */ 188 - #define CODECC_ATM (1<<8) /* AC97 ATE test mode 0: test 1: normal */ 189 - #define CODECC_WR (1<<6) /* AC97 Warn reset 1: warm reset , 0: Normal */ 190 - #define CODECC_CR (1<<5) /* AC97 Cold reset 1: Cold reset , 0: Normal */ 191 - 192 - 193 - /* I2S Control Reg */ 194 - #define I2SMC_SR_BIT 6 /* I2S Sampling rate 195 - * 00: 48KHz, 01: 44.1 KHz, 10: 32 32 KHz */ 196 - #define I2SMC_SR_MASK (0x03<<I2SMC_SR_BIT) 197 - #define I2SMC_SR_48000 0 198 - #define I2SMC_SR_44100 (1<<I2SMC_SR_BIT) 199 - #define I2SMC_SR_32000 (2<<I2SMC_SR_BIT) 200 - #define I2SMC_SRSS (1<<5) /* Sample Rate Source Select 1:S/W, 0: H/W */ 201 - #define I2SMC_I2SF_BIT 0 /* I2S Format */ 202 - #define I2SMC_I2SF_MASK 0x03 203 - #define I2SMC_I2SF_DAC 0 204 - #define I2SMC_I2SF_ADC 2 205 - #define I2SMC_I2SF_I2S 3 206 - 207 - 208 - /* Volume up, Down, Mute */ 209 - #define VS_VMP (1<<2) /* Volume mute 1: pushed, 0: not */ 210 - #define VS_VDP (1<<1) /* Volume Down 1: pushed, 0: not */ 211 - #define VS_VUP 1 /* Volime Up 1: pushed, 0: not */ 212 - 213 - /* SRC, Mixer test control/DFC status reg */ 214 - #define SRCS_DPUSC (1<<5) /* DFC Playback underrun Status/clear */ 215 - #define SRCS_DCOSC (1<<4) /* DFC Capture Overrun Status/clear */ 216 - #define SRCS_SIS (1<<3) /* SRC input select 1: Mixer, 0: Codec I/F */ 217 - #define SRCS_CDIS_BIT 0 /* Codec Data Input Select */ 218 - #define SRCS_CDIS_MASK 0x07 219 - #define SRCS_CDIS_MIXER 0 220 - #define SRCS_CDIS_PCM 1 221 - #define SRCS_CDIS_I2S 2 222 - #define SRCS_CDIS_FM 3 223 - #define SRCS_CDIS_DFC 4 224 - 225 - 226 - /* Codec Index Reg command Port */ 227 - #define CIRCP_CID_BIT 10 228 - #define CIRCP_CID_MASK (0x03<<CIRCP_CID_BIT) 229 - #define CIRCP_CPS (1<<9) /* Command Port Status 0: ready, 1: busy */ 230 - #define CIRCP_DPVF (1<<8) /* Data Port Valid Flag 0: invalis, 1: valid */ 231 - #define CIRCP_RWC (1<<7) /* Read/write command */ 232 - #define CIRCP_CIA_BIT 0 233 - #define CIRCP_CIA_MASK 0x007F /* Codec Index Address */ 234 - 235 - /* Test Mode Control/Test group Select Control */ 236 - 237 - /* General Control Reg */ 238 - #define GC_VDC_BIT 6 /* Volume Division Control */ 239 - #define GC_VDC_MASK (0x03<<GC_VDC_BIT) 240 - #define GC_VDC_NONE 0 241 - #define GC_VDC_DIV2 (1<<GC_VDC_BIT) 242 - #define GC_VDC_DIV4 (2<<GC_VDC_BIT) 243 - #define GC_SOE (1<<2) /* S/PDIF Output enable */ 244 - #define GC_SWR 1 /* Software warn reset */ 245 - 246 - /* Interrupt mask Control Reg */ 247 - #define IMC_VCIM (1<<6) /* Volume CNTL interrupt mask */ 248 - #define IMC_CCIM (1<<1) /* Capture Chan. iterrupt mask */ 249 - #define IMC_PCIM 1 /* Playback Chan. interrupt mask */ 250 - 251 - /* Interrupt status/clear reg */ 252 - #define ISC_VCI (1<<6) /* Volume CNTL interrupt 1: clears */ 253 - #define ISC_CCI (1<<1) /* Capture Chan. interrupt 1: clears */ 254 - #define ISC_PCI 1 /* Playback Chan. interrupt 1: clears */ 255 - 256 - /* misc stuff */ 257 - #define POLL_COUNT 0x5000 258 - 259 - 260 - /* --------------------------------------------------------------------- */ 261 - 262 - /* 263 - * Define DIGITAL1 as the I2S channel, since it is not listed in 264 - * soundcard.h. 265 - */ 266 - #define SOUND_MIXER_I2S SOUND_MIXER_DIGITAL1 267 - #define SOUND_MASK_I2S SOUND_MASK_DIGITAL1 268 - #define SOUND_MIXER_READ_I2S MIXER_READ(SOUND_MIXER_I2S) 269 - #define SOUND_MIXER_WRITE_I2S MIXER_WRITE(SOUND_MIXER_I2S) 270 - 271 - /* --------------------------------------------------------------------- */ 272 - 273 - struct it8172_state { 274 - /* list of it8172 devices */ 275 - struct list_head devs; 276 - 277 - /* the corresponding pci_dev structure */ 278 - struct pci_dev *dev; 279 - 280 - /* soundcore stuff */ 281 - int dev_audio; 282 - 283 - /* hardware resources */ 284 - unsigned long io; 285 - unsigned int irq; 286 - 287 - /* PCI ID's */ 288 - u16 vendor; 289 - u16 device; 290 - u8 rev; /* the chip revision */ 291 - 292 - /* options */ 293 - int spdif_volume; /* S/PDIF output is enabled if != -1 */ 294 - int i2s_volume; /* current I2S out volume, in OSS format */ 295 - int i2s_recording;/* 1 = recording from I2S, 0 = not */ 296 - 297 - #ifdef IT8172_DEBUG 298 - /* debug /proc entry */ 299 - struct proc_dir_entry *ps; 300 - struct proc_dir_entry *ac97_ps; 301 - #endif /* IT8172_DEBUG */ 302 - 303 - struct ac97_codec codec; 304 - 305 - unsigned short pcc, capcc; 306 - unsigned dacrate, adcrate; 307 - 308 - spinlock_t lock; 309 - struct mutex open_mutex; 310 - mode_t open_mode; 311 - wait_queue_head_t open_wait; 312 - 313 - struct dmabuf { 314 - void *rawbuf; 315 - dma_addr_t dmaaddr; 316 - unsigned buforder; 317 - unsigned numfrag; 318 - unsigned fragshift; 319 - void* nextIn; 320 - void* nextOut; 321 - int count; 322 - int curBufPtr; 323 - unsigned total_bytes; 324 - unsigned error; /* over/underrun */ 325 - wait_queue_head_t wait; 326 - /* redundant, but makes calculations easier */ 327 - unsigned fragsize; 328 - unsigned dmasize; 329 - unsigned fragsamples; 330 - /* OSS stuff */ 331 - unsigned mapped:1; 332 - unsigned ready:1; 333 - unsigned stopped:1; 334 - unsigned ossfragshift; 335 - int ossmaxfrags; 336 - unsigned subdivision; 337 - } dma_dac, dma_adc; 338 - }; 339 - 340 - /* --------------------------------------------------------------------- */ 341 - 342 - static LIST_HEAD(devs); 343 - 344 - /* --------------------------------------------------------------------- */ 345 - 346 - static inline unsigned ld2(unsigned int x) 347 - { 348 - unsigned r = 0; 349 - 350 - if (x >= 0x10000) { 351 - x >>= 16; 352 - r += 16; 353 - } 354 - if (x >= 0x100) { 355 - x >>= 8; 356 - r += 8; 357 - } 358 - if (x >= 0x10) { 359 - x >>= 4; 360 - r += 4; 361 - } 362 - if (x >= 4) { 363 - x >>= 2; 364 - r += 2; 365 - } 366 - if (x >= 2) 367 - r++; 368 - return r; 369 - } 370 - 371 - /* --------------------------------------------------------------------- */ 372 - 373 - static void it8172_delay(int msec) 374 - { 375 - unsigned long tmo; 376 - signed long tmo2; 377 - 378 - if (in_interrupt()) 379 - return; 380 - 381 - tmo = jiffies + (msec*HZ)/1000; 382 - for (;;) { 383 - tmo2 = tmo - jiffies; 384 - if (tmo2 <= 0) 385 - break; 386 - schedule_timeout(tmo2); 387 - } 388 - } 389 - 390 - 391 - static unsigned short 392 - get_compat_rate(unsigned* rate) 393 - { 394 - unsigned rate_out = *rate; 395 - unsigned short sr; 396 - 397 - if (rate_out >= 46050) { 398 - sr = CC_SR_48000; rate_out = 48000; 399 - } else if (rate_out >= 41250) { 400 - sr = CC_SR_44100; rate_out = 44100; 401 - } else if (rate_out >= 35200) { 402 - sr = CC_SR_38400; rate_out = 38400; 403 - } else if (rate_out >= 27025) { 404 - sr = CC_SR_32000; rate_out = 32000; 405 - } else if (rate_out >= 20625) { 406 - sr = CC_SR_22050; rate_out = 22050; 407 - } else if (rate_out >= 17600) { 408 - sr = CC_SR_19200; rate_out = 19200; 409 - } else if (rate_out >= 13513) { 410 - sr = CC_SR_16000; rate_out = 16000; 411 - } else if (rate_out >= 10313) { 412 - sr = CC_SR_11025; rate_out = 11025; 413 - } else if (rate_out >= 8800) { 414 - sr = CC_SR_9600; rate_out = 9600; 415 - } else if (rate_out >= 6750) { 416 - sr = CC_SR_8000; rate_out = 8000; 417 - } else { 418 - sr = CC_SR_5500; rate_out = 5500; 419 - } 420 - 421 - *rate = rate_out; 422 - return sr; 423 - } 424 - 425 - static void set_adc_rate(struct it8172_state *s, unsigned rate) 426 - { 427 - unsigned long flags; 428 - unsigned short sr; 429 - 430 - sr = get_compat_rate(&rate); 431 - 432 - spin_lock_irqsave(&s->lock, flags); 433 - s->capcc &= ~CC_SR_MASK; 434 - s->capcc |= sr; 435 - outw(s->capcc, s->io+IT_AC_CAPCC); 436 - spin_unlock_irqrestore(&s->lock, flags); 437 - 438 - s->adcrate = rate; 439 - } 440 - 441 - 442 - static void set_dac_rate(struct it8172_state *s, unsigned rate) 443 - { 444 - unsigned long flags; 445 - unsigned short sr; 446 - 447 - sr = get_compat_rate(&rate); 448 - 449 - spin_lock_irqsave(&s->lock, flags); 450 - s->pcc &= ~CC_SR_MASK; 451 - s->pcc |= sr; 452 - outw(s->pcc, s->io+IT_AC_PCC); 453 - spin_unlock_irqrestore(&s->lock, flags); 454 - 455 - s->dacrate = rate; 456 - } 457 - 458 - 459 - /* --------------------------------------------------------------------- */ 460 - 461 - static u16 rdcodec(struct ac97_codec *codec, u8 addr) 462 - { 463 - struct it8172_state *s = (struct it8172_state *)codec->private_data; 464 - unsigned long flags; 465 - unsigned short circp, data; 466 - int i; 467 - 468 - spin_lock_irqsave(&s->lock, flags); 469 - 470 - for (i = 0; i < POLL_COUNT; i++) 471 - if (!(inw(s->io+IT_AC_CIRCP) & CIRCP_CPS)) 472 - break; 473 - if (i == POLL_COUNT) 474 - err("rdcodec: codec ready poll expired!"); 475 - 476 - circp = addr & CIRCP_CIA_MASK; 477 - circp |= (codec->id << CIRCP_CID_BIT); 478 - circp |= CIRCP_RWC; // read command 479 - outw(circp, s->io+IT_AC_CIRCP); 480 - 481 - /* now wait for the data */ 482 - for (i = 0; i < POLL_COUNT; i++) 483 - if (inw(s->io+IT_AC_CIRCP) & CIRCP_DPVF) 484 - break; 485 - if (i == POLL_COUNT) 486 - err("rdcodec: read poll expired!"); 487 - 488 - data = inw(s->io+IT_AC_CIRDP); 489 - spin_unlock_irqrestore(&s->lock, flags); 490 - 491 - return data; 492 - } 493 - 494 - 495 - static void wrcodec(struct ac97_codec *codec, u8 addr, u16 data) 496 - { 497 - struct it8172_state *s = (struct it8172_state *)codec->private_data; 498 - unsigned long flags; 499 - unsigned short circp; 500 - int i; 501 - 502 - spin_lock_irqsave(&s->lock, flags); 503 - 504 - for (i = 0; i < POLL_COUNT; i++) 505 - if (!(inw(s->io+IT_AC_CIRCP) & CIRCP_CPS)) 506 - break; 507 - if (i == POLL_COUNT) 508 - err("wrcodec: codec ready poll expired!"); 509 - 510 - circp = addr & CIRCP_CIA_MASK; 511 - circp |= (codec->id << CIRCP_CID_BIT); 512 - circp &= ~CIRCP_RWC; // write command 513 - 514 - outw(data, s->io+IT_AC_CIRDP); // send data first 515 - outw(circp, s->io+IT_AC_CIRCP); 516 - 517 - spin_unlock_irqrestore(&s->lock, flags); 518 - } 519 - 520 - 521 - static void waitcodec(struct ac97_codec *codec) 522 - { 523 - unsigned short temp; 524 - 525 - /* codec_wait is used to wait for a ready state after 526 - an AC97_RESET. */ 527 - it8172_delay(10); 528 - 529 - temp = rdcodec(codec, 0x26); 530 - 531 - // If power down, power up 532 - if (temp & 0x3f00) { 533 - // Power on 534 - wrcodec(codec, 0x26, 0); 535 - it8172_delay(100); 536 - // Reread 537 - temp = rdcodec(codec, 0x26); 538 - } 539 - 540 - // Check if Codec REF,ANL,DAC,ADC ready***/ 541 - if ((temp & 0x3f0f) != 0x000f) { 542 - err("codec reg 26 status (0x%x) not ready!!", temp); 543 - return; 544 - } 545 - } 546 - 547 - 548 - /* --------------------------------------------------------------------- */ 549 - 550 - static inline void stop_adc(struct it8172_state *s) 551 - { 552 - struct dmabuf* db = &s->dma_adc; 553 - unsigned long flags; 554 - unsigned char imc; 555 - 556 - if (db->stopped) 557 - return; 558 - 559 - spin_lock_irqsave(&s->lock, flags); 560 - 561 - s->capcc &= ~(CC_CA | CC_CP | CC_CB2L | CC_CB1L); 562 - s->capcc |= CC_CSP; 563 - outw(s->capcc, s->io+IT_AC_CAPCC); 564 - 565 - // disable capture interrupt 566 - imc = inb(s->io+IT_AC_IMC); 567 - outb(imc | IMC_CCIM, s->io+IT_AC_IMC); 568 - 569 - db->stopped = 1; 570 - 571 - spin_unlock_irqrestore(&s->lock, flags); 572 - } 573 - 574 - static inline void stop_dac(struct it8172_state *s) 575 - { 576 - struct dmabuf* db = &s->dma_dac; 577 - unsigned long flags; 578 - unsigned char imc; 579 - 580 - if (db->stopped) 581 - return; 582 - 583 - spin_lock_irqsave(&s->lock, flags); 584 - 585 - s->pcc &= ~(CC_CA | CC_CP | CC_CB2L | CC_CB1L); 586 - s->pcc |= CC_CSP; 587 - outw(s->pcc, s->io+IT_AC_PCC); 588 - 589 - // disable playback interrupt 590 - imc = inb(s->io+IT_AC_IMC); 591 - outb(imc | IMC_PCIM, s->io+IT_AC_IMC); 592 - 593 - db->stopped = 1; 594 - 595 - spin_unlock_irqrestore(&s->lock, flags); 596 - } 597 - 598 - static void start_dac(struct it8172_state *s) 599 - { 600 - struct dmabuf* db = &s->dma_dac; 601 - unsigned long flags; 602 - unsigned char imc; 603 - unsigned long buf1, buf2; 604 - 605 - if (!db->stopped) 606 - return; 607 - 608 - spin_lock_irqsave(&s->lock, flags); 609 - 610 - // reset Buffer 1 and 2 pointers to nextOut and nextOut+fragsize 611 - buf1 = virt_to_bus(db->nextOut); 612 - buf2 = buf1 + db->fragsize; 613 - if (buf2 >= db->dmaaddr + db->dmasize) 614 - buf2 -= db->dmasize; 615 - 616 - outl(buf1, s->io+IT_AC_PCB1STA); 617 - outl(buf2, s->io+IT_AC_PCB2STA); 618 - db->curBufPtr = IT_AC_PCB1STA; 619 - 620 - // enable playback interrupt 621 - imc = inb(s->io+IT_AC_IMC); 622 - outb(imc & ~IMC_PCIM, s->io+IT_AC_IMC); 623 - 624 - s->pcc &= ~(CC_CSP | CC_CP | CC_CB2L | CC_CB1L); 625 - s->pcc |= CC_CA; 626 - outw(s->pcc, s->io+IT_AC_PCC); 627 - 628 - db->stopped = 0; 629 - 630 - spin_unlock_irqrestore(&s->lock, flags); 631 - } 632 - 633 - static void start_adc(struct it8172_state *s) 634 - { 635 - struct dmabuf* db = &s->dma_adc; 636 - unsigned long flags; 637 - unsigned char imc; 638 - unsigned long buf1, buf2; 639 - 640 - if (!db->stopped) 641 - return; 642 - 643 - spin_lock_irqsave(&s->lock, flags); 644 - 645 - // reset Buffer 1 and 2 pointers to nextIn and nextIn+fragsize 646 - buf1 = virt_to_bus(db->nextIn); 647 - buf2 = buf1 + db->fragsize; 648 - if (buf2 >= db->dmaaddr + db->dmasize) 649 - buf2 -= db->dmasize; 650 - 651 - outl(buf1, s->io+IT_AC_CAPB1STA); 652 - outl(buf2, s->io+IT_AC_CAPB2STA); 653 - db->curBufPtr = IT_AC_CAPB1STA; 654 - 655 - // enable capture interrupt 656 - imc = inb(s->io+IT_AC_IMC); 657 - outb(imc & ~IMC_CCIM, s->io+IT_AC_IMC); 658 - 659 - s->capcc &= ~(CC_CSP | CC_CP | CC_CB2L | CC_CB1L); 660 - s->capcc |= CC_CA; 661 - outw(s->capcc, s->io+IT_AC_CAPCC); 662 - 663 - db->stopped = 0; 664 - 665 - spin_unlock_irqrestore(&s->lock, flags); 666 - } 667 - 668 - /* --------------------------------------------------------------------- */ 669 - 670 - #define DMABUF_DEFAULTORDER (17-PAGE_SHIFT) 671 - #define DMABUF_MINORDER 1 672 - 673 - static inline void dealloc_dmabuf(struct it8172_state *s, struct dmabuf *db) 674 - { 675 - struct page *page, *pend; 676 - 677 - if (db->rawbuf) { 678 - /* undo marking the pages as reserved */ 679 - pend = virt_to_page(db->rawbuf + 680 - (PAGE_SIZE << db->buforder) - 1); 681 - for (page = virt_to_page(db->rawbuf); page <= pend; page++) 682 - ClearPageReserved(page); 683 - pci_free_consistent(s->dev, PAGE_SIZE << db->buforder, 684 - db->rawbuf, db->dmaaddr); 685 - } 686 - db->rawbuf = db->nextIn = db->nextOut = NULL; 687 - db->mapped = db->ready = 0; 688 - } 689 - 690 - static int prog_dmabuf(struct it8172_state *s, struct dmabuf *db, 691 - unsigned rate, unsigned fmt, unsigned reg) 692 - { 693 - int order; 694 - unsigned bytepersec; 695 - unsigned bufs; 696 - struct page *page, *pend; 697 - 698 - if (!db->rawbuf) { 699 - db->ready = db->mapped = 0; 700 - for (order = DMABUF_DEFAULTORDER; 701 - order >= DMABUF_MINORDER; order--) 702 - if ((db->rawbuf = 703 - pci_alloc_consistent(s->dev, 704 - PAGE_SIZE << order, 705 - &db->dmaaddr))) 706 - break; 707 - if (!db->rawbuf) 708 - return -ENOMEM; 709 - db->buforder = order; 710 - /* now mark the pages as reserved; 711 - otherwise remap_pfn_range doesn't do what we want */ 712 - pend = virt_to_page(db->rawbuf + 713 - (PAGE_SIZE << db->buforder) - 1); 714 - for (page = virt_to_page(db->rawbuf); page <= pend; page++) 715 - SetPageReserved(page); 716 - } 717 - 718 - db->count = 0; 719 - db->nextIn = db->nextOut = db->rawbuf; 720 - 721 - bytepersec = rate << sample_shift[fmt]; 722 - bufs = PAGE_SIZE << db->buforder; 723 - if (db->ossfragshift) { 724 - if ((1000 << db->ossfragshift) < bytepersec) 725 - db->fragshift = ld2(bytepersec/1000); 726 - else 727 - db->fragshift = db->ossfragshift; 728 - } else { 729 - db->fragshift = ld2(bytepersec/100/(db->subdivision ? 730 - db->subdivision : 1)); 731 - if (db->fragshift < 3) 732 - db->fragshift = 3; 733 - } 734 - db->numfrag = bufs >> db->fragshift; 735 - while (db->numfrag < 4 && db->fragshift > 3) { 736 - db->fragshift--; 737 - db->numfrag = bufs >> db->fragshift; 738 - } 739 - db->fragsize = 1 << db->fragshift; 740 - if (db->ossmaxfrags >= 4 && db->ossmaxfrags < db->numfrag) 741 - db->numfrag = db->ossmaxfrags; 742 - db->fragsamples = db->fragsize >> sample_shift[fmt]; 743 - db->dmasize = db->numfrag << db->fragshift; 744 - memset(db->rawbuf, (fmt & (CC_DF>>CC_FMT_BIT)) ? 0 : 0x80, bufs); 745 - 746 - #ifdef IT8172_VERBOSE_DEBUG 747 - dbg("rate=%d, fragsize=%d, numfrag=%d, dmasize=%d", 748 - rate, db->fragsize, db->numfrag, db->dmasize); 749 - #endif 750 - 751 - // set data length register 752 - outw(db->fragsize, s->io+reg+2); 753 - db->ready = 1; 754 - 755 - return 0; 756 - } 757 - 758 - static inline int prog_dmabuf_adc(struct it8172_state *s) 759 - { 760 - stop_adc(s); 761 - return prog_dmabuf(s, &s->dma_adc, s->adcrate, 762 - (s->capcc & CC_FMT_MASK) >> CC_FMT_BIT, 763 - IT_AC_CAPCC); 764 - } 765 - 766 - static inline int prog_dmabuf_dac(struct it8172_state *s) 767 - { 768 - stop_dac(s); 769 - return prog_dmabuf(s, &s->dma_dac, s->dacrate, 770 - (s->pcc & CC_FMT_MASK) >> CC_FMT_BIT, 771 - IT_AC_PCC); 772 - } 773 - 774 - 775 - /* hold spinlock for the following! */ 776 - 777 - static irqreturn_t it8172_interrupt(int irq, void *dev_id, struct pt_regs *regs) 778 - { 779 - struct it8172_state *s = (struct it8172_state *)dev_id; 780 - struct dmabuf* dac = &s->dma_dac; 781 - struct dmabuf* adc = &s->dma_adc; 782 - unsigned char isc, vs; 783 - unsigned short vol, mute; 784 - unsigned long newptr; 785 - 786 - spin_lock(&s->lock); 787 - 788 - isc = inb(s->io+IT_AC_ISC); 789 - 790 - /* fastpath out, to ease interrupt sharing */ 791 - if (!(isc & (ISC_VCI | ISC_CCI | ISC_PCI))) { 792 - spin_unlock(&s->lock); 793 - return IRQ_NONE; 794 - } 795 - 796 - /* clear audio interrupts first */ 797 - outb(isc | ISC_VCI | ISC_CCI | ISC_PCI, s->io+IT_AC_ISC); 798 - 799 - /* handle volume button events (ignore if S/PDIF enabled) */ 800 - if ((isc & ISC_VCI) && s->spdif_volume == -1) { 801 - vs = inb(s->io+IT_AC_VS); 802 - outb(0, s->io+IT_AC_VS); 803 - vol = inw(s->io+IT_AC_PCMOV); 804 - mute = vol & PCMOV_PCMOM; 805 - vol &= PCMOV_PCMLCG_MASK; 806 - if ((vs & VS_VUP) && vol > 0) 807 - vol--; 808 - if ((vs & VS_VDP) && vol < 0x1f) 809 - vol++; 810 - vol |= (vol << PCMOV_PCMRCG_BIT); 811 - if (vs & VS_VMP) 812 - vol |= (mute ^ PCMOV_PCMOM); 813 - outw(vol, s->io+IT_AC_PCMOV); 814 - } 815 - 816 - /* update capture pointers */ 817 - if (isc & ISC_CCI) { 818 - if (adc->count > adc->dmasize - adc->fragsize) { 819 - // Overrun. Stop ADC and log the error 820 - stop_adc(s); 821 - adc->error++; 822 - dbg("adc overrun"); 823 - } else { 824 - newptr = virt_to_bus(adc->nextIn) + 2*adc->fragsize; 825 - if (newptr >= adc->dmaaddr + adc->dmasize) 826 - newptr -= adc->dmasize; 827 - 828 - outl(newptr, s->io+adc->curBufPtr); 829 - adc->curBufPtr = (adc->curBufPtr == IT_AC_CAPB1STA) ? 830 - IT_AC_CAPB2STA : IT_AC_CAPB1STA; 831 - 832 - adc->nextIn += adc->fragsize; 833 - if (adc->nextIn >= adc->rawbuf + adc->dmasize) 834 - adc->nextIn -= adc->dmasize; 835 - 836 - adc->count += adc->fragsize; 837 - adc->total_bytes += adc->fragsize; 838 - 839 - /* wake up anybody listening */ 840 - if (waitqueue_active(&adc->wait)) 841 - wake_up_interruptible(&adc->wait); 842 - } 843 - } 844 - 845 - /* update playback pointers */ 846 - if (isc & ISC_PCI) { 847 - newptr = virt_to_bus(dac->nextOut) + 2*dac->fragsize; 848 - if (newptr >= dac->dmaaddr + dac->dmasize) 849 - newptr -= dac->dmasize; 850 - 851 - outl(newptr, s->io+dac->curBufPtr); 852 - dac->curBufPtr = (dac->curBufPtr == IT_AC_PCB1STA) ? 853 - IT_AC_PCB2STA : IT_AC_PCB1STA; 854 - 855 - dac->nextOut += dac->fragsize; 856 - if (dac->nextOut >= dac->rawbuf + dac->dmasize) 857 - dac->nextOut -= dac->dmasize; 858 - 859 - dac->count -= dac->fragsize; 860 - dac->total_bytes += dac->fragsize; 861 - 862 - /* wake up anybody listening */ 863 - if (waitqueue_active(&dac->wait)) 864 - wake_up_interruptible(&dac->wait); 865 - 866 - if (dac->count <= 0) 867 - stop_dac(s); 868 - } 869 - 870 - spin_unlock(&s->lock); 871 - return IRQ_HANDLED; 872 - } 873 - 874 - /* --------------------------------------------------------------------- */ 875 - 876 - static int it8172_open_mixdev(struct inode *inode, struct file *file) 877 - { 878 - int minor = iminor(inode); 879 - struct list_head *list; 880 - struct it8172_state *s; 881 - 882 - for (list = devs.next; ; list = list->next) { 883 - if (list == &devs) 884 - return -ENODEV; 885 - s = list_entry(list, struct it8172_state, devs); 886 - if (s->codec.dev_mixer == minor) 887 - break; 888 - } 889 - file->private_data = s; 890 - return nonseekable_open(inode, file); 891 - } 892 - 893 - static int it8172_release_mixdev(struct inode *inode, struct file *file) 894 - { 895 - return 0; 896 - } 897 - 898 - 899 - static u16 900 - cvt_ossvol(unsigned int gain) 901 - { 902 - u16 ret; 903 - 904 - if (gain == 0) 905 - return 0; 906 - 907 - if (gain > 100) 908 - gain = 100; 909 - 910 - ret = (100 - gain + 32) / 4; 911 - ret = ret > 31 ? 31 : ret; 912 - return ret; 913 - } 914 - 915 - 916 - static int mixdev_ioctl(struct ac97_codec *codec, unsigned int cmd, 917 - unsigned long arg) 918 - { 919 - struct it8172_state *s = (struct it8172_state *)codec->private_data; 920 - unsigned int left, right; 921 - unsigned long flags; 922 - int val; 923 - u16 vol; 924 - 925 - /* 926 - * When we are in S/PDIF mode, we want to disable any analog output so 927 - * we filter the master/PCM channel volume ioctls. 928 - * 929 - * Also filter I2S channel, which AC'97 knows nothing about. 930 - */ 931 - 932 - switch (cmd) { 933 - case SOUND_MIXER_WRITE_VOLUME: 934 - // if not in S/PDIF mode, pass to AC'97 935 - if (s->spdif_volume == -1) 936 - break; 937 - return 0; 938 - case SOUND_MIXER_WRITE_PCM: 939 - // if not in S/PDIF mode, pass to AC'97 940 - if (s->spdif_volume == -1) 941 - break; 942 - if (get_user(val, (int *)arg)) 943 - return -EFAULT; 944 - right = ((val >> 8) & 0xff); 945 - left = (val & 0xff); 946 - if (right > 100) 947 - right = 100; 948 - if (left > 100) 949 - left = 100; 950 - s->spdif_volume = (right << 8) | left; 951 - vol = cvt_ossvol(left); 952 - vol |= (cvt_ossvol(right) << PCMOV_PCMRCG_BIT); 953 - if (vol == 0) 954 - vol = PCMOV_PCMOM; // mute 955 - spin_lock_irqsave(&s->lock, flags); 956 - outw(vol, s->io+IT_AC_PCMOV); 957 - spin_unlock_irqrestore(&s->lock, flags); 958 - return put_user(s->spdif_volume, (int *)arg); 959 - case SOUND_MIXER_READ_PCM: 960 - // if not in S/PDIF mode, pass to AC'97 961 - if (s->spdif_volume == -1) 962 - break; 963 - return put_user(s->spdif_volume, (int *)arg); 964 - case SOUND_MIXER_WRITE_I2S: 965 - if (get_user(val, (int *)arg)) 966 - return -EFAULT; 967 - right = ((val >> 8) & 0xff); 968 - left = (val & 0xff); 969 - if (right > 100) 970 - right = 100; 971 - if (left > 100) 972 - left = 100; 973 - s->i2s_volume = (right << 8) | left; 974 - vol = cvt_ossvol(left); 975 - vol |= (cvt_ossvol(right) << I2SV_I2SRCG_BIT); 976 - if (vol == 0) 977 - vol = I2SV_I2SOM; // mute 978 - outw(vol, s->io+IT_AC_I2SV); 979 - return put_user(s->i2s_volume, (int *)arg); 980 - case SOUND_MIXER_READ_I2S: 981 - return put_user(s->i2s_volume, (int *)arg); 982 - case SOUND_MIXER_WRITE_RECSRC: 983 - if (get_user(val, (int *)arg)) 984 - return -EFAULT; 985 - if (val & SOUND_MASK_I2S) { 986 - s->i2s_recording = 1; 987 - outb(DRSS_I2S, s->io+IT_AC_DRSS); 988 - return 0; 989 - } else { 990 - s->i2s_recording = 0; 991 - outb(DRSS_AC97_PRIM, s->io+IT_AC_DRSS); 992 - // now let AC'97 select record source 993 - break; 994 - } 995 - case SOUND_MIXER_READ_RECSRC: 996 - if (s->i2s_recording) 997 - return put_user(SOUND_MASK_I2S, (int *)arg); 998 - else 999 - // let AC'97 report recording source 1000 - break; 1001 - } 1002 - 1003 - return codec->mixer_ioctl(codec, cmd, arg); 1004 - } 1005 - 1006 - static int it8172_ioctl_mixdev(struct inode *inode, struct file *file, 1007 - unsigned int cmd, unsigned long arg) 1008 - { 1009 - struct it8172_state *s = (struct it8172_state *)file->private_data; 1010 - struct ac97_codec *codec = &s->codec; 1011 - 1012 - return mixdev_ioctl(codec, cmd, arg); 1013 - } 1014 - 1015 - static /*const*/ struct file_operations it8172_mixer_fops = { 1016 - .owner = THIS_MODULE, 1017 - .llseek = no_llseek, 1018 - .ioctl = it8172_ioctl_mixdev, 1019 - .open = it8172_open_mixdev, 1020 - .release = it8172_release_mixdev, 1021 - }; 1022 - 1023 - /* --------------------------------------------------------------------- */ 1024 - 1025 - static int drain_dac(struct it8172_state *s, int nonblock) 1026 - { 1027 - unsigned long flags; 1028 - int count, tmo; 1029 - 1030 - if (s->dma_dac.mapped || !s->dma_dac.ready || s->dma_dac.stopped) 1031 - return 0; 1032 - 1033 - for (;;) { 1034 - spin_lock_irqsave(&s->lock, flags); 1035 - count = s->dma_dac.count; 1036 - spin_unlock_irqrestore(&s->lock, flags); 1037 - if (count <= 0) 1038 - break; 1039 - if (signal_pending(current)) 1040 - break; 1041 - //if (nonblock) 1042 - //return -EBUSY; 1043 - tmo = 1000 * count / s->dacrate; 1044 - tmo >>= sample_shift[(s->pcc & CC_FMT_MASK) >> CC_FMT_BIT]; 1045 - it8172_delay(tmo); 1046 - } 1047 - if (signal_pending(current)) 1048 - return -ERESTARTSYS; 1049 - return 0; 1050 - } 1051 - 1052 - /* --------------------------------------------------------------------- */ 1053 - 1054 - 1055 - /* 1056 - * Copy audio data to/from user buffer from/to dma buffer, taking care 1057 - * that we wrap when reading/writing the dma buffer. Returns actual byte 1058 - * count written to or read from the dma buffer. 1059 - */ 1060 - static int copy_dmabuf_user(struct dmabuf *db, char* userbuf, 1061 - int count, int to_user) 1062 - { 1063 - char* bufptr = to_user ? db->nextOut : db->nextIn; 1064 - char* bufend = db->rawbuf + db->dmasize; 1065 - 1066 - if (bufptr + count > bufend) { 1067 - int partial = (int)(bufend - bufptr); 1068 - if (to_user) { 1069 - if (copy_to_user(userbuf, bufptr, partial)) 1070 - return -EFAULT; 1071 - if (copy_to_user(userbuf + partial, db->rawbuf, 1072 - count - partial)) 1073 - return -EFAULT; 1074 - } else { 1075 - if (copy_from_user(bufptr, userbuf, partial)) 1076 - return -EFAULT; 1077 - if (copy_from_user(db->rawbuf, 1078 - userbuf + partial, 1079 - count - partial)) 1080 - return -EFAULT; 1081 - } 1082 - } else { 1083 - if (to_user) { 1084 - if (copy_to_user(userbuf, bufptr, count)) 1085 - return -EFAULT; 1086 - } else { 1087 - if (copy_from_user(bufptr, userbuf, count)) 1088 - return -EFAULT; 1089 - } 1090 - } 1091 - 1092 - return count; 1093 - } 1094 - 1095 - 1096 - static ssize_t it8172_read(struct file *file, char *buffer, 1097 - size_t count, loff_t *ppos) 1098 - { 1099 - struct it8172_state *s = (struct it8172_state *)file->private_data; 1100 - struct dmabuf *db = &s->dma_adc; 1101 - ssize_t ret; 1102 - unsigned long flags; 1103 - int cnt, remainder, avail; 1104 - 1105 - if (db->mapped) 1106 - return -ENXIO; 1107 - if (!access_ok(VERIFY_WRITE, buffer, count)) 1108 - return -EFAULT; 1109 - ret = 0; 1110 - 1111 - while (count > 0) { 1112 - // wait for samples in capture buffer 1113 - do { 1114 - spin_lock_irqsave(&s->lock, flags); 1115 - if (db->stopped) 1116 - start_adc(s); 1117 - avail = db->count; 1118 - spin_unlock_irqrestore(&s->lock, flags); 1119 - if (avail <= 0) { 1120 - if (file->f_flags & O_NONBLOCK) { 1121 - if (!ret) 1122 - ret = -EAGAIN; 1123 - return ret; 1124 - } 1125 - interruptible_sleep_on(&db->wait); 1126 - if (signal_pending(current)) { 1127 - if (!ret) 1128 - ret = -ERESTARTSYS; 1129 - return ret; 1130 - } 1131 - } 1132 - } while (avail <= 0); 1133 - 1134 - // copy from nextOut to user 1135 - if ((cnt = copy_dmabuf_user(db, buffer, count > avail ? 1136 - avail : count, 1)) < 0) { 1137 - if (!ret) 1138 - ret = -EFAULT; 1139 - return ret; 1140 - } 1141 - 1142 - spin_lock_irqsave(&s->lock, flags); 1143 - db->count -= cnt; 1144 - spin_unlock_irqrestore(&s->lock, flags); 1145 - 1146 - db->nextOut += cnt; 1147 - if (db->nextOut >= db->rawbuf + db->dmasize) 1148 - db->nextOut -= db->dmasize; 1149 - 1150 - count -= cnt; 1151 - buffer += cnt; 1152 - ret += cnt; 1153 - } // while (count > 0) 1154 - 1155 - /* 1156 - * See if the dma buffer count after this read call is 1157 - * aligned on a fragsize boundary. If not, read from 1158 - * buffer until we reach a boundary, and let's hope this 1159 - * is just the last remainder of an audio record. If not 1160 - * it means the user is not reading in fragsize chunks, in 1161 - * which case it's his/her fault that there are audio gaps 1162 - * in their record. 1163 - */ 1164 - spin_lock_irqsave(&s->lock, flags); 1165 - remainder = db->count % db->fragsize; 1166 - if (remainder) { 1167 - db->nextOut += remainder; 1168 - if (db->nextOut >= db->rawbuf + db->dmasize) 1169 - db->nextOut -= db->dmasize; 1170 - db->count -= remainder; 1171 - } 1172 - spin_unlock_irqrestore(&s->lock, flags); 1173 - 1174 - return ret; 1175 - } 1176 - 1177 - static ssize_t it8172_write(struct file *file, const char *buffer, 1178 - size_t count, loff_t *ppos) 1179 - { 1180 - struct it8172_state *s = (struct it8172_state *)file->private_data; 1181 - struct dmabuf *db = &s->dma_dac; 1182 - ssize_t ret; 1183 - unsigned long flags; 1184 - int cnt, remainder, avail; 1185 - 1186 - if (db->mapped) 1187 - return -ENXIO; 1188 - if (!access_ok(VERIFY_READ, buffer, count)) 1189 - return -EFAULT; 1190 - ret = 0; 1191 - 1192 - while (count > 0) { 1193 - // wait for space in playback buffer 1194 - do { 1195 - spin_lock_irqsave(&s->lock, flags); 1196 - avail = db->dmasize - db->count; 1197 - spin_unlock_irqrestore(&s->lock, flags); 1198 - if (avail <= 0) { 1199 - if (file->f_flags & O_NONBLOCK) { 1200 - if (!ret) 1201 - ret = -EAGAIN; 1202 - return ret; 1203 - } 1204 - interruptible_sleep_on(&db->wait); 1205 - if (signal_pending(current)) { 1206 - if (!ret) 1207 - ret = -ERESTARTSYS; 1208 - return ret; 1209 - } 1210 - } 1211 - } while (avail <= 0); 1212 - 1213 - // copy to nextIn 1214 - if ((cnt = copy_dmabuf_user(db, (char*)buffer, 1215 - count > avail ? 1216 - avail : count, 0)) < 0) { 1217 - if (!ret) 1218 - ret = -EFAULT; 1219 - return ret; 1220 - } 1221 - 1222 - spin_lock_irqsave(&s->lock, flags); 1223 - db->count += cnt; 1224 - if (db->stopped) 1225 - start_dac(s); 1226 - spin_unlock_irqrestore(&s->lock, flags); 1227 - 1228 - db->nextIn += cnt; 1229 - if (db->nextIn >= db->rawbuf + db->dmasize) 1230 - db->nextIn -= db->dmasize; 1231 - 1232 - count -= cnt; 1233 - buffer += cnt; 1234 - ret += cnt; 1235 - } // while (count > 0) 1236 - 1237 - /* 1238 - * See if the dma buffer count after this write call is 1239 - * aligned on a fragsize boundary. If not, fill buffer 1240 - * with silence to the next boundary, and let's hope this 1241 - * is just the last remainder of an audio playback. If not 1242 - * it means the user is not sending us fragsize chunks, in 1243 - * which case it's his/her fault that there are audio gaps 1244 - * in their playback. 1245 - */ 1246 - spin_lock_irqsave(&s->lock, flags); 1247 - remainder = db->count % db->fragsize; 1248 - if (remainder) { 1249 - int fill_cnt = db->fragsize - remainder; 1250 - memset(db->nextIn, 0, fill_cnt); 1251 - db->nextIn += fill_cnt; 1252 - if (db->nextIn >= db->rawbuf + db->dmasize) 1253 - db->nextIn -= db->dmasize; 1254 - db->count += fill_cnt; 1255 - } 1256 - spin_unlock_irqrestore(&s->lock, flags); 1257 - 1258 - return ret; 1259 - } 1260 - 1261 - /* No kernel lock - we have our own spinlock */ 1262 - static unsigned int it8172_poll(struct file *file, 1263 - struct poll_table_struct *wait) 1264 - { 1265 - struct it8172_state *s = (struct it8172_state *)file->private_data; 1266 - unsigned long flags; 1267 - unsigned int mask = 0; 1268 - 1269 - if (file->f_mode & FMODE_WRITE) { 1270 - if (!s->dma_dac.ready) 1271 - return 0; 1272 - poll_wait(file, &s->dma_dac.wait, wait); 1273 - } 1274 - if (file->f_mode & FMODE_READ) { 1275 - if (!s->dma_adc.ready) 1276 - return 0; 1277 - poll_wait(file, &s->dma_adc.wait, wait); 1278 - } 1279 - 1280 - spin_lock_irqsave(&s->lock, flags); 1281 - if (file->f_mode & FMODE_READ) { 1282 - if (s->dma_adc.count >= (signed)s->dma_adc.fragsize) 1283 - mask |= POLLIN | POLLRDNORM; 1284 - } 1285 - if (file->f_mode & FMODE_WRITE) { 1286 - if (s->dma_dac.mapped) { 1287 - if (s->dma_dac.count >= (signed)s->dma_dac.fragsize) 1288 - mask |= POLLOUT | POLLWRNORM; 1289 - } else { 1290 - if ((signed)s->dma_dac.dmasize >= 1291 - s->dma_dac.count + (signed)s->dma_dac.fragsize) 1292 - mask |= POLLOUT | POLLWRNORM; 1293 - } 1294 - } 1295 - spin_unlock_irqrestore(&s->lock, flags); 1296 - return mask; 1297 - } 1298 - 1299 - static int it8172_mmap(struct file *file, struct vm_area_struct *vma) 1300 - { 1301 - struct it8172_state *s = (struct it8172_state *)file->private_data; 1302 - struct dmabuf *db; 1303 - unsigned long size; 1304 - 1305 - lock_kernel(); 1306 - if (vma->vm_flags & VM_WRITE) 1307 - db = &s->dma_dac; 1308 - else if (vma->vm_flags & VM_READ) 1309 - db = &s->dma_adc; 1310 - else { 1311 - unlock_kernel(); 1312 - return -EINVAL; 1313 - } 1314 - if (vma->vm_pgoff != 0) { 1315 - unlock_kernel(); 1316 - return -EINVAL; 1317 - } 1318 - size = vma->vm_end - vma->vm_start; 1319 - if (size > (PAGE_SIZE << db->buforder)) { 1320 - unlock_kernel(); 1321 - return -EINVAL; 1322 - } 1323 - if (remap_pfn_range(vma, vma->vm_start, 1324 - virt_to_phys(db->rawbuf) >> PAGE_SHIFT, 1325 - size, vma->vm_page_prot)) { 1326 - unlock_kernel(); 1327 - return -EAGAIN; 1328 - } 1329 - db->mapped = 1; 1330 - unlock_kernel(); 1331 - return 0; 1332 - } 1333 - 1334 - 1335 - #ifdef IT8172_VERBOSE_DEBUG 1336 - static struct ioctl_str_t { 1337 - unsigned int cmd; 1338 - const char* str; 1339 - } ioctl_str[] = { 1340 - {SNDCTL_DSP_RESET, "SNDCTL_DSP_RESET"}, 1341 - {SNDCTL_DSP_SYNC, "SNDCTL_DSP_SYNC"}, 1342 - {SNDCTL_DSP_SPEED, "SNDCTL_DSP_SPEED"}, 1343 - {SNDCTL_DSP_STEREO, "SNDCTL_DSP_STEREO"}, 1344 - {SNDCTL_DSP_GETBLKSIZE, "SNDCTL_DSP_GETBLKSIZE"}, 1345 - {SNDCTL_DSP_SAMPLESIZE, "SNDCTL_DSP_SAMPLESIZE"}, 1346 - {SNDCTL_DSP_CHANNELS, "SNDCTL_DSP_CHANNELS"}, 1347 - {SOUND_PCM_WRITE_CHANNELS, "SOUND_PCM_WRITE_CHANNELS"}, 1348 - {SOUND_PCM_WRITE_FILTER, "SOUND_PCM_WRITE_FILTER"}, 1349 - {SNDCTL_DSP_POST, "SNDCTL_DSP_POST"}, 1350 - {SNDCTL_DSP_SUBDIVIDE, "SNDCTL_DSP_SUBDIVIDE"}, 1351 - {SNDCTL_DSP_SETFRAGMENT, "SNDCTL_DSP_SETFRAGMENT"}, 1352 - {SNDCTL_DSP_GETFMTS, "SNDCTL_DSP_GETFMTS"}, 1353 - {SNDCTL_DSP_SETFMT, "SNDCTL_DSP_SETFMT"}, 1354 - {SNDCTL_DSP_GETOSPACE, "SNDCTL_DSP_GETOSPACE"}, 1355 - {SNDCTL_DSP_GETISPACE, "SNDCTL_DSP_GETISPACE"}, 1356 - {SNDCTL_DSP_NONBLOCK, "SNDCTL_DSP_NONBLOCK"}, 1357 - {SNDCTL_DSP_GETCAPS, "SNDCTL_DSP_GETCAPS"}, 1358 - {SNDCTL_DSP_GETTRIGGER, "SNDCTL_DSP_GETTRIGGER"}, 1359 - {SNDCTL_DSP_SETTRIGGER, "SNDCTL_DSP_SETTRIGGER"}, 1360 - {SNDCTL_DSP_GETIPTR, "SNDCTL_DSP_GETIPTR"}, 1361 - {SNDCTL_DSP_GETOPTR, "SNDCTL_DSP_GETOPTR"}, 1362 - {SNDCTL_DSP_MAPINBUF, "SNDCTL_DSP_MAPINBUF"}, 1363 - {SNDCTL_DSP_MAPOUTBUF, "SNDCTL_DSP_MAPOUTBUF"}, 1364 - {SNDCTL_DSP_SETSYNCRO, "SNDCTL_DSP_SETSYNCRO"}, 1365 - {SNDCTL_DSP_SETDUPLEX, "SNDCTL_DSP_SETDUPLEX"}, 1366 - {SNDCTL_DSP_GETODELAY, "SNDCTL_DSP_GETODELAY"}, 1367 - {SNDCTL_DSP_GETCHANNELMASK, "SNDCTL_DSP_GETCHANNELMASK"}, 1368 - {SNDCTL_DSP_BIND_CHANNEL, "SNDCTL_DSP_BIND_CHANNEL"}, 1369 - {OSS_GETVERSION, "OSS_GETVERSION"}, 1370 - {SOUND_PCM_READ_RATE, "SOUND_PCM_READ_RATE"}, 1371 - {SOUND_PCM_READ_CHANNELS, "SOUND_PCM_READ_CHANNELS"}, 1372 - {SOUND_PCM_READ_BITS, "SOUND_PCM_READ_BITS"}, 1373 - {SOUND_PCM_READ_FILTER, "SOUND_PCM_READ_FILTER"} 1374 - }; 1375 - #endif 1376 - 1377 - static int it8172_ioctl(struct inode *inode, struct file *file, 1378 - unsigned int cmd, unsigned long arg) 1379 - { 1380 - struct it8172_state *s = (struct it8172_state *)file->private_data; 1381 - unsigned long flags; 1382 - audio_buf_info abinfo; 1383 - count_info cinfo; 1384 - int count; 1385 - int val, mapped, ret, diff; 1386 - 1387 - mapped = ((file->f_mode & FMODE_WRITE) && s->dma_dac.mapped) || 1388 - ((file->f_mode & FMODE_READ) && s->dma_adc.mapped); 1389 - 1390 - #ifdef IT8172_VERBOSE_DEBUG 1391 - for (count=0; count<sizeof(ioctl_str)/sizeof(ioctl_str[0]); count++) { 1392 - if (ioctl_str[count].cmd == cmd) 1393 - break; 1394 - } 1395 - if (count < sizeof(ioctl_str)/sizeof(ioctl_str[0])) 1396 - dbg("ioctl %s, arg=0x%08x", 1397 - ioctl_str[count].str, (unsigned int)arg); 1398 - else 1399 - dbg("ioctl unknown, 0x%x", cmd); 1400 - #endif 1401 - 1402 - switch (cmd) { 1403 - case OSS_GETVERSION: 1404 - return put_user(SOUND_VERSION, (int *)arg); 1405 - 1406 - case SNDCTL_DSP_SYNC: 1407 - if (file->f_mode & FMODE_WRITE) 1408 - return drain_dac(s, file->f_flags & O_NONBLOCK); 1409 - return 0; 1410 - 1411 - case SNDCTL_DSP_SETDUPLEX: 1412 - return 0; 1413 - 1414 - case SNDCTL_DSP_GETCAPS: 1415 - return put_user(DSP_CAP_DUPLEX | DSP_CAP_REALTIME | 1416 - DSP_CAP_TRIGGER | DSP_CAP_MMAP, (int *)arg); 1417 - 1418 - case SNDCTL_DSP_RESET: 1419 - if (file->f_mode & FMODE_WRITE) { 1420 - stop_dac(s); 1421 - synchronize_irq(s->irq); 1422 - s->dma_dac.count = s->dma_dac.total_bytes = 0; 1423 - s->dma_dac.nextIn = s->dma_dac.nextOut = 1424 - s->dma_dac.rawbuf; 1425 - } 1426 - if (file->f_mode & FMODE_READ) { 1427 - stop_adc(s); 1428 - synchronize_irq(s->irq); 1429 - s->dma_adc.count = s->dma_adc.total_bytes = 0; 1430 - s->dma_adc.nextIn = s->dma_adc.nextOut = 1431 - s->dma_adc.rawbuf; 1432 - } 1433 - return 0; 1434 - 1435 - case SNDCTL_DSP_SPEED: 1436 - if (get_user(val, (int *)arg)) 1437 - return -EFAULT; 1438 - if (val >= 0) { 1439 - if (file->f_mode & FMODE_READ) { 1440 - stop_adc(s); 1441 - set_adc_rate(s, val); 1442 - if ((ret = prog_dmabuf_adc(s))) 1443 - return ret; 1444 - } 1445 - if (file->f_mode & FMODE_WRITE) { 1446 - stop_dac(s); 1447 - set_dac_rate(s, val); 1448 - if ((ret = prog_dmabuf_dac(s))) 1449 - return ret; 1450 - } 1451 - } 1452 - return put_user((file->f_mode & FMODE_READ) ? 1453 - s->adcrate : s->dacrate, (int *)arg); 1454 - 1455 - case SNDCTL_DSP_STEREO: 1456 - if (get_user(val, (int *)arg)) 1457 - return -EFAULT; 1458 - if (file->f_mode & FMODE_READ) { 1459 - stop_adc(s); 1460 - if (val) 1461 - s->capcc |= CC_SM; 1462 - else 1463 - s->capcc &= ~CC_SM; 1464 - outw(s->capcc, s->io+IT_AC_CAPCC); 1465 - if ((ret = prog_dmabuf_adc(s))) 1466 - return ret; 1467 - } 1468 - if (file->f_mode & FMODE_WRITE) { 1469 - stop_dac(s); 1470 - if (val) 1471 - s->pcc |= CC_SM; 1472 - else 1473 - s->pcc &= ~CC_SM; 1474 - outw(s->pcc, s->io+IT_AC_PCC); 1475 - if ((ret = prog_dmabuf_dac(s))) 1476 - return ret; 1477 - } 1478 - return 0; 1479 - 1480 - case SNDCTL_DSP_CHANNELS: 1481 - if (get_user(val, (int *)arg)) 1482 - return -EFAULT; 1483 - if (val != 0) { 1484 - if (file->f_mode & FMODE_READ) { 1485 - stop_adc(s); 1486 - if (val >= 2) { 1487 - val = 2; 1488 - s->capcc |= CC_SM; 1489 - } 1490 - else 1491 - s->capcc &= ~CC_SM; 1492 - outw(s->capcc, s->io+IT_AC_CAPCC); 1493 - if ((ret = prog_dmabuf_adc(s))) 1494 - return ret; 1495 - } 1496 - if (file->f_mode & FMODE_WRITE) { 1497 - stop_dac(s); 1498 - switch (val) { 1499 - case 1: 1500 - s->pcc &= ~CC_SM; 1501 - break; 1502 - case 2: 1503 - s->pcc |= CC_SM; 1504 - break; 1505 - default: 1506 - // FIX! support multichannel??? 1507 - val = 2; 1508 - s->pcc |= CC_SM; 1509 - break; 1510 - } 1511 - outw(s->pcc, s->io+IT_AC_PCC); 1512 - if ((ret = prog_dmabuf_dac(s))) 1513 - return ret; 1514 - } 1515 - } 1516 - return put_user(val, (int *)arg); 1517 - 1518 - case SNDCTL_DSP_GETFMTS: /* Returns a mask */ 1519 - return put_user(AFMT_S16_LE|AFMT_U8, (int *)arg); 1520 - 1521 - case SNDCTL_DSP_SETFMT: /* Selects ONE fmt*/ 1522 - if (get_user(val, (int *)arg)) 1523 - return -EFAULT; 1524 - if (val != AFMT_QUERY) { 1525 - if (file->f_mode & FMODE_READ) { 1526 - stop_adc(s); 1527 - if (val == AFMT_S16_LE) 1528 - s->capcc |= CC_DF; 1529 - else { 1530 - val = AFMT_U8; 1531 - s->capcc &= ~CC_DF; 1532 - } 1533 - outw(s->capcc, s->io+IT_AC_CAPCC); 1534 - if ((ret = prog_dmabuf_adc(s))) 1535 - return ret; 1536 - } 1537 - if (file->f_mode & FMODE_WRITE) { 1538 - stop_dac(s); 1539 - if (val == AFMT_S16_LE) 1540 - s->pcc |= CC_DF; 1541 - else { 1542 - val = AFMT_U8; 1543 - s->pcc &= ~CC_DF; 1544 - } 1545 - outw(s->pcc, s->io+IT_AC_PCC); 1546 - if ((ret = prog_dmabuf_dac(s))) 1547 - return ret; 1548 - } 1549 - } else { 1550 - if (file->f_mode & FMODE_READ) 1551 - val = (s->capcc & CC_DF) ? 1552 - AFMT_S16_LE : AFMT_U8; 1553 - else 1554 - val = (s->pcc & CC_DF) ? 1555 - AFMT_S16_LE : AFMT_U8; 1556 - } 1557 - return put_user(val, (int *)arg); 1558 - 1559 - case SNDCTL_DSP_POST: 1560 - return 0; 1561 - 1562 - case SNDCTL_DSP_GETTRIGGER: 1563 - val = 0; 1564 - spin_lock_irqsave(&s->lock, flags); 1565 - if (file->f_mode & FMODE_READ && !s->dma_adc.stopped) 1566 - val |= PCM_ENABLE_INPUT; 1567 - if (file->f_mode & FMODE_WRITE && !s->dma_dac.stopped) 1568 - val |= PCM_ENABLE_OUTPUT; 1569 - spin_unlock_irqrestore(&s->lock, flags); 1570 - return put_user(val, (int *)arg); 1571 - 1572 - case SNDCTL_DSP_SETTRIGGER: 1573 - if (get_user(val, (int *)arg)) 1574 - return -EFAULT; 1575 - if (file->f_mode & FMODE_READ) { 1576 - if (val & PCM_ENABLE_INPUT) 1577 - start_adc(s); 1578 - else 1579 - stop_adc(s); 1580 - } 1581 - if (file->f_mode & FMODE_WRITE) { 1582 - if (val & PCM_ENABLE_OUTPUT) 1583 - start_dac(s); 1584 - else 1585 - stop_dac(s); 1586 - } 1587 - return 0; 1588 - 1589 - case SNDCTL_DSP_GETOSPACE: 1590 - if (!(file->f_mode & FMODE_WRITE)) 1591 - return -EINVAL; 1592 - abinfo.fragsize = s->dma_dac.fragsize; 1593 - spin_lock_irqsave(&s->lock, flags); 1594 - count = s->dma_dac.count; 1595 - if (!s->dma_dac.stopped) 1596 - count -= (s->dma_dac.fragsize - 1597 - inw(s->io+IT_AC_PCDL)); 1598 - spin_unlock_irqrestore(&s->lock, flags); 1599 - if (count < 0) 1600 - count = 0; 1601 - abinfo.bytes = s->dma_dac.dmasize - count; 1602 - abinfo.fragstotal = s->dma_dac.numfrag; 1603 - abinfo.fragments = abinfo.bytes >> s->dma_dac.fragshift; 1604 - return copy_to_user((void *)arg, &abinfo, sizeof(abinfo)) ? 1605 - -EFAULT : 0; 1606 - 1607 - case SNDCTL_DSP_GETISPACE: 1608 - if (!(file->f_mode & FMODE_READ)) 1609 - return -EINVAL; 1610 - abinfo.fragsize = s->dma_adc.fragsize; 1611 - spin_lock_irqsave(&s->lock, flags); 1612 - count = s->dma_adc.count; 1613 - if (!s->dma_adc.stopped) 1614 - count += (s->dma_adc.fragsize - 1615 - inw(s->io+IT_AC_CAPCDL)); 1616 - spin_unlock_irqrestore(&s->lock, flags); 1617 - if (count < 0) 1618 - count = 0; 1619 - abinfo.bytes = count; 1620 - abinfo.fragstotal = s->dma_adc.numfrag; 1621 - abinfo.fragments = abinfo.bytes >> s->dma_adc.fragshift; 1622 - return copy_to_user((void *)arg, &abinfo, sizeof(abinfo)) ? 1623 - -EFAULT : 0; 1624 - 1625 - case SNDCTL_DSP_NONBLOCK: 1626 - file->f_flags |= O_NONBLOCK; 1627 - return 0; 1628 - 1629 - case SNDCTL_DSP_GETODELAY: 1630 - if (!(file->f_mode & FMODE_WRITE)) 1631 - return -EINVAL; 1632 - spin_lock_irqsave(&s->lock, flags); 1633 - count = s->dma_dac.count; 1634 - if (!s->dma_dac.stopped) 1635 - count -= (s->dma_dac.fragsize - 1636 - inw(s->io+IT_AC_PCDL)); 1637 - spin_unlock_irqrestore(&s->lock, flags); 1638 - if (count < 0) 1639 - count = 0; 1640 - return put_user(count, (int *)arg); 1641 - 1642 - case SNDCTL_DSP_GETIPTR: 1643 - if (!(file->f_mode & FMODE_READ)) 1644 - return -EINVAL; 1645 - spin_lock_irqsave(&s->lock, flags); 1646 - cinfo.bytes = s->dma_adc.total_bytes; 1647 - count = s->dma_adc.count; 1648 - if (!s->dma_adc.stopped) { 1649 - diff = s->dma_adc.fragsize - inw(s->io+IT_AC_CAPCDL); 1650 - count += diff; 1651 - cinfo.bytes += diff; 1652 - cinfo.ptr = inl(s->io+s->dma_adc.curBufPtr) - 1653 - s->dma_adc.dmaaddr; 1654 - } else 1655 - cinfo.ptr = virt_to_bus(s->dma_adc.nextIn) - 1656 - s->dma_adc.dmaaddr; 1657 - if (s->dma_adc.mapped) 1658 - s->dma_adc.count &= s->dma_adc.fragsize-1; 1659 - spin_unlock_irqrestore(&s->lock, flags); 1660 - if (count < 0) 1661 - count = 0; 1662 - cinfo.blocks = count >> s->dma_adc.fragshift; 1663 - if (copy_to_user((void *)arg, &cinfo, sizeof(cinfo))) 1664 - return -EFAULT; 1665 - return 0; 1666 - 1667 - case SNDCTL_DSP_GETOPTR: 1668 - if (!(file->f_mode & FMODE_READ)) 1669 - return -EINVAL; 1670 - spin_lock_irqsave(&s->lock, flags); 1671 - cinfo.bytes = s->dma_dac.total_bytes; 1672 - count = s->dma_dac.count; 1673 - if (!s->dma_dac.stopped) { 1674 - diff = s->dma_dac.fragsize - inw(s->io+IT_AC_CAPCDL); 1675 - count -= diff; 1676 - cinfo.bytes += diff; 1677 - cinfo.ptr = inl(s->io+s->dma_dac.curBufPtr) - 1678 - s->dma_dac.dmaaddr; 1679 - } else 1680 - cinfo.ptr = virt_to_bus(s->dma_dac.nextOut) - 1681 - s->dma_dac.dmaaddr; 1682 - if (s->dma_dac.mapped) 1683 - s->dma_dac.count &= s->dma_dac.fragsize-1; 1684 - spin_unlock_irqrestore(&s->lock, flags); 1685 - if (count < 0) 1686 - count = 0; 1687 - cinfo.blocks = count >> s->dma_dac.fragshift; 1688 - if (copy_to_user((void *)arg, &cinfo, sizeof(cinfo))) 1689 - return -EFAULT; 1690 - return 0; 1691 - 1692 - case SNDCTL_DSP_GETBLKSIZE: 1693 - if (file->f_mode & FMODE_WRITE) 1694 - return put_user(s->dma_dac.fragsize, (int *)arg); 1695 - else 1696 - return put_user(s->dma_adc.fragsize, (int *)arg); 1697 - 1698 - case SNDCTL_DSP_SETFRAGMENT: 1699 - if (get_user(val, (int *)arg)) 1700 - return -EFAULT; 1701 - if (file->f_mode & FMODE_READ) { 1702 - stop_adc(s); 1703 - s->dma_adc.ossfragshift = val & 0xffff; 1704 - s->dma_adc.ossmaxfrags = (val >> 16) & 0xffff; 1705 - if (s->dma_adc.ossfragshift < 4) 1706 - s->dma_adc.ossfragshift = 4; 1707 - if (s->dma_adc.ossfragshift > 15) 1708 - s->dma_adc.ossfragshift = 15; 1709 - if (s->dma_adc.ossmaxfrags < 4) 1710 - s->dma_adc.ossmaxfrags = 4; 1711 - if ((ret = prog_dmabuf_adc(s))) 1712 - return ret; 1713 - } 1714 - if (file->f_mode & FMODE_WRITE) { 1715 - stop_dac(s); 1716 - s->dma_dac.ossfragshift = val & 0xffff; 1717 - s->dma_dac.ossmaxfrags = (val >> 16) & 0xffff; 1718 - if (s->dma_dac.ossfragshift < 4) 1719 - s->dma_dac.ossfragshift = 4; 1720 - if (s->dma_dac.ossfragshift > 15) 1721 - s->dma_dac.ossfragshift = 15; 1722 - if (s->dma_dac.ossmaxfrags < 4) 1723 - s->dma_dac.ossmaxfrags = 4; 1724 - if ((ret = prog_dmabuf_dac(s))) 1725 - return ret; 1726 - } 1727 - return 0; 1728 - 1729 - case SNDCTL_DSP_SUBDIVIDE: 1730 - if ((file->f_mode & FMODE_READ && s->dma_adc.subdivision) || 1731 - (file->f_mode & FMODE_WRITE && s->dma_dac.subdivision)) 1732 - return -EINVAL; 1733 - if (get_user(val, (int *)arg)) 1734 - return -EFAULT; 1735 - if (val != 1 && val != 2 && val != 4) 1736 - return -EINVAL; 1737 - if (file->f_mode & FMODE_READ) { 1738 - stop_adc(s); 1739 - s->dma_adc.subdivision = val; 1740 - if ((ret = prog_dmabuf_adc(s))) 1741 - return ret; 1742 - } 1743 - if (file->f_mode & FMODE_WRITE) { 1744 - stop_dac(s); 1745 - s->dma_dac.subdivision = val; 1746 - if ((ret = prog_dmabuf_dac(s))) 1747 - return ret; 1748 - } 1749 - return 0; 1750 - 1751 - case SOUND_PCM_READ_RATE: 1752 - return put_user((file->f_mode & FMODE_READ) ? 1753 - s->adcrate : s->dacrate, (int *)arg); 1754 - 1755 - case SOUND_PCM_READ_CHANNELS: 1756 - if (file->f_mode & FMODE_READ) 1757 - return put_user((s->capcc & CC_SM) ? 2 : 1, 1758 - (int *)arg); 1759 - else 1760 - return put_user((s->pcc & CC_SM) ? 2 : 1, 1761 - (int *)arg); 1762 - 1763 - case SOUND_PCM_READ_BITS: 1764 - if (file->f_mode & FMODE_READ) 1765 - return put_user((s->capcc & CC_DF) ? 16 : 8, 1766 - (int *)arg); 1767 - else 1768 - return put_user((s->pcc & CC_DF) ? 16 : 8, 1769 - (int *)arg); 1770 - 1771 - case SOUND_PCM_WRITE_FILTER: 1772 - case SNDCTL_DSP_SETSYNCRO: 1773 - case SOUND_PCM_READ_FILTER: 1774 - return -EINVAL; 1775 - } 1776 - 1777 - return mixdev_ioctl(&s->codec, cmd, arg); 1778 - } 1779 - 1780 - 1781 - static int it8172_open(struct inode *inode, struct file *file) 1782 - { 1783 - int minor = iminor(inode); 1784 - DECLARE_WAITQUEUE(wait, current); 1785 - unsigned long flags; 1786 - struct list_head *list; 1787 - struct it8172_state *s; 1788 - int ret; 1789 - 1790 - #ifdef IT8172_VERBOSE_DEBUG 1791 - if (file->f_flags & O_NONBLOCK) 1792 - dbg("%s: non-blocking", __FUNCTION__); 1793 - else 1794 - dbg("%s: blocking", __FUNCTION__); 1795 - #endif 1796 - 1797 - for (list = devs.next; ; list = list->next) { 1798 - if (list == &devs) 1799 - return -ENODEV; 1800 - s = list_entry(list, struct it8172_state, devs); 1801 - if (!((s->dev_audio ^ minor) & ~0xf)) 1802 - break; 1803 - } 1804 - file->private_data = s; 1805 - /* wait for device to become free */ 1806 - mutex_lock(&s->open_mutex); 1807 - while (s->open_mode & file->f_mode) { 1808 - if (file->f_flags & O_NONBLOCK) { 1809 - mutex_unlock(&s->open_mutex); 1810 - return -EBUSY; 1811 - } 1812 - add_wait_queue(&s->open_wait, &wait); 1813 - __set_current_state(TASK_INTERRUPTIBLE); 1814 - mutex_unlock(&s->open_mutex); 1815 - schedule(); 1816 - remove_wait_queue(&s->open_wait, &wait); 1817 - set_current_state(TASK_RUNNING); 1818 - if (signal_pending(current)) 1819 - return -ERESTARTSYS; 1820 - mutex_lock(&s->open_mutex); 1821 - } 1822 - 1823 - spin_lock_irqsave(&s->lock, flags); 1824 - 1825 - if (file->f_mode & FMODE_READ) { 1826 - s->dma_adc.ossfragshift = s->dma_adc.ossmaxfrags = 1827 - s->dma_adc.subdivision = s->dma_adc.total_bytes = 0; 1828 - s->capcc &= ~(CC_SM | CC_DF); 1829 - set_adc_rate(s, 8000); 1830 - if ((minor & 0xf) == SND_DEV_DSP16) 1831 - s->capcc |= CC_DF; 1832 - outw(s->capcc, s->io+IT_AC_CAPCC); 1833 - if ((ret = prog_dmabuf_adc(s))) { 1834 - spin_unlock_irqrestore(&s->lock, flags); 1835 - return ret; 1836 - } 1837 - } 1838 - if (file->f_mode & FMODE_WRITE) { 1839 - s->dma_dac.ossfragshift = s->dma_dac.ossmaxfrags = 1840 - s->dma_dac.subdivision = s->dma_dac.total_bytes = 0; 1841 - s->pcc &= ~(CC_SM | CC_DF); 1842 - set_dac_rate(s, 8000); 1843 - if ((minor & 0xf) == SND_DEV_DSP16) 1844 - s->pcc |= CC_DF; 1845 - outw(s->pcc, s->io+IT_AC_PCC); 1846 - if ((ret = prog_dmabuf_dac(s))) { 1847 - spin_unlock_irqrestore(&s->lock, flags); 1848 - return ret; 1849 - } 1850 - } 1851 - 1852 - spin_unlock_irqrestore(&s->lock, flags); 1853 - 1854 - s->open_mode |= (file->f_mode & (FMODE_READ | FMODE_WRITE)); 1855 - mutex_unlock(&s->open_mutex); 1856 - return nonseekable_open(inode, file); 1857 - } 1858 - 1859 - static int it8172_release(struct inode *inode, struct file *file) 1860 - { 1861 - struct it8172_state *s = (struct it8172_state *)file->private_data; 1862 - 1863 - #ifdef IT8172_VERBOSE_DEBUG 1864 - dbg("%s", __FUNCTION__); 1865 - #endif 1866 - lock_kernel(); 1867 - if (file->f_mode & FMODE_WRITE) 1868 - drain_dac(s, file->f_flags & O_NONBLOCK); 1869 - mutex_lock(&s->open_mutex); 1870 - if (file->f_mode & FMODE_WRITE) { 1871 - stop_dac(s); 1872 - dealloc_dmabuf(s, &s->dma_dac); 1873 - } 1874 - if (file->f_mode & FMODE_READ) { 1875 - stop_adc(s); 1876 - dealloc_dmabuf(s, &s->dma_adc); 1877 - } 1878 - s->open_mode &= ((~file->f_mode) & (FMODE_READ|FMODE_WRITE)); 1879 - mutex_unlock(&s->open_mutex); 1880 - wake_up(&s->open_wait); 1881 - unlock_kernel(); 1882 - return 0; 1883 - } 1884 - 1885 - static /*const*/ struct file_operations it8172_audio_fops = { 1886 - .owner = THIS_MODULE, 1887 - .llseek = no_llseek, 1888 - .read = it8172_read, 1889 - .write = it8172_write, 1890 - .poll = it8172_poll, 1891 - .ioctl = it8172_ioctl, 1892 - .mmap = it8172_mmap, 1893 - .open = it8172_open, 1894 - .release = it8172_release, 1895 - }; 1896 - 1897 - 1898 - /* --------------------------------------------------------------------- */ 1899 - 1900 - 1901 - /* --------------------------------------------------------------------- */ 1902 - 1903 - /* 1904 - * for debugging purposes, we'll create a proc device that dumps the 1905 - * CODEC chipstate 1906 - */ 1907 - 1908 - #ifdef IT8172_DEBUG 1909 - static int proc_it8172_dump (char *buf, char **start, off_t fpos, 1910 - int length, int *eof, void *data) 1911 - { 1912 - struct it8172_state *s; 1913 - int cnt, len = 0; 1914 - 1915 - if (list_empty(&devs)) 1916 - return 0; 1917 - s = list_entry(devs.next, struct it8172_state, devs); 1918 - 1919 - /* print out header */ 1920 - len += sprintf(buf + len, "\n\t\tIT8172 Audio Debug\n\n"); 1921 - 1922 - // print out digital controller state 1923 - len += sprintf (buf + len, "IT8172 Audio Controller registers\n"); 1924 - len += sprintf (buf + len, "---------------------------------\n"); 1925 - cnt=0; 1926 - while (cnt < 0x72) { 1927 - if (cnt == IT_AC_PCB1STA || cnt == IT_AC_PCB2STA || 1928 - cnt == IT_AC_CAPB1STA || cnt == IT_AC_CAPB2STA || 1929 - cnt == IT_AC_PFDP) { 1930 - len+= sprintf (buf + len, "reg %02x = %08x\n", 1931 - cnt, inl(s->io+cnt)); 1932 - cnt += 4; 1933 - } else { 1934 - len+= sprintf (buf + len, "reg %02x = %04x\n", 1935 - cnt, inw(s->io+cnt)); 1936 - cnt += 2; 1937 - } 1938 - } 1939 - 1940 - /* print out CODEC state */ 1941 - len += sprintf (buf + len, "\nAC97 CODEC registers\n"); 1942 - len += sprintf (buf + len, "----------------------\n"); 1943 - for (cnt=0; cnt <= 0x7e; cnt = cnt +2) 1944 - len+= sprintf (buf + len, "reg %02x = %04x\n", 1945 - cnt, rdcodec(&s->codec, cnt)); 1946 - 1947 - if (fpos >=len){ 1948 - *start = buf; 1949 - *eof =1; 1950 - return 0; 1951 - } 1952 - *start = buf + fpos; 1953 - if ((len -= fpos) > length) 1954 - return length; 1955 - *eof =1; 1956 - return len; 1957 - 1958 - } 1959 - #endif /* IT8172_DEBUG */ 1960 - 1961 - /* --------------------------------------------------------------------- */ 1962 - 1963 - /* maximum number of devices; only used for command line params */ 1964 - #define NR_DEVICE 5 1965 - 1966 - static int spdif[NR_DEVICE]; 1967 - static int i2s_fmt[NR_DEVICE]; 1968 - 1969 - static unsigned int devindex; 1970 - 1971 - module_param_array(spdif, int, NULL, 0); 1972 - MODULE_PARM_DESC(spdif, "if 1 the S/PDIF digital output is enabled"); 1973 - module_param_array(i2s_fmt, int, NULL, 0); 1974 - MODULE_PARM_DESC(i2s_fmt, "the format of I2S"); 1975 - 1976 - MODULE_AUTHOR("Monta Vista Software, stevel@mvista.com"); 1977 - MODULE_DESCRIPTION("IT8172 Audio Driver"); 1978 - 1979 - /* --------------------------------------------------------------------- */ 1980 - 1981 - static int __devinit it8172_probe(struct pci_dev *pcidev, 1982 - const struct pci_device_id *pciid) 1983 - { 1984 - struct it8172_state *s; 1985 - int i, val; 1986 - unsigned short pcisr, vol; 1987 - unsigned char legacy, imc; 1988 - char proc_str[80]; 1989 - 1990 - if (pcidev->irq == 0) 1991 - return -1; 1992 - 1993 - if (!(s = kmalloc(sizeof(struct it8172_state), GFP_KERNEL))) { 1994 - err("alloc of device struct failed"); 1995 - return -1; 1996 - } 1997 - 1998 - memset(s, 0, sizeof(struct it8172_state)); 1999 - init_waitqueue_head(&s->dma_adc.wait); 2000 - init_waitqueue_head(&s->dma_dac.wait); 2001 - init_waitqueue_head(&s->open_wait); 2002 - mutex_init(&s->open_mutex); 2003 - spin_lock_init(&s->lock); 2004 - s->dev = pcidev; 2005 - s->io = pci_resource_start(pcidev, 0); 2006 - s->irq = pcidev->irq; 2007 - s->vendor = pcidev->vendor; 2008 - s->device = pcidev->device; 2009 - pci_read_config_byte(pcidev, PCI_REVISION_ID, &s->rev); 2010 - s->codec.private_data = s; 2011 - s->codec.id = 0; 2012 - s->codec.codec_read = rdcodec; 2013 - s->codec.codec_write = wrcodec; 2014 - s->codec.codec_wait = waitcodec; 2015 - 2016 - if (!request_region(s->io, pci_resource_len(pcidev,0), 2017 - IT8172_MODULE_NAME)) { 2018 - err("io ports %#lx->%#lx in use", 2019 - s->io, s->io + pci_resource_len(pcidev,0)-1); 2020 - goto err_region; 2021 - } 2022 - if (request_irq(s->irq, it8172_interrupt, IRQF_DISABLED, 2023 - IT8172_MODULE_NAME, s)) { 2024 - err("irq %u in use", s->irq); 2025 - goto err_irq; 2026 - } 2027 - 2028 - info("IO at %#lx, IRQ %d", s->io, s->irq); 2029 - 2030 - /* register devices */ 2031 - if ((s->dev_audio = register_sound_dsp(&it8172_audio_fops, -1)) < 0) 2032 - goto err_dev1; 2033 - if ((s->codec.dev_mixer = 2034 - register_sound_mixer(&it8172_mixer_fops, -1)) < 0) 2035 - goto err_dev2; 2036 - 2037 - #ifdef IT8172_DEBUG 2038 - /* initialize the debug proc device */ 2039 - s->ps = create_proc_read_entry(IT8172_MODULE_NAME, 0, NULL, 2040 - proc_it8172_dump, NULL); 2041 - #endif /* IT8172_DEBUG */ 2042 - 2043 - /* 2044 - * Reset the Audio device using the IT8172 PCI Reset register. This 2045 - * creates an audible double click on a speaker connected to Line-out. 2046 - */ 2047 - IT_IO_READ16(IT_PM_PCISR, pcisr); 2048 - pcisr |= IT_PM_PCISR_ACSR; 2049 - IT_IO_WRITE16(IT_PM_PCISR, pcisr); 2050 - /* wait up to 100msec for reset to complete */ 2051 - for (i=0; pcisr & IT_PM_PCISR_ACSR; i++) { 2052 - it8172_delay(10); 2053 - if (i == 10) 2054 - break; 2055 - IT_IO_READ16(IT_PM_PCISR, pcisr); 2056 - } 2057 - if (i == 10) { 2058 - err("chip reset timeout!"); 2059 - goto err_dev3; 2060 - } 2061 - 2062 - /* enable pci io and bus mastering */ 2063 - if (pci_enable_device(pcidev)) 2064 - goto err_dev3; 2065 - pci_set_master(pcidev); 2066 - 2067 - /* get out of legacy mode */ 2068 - pci_read_config_byte (pcidev, 0x40, &legacy); 2069 - pci_write_config_byte (pcidev, 0x40, legacy & ~1); 2070 - 2071 - s->spdif_volume = -1; 2072 - /* check to see if s/pdif mode is being requested */ 2073 - if (spdif[devindex]) { 2074 - info("enabling S/PDIF output"); 2075 - s->spdif_volume = 0; 2076 - outb(GC_SOE, s->io+IT_AC_GC); 2077 - } else { 2078 - info("disabling S/PDIF output"); 2079 - outb(0, s->io+IT_AC_GC); 2080 - } 2081 - 2082 - /* check to see if I2S format requested */ 2083 - if (i2s_fmt[devindex]) { 2084 - info("setting I2S format to 0x%02x", i2s_fmt[devindex]); 2085 - outb(i2s_fmt[devindex], s->io+IT_AC_I2SMC); 2086 - } else { 2087 - outb(I2SMC_I2SF_I2S, s->io+IT_AC_I2SMC); 2088 - } 2089 - 2090 - /* cold reset the AC97 */ 2091 - outw(CODECC_CR, s->io+IT_AC_CODECC); 2092 - udelay(1000); 2093 - outw(0, s->io+IT_AC_CODECC); 2094 - /* need to delay around 500msec(bleech) to give 2095 - some CODECs enough time to wakeup */ 2096 - it8172_delay(500); 2097 - 2098 - /* AC97 warm reset to start the bitclk */ 2099 - outw(CODECC_WR, s->io+IT_AC_CODECC); 2100 - udelay(1000); 2101 - outw(0, s->io+IT_AC_CODECC); 2102 - 2103 - /* codec init */ 2104 - if (!ac97_probe_codec(&s->codec)) 2105 - goto err_dev3; 2106 - 2107 - /* add I2S as allowable recording source */ 2108 - s->codec.record_sources |= SOUND_MASK_I2S; 2109 - 2110 - /* Enable Volume button interrupts */ 2111 - imc = inb(s->io+IT_AC_IMC); 2112 - outb(imc & ~IMC_VCIM, s->io+IT_AC_IMC); 2113 - 2114 - /* Un-mute PCM and FM out on the controller */ 2115 - vol = inw(s->io+IT_AC_PCMOV); 2116 - outw(vol & ~PCMOV_PCMOM, s->io+IT_AC_PCMOV); 2117 - vol = inw(s->io+IT_AC_FMOV); 2118 - outw(vol & ~FMOV_FMOM, s->io+IT_AC_FMOV); 2119 - 2120 - /* set channel defaults to 8-bit, mono, 8 Khz */ 2121 - s->pcc = 0; 2122 - s->capcc = 0; 2123 - set_dac_rate(s, 8000); 2124 - set_adc_rate(s, 8000); 2125 - 2126 - /* set mic to be the recording source */ 2127 - val = SOUND_MASK_MIC; 2128 - mixdev_ioctl(&s->codec, SOUND_MIXER_WRITE_RECSRC, 2129 - (unsigned long)&val); 2130 - 2131 - /* mute AC'97 master and PCM when in S/PDIF mode */ 2132 - if (s->spdif_volume != -1) { 2133 - val = 0x0000; 2134 - s->codec.mixer_ioctl(&s->codec, SOUND_MIXER_WRITE_VOLUME, 2135 - (unsigned long)&val); 2136 - s->codec.mixer_ioctl(&s->codec, SOUND_MIXER_WRITE_PCM, 2137 - (unsigned long)&val); 2138 - } 2139 - 2140 - #ifdef IT8172_DEBUG 2141 - sprintf(proc_str, "driver/%s/%d/ac97", IT8172_MODULE_NAME, 2142 - s->codec.id); 2143 - s->ac97_ps = create_proc_read_entry (proc_str, 0, NULL, 2144 - ac97_read_proc, &s->codec); 2145 - #endif 2146 - 2147 - /* store it in the driver field */ 2148 - pci_set_drvdata(pcidev, s); 2149 - pcidev->dma_mask = 0xffffffff; 2150 - /* put it into driver list */ 2151 - list_add_tail(&s->devs, &devs); 2152 - /* increment devindex */ 2153 - if (devindex < NR_DEVICE-1) 2154 - devindex++; 2155 - return 0; 2156 - 2157 - err_dev3: 2158 - unregister_sound_mixer(s->codec.dev_mixer); 2159 - err_dev2: 2160 - unregister_sound_dsp(s->dev_audio); 2161 - err_dev1: 2162 - err("cannot register misc device"); 2163 - free_irq(s->irq, s); 2164 - err_irq: 2165 - release_region(s->io, pci_resource_len(pcidev,0)); 2166 - err_region: 2167 - kfree(s); 2168 - return -1; 2169 - } 2170 - 2171 - static void __devexit it8172_remove(struct pci_dev *dev) 2172 - { 2173 - struct it8172_state *s = pci_get_drvdata(dev); 2174 - 2175 - if (!s) 2176 - return; 2177 - list_del(&s->devs); 2178 - #ifdef IT8172_DEBUG 2179 - if (s->ps) 2180 - remove_proc_entry(IT8172_MODULE_NAME, NULL); 2181 - #endif /* IT8172_DEBUG */ 2182 - synchronize_irq(s->irq); 2183 - free_irq(s->irq, s); 2184 - release_region(s->io, pci_resource_len(dev,0)); 2185 - unregister_sound_dsp(s->dev_audio); 2186 - unregister_sound_mixer(s->codec.dev_mixer); 2187 - kfree(s); 2188 - pci_set_drvdata(dev, NULL); 2189 - } 2190 - 2191 - 2192 - 2193 - static struct pci_device_id id_table[] = { 2194 - { PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_IT8172G_AUDIO, PCI_ANY_ID, 2195 - PCI_ANY_ID, 0, 0 }, 2196 - { 0, } 2197 - }; 2198 - 2199 - MODULE_DEVICE_TABLE(pci, id_table); 2200 - 2201 - static struct pci_driver it8172_driver = { 2202 - .name = IT8172_MODULE_NAME, 2203 - .id_table = id_table, 2204 - .probe = it8172_probe, 2205 - .remove = __devexit_p(it8172_remove) 2206 - }; 2207 - 2208 - static int __init init_it8172(void) 2209 - { 2210 - info("version v0.5 time " __TIME__ " " __DATE__); 2211 - return pci_register_driver(&it8172_driver); 2212 - } 2213 - 2214 - static void __exit cleanup_it8172(void) 2215 - { 2216 - info("unloading"); 2217 - pci_unregister_driver(&it8172_driver); 2218 - } 2219 - 2220 - module_init(init_it8172); 2221 - module_exit(cleanup_it8172); 2222 - 2223 - /* --------------------------------------------------------------------- */ 2224 - 2225 - #ifndef MODULE 2226 - 2227 - /* format is: it8172=[spdif],[i2s:<I2S format>] */ 2228 - 2229 - static int __init it8172_setup(char *options) 2230 - { 2231 - char* this_opt; 2232 - static unsigned __initdata nr_dev = 0; 2233 - 2234 - if (nr_dev >= NR_DEVICE) 2235 - return 0; 2236 - 2237 - if (!options || !*options) 2238 - return 0; 2239 - 2240 - while (this_opt = strsep(&options, ",")) { 2241 - if (!*this_opt) 2242 - continue; 2243 - if (!strncmp(this_opt, "spdif", 5)) { 2244 - spdif[nr_dev] = 1; 2245 - } else if (!strncmp(this_opt, "i2s:", 4)) { 2246 - if (!strncmp(this_opt+4, "dac", 3)) 2247 - i2s_fmt[nr_dev] = I2SMC_I2SF_DAC; 2248 - else if (!strncmp(this_opt+4, "adc", 3)) 2249 - i2s_fmt[nr_dev] = I2SMC_I2SF_ADC; 2250 - else if (!strncmp(this_opt+4, "i2s", 3)) 2251 - i2s_fmt[nr_dev] = I2SMC_I2SF_I2S; 2252 - } 2253 - } 2254 - 2255 - nr_dev++; 2256 - return 1; 2257 - } 2258 - 2259 - __setup("it8172=", it8172_setup); 2260 - 2261 - #endif /* MODULE */
···