Guest User

linux-cobalt-3.2.65.patch

a guest
Feb 11th, 2017
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 360.43 KB | None | 0 0
  1. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/Makefile linux-3.2.5-cobalt/Makefile
  2. --- linux-3.2.5/Makefile 2012-02-06 09:47:00.000000000 -0800
  3. +++ linux-3.2.5-cobalt/Makefile 2012-02-06 21:34:59.000000000 -0800
  4. @@ -254,6 +254,7 @@
  5. KBUILD_MODULES :=
  6. KBUILD_BUILTIN := 1
  7.  
  8. +DRIVERS-$(CONFIG_COBALT_RAQ) += drivers/cobalt/cobalt.o
  9. # If we have only "make modules", don't compile built-in objects.
  10. # When we're building modules with modversions, we need to consider
  11. # the built-in objects during the descend as well, in order to
  12. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/Makefile linux-3.2.5-cobalt/arch/x86/Makefile
  13. --- linux-3.2.5/arch/x86/Makefile 2012-02-06 09:47:00.000000000 -0800
  14. +++ linux-3.2.5-cobalt/arch/x86/Makefile 2012-02-06 21:34:59.000000000 -0800
  15. @@ -154,6 +154,10 @@
  16. # Default kernel to build
  17. all: bzImage
  18.  
  19. +cobalt: vmlinux
  20. + strip vmlinux
  21. + bzip2 vmlinux
  22. +
  23. # KBUILD_IMAGE specify target image being built
  24. KBUILD_IMAGE := $(boot)/bzImage
  25.  
  26. @@ -183,6 +187,7 @@
  27.  
  28. define archhelp
  29. echo '* bzImage - Compressed kernel image (arch/x86/boot/bzImage)'
  30. + echo ' cobalt - Cobalt compressed kernel image (vmlinux.bz2)'
  31. echo ' install - Install kernel using'
  32. echo ' (your) ~/bin/$(INSTALLKERNEL) or'
  33. echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
  34. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/configs/raq3_defconfig linux-3.2.5-cobalt/arch/x86/configs/raq3_defconfig
  35. --- linux-3.2.5/arch/x86/configs/raq3_defconfig 1969-12-31 16:00:00.000000000 -0800
  36. +++ linux-3.2.5-cobalt/arch/x86/configs/raq3_defconfig 2012-02-06 21:34:59.000000000 -0800
  37. @@ -0,0 +1,1162 @@
  38. +#
  39. +# Automatically generated make config: don't edit
  40. +# Linux kernel version: 2.6.22-gentoo-r9
  41. +# Mon Nov 12 08:09:46 2007
  42. +#
  43. +CONFIG_X86_32=y
  44. +CONFIG_GENERIC_TIME=y
  45. +CONFIG_CLOCKSOURCE_WATCHDOG=y
  46. +CONFIG_GENERIC_CLOCKEVENTS=y
  47. +CONFIG_LOCKDEP_SUPPORT=y
  48. +CONFIG_STACKTRACE_SUPPORT=y
  49. +CONFIG_SEMAPHORE_SLEEPERS=y
  50. +CONFIG_X86=y
  51. +CONFIG_MMU=y
  52. +CONFIG_ZONE_DMA=y
  53. +CONFIG_QUICKLIST=y
  54. +CONFIG_GENERIC_ISA_DMA=y
  55. +CONFIG_GENERIC_IOMAP=y
  56. +CONFIG_GENERIC_BUG=y
  57. +CONFIG_GENERIC_HWEIGHT=y
  58. +CONFIG_ARCH_MAY_HAVE_PC_FDC=y
  59. +CONFIG_DMI=y
  60. +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
  61. +
  62. +#
  63. +# Code maturity level options
  64. +#
  65. +CONFIG_EXPERIMENTAL=y
  66. +CONFIG_BROKEN_ON_SMP=y
  67. +CONFIG_INIT_ENV_ARG_LIMIT=32
  68. +
  69. +#
  70. +# General setup
  71. +#
  72. +CONFIG_LOCALVERSION=""
  73. +CONFIG_LOCALVERSION_AUTO=y
  74. +CONFIG_SWAP=y
  75. +CONFIG_SYSVIPC=y
  76. +# CONFIG_IPC_NS is not set
  77. +CONFIG_SYSVIPC_SYSCTL=y
  78. +# CONFIG_POSIX_MQUEUE is not set
  79. +# CONFIG_BSD_PROCESS_ACCT is not set
  80. +# CONFIG_TASKSTATS is not set
  81. +# CONFIG_UTS_NS is not set
  82. +# CONFIG_AUDIT is not set
  83. +CONFIG_IKCONFIG=y
  84. +CONFIG_IKCONFIG_PROC=y
  85. +CONFIG_LOG_BUF_SHIFT=14
  86. +CONFIG_SYSFS_DEPRECATED=y
  87. +# CONFIG_RELAY is not set
  88. +# CONFIG_BLK_DEV_INITRD is not set
  89. +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
  90. +CONFIG_SYSCTL=y
  91. +CONFIG_EMBEDDED=y
  92. +CONFIG_UID16=y
  93. +CONFIG_SYSCTL_SYSCALL=y
  94. +# CONFIG_KALLSYMS is not set
  95. +CONFIG_HOTPLUG=y
  96. +CONFIG_PRINTK=y
  97. +CONFIG_BUG=y
  98. +CONFIG_ELF_CORE=y
  99. +CONFIG_BASE_FULL=y
  100. +CONFIG_FUTEX=y
  101. +CONFIG_ANON_INODES=y
  102. +CONFIG_EPOLL=y
  103. +CONFIG_SIGNALFD=y
  104. +CONFIG_EVENTFD=y
  105. +CONFIG_SHMEM=y
  106. +CONFIG_VM_EVENT_COUNTERS=y
  107. +CONFIG_SLAB=y
  108. +# CONFIG_SLUB is not set
  109. +# CONFIG_SLOB is not set
  110. +CONFIG_RT_MUTEXES=y
  111. +# CONFIG_TINY_SHMEM is not set
  112. +CONFIG_BASE_SMALL=0
  113. +
  114. +#
  115. +# Loadable module support
  116. +#
  117. +CONFIG_MODULES=y
  118. +CONFIG_MODULE_UNLOAD=y
  119. +CONFIG_MODULE_FORCE_UNLOAD=y
  120. +CONFIG_MODVERSIONS=y
  121. +# CONFIG_MODULE_SRCVERSION_ALL is not set
  122. +CONFIG_KMOD=y
  123. +
  124. +#
  125. +# Block layer
  126. +#
  127. +CONFIG_BLOCK=y
  128. +CONFIG_LBD=y
  129. +# CONFIG_BLK_DEV_IO_TRACE is not set
  130. +# CONFIG_LSF is not set
  131. +
  132. +#
  133. +# IO Schedulers
  134. +#
  135. +CONFIG_IOSCHED_NOOP=y
  136. +CONFIG_IOSCHED_AS=y
  137. +# CONFIG_IOSCHED_DEADLINE is not set
  138. +# CONFIG_IOSCHED_CFQ is not set
  139. +CONFIG_DEFAULT_AS=y
  140. +# CONFIG_DEFAULT_DEADLINE is not set
  141. +# CONFIG_DEFAULT_CFQ is not set
  142. +# CONFIG_DEFAULT_NOOP is not set
  143. +CONFIG_DEFAULT_IOSCHED="anticipatory"
  144. +
  145. +#
  146. +# Processor type and features
  147. +#
  148. +# CONFIG_TICK_ONESHOT is not set
  149. +# CONFIG_NO_HZ is not set
  150. +# CONFIG_HIGH_RES_TIMERS is not set
  151. +# CONFIG_SMP is not set
  152. +CONFIG_X86_PC=y
  153. +# CONFIG_X86_ELAN is not set
  154. +# CONFIG_X86_VOYAGER is not set
  155. +# CONFIG_X86_NUMAQ is not set
  156. +# CONFIG_X86_SUMMIT is not set
  157. +# CONFIG_X86_BIGSMP is not set
  158. +# CONFIG_X86_VISWS is not set
  159. +# CONFIG_X86_GENERICARCH is not set
  160. +# CONFIG_X86_ES7000 is not set
  161. +# CONFIG_PARAVIRT is not set
  162. +# CONFIG_M386 is not set
  163. +# CONFIG_M486 is not set
  164. +# CONFIG_M586 is not set
  165. +# CONFIG_M586TSC is not set
  166. +# CONFIG_M586MMX is not set
  167. +# CONFIG_M686 is not set
  168. +# CONFIG_MPENTIUMII is not set
  169. +# CONFIG_MPENTIUMIII is not set
  170. +# CONFIG_MPENTIUMM is not set
  171. +# CONFIG_MCORE2 is not set
  172. +# CONFIG_MPENTIUM4 is not set
  173. +CONFIG_MK6=y
  174. +# CONFIG_MK7 is not set
  175. +# CONFIG_MK8 is not set
  176. +# CONFIG_MCRUSOE is not set
  177. +# CONFIG_MEFFICEON is not set
  178. +# CONFIG_MWINCHIPC6 is not set
  179. +# CONFIG_MWINCHIP2 is not set
  180. +# CONFIG_MWINCHIP3D is not set
  181. +# CONFIG_MGEODEGX1 is not set
  182. +# CONFIG_MGEODE_LX is not set
  183. +# CONFIG_MCYRIXIII is not set
  184. +# CONFIG_MVIAC3_2 is not set
  185. +# CONFIG_MVIAC7 is not set
  186. +# CONFIG_X86_GENERIC is not set
  187. +CONFIG_X86_CMPXCHG=y
  188. +CONFIG_X86_L1_CACHE_SHIFT=5
  189. +CONFIG_X86_XADD=y
  190. +CONFIG_RWSEM_XCHGADD_ALGORITHM=y
  191. +# CONFIG_ARCH_HAS_ILOG2_U32 is not set
  192. +# CONFIG_ARCH_HAS_ILOG2_U64 is not set
  193. +CONFIG_GENERIC_CALIBRATE_DELAY=y
  194. +CONFIG_X86_WP_WORKS_OK=y
  195. +CONFIG_X86_INVLPG=y
  196. +CONFIG_X86_BSWAP=y
  197. +CONFIG_X86_POPAD_OK=y
  198. +CONFIG_X86_ALIGNMENT_16=y
  199. +CONFIG_X86_USE_PPRO_CHECKSUM=y
  200. +CONFIG_X86_TSC=y
  201. +CONFIG_X86_MINIMUM_CPU_MODEL=4
  202. +# CONFIG_HPET_TIMER is not set
  203. +CONFIG_PREEMPT_NONE=y
  204. +# CONFIG_PREEMPT_VOLUNTARY is not set
  205. +# CONFIG_PREEMPT is not set
  206. +# CONFIG_X86_UP_APIC is not set
  207. +# CONFIG_X86_MCE is not set
  208. +# CONFIG_VM86 is not set
  209. +# CONFIG_TOSHIBA is not set
  210. +# CONFIG_I8K is not set
  211. +# CONFIG_X86_REBOOTFIXUPS is not set
  212. +# CONFIG_MICROCODE is not set
  213. +# CONFIG_X86_MSR is not set
  214. +# CONFIG_X86_CPUID is not set
  215. +
  216. +#
  217. +# Firmware Drivers
  218. +#
  219. +# CONFIG_EDD is not set
  220. +# CONFIG_DELL_RBU is not set
  221. +# CONFIG_DCDBAS is not set
  222. +CONFIG_NOHIGHMEM=y
  223. +# CONFIG_HIGHMEM4G is not set
  224. +# CONFIG_HIGHMEM64G is not set
  225. +CONFIG_VMSPLIT_3G=y
  226. +# CONFIG_VMSPLIT_3G_OPT is not set
  227. +# CONFIG_VMSPLIT_2G is not set
  228. +# CONFIG_VMSPLIT_2G_OPT is not set
  229. +# CONFIG_VMSPLIT_1G is not set
  230. +CONFIG_PAGE_OFFSET=0xC0000000
  231. +CONFIG_ARCH_FLATMEM_ENABLE=y
  232. +CONFIG_ARCH_SPARSEMEM_ENABLE=y
  233. +CONFIG_ARCH_SELECT_MEMORY_MODEL=y
  234. +CONFIG_ARCH_POPULATES_NODE_MAP=y
  235. +CONFIG_SELECT_MEMORY_MODEL=y
  236. +CONFIG_FLATMEM_MANUAL=y
  237. +# CONFIG_DISCONTIGMEM_MANUAL is not set
  238. +# CONFIG_SPARSEMEM_MANUAL is not set
  239. +CONFIG_FLATMEM=y
  240. +CONFIG_FLAT_NODE_MEM_MAP=y
  241. +CONFIG_SPARSEMEM_STATIC=y
  242. +CONFIG_SPLIT_PTLOCK_CPUS=4
  243. +# CONFIG_RESOURCES_64BIT is not set
  244. +CONFIG_ZONE_DMA_FLAG=1
  245. +CONFIG_NR_QUICK=1
  246. +# CONFIG_MATH_EMULATION is not set
  247. +CONFIG_MTRR=y
  248. +# CONFIG_SECCOMP is not set
  249. +# CONFIG_HZ_100 is not set
  250. +CONFIG_HZ_250=y
  251. +# CONFIG_HZ_300 is not set
  252. +# CONFIG_HZ_1000 is not set
  253. +CONFIG_HZ=250
  254. +# CONFIG_KEXEC is not set
  255. +CONFIG_PHYSICAL_START=0x100000
  256. +# CONFIG_RELOCATABLE is not set
  257. +CONFIG_PHYSICAL_ALIGN=0x100000
  258. +# CONFIG_COMPAT_VDSO is not set
  259. +
  260. +#
  261. +# Power management options (ACPI, APM)
  262. +#
  263. +CONFIG_PM=y
  264. +# CONFIG_PM_LEGACY is not set
  265. +# CONFIG_PM_DEBUG is not set
  266. +# CONFIG_PM_SYSFS_DEPRECATED is not set
  267. +# CONFIG_SOFTWARE_SUSPEND is not set
  268. +
  269. +#
  270. +# ACPI (Advanced Configuration and Power Interface) Support
  271. +#
  272. +# CONFIG_ACPI is not set
  273. +# CONFIG_APM is not set
  274. +
  275. +#
  276. +# CPU Frequency scaling
  277. +#
  278. +# CONFIG_CPU_FREQ is not set
  279. +
  280. +#
  281. +# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
  282. +#
  283. +CONFIG_PCI=y
  284. +# CONFIG_PCI_GOBIOS is not set
  285. +# CONFIG_PCI_GOMMCONFIG is not set
  286. +# CONFIG_PCI_GODIRECT is not set
  287. +CONFIG_PCI_GOANY=y
  288. +CONFIG_PCI_BIOS=y
  289. +CONFIG_PCI_DIRECT=y
  290. +# CONFIG_PCIEPORTBUS is not set
  291. +# CONFIG_ARCH_SUPPORTS_MSI is not set
  292. +CONFIG_ISA_DMA_API=y
  293. +CONFIG_ISA=y
  294. +# CONFIG_EISA is not set
  295. +# CONFIG_MCA is not set
  296. +# CONFIG_SCx200 is not set
  297. +
  298. +#
  299. +# PCCARD (PCMCIA/CardBus) support
  300. +#
  301. +# CONFIG_PCCARD is not set
  302. +# CONFIG_HOTPLUG_PCI is not set
  303. +
  304. +#
  305. +# Executable file formats
  306. +#
  307. +CONFIG_BINFMT_ELF=y
  308. +CONFIG_BINFMT_AOUT=y
  309. +CONFIG_BINFMT_MISC=y
  310. +
  311. +#
  312. +# Networking
  313. +#
  314. +CONFIG_NET=y
  315. +
  316. +#
  317. +# Networking options
  318. +#
  319. +CONFIG_PACKET=y
  320. +# CONFIG_PACKET_MMAP is not set
  321. +CONFIG_UNIX=y
  322. +# CONFIG_NET_KEY is not set
  323. +CONFIG_INET=y
  324. +# CONFIG_IP_MULTICAST is not set
  325. +# CONFIG_IP_ADVANCED_ROUTER is not set
  326. +CONFIG_IP_FIB_HASH=y
  327. +# CONFIG_IP_PNP is not set
  328. +# CONFIG_NET_IPIP is not set
  329. +# CONFIG_NET_IPGRE is not set
  330. +# CONFIG_ARPD is not set
  331. +# CONFIG_SYN_COOKIES is not set
  332. +# CONFIG_INET_AH is not set
  333. +# CONFIG_INET_ESP is not set
  334. +# CONFIG_INET_IPCOMP is not set
  335. +# CONFIG_INET_XFRM_TUNNEL is not set
  336. +# CONFIG_INET_TUNNEL is not set
  337. +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
  338. +# CONFIG_INET_XFRM_MODE_TUNNEL is not set
  339. +# CONFIG_INET_XFRM_MODE_BEET is not set
  340. +# CONFIG_INET_DIAG is not set
  341. +# CONFIG_TCP_CONG_ADVANCED is not set
  342. +CONFIG_TCP_CONG_CUBIC=y
  343. +CONFIG_DEFAULT_TCP_CONG="cubic"
  344. +# CONFIG_TCP_MD5SIG is not set
  345. +# CONFIG_IPV6 is not set
  346. +# CONFIG_INET6_XFRM_TUNNEL is not set
  347. +# CONFIG_INET6_TUNNEL is not set
  348. +# CONFIG_NETWORK_SECMARK is not set
  349. +# CONFIG_NETFILTER is not set
  350. +# CONFIG_IP_DCCP is not set
  351. +# CONFIG_IP_SCTP is not set
  352. +# CONFIG_TIPC is not set
  353. +# CONFIG_ATM is not set
  354. +# CONFIG_BRIDGE is not set
  355. +# CONFIG_VLAN_8021Q is not set
  356. +# CONFIG_DECNET is not set
  357. +# CONFIG_LLC2 is not set
  358. +# CONFIG_IPX is not set
  359. +# CONFIG_ATALK is not set
  360. +# CONFIG_X25 is not set
  361. +# CONFIG_LAPB is not set
  362. +# CONFIG_ECONET is not set
  363. +# CONFIG_WAN_ROUTER is not set
  364. +
  365. +#
  366. +# QoS and/or fair queueing
  367. +#
  368. +# CONFIG_NET_SCHED is not set
  369. +
  370. +#
  371. +# Network testing
  372. +#
  373. +# CONFIG_NET_PKTGEN is not set
  374. +# CONFIG_HAMRADIO is not set
  375. +# CONFIG_IRDA is not set
  376. +# CONFIG_BT is not set
  377. +# CONFIG_AF_RXRPC is not set
  378. +
  379. +#
  380. +# Wireless
  381. +#
  382. +# CONFIG_CFG80211 is not set
  383. +# CONFIG_WIRELESS_EXT is not set
  384. +# CONFIG_MAC80211 is not set
  385. +# CONFIG_IEEE80211 is not set
  386. +# CONFIG_RFKILL is not set
  387. +
  388. +#
  389. +# Device Drivers
  390. +#
  391. +
  392. +#
  393. +# Generic Driver Options
  394. +#
  395. +CONFIG_STANDALONE=y
  396. +CONFIG_PREVENT_FIRMWARE_BUILD=y
  397. +CONFIG_FW_LOADER=y
  398. +# CONFIG_SYS_HYPERVISOR is not set
  399. +
  400. +#
  401. +# Connector - unified userspace <-> kernelspace linker
  402. +#
  403. +# CONFIG_CONNECTOR is not set
  404. +# CONFIG_MTD is not set
  405. +
  406. +#
  407. +# Parallel port support
  408. +#
  409. +# CONFIG_PARPORT is not set
  410. +
  411. +#
  412. +# Plug and Play support
  413. +#
  414. +CONFIG_PNP=y
  415. +# CONFIG_PNP_DEBUG is not set
  416. +
  417. +#
  418. +# Protocols
  419. +#
  420. +CONFIG_ISAPNP=y
  421. +# CONFIG_PNPBIOS is not set
  422. +# CONFIG_PNPACPI is not set
  423. +
  424. +#
  425. +# Block devices
  426. +#
  427. +# CONFIG_BLK_DEV_FD is not set
  428. +# CONFIG_BLK_DEV_XD is not set
  429. +# CONFIG_BLK_CPQ_DA is not set
  430. +# CONFIG_BLK_CPQ_CISS_DA is not set
  431. +# CONFIG_BLK_DEV_DAC960 is not set
  432. +# CONFIG_BLK_DEV_UMEM is not set
  433. +# CONFIG_BLK_DEV_COW_COMMON is not set
  434. +# CONFIG_BLK_DEV_LOOP is not set
  435. +# CONFIG_BLK_DEV_NBD is not set
  436. +# CONFIG_BLK_DEV_SX8 is not set
  437. +# CONFIG_BLK_DEV_RAM is not set
  438. +# CONFIG_CDROM_PKTCDVD is not set
  439. +# CONFIG_ATA_OVER_ETH is not set
  440. +
  441. +#
  442. +# Misc devices
  443. +#
  444. +# CONFIG_IBM_ASM is not set
  445. +# CONFIG_PHANTOM is not set
  446. +# CONFIG_SGI_IOC4 is not set
  447. +# CONFIG_TIFM_CORE is not set
  448. +CONFIG_IDE=y
  449. +CONFIG_IDE_MAX_HWIFS=4
  450. +CONFIG_BLK_DEV_IDE=y
  451. +
  452. +#
  453. +# Please see Documentation/ide.txt for help/info on IDE drives
  454. +#
  455. +# CONFIG_BLK_DEV_IDE_SATA is not set
  456. +# CONFIG_BLK_DEV_HD_IDE is not set
  457. +CONFIG_BLK_DEV_IDEDISK=y
  458. +CONFIG_IDEDISK_MULTI_MODE=y
  459. +CONFIG_BLK_DEV_IDECD=y
  460. +# CONFIG_BLK_DEV_IDETAPE is not set
  461. +# CONFIG_BLK_DEV_IDEFLOPPY is not set
  462. +# CONFIG_IDE_TASK_IOCTL is not set
  463. +CONFIG_IDE_PROC_FS=y
  464. +
  465. +#
  466. +# IDE chipset support/bugfixes
  467. +#
  468. +# CONFIG_IDE_GENERIC is not set
  469. +# CONFIG_BLK_DEV_CMD640 is not set
  470. +# CONFIG_BLK_DEV_IDEPNP is not set
  471. +CONFIG_BLK_DEV_IDEPCI=y
  472. +CONFIG_IDEPCI_SHARE_IRQ=y
  473. +CONFIG_IDEPCI_PCIBUS_ORDER=y
  474. +# CONFIG_BLK_DEV_OFFBOARD is not set
  475. +# CONFIG_BLK_DEV_GENERIC is not set
  476. +# CONFIG_BLK_DEV_OPTI621 is not set
  477. +# CONFIG_BLK_DEV_RZ1000 is not set
  478. +CONFIG_BLK_DEV_IDEDMA_PCI=y
  479. +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
  480. +# CONFIG_IDEDMA_ONLYDISK is not set
  481. +# CONFIG_BLK_DEV_AEC62XX is not set
  482. +CONFIG_BLK_DEV_ALI15X3=y
  483. +# CONFIG_WDC_ALI15X3 is not set
  484. +# CONFIG_BLK_DEV_AMD74XX is not set
  485. +# CONFIG_BLK_DEV_ATIIXP is not set
  486. +# CONFIG_BLK_DEV_CMD64X is not set
  487. +# CONFIG_BLK_DEV_TRIFLEX is not set
  488. +# CONFIG_BLK_DEV_CY82C693 is not set
  489. +# CONFIG_BLK_DEV_CS5520 is not set
  490. +# CONFIG_BLK_DEV_CS5530 is not set
  491. +# CONFIG_BLK_DEV_CS5535 is not set
  492. +# CONFIG_BLK_DEV_HPT34X is not set
  493. +# CONFIG_BLK_DEV_HPT366 is not set
  494. +# CONFIG_BLK_DEV_JMICRON is not set
  495. +# CONFIG_BLK_DEV_SC1200 is not set
  496. +# CONFIG_BLK_DEV_PIIX is not set
  497. +# CONFIG_BLK_DEV_IT8213 is not set
  498. +# CONFIG_BLK_DEV_IT821X is not set
  499. +# CONFIG_BLK_DEV_NS87415 is not set
  500. +# CONFIG_BLK_DEV_PDC202XX_OLD is not set
  501. +# CONFIG_BLK_DEV_PDC202XX_NEW is not set
  502. +# CONFIG_BLK_DEV_SVWKS is not set
  503. +# CONFIG_BLK_DEV_SIIMAGE is not set
  504. +# CONFIG_BLK_DEV_SIS5513 is not set
  505. +# CONFIG_BLK_DEV_SLC90E66 is not set
  506. +# CONFIG_BLK_DEV_TRM290 is not set
  507. +# CONFIG_BLK_DEV_VIA82CXXX is not set
  508. +# CONFIG_BLK_DEV_TC86C001 is not set
  509. +# CONFIG_IDE_ARM is not set
  510. +# CONFIG_IDE_CHIPSETS is not set
  511. +CONFIG_BLK_DEV_IDEDMA=y
  512. +# CONFIG_IDEDMA_IVB is not set
  513. +# CONFIG_BLK_DEV_HD is not set
  514. +
  515. +#
  516. +# SCSI device support
  517. +#
  518. +# CONFIG_RAID_ATTRS is not set
  519. +# CONFIG_SCSI is not set
  520. +# CONFIG_SCSI_NETLINK is not set
  521. +# CONFIG_ATA is not set
  522. +
  523. +#
  524. +# Old CD-ROM drivers (not SCSI, not IDE)
  525. +#
  526. +# CONFIG_CD_NO_IDESCSI is not set
  527. +
  528. +#
  529. +# Multi-device support (RAID and LVM)
  530. +#
  531. +# CONFIG_MD is not set
  532. +
  533. +#
  534. +# Fusion MPT device support
  535. +#
  536. +# CONFIG_FUSION is not set
  537. +
  538. +#
  539. +# IEEE 1394 (FireWire) support
  540. +#
  541. +# CONFIG_FIREWIRE is not set
  542. +# CONFIG_IEEE1394 is not set
  543. +
  544. +#
  545. +# I2O device support
  546. +#
  547. +# CONFIG_I2O is not set
  548. +# CONFIG_MACINTOSH_DRIVERS is not set
  549. +
  550. +#
  551. +# Network device support
  552. +#
  553. +CONFIG_NETDEVICES=y
  554. +CONFIG_DUMMY=y
  555. +# CONFIG_BONDING is not set
  556. +# CONFIG_EQUALIZER is not set
  557. +# CONFIG_TUN is not set
  558. +# CONFIG_NET_SB1000 is not set
  559. +# CONFIG_ARCNET is not set
  560. +# CONFIG_PHYLIB is not set
  561. +
  562. +#
  563. +# Ethernet (10 or 100Mbit)
  564. +#
  565. +CONFIG_NET_ETHERNET=y
  566. +CONFIG_MII=y
  567. +# CONFIG_HAPPYMEAL is not set
  568. +# CONFIG_SUNGEM is not set
  569. +# CONFIG_CASSINI is not set
  570. +# CONFIG_NET_VENDOR_3COM is not set
  571. +# CONFIG_LANCE is not set
  572. +# CONFIG_NET_VENDOR_SMC is not set
  573. +# CONFIG_NET_VENDOR_RACAL is not set
  574. +
  575. +#
  576. +# Tulip family network device support
  577. +#
  578. +# CONFIG_NET_TULIP is not set
  579. +# CONFIG_AT1700 is not set
  580. +# CONFIG_DEPCA is not set
  581. +# CONFIG_HP100 is not set
  582. +# CONFIG_NET_ISA is not set
  583. +CONFIG_NET_PCI=y
  584. +# CONFIG_PCNET32 is not set
  585. +# CONFIG_AMD8111_ETH is not set
  586. +# CONFIG_ADAPTEC_STARFIRE is not set
  587. +# CONFIG_AC3200 is not set
  588. +# CONFIG_APRICOT is not set
  589. +# CONFIG_B44 is not set
  590. +# CONFIG_FORCEDETH is not set
  591. +# CONFIG_CS89x0 is not set
  592. +# CONFIG_DGRS is not set
  593. +# CONFIG_EEPRO100 is not set
  594. +CONFIG_E100=y
  595. +CONFIG_E100_IGNORE_CSUM=y
  596. +# CONFIG_FEALNX is not set
  597. +CONFIG_NATSEMI=y
  598. +# CONFIG_NE2K_PCI is not set
  599. +# CONFIG_8139CP is not set
  600. +# CONFIG_8139TOO is not set
  601. +# CONFIG_SIS900 is not set
  602. +# CONFIG_EPIC100 is not set
  603. +# CONFIG_SUNDANCE is not set
  604. +# CONFIG_TLAN is not set
  605. +# CONFIG_VIA_RHINE is not set
  606. +# CONFIG_SC92031 is not set
  607. +# CONFIG_NETDEV_1000 is not set
  608. +# CONFIG_NETDEV_10000 is not set
  609. +# CONFIG_TR is not set
  610. +
  611. +#
  612. +# Wireless LAN
  613. +#
  614. +# CONFIG_WLAN_PRE80211 is not set
  615. +# CONFIG_WLAN_80211 is not set
  616. +# CONFIG_WAN is not set
  617. +# CONFIG_FDDI is not set
  618. +# CONFIG_HIPPI is not set
  619. +# CONFIG_PPP is not set
  620. +# CONFIG_SLIP is not set
  621. +# CONFIG_SHAPER is not set
  622. +# CONFIG_NETCONSOLE is not set
  623. +# CONFIG_NETPOLL is not set
  624. +# CONFIG_NET_POLL_CONTROLLER is not set
  625. +
  626. +#
  627. +# ISDN subsystem
  628. +#
  629. +# CONFIG_ISDN is not set
  630. +
  631. +#
  632. +# Telephony Support
  633. +#
  634. +# CONFIG_PHONE is not set
  635. +
  636. +#
  637. +# Input device support
  638. +#
  639. +CONFIG_INPUT=y
  640. +# CONFIG_INPUT_FF_MEMLESS is not set
  641. +# CONFIG_INPUT_POLLDEV is not set
  642. +
  643. +#
  644. +# Userland interfaces
  645. +#
  646. +# CONFIG_INPUT_MOUSEDEV is not set
  647. +# CONFIG_INPUT_JOYDEV is not set
  648. +# CONFIG_INPUT_TSDEV is not set
  649. +# CONFIG_INPUT_EVDEV is not set
  650. +# CONFIG_INPUT_EVBUG is not set
  651. +
  652. +#
  653. +# Input Device Drivers
  654. +#
  655. +# CONFIG_INPUT_KEYBOARD is not set
  656. +# CONFIG_INPUT_MOUSE is not set
  657. +# CONFIG_INPUT_JOYSTICK is not set
  658. +# CONFIG_INPUT_TABLET is not set
  659. +# CONFIG_INPUT_TOUCHSCREEN is not set
  660. +# CONFIG_INPUT_MISC is not set
  661. +
  662. +#
  663. +# Hardware I/O ports
  664. +#
  665. +# CONFIG_SERIO is not set
  666. +# CONFIG_GAMEPORT is not set
  667. +
  668. +#
  669. +# Character devices
  670. +#
  671. +# CONFIG_VT is not set
  672. +# CONFIG_SERIAL_NONSTANDARD is not set
  673. +
  674. +#
  675. +# Serial drivers
  676. +#
  677. +CONFIG_SERIAL_8250=y
  678. +CONFIG_SERIAL_8250_CONSOLE=y
  679. +CONFIG_SERIAL_8250_PCI=y
  680. +CONFIG_SERIAL_8250_PNP=y
  681. +CONFIG_SERIAL_8250_NR_UARTS=2
  682. +CONFIG_SERIAL_8250_RUNTIME_UARTS=2
  683. +# CONFIG_SERIAL_8250_EXTENDED is not set
  684. +
  685. +#
  686. +# Non-8250 serial port support
  687. +#
  688. +CONFIG_SERIAL_CORE=y
  689. +CONFIG_SERIAL_CORE_CONSOLE=y
  690. +# CONFIG_SERIAL_JSM is not set
  691. +CONFIG_UNIX98_PTYS=y
  692. +# CONFIG_LEGACY_PTYS is not set
  693. +
  694. +#
  695. +# IPMI
  696. +#
  697. +# CONFIG_IPMI_HANDLER is not set
  698. +CONFIG_WATCHDOG=y
  699. +# CONFIG_WATCHDOG_NOWAYOUT is not set
  700. +
  701. +#
  702. +# Watchdog Device Drivers
  703. +#
  704. +# CONFIG_SOFT_WATCHDOG is not set
  705. +# CONFIG_ACQUIRE_WDT is not set
  706. +# CONFIG_ADVANTECH_WDT is not set
  707. +# CONFIG_ALIM1535_WDT is not set
  708. +CONFIG_ALIM7101_WDT=y
  709. +# CONFIG_SC520_WDT is not set
  710. +# CONFIG_EUROTECH_WDT is not set
  711. +# CONFIG_IB700_WDT is not set
  712. +# CONFIG_IBMASR is not set
  713. +# CONFIG_WAFER_WDT is not set
  714. +# CONFIG_I6300ESB_WDT is not set
  715. +# CONFIG_ITCO_WDT is not set
  716. +# CONFIG_SC1200_WDT is not set
  717. +# CONFIG_PC87413_WDT is not set
  718. +# CONFIG_60XX_WDT is not set
  719. +# CONFIG_SBC8360_WDT is not set
  720. +# CONFIG_CPU5_WDT is not set
  721. +# CONFIG_SMSC37B787_WDT is not set
  722. +# CONFIG_W83627HF_WDT is not set
  723. +# CONFIG_W83697HF_WDT is not set
  724. +# CONFIG_W83877F_WDT is not set
  725. +# CONFIG_W83977F_WDT is not set
  726. +# CONFIG_MACHZ_WDT is not set
  727. +# CONFIG_SBC_EPX_C3_WATCHDOG is not set
  728. +
  729. +#
  730. +# ISA-based Watchdog Cards
  731. +#
  732. +# CONFIG_PCWATCHDOG is not set
  733. +# CONFIG_MIXCOMWD is not set
  734. +# CONFIG_WDT is not set
  735. +
  736. +#
  737. +# PCI-based Watchdog Cards
  738. +#
  739. +# CONFIG_PCIPCWATCHDOG is not set
  740. +# CONFIG_WDTPCI is not set
  741. +CONFIG_HW_RANDOM=y
  742. +# CONFIG_HW_RANDOM_INTEL is not set
  743. +# CONFIG_HW_RANDOM_AMD is not set
  744. +# CONFIG_HW_RANDOM_GEODE is not set
  745. +CONFIG_HW_RANDOM_VIA=y
  746. +CONFIG_NVRAM=y
  747. +CONFIG_RTC=y
  748. +# CONFIG_DTLK is not set
  749. +# CONFIG_R3964 is not set
  750. +# CONFIG_APPLICOM is not set
  751. +# CONFIG_SONYPI is not set
  752. +# CONFIG_AGP is not set
  753. +# CONFIG_DRM is not set
  754. +# CONFIG_MWAVE is not set
  755. +# CONFIG_PC8736x_GPIO is not set
  756. +# CONFIG_NSC_GPIO is not set
  757. +# CONFIG_CS5535_GPIO is not set
  758. +# CONFIG_RAW_DRIVER is not set
  759. +# CONFIG_HANGCHECK_TIMER is not set
  760. +
  761. +#
  762. +# TPM devices
  763. +#
  764. +# CONFIG_TCG_TPM is not set
  765. +# CONFIG_TELCLOCK is not set
  766. +CONFIG_DEVPORT=y
  767. +CONFIG_I2C=y
  768. +CONFIG_I2C_BOARDINFO=y
  769. +# CONFIG_I2C_CHARDEV is not set
  770. +
  771. +#
  772. +# I2C Algorithms
  773. +#
  774. +# CONFIG_I2C_ALGOBIT is not set
  775. +# CONFIG_I2C_ALGOPCF is not set
  776. +# CONFIG_I2C_ALGOPCA is not set
  777. +
  778. +#
  779. +# I2C Hardware Bus support
  780. +#
  781. +# CONFIG_I2C_ALI1535 is not set
  782. +# CONFIG_I2C_ALI1563 is not set
  783. +# CONFIG_I2C_ALI15X3 is not set
  784. +# CONFIG_I2C_AMD756 is not set
  785. +# CONFIG_I2C_AMD8111 is not set
  786. +# CONFIG_I2C_ELEKTOR is not set
  787. +# CONFIG_I2C_I801 is not set
  788. +# CONFIG_I2C_I810 is not set
  789. +# CONFIG_I2C_PIIX4 is not set
  790. +# CONFIG_I2C_NFORCE2 is not set
  791. +# CONFIG_I2C_OCORES is not set
  792. +# CONFIG_I2C_PARPORT_LIGHT is not set
  793. +# CONFIG_I2C_PROSAVAGE is not set
  794. +# CONFIG_I2C_SAVAGE4 is not set
  795. +# CONFIG_I2C_SIMTEC is not set
  796. +# CONFIG_SCx200_ACB is not set
  797. +# CONFIG_I2C_SIS5595 is not set
  798. +# CONFIG_I2C_SIS630 is not set
  799. +# CONFIG_I2C_SIS96X is not set
  800. +# CONFIG_I2C_STUB is not set
  801. +# CONFIG_I2C_VIA is not set
  802. +# CONFIG_I2C_VIAPRO is not set
  803. +# CONFIG_I2C_VOODOO3 is not set
  804. +# CONFIG_I2C_PCA_ISA is not set
  805. +
  806. +#
  807. +# Miscellaneous I2C Chip support
  808. +#
  809. +# CONFIG_SENSORS_DS1337 is not set
  810. +# CONFIG_SENSORS_DS1374 is not set
  811. +# CONFIG_SENSORS_EEPROM is not set
  812. +# CONFIG_SENSORS_PCF8574 is not set
  813. +# CONFIG_SENSORS_PCA9539 is not set
  814. +# CONFIG_SENSORS_PCF8591 is not set
  815. +# CONFIG_SENSORS_MAX6875 is not set
  816. +# CONFIG_I2C_DEBUG_CORE is not set
  817. +# CONFIG_I2C_DEBUG_ALGO is not set
  818. +# CONFIG_I2C_DEBUG_BUS is not set
  819. +# CONFIG_I2C_DEBUG_CHIP is not set
  820. +
  821. +#
  822. +# SPI support
  823. +#
  824. +# CONFIG_SPI is not set
  825. +# CONFIG_SPI_MASTER is not set
  826. +
  827. +#
  828. +# Dallas's 1-wire bus
  829. +#
  830. +# CONFIG_W1 is not set
  831. +CONFIG_HWMON=y
  832. +# CONFIG_HWMON_VID is not set
  833. +# CONFIG_SENSORS_ABITUGURU is not set
  834. +# CONFIG_SENSORS_AD7418 is not set
  835. +# CONFIG_SENSORS_ADM1021 is not set
  836. +# CONFIG_SENSORS_ADM1025 is not set
  837. +# CONFIG_SENSORS_ADM1026 is not set
  838. +# CONFIG_SENSORS_ADM1029 is not set
  839. +# CONFIG_SENSORS_ADM1031 is not set
  840. +# CONFIG_SENSORS_ADM9240 is not set
  841. +# CONFIG_SENSORS_K8TEMP is not set
  842. +# CONFIG_SENSORS_ASB100 is not set
  843. +# CONFIG_SENSORS_ATXP1 is not set
  844. +# CONFIG_SENSORS_DS1621 is not set
  845. +# CONFIG_SENSORS_F71805F is not set
  846. +# CONFIG_SENSORS_FSCHER is not set
  847. +# CONFIG_SENSORS_FSCPOS is not set
  848. +# CONFIG_SENSORS_GL518SM is not set
  849. +# CONFIG_SENSORS_GL520SM is not set
  850. +# CONFIG_SENSORS_CORETEMP is not set
  851. +# CONFIG_SENSORS_IT87 is not set
  852. +# CONFIG_SENSORS_LM63 is not set
  853. +# CONFIG_SENSORS_LM75 is not set
  854. +# CONFIG_SENSORS_LM77 is not set
  855. +# CONFIG_SENSORS_LM78 is not set
  856. +# CONFIG_SENSORS_LM80 is not set
  857. +# CONFIG_SENSORS_LM83 is not set
  858. +# CONFIG_SENSORS_LM85 is not set
  859. +# CONFIG_SENSORS_LM87 is not set
  860. +# CONFIG_SENSORS_LM90 is not set
  861. +# CONFIG_SENSORS_LM92 is not set
  862. +# CONFIG_SENSORS_MAX1619 is not set
  863. +# CONFIG_SENSORS_MAX6650 is not set
  864. +# CONFIG_SENSORS_PC87360 is not set
  865. +# CONFIG_SENSORS_PC87427 is not set
  866. +# CONFIG_SENSORS_SIS5595 is not set
  867. +# CONFIG_SENSORS_SMSC47M1 is not set
  868. +# CONFIG_SENSORS_SMSC47M192 is not set
  869. +# CONFIG_SENSORS_SMSC47B397 is not set
  870. +# CONFIG_SENSORS_VIA686A is not set
  871. +# CONFIG_SENSORS_VT1211 is not set
  872. +# CONFIG_SENSORS_VT8231 is not set
  873. +# CONFIG_SENSORS_W83781D is not set
  874. +# CONFIG_SENSORS_W83791D is not set
  875. +# CONFIG_SENSORS_W83792D is not set
  876. +# CONFIG_SENSORS_W83793 is not set
  877. +# CONFIG_SENSORS_W83L785TS is not set
  878. +# CONFIG_SENSORS_W83627HF is not set
  879. +# CONFIG_SENSORS_W83627EHF is not set
  880. +# CONFIG_SENSORS_HDAPS is not set
  881. +# CONFIG_SENSORS_APPLESMC is not set
  882. +# CONFIG_HWMON_DEBUG_CHIP is not set
  883. +
  884. +#
  885. +# Multifunction device drivers
  886. +#
  887. +# CONFIG_MFD_SM501 is not set
  888. +
  889. +#
  890. +# Multimedia devices
  891. +#
  892. +# CONFIG_VIDEO_DEV is not set
  893. +# CONFIG_DVB_CORE is not set
  894. +# CONFIG_DAB is not set
  895. +
  896. +#
  897. +# Graphics support
  898. +#
  899. +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
  900. +
  901. +#
  902. +# Display device support
  903. +#
  904. +# CONFIG_DISPLAY_SUPPORT is not set
  905. +# CONFIG_VGASTATE is not set
  906. +# CONFIG_FB is not set
  907. +
  908. +#
  909. +# Sound
  910. +#
  911. +# CONFIG_SOUND is not set
  912. +
  913. +#
  914. +# HID Devices
  915. +#
  916. +# CONFIG_HID is not set
  917. +
  918. +#
  919. +# USB support
  920. +#
  921. +CONFIG_USB_ARCH_HAS_HCD=y
  922. +CONFIG_USB_ARCH_HAS_OHCI=y
  923. +CONFIG_USB_ARCH_HAS_EHCI=y
  924. +# CONFIG_USB is not set
  925. +
  926. +#
  927. +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
  928. +#
  929. +
  930. +#
  931. +# USB Gadget Support
  932. +#
  933. +# CONFIG_USB_GADGET is not set
  934. +# CONFIG_MMC is not set
  935. +
  936. +#
  937. +# LED devices
  938. +#
  939. +# CONFIG_NEW_LEDS is not set
  940. +
  941. +#
  942. +# LED drivers
  943. +#
  944. +
  945. +#
  946. +# LED Triggers
  947. +#
  948. +
  949. +#
  950. +# InfiniBand support
  951. +#
  952. +# CONFIG_INFINIBAND is not set
  953. +
  954. +#
  955. +# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
  956. +#
  957. +# CONFIG_EDAC is not set
  958. +
  959. +#
  960. +# Real Time Clock
  961. +#
  962. +# CONFIG_RTC_CLASS is not set
  963. +
  964. +#
  965. +# DMA Engine support
  966. +#
  967. +# CONFIG_DMA_ENGINE is not set
  968. +
  969. +#
  970. +# DMA Clients
  971. +#
  972. +
  973. +#
  974. +# DMA Devices
  975. +#
  976. +
  977. +#
  978. +# Virtualization
  979. +#
  980. +# CONFIG_KVM is not set
  981. +
  982. +#
  983. +# Cobalt RaQ/Qube Hardware
  984. +#
  985. +CONFIG_COBALT_RAQ=y
  986. +CONFIG_COBALT_GEN_III=y
  987. +# CONFIG_COBALT_GEN_V is not set
  988. +CONFIG_COBALT_OLDPROC=y
  989. +
  990. +#
  991. +# Cobalt Hardware Options
  992. +#
  993. +CONFIG_COBALT_LCD=y
  994. +CONFIG_COBALT_LCD_TWIDDLE=y
  995. +CONFIG_COBALT_LED=y
  996. +CONFIG_COBALT_SERNUM=y
  997. +CONFIG_COBALT_WDT=y
  998. +CONFIG_COBALT_SENSORS=y
  999. +CONFIG_COBALT_RAMINFO=y
  1000. +
  1001. +#
  1002. +# File systems
  1003. +#
  1004. +CONFIG_EXT2_FS=y
  1005. +# CONFIG_EXT2_FS_XATTR is not set
  1006. +# CONFIG_EXT2_FS_XIP is not set
  1007. +CONFIG_EXT3_FS=y
  1008. +CONFIG_EXT3_FS_XATTR=y
  1009. +# CONFIG_EXT3_FS_POSIX_ACL is not set
  1010. +# CONFIG_EXT3_FS_SECURITY is not set
  1011. +# CONFIG_EXT4DEV_FS is not set
  1012. +CONFIG_JBD=y
  1013. +# CONFIG_JBD_DEBUG is not set
  1014. +CONFIG_FS_MBCACHE=y
  1015. +# CONFIG_REISERFS_FS is not set
  1016. +# CONFIG_JFS_FS is not set
  1017. +# CONFIG_FS_POSIX_ACL is not set
  1018. +# CONFIG_XFS_FS is not set
  1019. +# CONFIG_GFS2_FS is not set
  1020. +# CONFIG_OCFS2_FS is not set
  1021. +# CONFIG_MINIX_FS is not set
  1022. +# CONFIG_ROMFS_FS is not set
  1023. +CONFIG_INOTIFY=y
  1024. +CONFIG_INOTIFY_USER=y
  1025. +# CONFIG_QUOTA is not set
  1026. +# CONFIG_DNOTIFY is not set
  1027. +# CONFIG_AUTOFS_FS is not set
  1028. +CONFIG_AUTOFS4_FS=y
  1029. +# CONFIG_FUSE_FS is not set
  1030. +
  1031. +#
  1032. +# CD-ROM/DVD Filesystems
  1033. +#
  1034. +# CONFIG_ISO9660_FS is not set
  1035. +# CONFIG_UDF_FS is not set
  1036. +
  1037. +#
  1038. +# DOS/FAT/NT Filesystems
  1039. +#
  1040. +# CONFIG_MSDOS_FS is not set
  1041. +# CONFIG_VFAT_FS is not set
  1042. +# CONFIG_NTFS_FS is not set
  1043. +
  1044. +#
  1045. +# Pseudo filesystems
  1046. +#
  1047. +CONFIG_PROC_FS=y
  1048. +# CONFIG_PROC_KCORE is not set
  1049. +CONFIG_PROC_SYSCTL=y
  1050. +CONFIG_SYSFS=y
  1051. +CONFIG_TMPFS=y
  1052. +# CONFIG_TMPFS_POSIX_ACL is not set
  1053. +# CONFIG_HUGETLBFS is not set
  1054. +# CONFIG_HUGETLB_PAGE is not set
  1055. +CONFIG_RAMFS=y
  1056. +# CONFIG_CONFIGFS_FS is not set
  1057. +
  1058. +#
  1059. +# Miscellaneous filesystems
  1060. +#
  1061. +# CONFIG_ADFS_FS is not set
  1062. +# CONFIG_AFFS_FS is not set
  1063. +# CONFIG_HFS_FS is not set
  1064. +# CONFIG_HFSPLUS_FS is not set
  1065. +# CONFIG_BEFS_FS is not set
  1066. +# CONFIG_BFS_FS is not set
  1067. +# CONFIG_EFS_FS is not set
  1068. +# CONFIG_CRAMFS is not set
  1069. +# CONFIG_SQUASHFS is not set
  1070. +# CONFIG_VXFS_FS is not set
  1071. +# CONFIG_HPFS_FS is not set
  1072. +# CONFIG_QNX4FS_FS is not set
  1073. +# CONFIG_SYSV_FS is not set
  1074. +# CONFIG_UFS_FS is not set
  1075. +
  1076. +#
  1077. +# Network File Systems
  1078. +#
  1079. +CONFIG_NFS_FS=m
  1080. +# CONFIG_NFS_V3 is not set
  1081. +# CONFIG_NFS_V4 is not set
  1082. +# CONFIG_NFS_DIRECTIO is not set
  1083. +# CONFIG_NFSD is not set
  1084. +CONFIG_LOCKD=m
  1085. +CONFIG_NFS_COMMON=y
  1086. +CONFIG_SUNRPC=m
  1087. +# CONFIG_SUNRPC_BIND34 is not set
  1088. +# CONFIG_RPCSEC_GSS_KRB5 is not set
  1089. +# CONFIG_RPCSEC_GSS_SPKM3 is not set
  1090. +# CONFIG_SMB_FS is not set
  1091. +# CONFIG_CIFS is not set
  1092. +# CONFIG_NCP_FS is not set
  1093. +# CONFIG_CODA_FS is not set
  1094. +# CONFIG_AFS_FS is not set
  1095. +# CONFIG_9P_FS is not set
  1096. +
  1097. +#
  1098. +# Partition Types
  1099. +#
  1100. +# CONFIG_PARTITION_ADVANCED is not set
  1101. +CONFIG_MSDOS_PARTITION=y
  1102. +
  1103. +#
  1104. +# Native Language Support
  1105. +#
  1106. +CONFIG_NLS=y
  1107. +CONFIG_NLS_DEFAULT="iso8859-1"
  1108. +CONFIG_NLS_CODEPAGE_437=y
  1109. +# CONFIG_NLS_CODEPAGE_737 is not set
  1110. +# CONFIG_NLS_CODEPAGE_775 is not set
  1111. +# CONFIG_NLS_CODEPAGE_850 is not set
  1112. +# CONFIG_NLS_CODEPAGE_852 is not set
  1113. +# CONFIG_NLS_CODEPAGE_855 is not set
  1114. +# CONFIG_NLS_CODEPAGE_857 is not set
  1115. +# CONFIG_NLS_CODEPAGE_860 is not set
  1116. +# CONFIG_NLS_CODEPAGE_861 is not set
  1117. +# CONFIG_NLS_CODEPAGE_862 is not set
  1118. +# CONFIG_NLS_CODEPAGE_863 is not set
  1119. +# CONFIG_NLS_CODEPAGE_864 is not set
  1120. +# CONFIG_NLS_CODEPAGE_865 is not set
  1121. +# CONFIG_NLS_CODEPAGE_866 is not set
  1122. +# CONFIG_NLS_CODEPAGE_869 is not set
  1123. +# CONFIG_NLS_CODEPAGE_936 is not set
  1124. +# CONFIG_NLS_CODEPAGE_950 is not set
  1125. +# CONFIG_NLS_CODEPAGE_932 is not set
  1126. +# CONFIG_NLS_CODEPAGE_949 is not set
  1127. +# CONFIG_NLS_CODEPAGE_874 is not set
  1128. +# CONFIG_NLS_ISO8859_8 is not set
  1129. +# CONFIG_NLS_CODEPAGE_1250 is not set
  1130. +# CONFIG_NLS_CODEPAGE_1251 is not set
  1131. +# CONFIG_NLS_ASCII is not set
  1132. +CONFIG_NLS_ISO8859_1=y
  1133. +# CONFIG_NLS_ISO8859_2 is not set
  1134. +# CONFIG_NLS_ISO8859_3 is not set
  1135. +# CONFIG_NLS_ISO8859_4 is not set
  1136. +# CONFIG_NLS_ISO8859_5 is not set
  1137. +# CONFIG_NLS_ISO8859_6 is not set
  1138. +# CONFIG_NLS_ISO8859_7 is not set
  1139. +# CONFIG_NLS_ISO8859_9 is not set
  1140. +# CONFIG_NLS_ISO8859_13 is not set
  1141. +# CONFIG_NLS_ISO8859_14 is not set
  1142. +# CONFIG_NLS_ISO8859_15 is not set
  1143. +# CONFIG_NLS_KOI8_R is not set
  1144. +# CONFIG_NLS_KOI8_U is not set
  1145. +# CONFIG_NLS_UTF8 is not set
  1146. +
  1147. +#
  1148. +# Distributed Lock Manager
  1149. +#
  1150. +# CONFIG_DLM is not set
  1151. +
  1152. +#
  1153. +# Instrumentation Support
  1154. +#
  1155. +# CONFIG_PROFILING is not set
  1156. +
  1157. +#
  1158. +# Kernel hacking
  1159. +#
  1160. +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
  1161. +# CONFIG_PRINTK_TIME is not set
  1162. +CONFIG_ENABLE_MUST_CHECK=y
  1163. +# CONFIG_MAGIC_SYSRQ is not set
  1164. +CONFIG_UNUSED_SYMBOLS=y
  1165. +# CONFIG_DEBUG_FS is not set
  1166. +# CONFIG_HEADERS_CHECK is not set
  1167. +# CONFIG_DEBUG_KERNEL is not set
  1168. +# CONFIG_DEBUG_BUGVERBOSE is not set
  1169. +CONFIG_EARLY_PRINTK=y
  1170. +CONFIG_DOUBLEFAULT=y
  1171. +
  1172. +#
  1173. +# Security options
  1174. +#
  1175. +# CONFIG_KEYS is not set
  1176. +# CONFIG_SECURITY is not set
  1177. +
  1178. +#
  1179. +# Cryptographic options
  1180. +#
  1181. +# CONFIG_CRYPTO is not set
  1182. +
  1183. +#
  1184. +# Library routines
  1185. +#
  1186. +CONFIG_BITREVERSE=y
  1187. +# CONFIG_CRC_CCITT is not set
  1188. +# CONFIG_CRC16 is not set
  1189. +# CONFIG_CRC_ITU_T is not set
  1190. +CONFIG_CRC32=y
  1191. +# CONFIG_LIBCRC32C is not set
  1192. +CONFIG_PLIST=y
  1193. +CONFIG_HAS_IOMEM=y
  1194. +CONFIG_HAS_IOPORT=y
  1195. +CONFIG_HAS_DMA=y
  1196. +CONFIG_GENERIC_HARDIRQS=y
  1197. +CONFIG_GENERIC_IRQ_PROBE=y
  1198. +CONFIG_X86_BIOS_REBOOT=y
  1199. +CONFIG_KTIME_SCALAR=y
  1200. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/configs/raq4_defconfig linux-3.2.5-cobalt/arch/x86/configs/raq4_defconfig
  1201. --- linux-3.2.5/arch/x86/configs/raq4_defconfig 1969-12-31 16:00:00.000000000 -0800
  1202. +++ linux-3.2.5-cobalt/arch/x86/configs/raq4_defconfig 2012-02-06 21:34:59.000000000 -0800
  1203. @@ -0,0 +1,1162 @@
  1204. +#
  1205. +# Automatically generated make config: don't edit
  1206. +# Linux kernel version: 2.6.22-gentoo-r9
  1207. +# Mon Nov 12 08:09:46 2007
  1208. +#
  1209. +CONFIG_X86_32=y
  1210. +CONFIG_GENERIC_TIME=y
  1211. +CONFIG_CLOCKSOURCE_WATCHDOG=y
  1212. +CONFIG_GENERIC_CLOCKEVENTS=y
  1213. +CONFIG_LOCKDEP_SUPPORT=y
  1214. +CONFIG_STACKTRACE_SUPPORT=y
  1215. +CONFIG_SEMAPHORE_SLEEPERS=y
  1216. +CONFIG_X86=y
  1217. +CONFIG_MMU=y
  1218. +CONFIG_ZONE_DMA=y
  1219. +CONFIG_QUICKLIST=y
  1220. +CONFIG_GENERIC_ISA_DMA=y
  1221. +CONFIG_GENERIC_IOMAP=y
  1222. +CONFIG_GENERIC_BUG=y
  1223. +CONFIG_GENERIC_HWEIGHT=y
  1224. +CONFIG_ARCH_MAY_HAVE_PC_FDC=y
  1225. +CONFIG_DMI=y
  1226. +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
  1227. +
  1228. +#
  1229. +# Code maturity level options
  1230. +#
  1231. +CONFIG_EXPERIMENTAL=y
  1232. +CONFIG_BROKEN_ON_SMP=y
  1233. +CONFIG_INIT_ENV_ARG_LIMIT=32
  1234. +
  1235. +#
  1236. +# General setup
  1237. +#
  1238. +CONFIG_LOCALVERSION=""
  1239. +CONFIG_LOCALVERSION_AUTO=y
  1240. +CONFIG_SWAP=y
  1241. +CONFIG_SYSVIPC=y
  1242. +# CONFIG_IPC_NS is not set
  1243. +CONFIG_SYSVIPC_SYSCTL=y
  1244. +# CONFIG_POSIX_MQUEUE is not set
  1245. +# CONFIG_BSD_PROCESS_ACCT is not set
  1246. +# CONFIG_TASKSTATS is not set
  1247. +# CONFIG_UTS_NS is not set
  1248. +# CONFIG_AUDIT is not set
  1249. +CONFIG_IKCONFIG=y
  1250. +CONFIG_IKCONFIG_PROC=y
  1251. +CONFIG_LOG_BUF_SHIFT=14
  1252. +CONFIG_SYSFS_DEPRECATED=y
  1253. +# CONFIG_RELAY is not set
  1254. +# CONFIG_BLK_DEV_INITRD is not set
  1255. +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
  1256. +CONFIG_SYSCTL=y
  1257. +CONFIG_EMBEDDED=y
  1258. +CONFIG_UID16=y
  1259. +CONFIG_SYSCTL_SYSCALL=y
  1260. +# CONFIG_KALLSYMS is not set
  1261. +CONFIG_HOTPLUG=y
  1262. +CONFIG_PRINTK=y
  1263. +CONFIG_BUG=y
  1264. +CONFIG_ELF_CORE=y
  1265. +CONFIG_BASE_FULL=y
  1266. +CONFIG_FUTEX=y
  1267. +CONFIG_ANON_INODES=y
  1268. +CONFIG_EPOLL=y
  1269. +CONFIG_SIGNALFD=y
  1270. +CONFIG_EVENTFD=y
  1271. +CONFIG_SHMEM=y
  1272. +CONFIG_VM_EVENT_COUNTERS=y
  1273. +CONFIG_SLAB=y
  1274. +# CONFIG_SLUB is not set
  1275. +# CONFIG_SLOB is not set
  1276. +CONFIG_RT_MUTEXES=y
  1277. +# CONFIG_TINY_SHMEM is not set
  1278. +CONFIG_BASE_SMALL=0
  1279. +
  1280. +#
  1281. +# Loadable module support
  1282. +#
  1283. +CONFIG_MODULES=y
  1284. +CONFIG_MODULE_UNLOAD=y
  1285. +CONFIG_MODULE_FORCE_UNLOAD=y
  1286. +CONFIG_MODVERSIONS=y
  1287. +# CONFIG_MODULE_SRCVERSION_ALL is not set
  1288. +CONFIG_KMOD=y
  1289. +
  1290. +#
  1291. +# Block layer
  1292. +#
  1293. +CONFIG_BLOCK=y
  1294. +CONFIG_LBD=y
  1295. +# CONFIG_BLK_DEV_IO_TRACE is not set
  1296. +# CONFIG_LSF is not set
  1297. +
  1298. +#
  1299. +# IO Schedulers
  1300. +#
  1301. +CONFIG_IOSCHED_NOOP=y
  1302. +CONFIG_IOSCHED_AS=y
  1303. +# CONFIG_IOSCHED_DEADLINE is not set
  1304. +# CONFIG_IOSCHED_CFQ is not set
  1305. +CONFIG_DEFAULT_AS=y
  1306. +# CONFIG_DEFAULT_DEADLINE is not set
  1307. +# CONFIG_DEFAULT_CFQ is not set
  1308. +# CONFIG_DEFAULT_NOOP is not set
  1309. +CONFIG_DEFAULT_IOSCHED="anticipatory"
  1310. +
  1311. +#
  1312. +# Processor type and features
  1313. +#
  1314. +# CONFIG_TICK_ONESHOT is not set
  1315. +# CONFIG_NO_HZ is not set
  1316. +# CONFIG_HIGH_RES_TIMERS is not set
  1317. +# CONFIG_SMP is not set
  1318. +CONFIG_X86_PC=y
  1319. +# CONFIG_X86_ELAN is not set
  1320. +# CONFIG_X86_VOYAGER is not set
  1321. +# CONFIG_X86_NUMAQ is not set
  1322. +# CONFIG_X86_SUMMIT is not set
  1323. +# CONFIG_X86_BIGSMP is not set
  1324. +# CONFIG_X86_VISWS is not set
  1325. +# CONFIG_X86_GENERICARCH is not set
  1326. +# CONFIG_X86_ES7000 is not set
  1327. +# CONFIG_PARAVIRT is not set
  1328. +# CONFIG_M386 is not set
  1329. +# CONFIG_M486 is not set
  1330. +# CONFIG_M586 is not set
  1331. +# CONFIG_M586TSC is not set
  1332. +# CONFIG_M586MMX is not set
  1333. +# CONFIG_M686 is not set
  1334. +# CONFIG_MPENTIUMII is not set
  1335. +# CONFIG_MPENTIUMIII is not set
  1336. +# CONFIG_MPENTIUMM is not set
  1337. +# CONFIG_MCORE2 is not set
  1338. +# CONFIG_MPENTIUM4 is not set
  1339. +CONFIG_MK6=y
  1340. +# CONFIG_MK7 is not set
  1341. +# CONFIG_MK8 is not set
  1342. +# CONFIG_MCRUSOE is not set
  1343. +# CONFIG_MEFFICEON is not set
  1344. +# CONFIG_MWINCHIPC6 is not set
  1345. +# CONFIG_MWINCHIP2 is not set
  1346. +# CONFIG_MWINCHIP3D is not set
  1347. +# CONFIG_MGEODEGX1 is not set
  1348. +# CONFIG_MGEODE_LX is not set
  1349. +# CONFIG_MCYRIXIII is not set
  1350. +# CONFIG_MVIAC3_2 is not set
  1351. +# CONFIG_MVIAC7 is not set
  1352. +# CONFIG_X86_GENERIC is not set
  1353. +CONFIG_X86_CMPXCHG=y
  1354. +CONFIG_X86_L1_CACHE_SHIFT=5
  1355. +CONFIG_X86_XADD=y
  1356. +CONFIG_RWSEM_XCHGADD_ALGORITHM=y
  1357. +# CONFIG_ARCH_HAS_ILOG2_U32 is not set
  1358. +# CONFIG_ARCH_HAS_ILOG2_U64 is not set
  1359. +CONFIG_GENERIC_CALIBRATE_DELAY=y
  1360. +CONFIG_X86_WP_WORKS_OK=y
  1361. +CONFIG_X86_INVLPG=y
  1362. +CONFIG_X86_BSWAP=y
  1363. +CONFIG_X86_POPAD_OK=y
  1364. +CONFIG_X86_ALIGNMENT_16=y
  1365. +CONFIG_X86_USE_PPRO_CHECKSUM=y
  1366. +CONFIG_X86_TSC=y
  1367. +CONFIG_X86_MINIMUM_CPU_MODEL=4
  1368. +# CONFIG_HPET_TIMER is not set
  1369. +CONFIG_PREEMPT_NONE=y
  1370. +# CONFIG_PREEMPT_VOLUNTARY is not set
  1371. +# CONFIG_PREEMPT is not set
  1372. +# CONFIG_X86_UP_APIC is not set
  1373. +# CONFIG_X86_MCE is not set
  1374. +# CONFIG_VM86 is not set
  1375. +# CONFIG_TOSHIBA is not set
  1376. +# CONFIG_I8K is not set
  1377. +# CONFIG_X86_REBOOTFIXUPS is not set
  1378. +# CONFIG_MICROCODE is not set
  1379. +# CONFIG_X86_MSR is not set
  1380. +# CONFIG_X86_CPUID is not set
  1381. +
  1382. +#
  1383. +# Firmware Drivers
  1384. +#
  1385. +# CONFIG_EDD is not set
  1386. +# CONFIG_DELL_RBU is not set
  1387. +# CONFIG_DCDBAS is not set
  1388. +CONFIG_NOHIGHMEM=y
  1389. +# CONFIG_HIGHMEM4G is not set
  1390. +# CONFIG_HIGHMEM64G is not set
  1391. +CONFIG_VMSPLIT_3G=y
  1392. +# CONFIG_VMSPLIT_3G_OPT is not set
  1393. +# CONFIG_VMSPLIT_2G is not set
  1394. +# CONFIG_VMSPLIT_2G_OPT is not set
  1395. +# CONFIG_VMSPLIT_1G is not set
  1396. +CONFIG_PAGE_OFFSET=0xC0000000
  1397. +CONFIG_ARCH_FLATMEM_ENABLE=y
  1398. +CONFIG_ARCH_SPARSEMEM_ENABLE=y
  1399. +CONFIG_ARCH_SELECT_MEMORY_MODEL=y
  1400. +CONFIG_ARCH_POPULATES_NODE_MAP=y
  1401. +CONFIG_SELECT_MEMORY_MODEL=y
  1402. +CONFIG_FLATMEM_MANUAL=y
  1403. +# CONFIG_DISCONTIGMEM_MANUAL is not set
  1404. +# CONFIG_SPARSEMEM_MANUAL is not set
  1405. +CONFIG_FLATMEM=y
  1406. +CONFIG_FLAT_NODE_MEM_MAP=y
  1407. +CONFIG_SPARSEMEM_STATIC=y
  1408. +CONFIG_SPLIT_PTLOCK_CPUS=4
  1409. +# CONFIG_RESOURCES_64BIT is not set
  1410. +CONFIG_ZONE_DMA_FLAG=1
  1411. +CONFIG_NR_QUICK=1
  1412. +# CONFIG_MATH_EMULATION is not set
  1413. +CONFIG_MTRR=y
  1414. +# CONFIG_SECCOMP is not set
  1415. +# CONFIG_HZ_100 is not set
  1416. +CONFIG_HZ_250=y
  1417. +# CONFIG_HZ_300 is not set
  1418. +# CONFIG_HZ_1000 is not set
  1419. +CONFIG_HZ=250
  1420. +# CONFIG_KEXEC is not set
  1421. +CONFIG_PHYSICAL_START=0x100000
  1422. +# CONFIG_RELOCATABLE is not set
  1423. +CONFIG_PHYSICAL_ALIGN=0x100000
  1424. +# CONFIG_COMPAT_VDSO is not set
  1425. +
  1426. +#
  1427. +# Power management options (ACPI, APM)
  1428. +#
  1429. +CONFIG_PM=y
  1430. +# CONFIG_PM_LEGACY is not set
  1431. +# CONFIG_PM_DEBUG is not set
  1432. +# CONFIG_PM_SYSFS_DEPRECATED is not set
  1433. +# CONFIG_SOFTWARE_SUSPEND is not set
  1434. +
  1435. +#
  1436. +# ACPI (Advanced Configuration and Power Interface) Support
  1437. +#
  1438. +# CONFIG_ACPI is not set
  1439. +# CONFIG_APM is not set
  1440. +
  1441. +#
  1442. +# CPU Frequency scaling
  1443. +#
  1444. +# CONFIG_CPU_FREQ is not set
  1445. +
  1446. +#
  1447. +# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
  1448. +#
  1449. +CONFIG_PCI=y
  1450. +# CONFIG_PCI_GOBIOS is not set
  1451. +# CONFIG_PCI_GOMMCONFIG is not set
  1452. +# CONFIG_PCI_GODIRECT is not set
  1453. +CONFIG_PCI_GOANY=y
  1454. +CONFIG_PCI_BIOS=y
  1455. +CONFIG_PCI_DIRECT=y
  1456. +# CONFIG_PCIEPORTBUS is not set
  1457. +# CONFIG_ARCH_SUPPORTS_MSI is not set
  1458. +CONFIG_ISA_DMA_API=y
  1459. +CONFIG_ISA=y
  1460. +# CONFIG_EISA is not set
  1461. +# CONFIG_MCA is not set
  1462. +# CONFIG_SCx200 is not set
  1463. +
  1464. +#
  1465. +# PCCARD (PCMCIA/CardBus) support
  1466. +#
  1467. +# CONFIG_PCCARD is not set
  1468. +# CONFIG_HOTPLUG_PCI is not set
  1469. +
  1470. +#
  1471. +# Executable file formats
  1472. +#
  1473. +CONFIG_BINFMT_ELF=y
  1474. +CONFIG_BINFMT_AOUT=y
  1475. +CONFIG_BINFMT_MISC=y
  1476. +
  1477. +#
  1478. +# Networking
  1479. +#
  1480. +CONFIG_NET=y
  1481. +
  1482. +#
  1483. +# Networking options
  1484. +#
  1485. +CONFIG_PACKET=y
  1486. +# CONFIG_PACKET_MMAP is not set
  1487. +CONFIG_UNIX=y
  1488. +# CONFIG_NET_KEY is not set
  1489. +CONFIG_INET=y
  1490. +# CONFIG_IP_MULTICAST is not set
  1491. +# CONFIG_IP_ADVANCED_ROUTER is not set
  1492. +CONFIG_IP_FIB_HASH=y
  1493. +# CONFIG_IP_PNP is not set
  1494. +# CONFIG_NET_IPIP is not set
  1495. +# CONFIG_NET_IPGRE is not set
  1496. +# CONFIG_ARPD is not set
  1497. +# CONFIG_SYN_COOKIES is not set
  1498. +# CONFIG_INET_AH is not set
  1499. +# CONFIG_INET_ESP is not set
  1500. +# CONFIG_INET_IPCOMP is not set
  1501. +# CONFIG_INET_XFRM_TUNNEL is not set
  1502. +# CONFIG_INET_TUNNEL is not set
  1503. +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
  1504. +# CONFIG_INET_XFRM_MODE_TUNNEL is not set
  1505. +# CONFIG_INET_XFRM_MODE_BEET is not set
  1506. +# CONFIG_INET_DIAG is not set
  1507. +# CONFIG_TCP_CONG_ADVANCED is not set
  1508. +CONFIG_TCP_CONG_CUBIC=y
  1509. +CONFIG_DEFAULT_TCP_CONG="cubic"
  1510. +# CONFIG_TCP_MD5SIG is not set
  1511. +# CONFIG_IPV6 is not set
  1512. +# CONFIG_INET6_XFRM_TUNNEL is not set
  1513. +# CONFIG_INET6_TUNNEL is not set
  1514. +# CONFIG_NETWORK_SECMARK is not set
  1515. +# CONFIG_NETFILTER is not set
  1516. +# CONFIG_IP_DCCP is not set
  1517. +# CONFIG_IP_SCTP is not set
  1518. +# CONFIG_TIPC is not set
  1519. +# CONFIG_ATM is not set
  1520. +# CONFIG_BRIDGE is not set
  1521. +# CONFIG_VLAN_8021Q is not set
  1522. +# CONFIG_DECNET is not set
  1523. +# CONFIG_LLC2 is not set
  1524. +# CONFIG_IPX is not set
  1525. +# CONFIG_ATALK is not set
  1526. +# CONFIG_X25 is not set
  1527. +# CONFIG_LAPB is not set
  1528. +# CONFIG_ECONET is not set
  1529. +# CONFIG_WAN_ROUTER is not set
  1530. +
  1531. +#
  1532. +# QoS and/or fair queueing
  1533. +#
  1534. +# CONFIG_NET_SCHED is not set
  1535. +
  1536. +#
  1537. +# Network testing
  1538. +#
  1539. +# CONFIG_NET_PKTGEN is not set
  1540. +# CONFIG_HAMRADIO is not set
  1541. +# CONFIG_IRDA is not set
  1542. +# CONFIG_BT is not set
  1543. +# CONFIG_AF_RXRPC is not set
  1544. +
  1545. +#
  1546. +# Wireless
  1547. +#
  1548. +# CONFIG_CFG80211 is not set
  1549. +# CONFIG_WIRELESS_EXT is not set
  1550. +# CONFIG_MAC80211 is not set
  1551. +# CONFIG_IEEE80211 is not set
  1552. +# CONFIG_RFKILL is not set
  1553. +
  1554. +#
  1555. +# Device Drivers
  1556. +#
  1557. +
  1558. +#
  1559. +# Generic Driver Options
  1560. +#
  1561. +CONFIG_STANDALONE=y
  1562. +CONFIG_PREVENT_FIRMWARE_BUILD=y
  1563. +CONFIG_FW_LOADER=y
  1564. +# CONFIG_SYS_HYPERVISOR is not set
  1565. +
  1566. +#
  1567. +# Connector - unified userspace <-> kernelspace linker
  1568. +#
  1569. +# CONFIG_CONNECTOR is not set
  1570. +# CONFIG_MTD is not set
  1571. +
  1572. +#
  1573. +# Parallel port support
  1574. +#
  1575. +# CONFIG_PARPORT is not set
  1576. +
  1577. +#
  1578. +# Plug and Play support
  1579. +#
  1580. +CONFIG_PNP=y
  1581. +# CONFIG_PNP_DEBUG is not set
  1582. +
  1583. +#
  1584. +# Protocols
  1585. +#
  1586. +CONFIG_ISAPNP=y
  1587. +# CONFIG_PNPBIOS is not set
  1588. +# CONFIG_PNPACPI is not set
  1589. +
  1590. +#
  1591. +# Block devices
  1592. +#
  1593. +# CONFIG_BLK_DEV_FD is not set
  1594. +# CONFIG_BLK_DEV_XD is not set
  1595. +# CONFIG_BLK_CPQ_DA is not set
  1596. +# CONFIG_BLK_CPQ_CISS_DA is not set
  1597. +# CONFIG_BLK_DEV_DAC960 is not set
  1598. +# CONFIG_BLK_DEV_UMEM is not set
  1599. +# CONFIG_BLK_DEV_COW_COMMON is not set
  1600. +# CONFIG_BLK_DEV_LOOP is not set
  1601. +# CONFIG_BLK_DEV_NBD is not set
  1602. +# CONFIG_BLK_DEV_SX8 is not set
  1603. +# CONFIG_BLK_DEV_RAM is not set
  1604. +# CONFIG_CDROM_PKTCDVD is not set
  1605. +# CONFIG_ATA_OVER_ETH is not set
  1606. +
  1607. +#
  1608. +# Misc devices
  1609. +#
  1610. +# CONFIG_IBM_ASM is not set
  1611. +# CONFIG_PHANTOM is not set
  1612. +# CONFIG_SGI_IOC4 is not set
  1613. +# CONFIG_TIFM_CORE is not set
  1614. +CONFIG_IDE=y
  1615. +CONFIG_IDE_MAX_HWIFS=4
  1616. +CONFIG_BLK_DEV_IDE=y
  1617. +
  1618. +#
  1619. +# Please see Documentation/ide.txt for help/info on IDE drives
  1620. +#
  1621. +# CONFIG_BLK_DEV_IDE_SATA is not set
  1622. +# CONFIG_BLK_DEV_HD_IDE is not set
  1623. +CONFIG_BLK_DEV_IDEDISK=y
  1624. +CONFIG_IDEDISK_MULTI_MODE=y
  1625. +CONFIG_BLK_DEV_IDECD=y
  1626. +# CONFIG_BLK_DEV_IDETAPE is not set
  1627. +# CONFIG_BLK_DEV_IDEFLOPPY is not set
  1628. +# CONFIG_IDE_TASK_IOCTL is not set
  1629. +CONFIG_IDE_PROC_FS=y
  1630. +
  1631. +#
  1632. +# IDE chipset support/bugfixes
  1633. +#
  1634. +# CONFIG_IDE_GENERIC is not set
  1635. +# CONFIG_BLK_DEV_CMD640 is not set
  1636. +# CONFIG_BLK_DEV_IDEPNP is not set
  1637. +CONFIG_BLK_DEV_IDEPCI=y
  1638. +CONFIG_IDEPCI_SHARE_IRQ=y
  1639. +CONFIG_IDEPCI_PCIBUS_ORDER=y
  1640. +# CONFIG_BLK_DEV_OFFBOARD is not set
  1641. +# CONFIG_BLK_DEV_GENERIC is not set
  1642. +# CONFIG_BLK_DEV_OPTI621 is not set
  1643. +# CONFIG_BLK_DEV_RZ1000 is not set
  1644. +CONFIG_BLK_DEV_IDEDMA_PCI=y
  1645. +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
  1646. +# CONFIG_IDEDMA_ONLYDISK is not set
  1647. +# CONFIG_BLK_DEV_AEC62XX is not set
  1648. +CONFIG_BLK_DEV_ALI15X3=y
  1649. +# CONFIG_WDC_ALI15X3 is not set
  1650. +# CONFIG_BLK_DEV_AMD74XX is not set
  1651. +# CONFIG_BLK_DEV_ATIIXP is not set
  1652. +# CONFIG_BLK_DEV_CMD64X is not set
  1653. +# CONFIG_BLK_DEV_TRIFLEX is not set
  1654. +# CONFIG_BLK_DEV_CY82C693 is not set
  1655. +# CONFIG_BLK_DEV_CS5520 is not set
  1656. +# CONFIG_BLK_DEV_CS5530 is not set
  1657. +# CONFIG_BLK_DEV_CS5535 is not set
  1658. +# CONFIG_BLK_DEV_HPT34X is not set
  1659. +# CONFIG_BLK_DEV_HPT366 is not set
  1660. +# CONFIG_BLK_DEV_JMICRON is not set
  1661. +# CONFIG_BLK_DEV_SC1200 is not set
  1662. +# CONFIG_BLK_DEV_PIIX is not set
  1663. +# CONFIG_BLK_DEV_IT8213 is not set
  1664. +# CONFIG_BLK_DEV_IT821X is not set
  1665. +# CONFIG_BLK_DEV_NS87415 is not set
  1666. +# CONFIG_BLK_DEV_PDC202XX_OLD is not set
  1667. +# CONFIG_BLK_DEV_PDC202XX_NEW is not set
  1668. +# CONFIG_BLK_DEV_SVWKS is not set
  1669. +# CONFIG_BLK_DEV_SIIMAGE is not set
  1670. +# CONFIG_BLK_DEV_SIS5513 is not set
  1671. +# CONFIG_BLK_DEV_SLC90E66 is not set
  1672. +# CONFIG_BLK_DEV_TRM290 is not set
  1673. +# CONFIG_BLK_DEV_VIA82CXXX is not set
  1674. +# CONFIG_BLK_DEV_TC86C001 is not set
  1675. +# CONFIG_IDE_ARM is not set
  1676. +# CONFIG_IDE_CHIPSETS is not set
  1677. +CONFIG_BLK_DEV_IDEDMA=y
  1678. +# CONFIG_IDEDMA_IVB is not set
  1679. +# CONFIG_BLK_DEV_HD is not set
  1680. +
  1681. +#
  1682. +# SCSI device support
  1683. +#
  1684. +# CONFIG_RAID_ATTRS is not set
  1685. +# CONFIG_SCSI is not set
  1686. +# CONFIG_SCSI_NETLINK is not set
  1687. +# CONFIG_ATA is not set
  1688. +
  1689. +#
  1690. +# Old CD-ROM drivers (not SCSI, not IDE)
  1691. +#
  1692. +# CONFIG_CD_NO_IDESCSI is not set
  1693. +
  1694. +#
  1695. +# Multi-device support (RAID and LVM)
  1696. +#
  1697. +# CONFIG_MD is not set
  1698. +
  1699. +#
  1700. +# Fusion MPT device support
  1701. +#
  1702. +# CONFIG_FUSION is not set
  1703. +
  1704. +#
  1705. +# IEEE 1394 (FireWire) support
  1706. +#
  1707. +# CONFIG_FIREWIRE is not set
  1708. +# CONFIG_IEEE1394 is not set
  1709. +
  1710. +#
  1711. +# I2O device support
  1712. +#
  1713. +# CONFIG_I2O is not set
  1714. +# CONFIG_MACINTOSH_DRIVERS is not set
  1715. +
  1716. +#
  1717. +# Network device support
  1718. +#
  1719. +CONFIG_NETDEVICES=y
  1720. +CONFIG_DUMMY=y
  1721. +# CONFIG_BONDING is not set
  1722. +# CONFIG_EQUALIZER is not set
  1723. +# CONFIG_TUN is not set
  1724. +# CONFIG_NET_SB1000 is not set
  1725. +# CONFIG_ARCNET is not set
  1726. +# CONFIG_PHYLIB is not set
  1727. +
  1728. +#
  1729. +# Ethernet (10 or 100Mbit)
  1730. +#
  1731. +CONFIG_NET_ETHERNET=y
  1732. +CONFIG_MII=y
  1733. +# CONFIG_HAPPYMEAL is not set
  1734. +# CONFIG_SUNGEM is not set
  1735. +# CONFIG_CASSINI is not set
  1736. +# CONFIG_NET_VENDOR_3COM is not set
  1737. +# CONFIG_LANCE is not set
  1738. +# CONFIG_NET_VENDOR_SMC is not set
  1739. +# CONFIG_NET_VENDOR_RACAL is not set
  1740. +
  1741. +#
  1742. +# Tulip family network device support
  1743. +#
  1744. +# CONFIG_NET_TULIP is not set
  1745. +# CONFIG_AT1700 is not set
  1746. +# CONFIG_DEPCA is not set
  1747. +# CONFIG_HP100 is not set
  1748. +# CONFIG_NET_ISA is not set
  1749. +CONFIG_NET_PCI=y
  1750. +# CONFIG_PCNET32 is not set
  1751. +# CONFIG_AMD8111_ETH is not set
  1752. +# CONFIG_ADAPTEC_STARFIRE is not set
  1753. +# CONFIG_AC3200 is not set
  1754. +# CONFIG_APRICOT is not set
  1755. +# CONFIG_B44 is not set
  1756. +# CONFIG_FORCEDETH is not set
  1757. +# CONFIG_CS89x0 is not set
  1758. +# CONFIG_DGRS is not set
  1759. +# CONFIG_EEPRO100 is not set
  1760. +CONFIG_E100=y
  1761. +CONFIG_E100_IGNORE_CSUM=y
  1762. +# CONFIG_FEALNX is not set
  1763. +CONFIG_NATSEMI=y
  1764. +# CONFIG_NE2K_PCI is not set
  1765. +# CONFIG_8139CP is not set
  1766. +# CONFIG_8139TOO is not set
  1767. +# CONFIG_SIS900 is not set
  1768. +# CONFIG_EPIC100 is not set
  1769. +# CONFIG_SUNDANCE is not set
  1770. +# CONFIG_TLAN is not set
  1771. +# CONFIG_VIA_RHINE is not set
  1772. +# CONFIG_SC92031 is not set
  1773. +# CONFIG_NETDEV_1000 is not set
  1774. +# CONFIG_NETDEV_10000 is not set
  1775. +# CONFIG_TR is not set
  1776. +
  1777. +#
  1778. +# Wireless LAN
  1779. +#
  1780. +# CONFIG_WLAN_PRE80211 is not set
  1781. +# CONFIG_WLAN_80211 is not set
  1782. +# CONFIG_WAN is not set
  1783. +# CONFIG_FDDI is not set
  1784. +# CONFIG_HIPPI is not set
  1785. +# CONFIG_PPP is not set
  1786. +# CONFIG_SLIP is not set
  1787. +# CONFIG_SHAPER is not set
  1788. +# CONFIG_NETCONSOLE is not set
  1789. +# CONFIG_NETPOLL is not set
  1790. +# CONFIG_NET_POLL_CONTROLLER is not set
  1791. +
  1792. +#
  1793. +# ISDN subsystem
  1794. +#
  1795. +# CONFIG_ISDN is not set
  1796. +
  1797. +#
  1798. +# Telephony Support
  1799. +#
  1800. +# CONFIG_PHONE is not set
  1801. +
  1802. +#
  1803. +# Input device support
  1804. +#
  1805. +CONFIG_INPUT=y
  1806. +# CONFIG_INPUT_FF_MEMLESS is not set
  1807. +# CONFIG_INPUT_POLLDEV is not set
  1808. +
  1809. +#
  1810. +# Userland interfaces
  1811. +#
  1812. +# CONFIG_INPUT_MOUSEDEV is not set
  1813. +# CONFIG_INPUT_JOYDEV is not set
  1814. +# CONFIG_INPUT_TSDEV is not set
  1815. +# CONFIG_INPUT_EVDEV is not set
  1816. +# CONFIG_INPUT_EVBUG is not set
  1817. +
  1818. +#
  1819. +# Input Device Drivers
  1820. +#
  1821. +# CONFIG_INPUT_KEYBOARD is not set
  1822. +# CONFIG_INPUT_MOUSE is not set
  1823. +# CONFIG_INPUT_JOYSTICK is not set
  1824. +# CONFIG_INPUT_TABLET is not set
  1825. +# CONFIG_INPUT_TOUCHSCREEN is not set
  1826. +# CONFIG_INPUT_MISC is not set
  1827. +
  1828. +#
  1829. +# Hardware I/O ports
  1830. +#
  1831. +# CONFIG_SERIO is not set
  1832. +# CONFIG_GAMEPORT is not set
  1833. +
  1834. +#
  1835. +# Character devices
  1836. +#
  1837. +# CONFIG_VT is not set
  1838. +# CONFIG_SERIAL_NONSTANDARD is not set
  1839. +
  1840. +#
  1841. +# Serial drivers
  1842. +#
  1843. +CONFIG_SERIAL_8250=y
  1844. +CONFIG_SERIAL_8250_CONSOLE=y
  1845. +CONFIG_SERIAL_8250_PCI=y
  1846. +CONFIG_SERIAL_8250_PNP=y
  1847. +CONFIG_SERIAL_8250_NR_UARTS=2
  1848. +CONFIG_SERIAL_8250_RUNTIME_UARTS=2
  1849. +# CONFIG_SERIAL_8250_EXTENDED is not set
  1850. +
  1851. +#
  1852. +# Non-8250 serial port support
  1853. +#
  1854. +CONFIG_SERIAL_CORE=y
  1855. +CONFIG_SERIAL_CORE_CONSOLE=y
  1856. +# CONFIG_SERIAL_JSM is not set
  1857. +CONFIG_UNIX98_PTYS=y
  1858. +# CONFIG_LEGACY_PTYS is not set
  1859. +
  1860. +#
  1861. +# IPMI
  1862. +#
  1863. +# CONFIG_IPMI_HANDLER is not set
  1864. +CONFIG_WATCHDOG=y
  1865. +# CONFIG_WATCHDOG_NOWAYOUT is not set
  1866. +
  1867. +#
  1868. +# Watchdog Device Drivers
  1869. +#
  1870. +# CONFIG_SOFT_WATCHDOG is not set
  1871. +# CONFIG_ACQUIRE_WDT is not set
  1872. +# CONFIG_ADVANTECH_WDT is not set
  1873. +# CONFIG_ALIM1535_WDT is not set
  1874. +CONFIG_ALIM7101_WDT=y
  1875. +# CONFIG_SC520_WDT is not set
  1876. +# CONFIG_EUROTECH_WDT is not set
  1877. +# CONFIG_IB700_WDT is not set
  1878. +# CONFIG_IBMASR is not set
  1879. +# CONFIG_WAFER_WDT is not set
  1880. +# CONFIG_I6300ESB_WDT is not set
  1881. +# CONFIG_ITCO_WDT is not set
  1882. +# CONFIG_SC1200_WDT is not set
  1883. +# CONFIG_PC87413_WDT is not set
  1884. +# CONFIG_60XX_WDT is not set
  1885. +# CONFIG_SBC8360_WDT is not set
  1886. +# CONFIG_CPU5_WDT is not set
  1887. +# CONFIG_SMSC37B787_WDT is not set
  1888. +# CONFIG_W83627HF_WDT is not set
  1889. +# CONFIG_W83697HF_WDT is not set
  1890. +# CONFIG_W83877F_WDT is not set
  1891. +# CONFIG_W83977F_WDT is not set
  1892. +# CONFIG_MACHZ_WDT is not set
  1893. +# CONFIG_SBC_EPX_C3_WATCHDOG is not set
  1894. +
  1895. +#
  1896. +# ISA-based Watchdog Cards
  1897. +#
  1898. +# CONFIG_PCWATCHDOG is not set
  1899. +# CONFIG_MIXCOMWD is not set
  1900. +# CONFIG_WDT is not set
  1901. +
  1902. +#
  1903. +# PCI-based Watchdog Cards
  1904. +#
  1905. +# CONFIG_PCIPCWATCHDOG is not set
  1906. +# CONFIG_WDTPCI is not set
  1907. +CONFIG_HW_RANDOM=y
  1908. +# CONFIG_HW_RANDOM_INTEL is not set
  1909. +# CONFIG_HW_RANDOM_AMD is not set
  1910. +# CONFIG_HW_RANDOM_GEODE is not set
  1911. +CONFIG_HW_RANDOM_VIA=y
  1912. +CONFIG_NVRAM=y
  1913. +CONFIG_RTC=y
  1914. +# CONFIG_DTLK is not set
  1915. +# CONFIG_R3964 is not set
  1916. +# CONFIG_APPLICOM is not set
  1917. +# CONFIG_SONYPI is not set
  1918. +# CONFIG_AGP is not set
  1919. +# CONFIG_DRM is not set
  1920. +# CONFIG_MWAVE is not set
  1921. +# CONFIG_PC8736x_GPIO is not set
  1922. +# CONFIG_NSC_GPIO is not set
  1923. +# CONFIG_CS5535_GPIO is not set
  1924. +# CONFIG_RAW_DRIVER is not set
  1925. +# CONFIG_HANGCHECK_TIMER is not set
  1926. +
  1927. +#
  1928. +# TPM devices
  1929. +#
  1930. +# CONFIG_TCG_TPM is not set
  1931. +# CONFIG_TELCLOCK is not set
  1932. +CONFIG_DEVPORT=y
  1933. +CONFIG_I2C=y
  1934. +CONFIG_I2C_BOARDINFO=y
  1935. +# CONFIG_I2C_CHARDEV is not set
  1936. +
  1937. +#
  1938. +# I2C Algorithms
  1939. +#
  1940. +# CONFIG_I2C_ALGOBIT is not set
  1941. +# CONFIG_I2C_ALGOPCF is not set
  1942. +# CONFIG_I2C_ALGOPCA is not set
  1943. +
  1944. +#
  1945. +# I2C Hardware Bus support
  1946. +#
  1947. +# CONFIG_I2C_ALI1535 is not set
  1948. +# CONFIG_I2C_ALI1563 is not set
  1949. +# CONFIG_I2C_ALI15X3 is not set
  1950. +# CONFIG_I2C_AMD756 is not set
  1951. +# CONFIG_I2C_AMD8111 is not set
  1952. +# CONFIG_I2C_ELEKTOR is not set
  1953. +# CONFIG_I2C_I801 is not set
  1954. +# CONFIG_I2C_I810 is not set
  1955. +# CONFIG_I2C_PIIX4 is not set
  1956. +# CONFIG_I2C_NFORCE2 is not set
  1957. +# CONFIG_I2C_OCORES is not set
  1958. +# CONFIG_I2C_PARPORT_LIGHT is not set
  1959. +# CONFIG_I2C_PROSAVAGE is not set
  1960. +# CONFIG_I2C_SAVAGE4 is not set
  1961. +# CONFIG_I2C_SIMTEC is not set
  1962. +# CONFIG_SCx200_ACB is not set
  1963. +# CONFIG_I2C_SIS5595 is not set
  1964. +# CONFIG_I2C_SIS630 is not set
  1965. +# CONFIG_I2C_SIS96X is not set
  1966. +# CONFIG_I2C_STUB is not set
  1967. +# CONFIG_I2C_VIA is not set
  1968. +# CONFIG_I2C_VIAPRO is not set
  1969. +# CONFIG_I2C_VOODOO3 is not set
  1970. +# CONFIG_I2C_PCA_ISA is not set
  1971. +
  1972. +#
  1973. +# Miscellaneous I2C Chip support
  1974. +#
  1975. +# CONFIG_SENSORS_DS1337 is not set
  1976. +# CONFIG_SENSORS_DS1374 is not set
  1977. +# CONFIG_SENSORS_EEPROM is not set
  1978. +# CONFIG_SENSORS_PCF8574 is not set
  1979. +# CONFIG_SENSORS_PCA9539 is not set
  1980. +# CONFIG_SENSORS_PCF8591 is not set
  1981. +# CONFIG_SENSORS_MAX6875 is not set
  1982. +# CONFIG_I2C_DEBUG_CORE is not set
  1983. +# CONFIG_I2C_DEBUG_ALGO is not set
  1984. +# CONFIG_I2C_DEBUG_BUS is not set
  1985. +# CONFIG_I2C_DEBUG_CHIP is not set
  1986. +
  1987. +#
  1988. +# SPI support
  1989. +#
  1990. +# CONFIG_SPI is not set
  1991. +# CONFIG_SPI_MASTER is not set
  1992. +
  1993. +#
  1994. +# Dallas's 1-wire bus
  1995. +#
  1996. +# CONFIG_W1 is not set
  1997. +CONFIG_HWMON=y
  1998. +# CONFIG_HWMON_VID is not set
  1999. +# CONFIG_SENSORS_ABITUGURU is not set
  2000. +# CONFIG_SENSORS_AD7418 is not set
  2001. +# CONFIG_SENSORS_ADM1021 is not set
  2002. +# CONFIG_SENSORS_ADM1025 is not set
  2003. +# CONFIG_SENSORS_ADM1026 is not set
  2004. +# CONFIG_SENSORS_ADM1029 is not set
  2005. +# CONFIG_SENSORS_ADM1031 is not set
  2006. +# CONFIG_SENSORS_ADM9240 is not set
  2007. +# CONFIG_SENSORS_K8TEMP is not set
  2008. +# CONFIG_SENSORS_ASB100 is not set
  2009. +# CONFIG_SENSORS_ATXP1 is not set
  2010. +# CONFIG_SENSORS_DS1621 is not set
  2011. +# CONFIG_SENSORS_F71805F is not set
  2012. +# CONFIG_SENSORS_FSCHER is not set
  2013. +# CONFIG_SENSORS_FSCPOS is not set
  2014. +# CONFIG_SENSORS_GL518SM is not set
  2015. +# CONFIG_SENSORS_GL520SM is not set
  2016. +# CONFIG_SENSORS_CORETEMP is not set
  2017. +# CONFIG_SENSORS_IT87 is not set
  2018. +# CONFIG_SENSORS_LM63 is not set
  2019. +# CONFIG_SENSORS_LM75 is not set
  2020. +# CONFIG_SENSORS_LM77 is not set
  2021. +# CONFIG_SENSORS_LM78 is not set
  2022. +# CONFIG_SENSORS_LM80 is not set
  2023. +# CONFIG_SENSORS_LM83 is not set
  2024. +# CONFIG_SENSORS_LM85 is not set
  2025. +# CONFIG_SENSORS_LM87 is not set
  2026. +# CONFIG_SENSORS_LM90 is not set
  2027. +# CONFIG_SENSORS_LM92 is not set
  2028. +# CONFIG_SENSORS_MAX1619 is not set
  2029. +# CONFIG_SENSORS_MAX6650 is not set
  2030. +# CONFIG_SENSORS_PC87360 is not set
  2031. +# CONFIG_SENSORS_PC87427 is not set
  2032. +# CONFIG_SENSORS_SIS5595 is not set
  2033. +# CONFIG_SENSORS_SMSC47M1 is not set
  2034. +# CONFIG_SENSORS_SMSC47M192 is not set
  2035. +# CONFIG_SENSORS_SMSC47B397 is not set
  2036. +# CONFIG_SENSORS_VIA686A is not set
  2037. +# CONFIG_SENSORS_VT1211 is not set
  2038. +# CONFIG_SENSORS_VT8231 is not set
  2039. +# CONFIG_SENSORS_W83781D is not set
  2040. +# CONFIG_SENSORS_W83791D is not set
  2041. +# CONFIG_SENSORS_W83792D is not set
  2042. +# CONFIG_SENSORS_W83793 is not set
  2043. +# CONFIG_SENSORS_W83L785TS is not set
  2044. +# CONFIG_SENSORS_W83627HF is not set
  2045. +# CONFIG_SENSORS_W83627EHF is not set
  2046. +# CONFIG_SENSORS_HDAPS is not set
  2047. +# CONFIG_SENSORS_APPLESMC is not set
  2048. +# CONFIG_HWMON_DEBUG_CHIP is not set
  2049. +
  2050. +#
  2051. +# Multifunction device drivers
  2052. +#
  2053. +# CONFIG_MFD_SM501 is not set
  2054. +
  2055. +#
  2056. +# Multimedia devices
  2057. +#
  2058. +# CONFIG_VIDEO_DEV is not set
  2059. +# CONFIG_DVB_CORE is not set
  2060. +# CONFIG_DAB is not set
  2061. +
  2062. +#
  2063. +# Graphics support
  2064. +#
  2065. +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
  2066. +
  2067. +#
  2068. +# Display device support
  2069. +#
  2070. +# CONFIG_DISPLAY_SUPPORT is not set
  2071. +# CONFIG_VGASTATE is not set
  2072. +# CONFIG_FB is not set
  2073. +
  2074. +#
  2075. +# Sound
  2076. +#
  2077. +# CONFIG_SOUND is not set
  2078. +
  2079. +#
  2080. +# HID Devices
  2081. +#
  2082. +# CONFIG_HID is not set
  2083. +
  2084. +#
  2085. +# USB support
  2086. +#
  2087. +CONFIG_USB_ARCH_HAS_HCD=y
  2088. +CONFIG_USB_ARCH_HAS_OHCI=y
  2089. +CONFIG_USB_ARCH_HAS_EHCI=y
  2090. +# CONFIG_USB is not set
  2091. +
  2092. +#
  2093. +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
  2094. +#
  2095. +
  2096. +#
  2097. +# USB Gadget Support
  2098. +#
  2099. +# CONFIG_USB_GADGET is not set
  2100. +# CONFIG_MMC is not set
  2101. +
  2102. +#
  2103. +# LED devices
  2104. +#
  2105. +# CONFIG_NEW_LEDS is not set
  2106. +
  2107. +#
  2108. +# LED drivers
  2109. +#
  2110. +
  2111. +#
  2112. +# LED Triggers
  2113. +#
  2114. +
  2115. +#
  2116. +# InfiniBand support
  2117. +#
  2118. +# CONFIG_INFINIBAND is not set
  2119. +
  2120. +#
  2121. +# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
  2122. +#
  2123. +# CONFIG_EDAC is not set
  2124. +
  2125. +#
  2126. +# Real Time Clock
  2127. +#
  2128. +# CONFIG_RTC_CLASS is not set
  2129. +
  2130. +#
  2131. +# DMA Engine support
  2132. +#
  2133. +# CONFIG_DMA_ENGINE is not set
  2134. +
  2135. +#
  2136. +# DMA Clients
  2137. +#
  2138. +
  2139. +#
  2140. +# DMA Devices
  2141. +#
  2142. +
  2143. +#
  2144. +# Virtualization
  2145. +#
  2146. +# CONFIG_KVM is not set
  2147. +
  2148. +#
  2149. +# Cobalt RaQ/Qube Hardware
  2150. +#
  2151. +CONFIG_COBALT_RAQ=y
  2152. +CONFIG_COBALT_GEN_III=y
  2153. +# CONFIG_COBALT_GEN_V is not set
  2154. +CONFIG_COBALT_OLDPROC=y
  2155. +
  2156. +#
  2157. +# Cobalt Hardware Options
  2158. +#
  2159. +CONFIG_COBALT_LCD=y
  2160. +CONFIG_COBALT_LCD_TWIDDLE=y
  2161. +CONFIG_COBALT_LED=y
  2162. +CONFIG_COBALT_SERNUM=y
  2163. +CONFIG_COBALT_WDT=y
  2164. +CONFIG_COBALT_SENSORS=y
  2165. +CONFIG_COBALT_RAMINFO=y
  2166. +
  2167. +#
  2168. +# File systems
  2169. +#
  2170. +CONFIG_EXT2_FS=y
  2171. +# CONFIG_EXT2_FS_XATTR is not set
  2172. +# CONFIG_EXT2_FS_XIP is not set
  2173. +CONFIG_EXT3_FS=y
  2174. +CONFIG_EXT3_FS_XATTR=y
  2175. +# CONFIG_EXT3_FS_POSIX_ACL is not set
  2176. +# CONFIG_EXT3_FS_SECURITY is not set
  2177. +# CONFIG_EXT4DEV_FS is not set
  2178. +CONFIG_JBD=y
  2179. +# CONFIG_JBD_DEBUG is not set
  2180. +CONFIG_FS_MBCACHE=y
  2181. +# CONFIG_REISERFS_FS is not set
  2182. +# CONFIG_JFS_FS is not set
  2183. +# CONFIG_FS_POSIX_ACL is not set
  2184. +# CONFIG_XFS_FS is not set
  2185. +# CONFIG_GFS2_FS is not set
  2186. +# CONFIG_OCFS2_FS is not set
  2187. +# CONFIG_MINIX_FS is not set
  2188. +# CONFIG_ROMFS_FS is not set
  2189. +CONFIG_INOTIFY=y
  2190. +CONFIG_INOTIFY_USER=y
  2191. +# CONFIG_QUOTA is not set
  2192. +# CONFIG_DNOTIFY is not set
  2193. +# CONFIG_AUTOFS_FS is not set
  2194. +CONFIG_AUTOFS4_FS=y
  2195. +# CONFIG_FUSE_FS is not set
  2196. +
  2197. +#
  2198. +# CD-ROM/DVD Filesystems
  2199. +#
  2200. +# CONFIG_ISO9660_FS is not set
  2201. +# CONFIG_UDF_FS is not set
  2202. +
  2203. +#
  2204. +# DOS/FAT/NT Filesystems
  2205. +#
  2206. +# CONFIG_MSDOS_FS is not set
  2207. +# CONFIG_VFAT_FS is not set
  2208. +# CONFIG_NTFS_FS is not set
  2209. +
  2210. +#
  2211. +# Pseudo filesystems
  2212. +#
  2213. +CONFIG_PROC_FS=y
  2214. +# CONFIG_PROC_KCORE is not set
  2215. +CONFIG_PROC_SYSCTL=y
  2216. +CONFIG_SYSFS=y
  2217. +CONFIG_TMPFS=y
  2218. +# CONFIG_TMPFS_POSIX_ACL is not set
  2219. +# CONFIG_HUGETLBFS is not set
  2220. +# CONFIG_HUGETLB_PAGE is not set
  2221. +CONFIG_RAMFS=y
  2222. +# CONFIG_CONFIGFS_FS is not set
  2223. +
  2224. +#
  2225. +# Miscellaneous filesystems
  2226. +#
  2227. +# CONFIG_ADFS_FS is not set
  2228. +# CONFIG_AFFS_FS is not set
  2229. +# CONFIG_HFS_FS is not set
  2230. +# CONFIG_HFSPLUS_FS is not set
  2231. +# CONFIG_BEFS_FS is not set
  2232. +# CONFIG_BFS_FS is not set
  2233. +# CONFIG_EFS_FS is not set
  2234. +# CONFIG_CRAMFS is not set
  2235. +# CONFIG_SQUASHFS is not set
  2236. +# CONFIG_VXFS_FS is not set
  2237. +# CONFIG_HPFS_FS is not set
  2238. +# CONFIG_QNX4FS_FS is not set
  2239. +# CONFIG_SYSV_FS is not set
  2240. +# CONFIG_UFS_FS is not set
  2241. +
  2242. +#
  2243. +# Network File Systems
  2244. +#
  2245. +CONFIG_NFS_FS=m
  2246. +# CONFIG_NFS_V3 is not set
  2247. +# CONFIG_NFS_V4 is not set
  2248. +# CONFIG_NFS_DIRECTIO is not set
  2249. +# CONFIG_NFSD is not set
  2250. +CONFIG_LOCKD=m
  2251. +CONFIG_NFS_COMMON=y
  2252. +CONFIG_SUNRPC=m
  2253. +# CONFIG_SUNRPC_BIND34 is not set
  2254. +# CONFIG_RPCSEC_GSS_KRB5 is not set
  2255. +# CONFIG_RPCSEC_GSS_SPKM3 is not set
  2256. +# CONFIG_SMB_FS is not set
  2257. +# CONFIG_CIFS is not set
  2258. +# CONFIG_NCP_FS is not set
  2259. +# CONFIG_CODA_FS is not set
  2260. +# CONFIG_AFS_FS is not set
  2261. +# CONFIG_9P_FS is not set
  2262. +
  2263. +#
  2264. +# Partition Types
  2265. +#
  2266. +# CONFIG_PARTITION_ADVANCED is not set
  2267. +CONFIG_MSDOS_PARTITION=y
  2268. +
  2269. +#
  2270. +# Native Language Support
  2271. +#
  2272. +CONFIG_NLS=y
  2273. +CONFIG_NLS_DEFAULT="iso8859-1"
  2274. +CONFIG_NLS_CODEPAGE_437=y
  2275. +# CONFIG_NLS_CODEPAGE_737 is not set
  2276. +# CONFIG_NLS_CODEPAGE_775 is not set
  2277. +# CONFIG_NLS_CODEPAGE_850 is not set
  2278. +# CONFIG_NLS_CODEPAGE_852 is not set
  2279. +# CONFIG_NLS_CODEPAGE_855 is not set
  2280. +# CONFIG_NLS_CODEPAGE_857 is not set
  2281. +# CONFIG_NLS_CODEPAGE_860 is not set
  2282. +# CONFIG_NLS_CODEPAGE_861 is not set
  2283. +# CONFIG_NLS_CODEPAGE_862 is not set
  2284. +# CONFIG_NLS_CODEPAGE_863 is not set
  2285. +# CONFIG_NLS_CODEPAGE_864 is not set
  2286. +# CONFIG_NLS_CODEPAGE_865 is not set
  2287. +# CONFIG_NLS_CODEPAGE_866 is not set
  2288. +# CONFIG_NLS_CODEPAGE_869 is not set
  2289. +# CONFIG_NLS_CODEPAGE_936 is not set
  2290. +# CONFIG_NLS_CODEPAGE_950 is not set
  2291. +# CONFIG_NLS_CODEPAGE_932 is not set
  2292. +# CONFIG_NLS_CODEPAGE_949 is not set
  2293. +# CONFIG_NLS_CODEPAGE_874 is not set
  2294. +# CONFIG_NLS_ISO8859_8 is not set
  2295. +# CONFIG_NLS_CODEPAGE_1250 is not set
  2296. +# CONFIG_NLS_CODEPAGE_1251 is not set
  2297. +# CONFIG_NLS_ASCII is not set
  2298. +CONFIG_NLS_ISO8859_1=y
  2299. +# CONFIG_NLS_ISO8859_2 is not set
  2300. +# CONFIG_NLS_ISO8859_3 is not set
  2301. +# CONFIG_NLS_ISO8859_4 is not set
  2302. +# CONFIG_NLS_ISO8859_5 is not set
  2303. +# CONFIG_NLS_ISO8859_6 is not set
  2304. +# CONFIG_NLS_ISO8859_7 is not set
  2305. +# CONFIG_NLS_ISO8859_9 is not set
  2306. +# CONFIG_NLS_ISO8859_13 is not set
  2307. +# CONFIG_NLS_ISO8859_14 is not set
  2308. +# CONFIG_NLS_ISO8859_15 is not set
  2309. +# CONFIG_NLS_KOI8_R is not set
  2310. +# CONFIG_NLS_KOI8_U is not set
  2311. +# CONFIG_NLS_UTF8 is not set
  2312. +
  2313. +#
  2314. +# Distributed Lock Manager
  2315. +#
  2316. +# CONFIG_DLM is not set
  2317. +
  2318. +#
  2319. +# Instrumentation Support
  2320. +#
  2321. +# CONFIG_PROFILING is not set
  2322. +
  2323. +#
  2324. +# Kernel hacking
  2325. +#
  2326. +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
  2327. +# CONFIG_PRINTK_TIME is not set
  2328. +CONFIG_ENABLE_MUST_CHECK=y
  2329. +# CONFIG_MAGIC_SYSRQ is not set
  2330. +CONFIG_UNUSED_SYMBOLS=y
  2331. +# CONFIG_DEBUG_FS is not set
  2332. +# CONFIG_HEADERS_CHECK is not set
  2333. +# CONFIG_DEBUG_KERNEL is not set
  2334. +# CONFIG_DEBUG_BUGVERBOSE is not set
  2335. +CONFIG_EARLY_PRINTK=y
  2336. +CONFIG_DOUBLEFAULT=y
  2337. +
  2338. +#
  2339. +# Security options
  2340. +#
  2341. +# CONFIG_KEYS is not set
  2342. +# CONFIG_SECURITY is not set
  2343. +
  2344. +#
  2345. +# Cryptographic options
  2346. +#
  2347. +# CONFIG_CRYPTO is not set
  2348. +
  2349. +#
  2350. +# Library routines
  2351. +#
  2352. +CONFIG_BITREVERSE=y
  2353. +# CONFIG_CRC_CCITT is not set
  2354. +# CONFIG_CRC16 is not set
  2355. +# CONFIG_CRC_ITU_T is not set
  2356. +CONFIG_CRC32=y
  2357. +# CONFIG_LIBCRC32C is not set
  2358. +CONFIG_PLIST=y
  2359. +CONFIG_HAS_IOMEM=y
  2360. +CONFIG_HAS_IOPORT=y
  2361. +CONFIG_HAS_DMA=y
  2362. +CONFIG_GENERIC_HARDIRQS=y
  2363. +CONFIG_GENERIC_IRQ_PROBE=y
  2364. +CONFIG_X86_BIOS_REBOOT=y
  2365. +CONFIG_KTIME_SCALAR=y
  2366. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/configs/raq550_defconfig linux-3.2.5-cobalt/arch/x86/configs/raq550_defconfig
  2367. --- linux-3.2.5/arch/x86/configs/raq550_defconfig 1969-12-31 16:00:00.000000000 -0800
  2368. +++ linux-3.2.5-cobalt/arch/x86/configs/raq550_defconfig 2012-02-06 21:34:59.000000000 -0800
  2369. @@ -0,0 +1,1324 @@
  2370. +#
  2371. +# Automatically generated make config: don't edit
  2372. +# Linux kernel version: 2.6.22-gentoo-r9
  2373. +# Mon Nov 12 08:26:53 2007
  2374. +#
  2375. +CONFIG_X86_32=y
  2376. +CONFIG_GENERIC_TIME=y
  2377. +CONFIG_CLOCKSOURCE_WATCHDOG=y
  2378. +CONFIG_GENERIC_CLOCKEVENTS=y
  2379. +CONFIG_LOCKDEP_SUPPORT=y
  2380. +CONFIG_STACKTRACE_SUPPORT=y
  2381. +CONFIG_SEMAPHORE_SLEEPERS=y
  2382. +CONFIG_X86=y
  2383. +CONFIG_MMU=y
  2384. +CONFIG_ZONE_DMA=y
  2385. +CONFIG_QUICKLIST=y
  2386. +CONFIG_GENERIC_ISA_DMA=y
  2387. +CONFIG_GENERIC_IOMAP=y
  2388. +CONFIG_GENERIC_BUG=y
  2389. +CONFIG_GENERIC_HWEIGHT=y
  2390. +CONFIG_ARCH_MAY_HAVE_PC_FDC=y
  2391. +CONFIG_DMI=y
  2392. +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
  2393. +
  2394. +#
  2395. +# Code maturity level options
  2396. +#
  2397. +CONFIG_EXPERIMENTAL=y
  2398. +CONFIG_BROKEN_ON_SMP=y
  2399. +CONFIG_INIT_ENV_ARG_LIMIT=32
  2400. +
  2401. +#
  2402. +# General setup
  2403. +#
  2404. +CONFIG_LOCALVERSION=""
  2405. +CONFIG_LOCALVERSION_AUTO=y
  2406. +CONFIG_SWAP=y
  2407. +CONFIG_SYSVIPC=y
  2408. +# CONFIG_IPC_NS is not set
  2409. +CONFIG_SYSVIPC_SYSCTL=y
  2410. +# CONFIG_POSIX_MQUEUE is not set
  2411. +# CONFIG_BSD_PROCESS_ACCT is not set
  2412. +# CONFIG_TASKSTATS is not set
  2413. +# CONFIG_UTS_NS is not set
  2414. +# CONFIG_AUDIT is not set
  2415. +CONFIG_IKCONFIG=y
  2416. +CONFIG_IKCONFIG_PROC=y
  2417. +CONFIG_LOG_BUF_SHIFT=14
  2418. +CONFIG_SYSFS_DEPRECATED=y
  2419. +# CONFIG_RELAY is not set
  2420. +# CONFIG_BLK_DEV_INITRD is not set
  2421. +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
  2422. +CONFIG_SYSCTL=y
  2423. +# CONFIG_EMBEDDED is not set
  2424. +CONFIG_UID16=y
  2425. +CONFIG_SYSCTL_SYSCALL=y
  2426. +CONFIG_KALLSYMS=y
  2427. +# CONFIG_KALLSYMS_EXTRA_PASS is not set
  2428. +CONFIG_HOTPLUG=y
  2429. +CONFIG_PRINTK=y
  2430. +CONFIG_BUG=y
  2431. +CONFIG_ELF_CORE=y
  2432. +CONFIG_BASE_FULL=y
  2433. +CONFIG_FUTEX=y
  2434. +CONFIG_ANON_INODES=y
  2435. +CONFIG_EPOLL=y
  2436. +CONFIG_SIGNALFD=y
  2437. +CONFIG_EVENTFD=y
  2438. +CONFIG_SHMEM=y
  2439. +CONFIG_VM_EVENT_COUNTERS=y
  2440. +CONFIG_SLAB=y
  2441. +# CONFIG_SLUB is not set
  2442. +# CONFIG_SLOB is not set
  2443. +CONFIG_RT_MUTEXES=y
  2444. +# CONFIG_TINY_SHMEM is not set
  2445. +CONFIG_BASE_SMALL=0
  2446. +
  2447. +#
  2448. +# Loadable module support
  2449. +#
  2450. +CONFIG_MODULES=y
  2451. +CONFIG_MODULE_UNLOAD=y
  2452. +CONFIG_MODULE_FORCE_UNLOAD=y
  2453. +CONFIG_MODVERSIONS=y
  2454. +# CONFIG_MODULE_SRCVERSION_ALL is not set
  2455. +CONFIG_KMOD=y
  2456. +
  2457. +#
  2458. +# Block layer
  2459. +#
  2460. +CONFIG_BLOCK=y
  2461. +CONFIG_LBD=y
  2462. +# CONFIG_BLK_DEV_IO_TRACE is not set
  2463. +# CONFIG_LSF is not set
  2464. +
  2465. +#
  2466. +# IO Schedulers
  2467. +#
  2468. +CONFIG_IOSCHED_NOOP=y
  2469. +CONFIG_IOSCHED_AS=y
  2470. +# CONFIG_IOSCHED_DEADLINE is not set
  2471. +# CONFIG_IOSCHED_CFQ is not set
  2472. +CONFIG_DEFAULT_AS=y
  2473. +# CONFIG_DEFAULT_DEADLINE is not set
  2474. +# CONFIG_DEFAULT_CFQ is not set
  2475. +# CONFIG_DEFAULT_NOOP is not set
  2476. +CONFIG_DEFAULT_IOSCHED="anticipatory"
  2477. +
  2478. +#
  2479. +# Processor type and features
  2480. +#
  2481. +# CONFIG_TICK_ONESHOT is not set
  2482. +# CONFIG_NO_HZ is not set
  2483. +# CONFIG_HIGH_RES_TIMERS is not set
  2484. +# CONFIG_SMP is not set
  2485. +CONFIG_X86_PC=y
  2486. +# CONFIG_X86_ELAN is not set
  2487. +# CONFIG_X86_VOYAGER is not set
  2488. +# CONFIG_X86_NUMAQ is not set
  2489. +# CONFIG_X86_SUMMIT is not set
  2490. +# CONFIG_X86_BIGSMP is not set
  2491. +# CONFIG_X86_VISWS is not set
  2492. +# CONFIG_X86_GENERICARCH is not set
  2493. +# CONFIG_X86_ES7000 is not set
  2494. +# CONFIG_PARAVIRT is not set
  2495. +# CONFIG_M386 is not set
  2496. +# CONFIG_M486 is not set
  2497. +# CONFIG_M586 is not set
  2498. +# CONFIG_M586TSC is not set
  2499. +# CONFIG_M586MMX is not set
  2500. +# CONFIG_M686 is not set
  2501. +# CONFIG_MPENTIUMII is not set
  2502. +CONFIG_MPENTIUMIII=y
  2503. +# CONFIG_MPENTIUMM is not set
  2504. +# CONFIG_MCORE2 is not set
  2505. +# CONFIG_MPENTIUM4 is not set
  2506. +# CONFIG_MK6 is not set
  2507. +# CONFIG_MK7 is not set
  2508. +# CONFIG_MK8 is not set
  2509. +# CONFIG_MCRUSOE is not set
  2510. +# CONFIG_MEFFICEON is not set
  2511. +# CONFIG_MWINCHIPC6 is not set
  2512. +# CONFIG_MWINCHIP2 is not set
  2513. +# CONFIG_MWINCHIP3D is not set
  2514. +# CONFIG_MGEODEGX1 is not set
  2515. +# CONFIG_MGEODE_LX is not set
  2516. +# CONFIG_MCYRIXIII is not set
  2517. +# CONFIG_MVIAC3_2 is not set
  2518. +# CONFIG_MVIAC7 is not set
  2519. +# CONFIG_X86_GENERIC is not set
  2520. +CONFIG_X86_CMPXCHG=y
  2521. +CONFIG_X86_L1_CACHE_SHIFT=5
  2522. +CONFIG_X86_XADD=y
  2523. +CONFIG_RWSEM_XCHGADD_ALGORITHM=y
  2524. +# CONFIG_ARCH_HAS_ILOG2_U32 is not set
  2525. +# CONFIG_ARCH_HAS_ILOG2_U64 is not set
  2526. +CONFIG_GENERIC_CALIBRATE_DELAY=y
  2527. +CONFIG_X86_WP_WORKS_OK=y
  2528. +CONFIG_X86_INVLPG=y
  2529. +CONFIG_X86_BSWAP=y
  2530. +CONFIG_X86_POPAD_OK=y
  2531. +CONFIG_X86_GOOD_APIC=y
  2532. +CONFIG_X86_INTEL_USERCOPY=y
  2533. +CONFIG_X86_USE_PPRO_CHECKSUM=y
  2534. +CONFIG_X86_TSC=y
  2535. +CONFIG_X86_CMOV=y
  2536. +CONFIG_X86_MINIMUM_CPU_MODEL=4
  2537. +# CONFIG_HPET_TIMER is not set
  2538. +CONFIG_PREEMPT_NONE=y
  2539. +# CONFIG_PREEMPT_VOLUNTARY is not set
  2540. +# CONFIG_PREEMPT is not set
  2541. +# CONFIG_X86_UP_APIC is not set
  2542. +# CONFIG_X86_MCE is not set
  2543. +CONFIG_VM86=y
  2544. +# CONFIG_TOSHIBA is not set
  2545. +# CONFIG_I8K is not set
  2546. +# CONFIG_X86_REBOOTFIXUPS is not set
  2547. +# CONFIG_MICROCODE is not set
  2548. +# CONFIG_X86_MSR is not set
  2549. +# CONFIG_X86_CPUID is not set
  2550. +
  2551. +#
  2552. +# Firmware Drivers
  2553. +#
  2554. +# CONFIG_EDD is not set
  2555. +# CONFIG_DELL_RBU is not set
  2556. +# CONFIG_DCDBAS is not set
  2557. +CONFIG_NOHIGHMEM=y
  2558. +# CONFIG_HIGHMEM4G is not set
  2559. +# CONFIG_HIGHMEM64G is not set
  2560. +# CONFIG_VMSPLIT_3G is not set
  2561. +# CONFIG_VMSPLIT_3G_OPT is not set
  2562. +# CONFIG_VMSPLIT_2G is not set
  2563. +# CONFIG_VMSPLIT_2G_OPT is not set
  2564. +# CONFIG_VMSPLIT_1G is not set
  2565. +CONFIG_PAGE_OFFSET=0xC0000000
  2566. +CONFIG_ARCH_FLATMEM_ENABLE=y
  2567. +CONFIG_ARCH_SPARSEMEM_ENABLE=y
  2568. +CONFIG_ARCH_SELECT_MEMORY_MODEL=y
  2569. +CONFIG_ARCH_POPULATES_NODE_MAP=y
  2570. +CONFIG_SELECT_MEMORY_MODEL=y
  2571. +CONFIG_FLATMEM_MANUAL=y
  2572. +# CONFIG_DISCONTIGMEM_MANUAL is not set
  2573. +# CONFIG_SPARSEMEM_MANUAL is not set
  2574. +CONFIG_FLATMEM=y
  2575. +CONFIG_FLAT_NODE_MEM_MAP=y
  2576. +CONFIG_SPARSEMEM_STATIC=y
  2577. +CONFIG_SPLIT_PTLOCK_CPUS=4
  2578. +# CONFIG_RESOURCES_64BIT is not set
  2579. +CONFIG_ZONE_DMA_FLAG=1
  2580. +CONFIG_NR_QUICK=1
  2581. +# CONFIG_MATH_EMULATION is not set
  2582. +CONFIG_MTRR=y
  2583. +# CONFIG_EFI is not set
  2584. +# CONFIG_SECCOMP is not set
  2585. +# CONFIG_HZ_100 is not set
  2586. +CONFIG_HZ_250=y
  2587. +# CONFIG_HZ_300 is not set
  2588. +# CONFIG_HZ_1000 is not set
  2589. +CONFIG_HZ=250
  2590. +# CONFIG_KEXEC is not set
  2591. +CONFIG_PHYSICAL_START=0x100000
  2592. +# CONFIG_RELOCATABLE is not set
  2593. +CONFIG_PHYSICAL_ALIGN=0x100000
  2594. +# CONFIG_COMPAT_VDSO is not set
  2595. +
  2596. +#
  2597. +# Power management options (ACPI, APM)
  2598. +#
  2599. +CONFIG_PM=y
  2600. +# CONFIG_PM_LEGACY is not set
  2601. +# CONFIG_PM_DEBUG is not set
  2602. +# CONFIG_PM_SYSFS_DEPRECATED is not set
  2603. +# CONFIG_SOFTWARE_SUSPEND is not set
  2604. +
  2605. +#
  2606. +# ACPI (Advanced Configuration and Power Interface) Support
  2607. +#
  2608. +CONFIG_ACPI=y
  2609. +CONFIG_ACPI_SLEEP=y
  2610. +CONFIG_ACPI_SLEEP_PROC_FS=y
  2611. +# CONFIG_ACPI_SLEEP_PROC_SLEEP is not set
  2612. +CONFIG_ACPI_PROCFS=y
  2613. +CONFIG_ACPI_AC=y
  2614. +CONFIG_ACPI_BATTERY=y
  2615. +CONFIG_ACPI_BUTTON=y
  2616. +CONFIG_ACPI_FAN=y
  2617. +# CONFIG_ACPI_DOCK is not set
  2618. +CONFIG_ACPI_PROCESSOR=y
  2619. +CONFIG_ACPI_THERMAL=y
  2620. +# CONFIG_ACPI_ASUS is not set
  2621. +# CONFIG_ACPI_TOSHIBA is not set
  2622. +CONFIG_ACPI_BLACKLIST_YEAR=0
  2623. +# CONFIG_ACPI_DEBUG is not set
  2624. +CONFIG_ACPI_EC=y
  2625. +CONFIG_ACPI_POWER=y
  2626. +CONFIG_ACPI_SYSTEM=y
  2627. +CONFIG_X86_PM_TIMER=y
  2628. +# CONFIG_ACPI_CONTAINER is not set
  2629. +# CONFIG_ACPI_SBS is not set
  2630. +# CONFIG_APM is not set
  2631. +
  2632. +#
  2633. +# CPU Frequency scaling
  2634. +#
  2635. +# CONFIG_CPU_FREQ is not set
  2636. +
  2637. +#
  2638. +# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
  2639. +#
  2640. +CONFIG_PCI=y
  2641. +# CONFIG_PCI_GOBIOS is not set
  2642. +# CONFIG_PCI_GOMMCONFIG is not set
  2643. +# CONFIG_PCI_GODIRECT is not set
  2644. +CONFIG_PCI_GOANY=y
  2645. +CONFIG_PCI_BIOS=y
  2646. +CONFIG_PCI_DIRECT=y
  2647. +CONFIG_PCI_MMCONFIG=y
  2648. +# CONFIG_PCIEPORTBUS is not set
  2649. +# CONFIG_ARCH_SUPPORTS_MSI is not set
  2650. +CONFIG_ISA_DMA_API=y
  2651. +CONFIG_ISA=y
  2652. +# CONFIG_EISA is not set
  2653. +# CONFIG_MCA is not set
  2654. +# CONFIG_SCx200 is not set
  2655. +
  2656. +#
  2657. +# PCCARD (PCMCIA/CardBus) support
  2658. +#
  2659. +# CONFIG_PCCARD is not set
  2660. +# CONFIG_HOTPLUG_PCI is not set
  2661. +
  2662. +#
  2663. +# Executable file formats
  2664. +#
  2665. +CONFIG_BINFMT_ELF=y
  2666. +CONFIG_BINFMT_AOUT=y
  2667. +CONFIG_BINFMT_MISC=y
  2668. +
  2669. +#
  2670. +# Networking
  2671. +#
  2672. +CONFIG_NET=y
  2673. +
  2674. +#
  2675. +# Networking options
  2676. +#
  2677. +CONFIG_PACKET=y
  2678. +# CONFIG_PACKET_MMAP is not set
  2679. +CONFIG_UNIX=y
  2680. +# CONFIG_NET_KEY is not set
  2681. +CONFIG_INET=y
  2682. +# CONFIG_IP_MULTICAST is not set
  2683. +# CONFIG_IP_ADVANCED_ROUTER is not set
  2684. +CONFIG_IP_FIB_HASH=y
  2685. +# CONFIG_IP_PNP is not set
  2686. +# CONFIG_NET_IPIP is not set
  2687. +# CONFIG_NET_IPGRE is not set
  2688. +# CONFIG_ARPD is not set
  2689. +# CONFIG_SYN_COOKIES is not set
  2690. +# CONFIG_INET_AH is not set
  2691. +# CONFIG_INET_ESP is not set
  2692. +# CONFIG_INET_IPCOMP is not set
  2693. +# CONFIG_INET_XFRM_TUNNEL is not set
  2694. +# CONFIG_INET_TUNNEL is not set
  2695. +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
  2696. +# CONFIG_INET_XFRM_MODE_TUNNEL is not set
  2697. +# CONFIG_INET_XFRM_MODE_BEET is not set
  2698. +# CONFIG_INET_DIAG is not set
  2699. +# CONFIG_TCP_CONG_ADVANCED is not set
  2700. +CONFIG_TCP_CONG_CUBIC=y
  2701. +CONFIG_DEFAULT_TCP_CONG="cubic"
  2702. +# CONFIG_TCP_MD5SIG is not set
  2703. +# CONFIG_IPV6 is not set
  2704. +# CONFIG_INET6_XFRM_TUNNEL is not set
  2705. +# CONFIG_INET6_TUNNEL is not set
  2706. +# CONFIG_NETWORK_SECMARK is not set
  2707. +# CONFIG_NETFILTER is not set
  2708. +# CONFIG_IP_DCCP is not set
  2709. +# CONFIG_IP_SCTP is not set
  2710. +# CONFIG_TIPC is not set
  2711. +# CONFIG_ATM is not set
  2712. +# CONFIG_BRIDGE is not set
  2713. +# CONFIG_VLAN_8021Q is not set
  2714. +# CONFIG_DECNET is not set
  2715. +# CONFIG_LLC2 is not set
  2716. +# CONFIG_IPX is not set
  2717. +# CONFIG_ATALK is not set
  2718. +# CONFIG_X25 is not set
  2719. +# CONFIG_LAPB is not set
  2720. +# CONFIG_ECONET is not set
  2721. +# CONFIG_WAN_ROUTER is not set
  2722. +
  2723. +#
  2724. +# QoS and/or fair queueing
  2725. +#
  2726. +# CONFIG_NET_SCHED is not set
  2727. +
  2728. +#
  2729. +# Network testing
  2730. +#
  2731. +# CONFIG_NET_PKTGEN is not set
  2732. +# CONFIG_HAMRADIO is not set
  2733. +# CONFIG_IRDA is not set
  2734. +# CONFIG_BT is not set
  2735. +# CONFIG_AF_RXRPC is not set
  2736. +
  2737. +#
  2738. +# Wireless
  2739. +#
  2740. +# CONFIG_CFG80211 is not set
  2741. +# CONFIG_WIRELESS_EXT is not set
  2742. +# CONFIG_MAC80211 is not set
  2743. +# CONFIG_IEEE80211 is not set
  2744. +# CONFIG_RFKILL is not set
  2745. +
  2746. +#
  2747. +# Device Drivers
  2748. +#
  2749. +
  2750. +#
  2751. +# Generic Driver Options
  2752. +#
  2753. +CONFIG_STANDALONE=y
  2754. +CONFIG_PREVENT_FIRMWARE_BUILD=y
  2755. +CONFIG_FW_LOADER=y
  2756. +# CONFIG_SYS_HYPERVISOR is not set
  2757. +
  2758. +#
  2759. +# Connector - unified userspace <-> kernelspace linker
  2760. +#
  2761. +# CONFIG_CONNECTOR is not set
  2762. +# CONFIG_MTD is not set
  2763. +
  2764. +#
  2765. +# Parallel port support
  2766. +#
  2767. +# CONFIG_PARPORT is not set
  2768. +
  2769. +#
  2770. +# Plug and Play support
  2771. +#
  2772. +CONFIG_PNP=y
  2773. +# CONFIG_PNP_DEBUG is not set
  2774. +
  2775. +#
  2776. +# Protocols
  2777. +#
  2778. +CONFIG_ISAPNP=y
  2779. +# CONFIG_PNPBIOS is not set
  2780. +CONFIG_PNPACPI=y
  2781. +
  2782. +#
  2783. +# Block devices
  2784. +#
  2785. +# CONFIG_BLK_DEV_FD is not set
  2786. +# CONFIG_BLK_DEV_XD is not set
  2787. +# CONFIG_BLK_CPQ_DA is not set
  2788. +# CONFIG_BLK_CPQ_CISS_DA is not set
  2789. +# CONFIG_BLK_DEV_DAC960 is not set
  2790. +# CONFIG_BLK_DEV_UMEM is not set
  2791. +# CONFIG_BLK_DEV_COW_COMMON is not set
  2792. +# CONFIG_BLK_DEV_LOOP is not set
  2793. +# CONFIG_BLK_DEV_NBD is not set
  2794. +# CONFIG_BLK_DEV_SX8 is not set
  2795. +# CONFIG_BLK_DEV_UB is not set
  2796. +# CONFIG_BLK_DEV_RAM is not set
  2797. +# CONFIG_CDROM_PKTCDVD is not set
  2798. +# CONFIG_ATA_OVER_ETH is not set
  2799. +
  2800. +#
  2801. +# Misc devices
  2802. +#
  2803. +# CONFIG_IBM_ASM is not set
  2804. +# CONFIG_PHANTOM is not set
  2805. +# CONFIG_SGI_IOC4 is not set
  2806. +# CONFIG_TIFM_CORE is not set
  2807. +# CONFIG_SONY_LAPTOP is not set
  2808. +# CONFIG_THINKPAD_ACPI is not set
  2809. +CONFIG_IDE=y
  2810. +CONFIG_BLK_DEV_IDE=y
  2811. +
  2812. +#
  2813. +# Please see Documentation/ide.txt for help/info on IDE drives
  2814. +#
  2815. +# CONFIG_BLK_DEV_IDE_SATA is not set
  2816. +# CONFIG_BLK_DEV_HD_IDE is not set
  2817. +CONFIG_BLK_DEV_IDEDISK=y
  2818. +CONFIG_IDEDISK_MULTI_MODE=y
  2819. +CONFIG_BLK_DEV_IDECD=y
  2820. +# CONFIG_BLK_DEV_IDETAPE is not set
  2821. +# CONFIG_BLK_DEV_IDEFLOPPY is not set
  2822. +# CONFIG_BLK_DEV_IDEACPI is not set
  2823. +# CONFIG_IDE_TASK_IOCTL is not set
  2824. +CONFIG_IDE_PROC_FS=y
  2825. +
  2826. +#
  2827. +# IDE chipset support/bugfixes
  2828. +#
  2829. +# CONFIG_IDE_GENERIC is not set
  2830. +# CONFIG_BLK_DEV_CMD640 is not set
  2831. +# CONFIG_BLK_DEV_IDEPNP is not set
  2832. +CONFIG_BLK_DEV_IDEPCI=y
  2833. +CONFIG_IDEPCI_SHARE_IRQ=y
  2834. +CONFIG_IDEPCI_PCIBUS_ORDER=y
  2835. +# CONFIG_BLK_DEV_OFFBOARD is not set
  2836. +# CONFIG_BLK_DEV_GENERIC is not set
  2837. +# CONFIG_BLK_DEV_OPTI621 is not set
  2838. +# CONFIG_BLK_DEV_RZ1000 is not set
  2839. +CONFIG_BLK_DEV_IDEDMA_PCI=y
  2840. +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
  2841. +# CONFIG_IDEDMA_ONLYDISK is not set
  2842. +# CONFIG_BLK_DEV_AEC62XX is not set
  2843. +# CONFIG_BLK_DEV_ALI15X3 is not set
  2844. +# CONFIG_BLK_DEV_AMD74XX is not set
  2845. +# CONFIG_BLK_DEV_ATIIXP is not set
  2846. +# CONFIG_BLK_DEV_CMD64X is not set
  2847. +# CONFIG_BLK_DEV_TRIFLEX is not set
  2848. +# CONFIG_BLK_DEV_CY82C693 is not set
  2849. +# CONFIG_BLK_DEV_CS5520 is not set
  2850. +# CONFIG_BLK_DEV_CS5530 is not set
  2851. +# CONFIG_BLK_DEV_CS5535 is not set
  2852. +# CONFIG_BLK_DEV_HPT34X is not set
  2853. +CONFIG_BLK_DEV_HPT366=y
  2854. +# CONFIG_BLK_DEV_JMICRON is not set
  2855. +# CONFIG_BLK_DEV_SC1200 is not set
  2856. +# CONFIG_BLK_DEV_PIIX is not set
  2857. +# CONFIG_BLK_DEV_IT8213 is not set
  2858. +# CONFIG_BLK_DEV_IT821X is not set
  2859. +# CONFIG_BLK_DEV_NS87415 is not set
  2860. +# CONFIG_BLK_DEV_PDC202XX_OLD is not set
  2861. +# CONFIG_BLK_DEV_PDC202XX_NEW is not set
  2862. +CONFIG_BLK_DEV_SVWKS=y
  2863. +# CONFIG_BLK_DEV_SIIMAGE is not set
  2864. +# CONFIG_BLK_DEV_SIS5513 is not set
  2865. +# CONFIG_BLK_DEV_SLC90E66 is not set
  2866. +# CONFIG_BLK_DEV_TRM290 is not set
  2867. +# CONFIG_BLK_DEV_VIA82CXXX is not set
  2868. +# CONFIG_BLK_DEV_TC86C001 is not set
  2869. +# CONFIG_IDE_ARM is not set
  2870. +# CONFIG_IDE_CHIPSETS is not set
  2871. +CONFIG_BLK_DEV_IDEDMA=y
  2872. +# CONFIG_IDEDMA_IVB is not set
  2873. +# CONFIG_BLK_DEV_HD is not set
  2874. +
  2875. +#
  2876. +# SCSI device support
  2877. +#
  2878. +# CONFIG_RAID_ATTRS is not set
  2879. +# CONFIG_SCSI is not set
  2880. +# CONFIG_SCSI_NETLINK is not set
  2881. +# CONFIG_ATA is not set
  2882. +
  2883. +#
  2884. +# Old CD-ROM drivers (not SCSI, not IDE)
  2885. +#
  2886. +# CONFIG_CD_NO_IDESCSI is not set
  2887. +
  2888. +#
  2889. +# Multi-device support (RAID and LVM)
  2890. +#
  2891. +# CONFIG_MD is not set
  2892. +
  2893. +#
  2894. +# Fusion MPT device support
  2895. +#
  2896. +# CONFIG_FUSION is not set
  2897. +
  2898. +#
  2899. +# IEEE 1394 (FireWire) support
  2900. +#
  2901. +# CONFIG_FIREWIRE is not set
  2902. +# CONFIG_IEEE1394 is not set
  2903. +
  2904. +#
  2905. +# I2O device support
  2906. +#
  2907. +# CONFIG_I2O is not set
  2908. +# CONFIG_MACINTOSH_DRIVERS is not set
  2909. +
  2910. +#
  2911. +# Network device support
  2912. +#
  2913. +CONFIG_NETDEVICES=y
  2914. +# CONFIG_DUMMY is not set
  2915. +# CONFIG_BONDING is not set
  2916. +# CONFIG_EQUALIZER is not set
  2917. +# CONFIG_TUN is not set
  2918. +# CONFIG_NET_SB1000 is not set
  2919. +# CONFIG_ARCNET is not set
  2920. +# CONFIG_PHYLIB is not set
  2921. +
  2922. +#
  2923. +# Ethernet (10 or 100Mbit)
  2924. +#
  2925. +CONFIG_NET_ETHERNET=y
  2926. +CONFIG_MII=y
  2927. +# CONFIG_HAPPYMEAL is not set
  2928. +# CONFIG_SUNGEM is not set
  2929. +# CONFIG_CASSINI is not set
  2930. +# CONFIG_NET_VENDOR_3COM is not set
  2931. +# CONFIG_LANCE is not set
  2932. +# CONFIG_NET_VENDOR_SMC is not set
  2933. +# CONFIG_NET_VENDOR_RACAL is not set
  2934. +
  2935. +#
  2936. +# Tulip family network device support
  2937. +#
  2938. +# CONFIG_NET_TULIP is not set
  2939. +# CONFIG_AT1700 is not set
  2940. +# CONFIG_DEPCA is not set
  2941. +# CONFIG_HP100 is not set
  2942. +# CONFIG_NET_ISA is not set
  2943. +CONFIG_NET_PCI=y
  2944. +# CONFIG_PCNET32 is not set
  2945. +# CONFIG_AMD8111_ETH is not set
  2946. +# CONFIG_ADAPTEC_STARFIRE is not set
  2947. +# CONFIG_AC3200 is not set
  2948. +# CONFIG_APRICOT is not set
  2949. +# CONFIG_B44 is not set
  2950. +# CONFIG_FORCEDETH is not set
  2951. +# CONFIG_CS89x0 is not set
  2952. +# CONFIG_DGRS is not set
  2953. +# CONFIG_EEPRO100 is not set
  2954. +# CONFIG_E100 is not set
  2955. +# CONFIG_FEALNX is not set
  2956. +CONFIG_NATSEMI=y
  2957. +# CONFIG_NE2K_PCI is not set
  2958. +# CONFIG_8139CP is not set
  2959. +# CONFIG_8139TOO is not set
  2960. +# CONFIG_SIS900 is not set
  2961. +# CONFIG_EPIC100 is not set
  2962. +# CONFIG_SUNDANCE is not set
  2963. +# CONFIG_TLAN is not set
  2964. +# CONFIG_VIA_RHINE is not set
  2965. +# CONFIG_SC92031 is not set
  2966. +# CONFIG_NETDEV_1000 is not set
  2967. +# CONFIG_NETDEV_10000 is not set
  2968. +# CONFIG_TR is not set
  2969. +
  2970. +#
  2971. +# Wireless LAN
  2972. +#
  2973. +# CONFIG_WLAN_PRE80211 is not set
  2974. +# CONFIG_WLAN_80211 is not set
  2975. +
  2976. +#
  2977. +# USB Network Adapters
  2978. +#
  2979. +# CONFIG_USB_CATC is not set
  2980. +# CONFIG_USB_KAWETH is not set
  2981. +# CONFIG_USB_PEGASUS is not set
  2982. +# CONFIG_USB_RTL8150 is not set
  2983. +# CONFIG_USB_USBNET_MII is not set
  2984. +# CONFIG_USB_USBNET is not set
  2985. +# CONFIG_WAN is not set
  2986. +# CONFIG_FDDI is not set
  2987. +# CONFIG_HIPPI is not set
  2988. +# CONFIG_PPP is not set
  2989. +# CONFIG_SLIP is not set
  2990. +# CONFIG_SHAPER is not set
  2991. +# CONFIG_NETCONSOLE is not set
  2992. +# CONFIG_NETPOLL is not set
  2993. +# CONFIG_NET_POLL_CONTROLLER is not set
  2994. +
  2995. +#
  2996. +# ISDN subsystem
  2997. +#
  2998. +# CONFIG_ISDN is not set
  2999. +
  3000. +#
  3001. +# Telephony Support
  3002. +#
  3003. +# CONFIG_PHONE is not set
  3004. +
  3005. +#
  3006. +# Input device support
  3007. +#
  3008. +CONFIG_INPUT=y
  3009. +# CONFIG_INPUT_FF_MEMLESS is not set
  3010. +# CONFIG_INPUT_POLLDEV is not set
  3011. +
  3012. +#
  3013. +# Userland interfaces
  3014. +#
  3015. +CONFIG_INPUT_MOUSEDEV=y
  3016. +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
  3017. +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
  3018. +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
  3019. +# CONFIG_INPUT_JOYDEV is not set
  3020. +# CONFIG_INPUT_TSDEV is not set
  3021. +# CONFIG_INPUT_EVDEV is not set
  3022. +# CONFIG_INPUT_EVBUG is not set
  3023. +
  3024. +#
  3025. +# Input Device Drivers
  3026. +#
  3027. +CONFIG_INPUT_KEYBOARD=y
  3028. +CONFIG_KEYBOARD_ATKBD=y
  3029. +# CONFIG_KEYBOARD_SUNKBD is not set
  3030. +# CONFIG_KEYBOARD_LKKBD is not set
  3031. +# CONFIG_KEYBOARD_XTKBD is not set
  3032. +# CONFIG_KEYBOARD_NEWTON is not set
  3033. +# CONFIG_KEYBOARD_STOWAWAY is not set
  3034. +# CONFIG_INPUT_MOUSE is not set
  3035. +# CONFIG_INPUT_JOYSTICK is not set
  3036. +# CONFIG_INPUT_TABLET is not set
  3037. +# CONFIG_INPUT_TOUCHSCREEN is not set
  3038. +# CONFIG_INPUT_MISC is not set
  3039. +
  3040. +#
  3041. +# Hardware I/O ports
  3042. +#
  3043. +CONFIG_SERIO=y
  3044. +CONFIG_SERIO_I8042=y
  3045. +# CONFIG_SERIO_SERPORT is not set
  3046. +# CONFIG_SERIO_CT82C710 is not set
  3047. +# CONFIG_SERIO_PCIPS2 is not set
  3048. +CONFIG_SERIO_LIBPS2=y
  3049. +# CONFIG_SERIO_RAW is not set
  3050. +# CONFIG_GAMEPORT is not set
  3051. +
  3052. +#
  3053. +# Character devices
  3054. +#
  3055. +CONFIG_VT=y
  3056. +CONFIG_VT_CONSOLE=y
  3057. +CONFIG_HW_CONSOLE=y
  3058. +# CONFIG_VT_HW_CONSOLE_BINDING is not set
  3059. +# CONFIG_SERIAL_NONSTANDARD is not set
  3060. +
  3061. +#
  3062. +# Serial drivers
  3063. +#
  3064. +CONFIG_SERIAL_8250=y
  3065. +CONFIG_SERIAL_8250_CONSOLE=y
  3066. +CONFIG_SERIAL_8250_PCI=y
  3067. +CONFIG_SERIAL_8250_PNP=y
  3068. +CONFIG_SERIAL_8250_NR_UARTS=2
  3069. +CONFIG_SERIAL_8250_RUNTIME_UARTS=2
  3070. +# CONFIG_SERIAL_8250_EXTENDED is not set
  3071. +
  3072. +#
  3073. +# Non-8250 serial port support
  3074. +#
  3075. +CONFIG_SERIAL_CORE=y
  3076. +CONFIG_SERIAL_CORE_CONSOLE=y
  3077. +# CONFIG_SERIAL_JSM is not set
  3078. +CONFIG_UNIX98_PTYS=y
  3079. +# CONFIG_LEGACY_PTYS is not set
  3080. +
  3081. +#
  3082. +# IPMI
  3083. +#
  3084. +# CONFIG_IPMI_HANDLER is not set
  3085. +CONFIG_WATCHDOG=y
  3086. +# CONFIG_WATCHDOG_NOWAYOUT is not set
  3087. +
  3088. +#
  3089. +# Watchdog Device Drivers
  3090. +#
  3091. +# CONFIG_SOFT_WATCHDOG is not set
  3092. +# CONFIG_ACQUIRE_WDT is not set
  3093. +# CONFIG_ADVANTECH_WDT is not set
  3094. +# CONFIG_ALIM1535_WDT is not set
  3095. +# CONFIG_ALIM7101_WDT is not set
  3096. +# CONFIG_SC520_WDT is not set
  3097. +# CONFIG_EUROTECH_WDT is not set
  3098. +# CONFIG_IB700_WDT is not set
  3099. +# CONFIG_IBMASR is not set
  3100. +# CONFIG_WAFER_WDT is not set
  3101. +# CONFIG_I6300ESB_WDT is not set
  3102. +# CONFIG_ITCO_WDT is not set
  3103. +# CONFIG_SC1200_WDT is not set
  3104. +# CONFIG_PC87413_WDT is not set
  3105. +# CONFIG_60XX_WDT is not set
  3106. +# CONFIG_SBC8360_WDT is not set
  3107. +# CONFIG_CPU5_WDT is not set
  3108. +# CONFIG_SMSC37B787_WDT is not set
  3109. +# CONFIG_W83627HF_WDT is not set
  3110. +# CONFIG_W83697HF_WDT is not set
  3111. +# CONFIG_W83877F_WDT is not set
  3112. +# CONFIG_W83977F_WDT is not set
  3113. +# CONFIG_MACHZ_WDT is not set
  3114. +# CONFIG_SBC_EPX_C3_WATCHDOG is not set
  3115. +
  3116. +#
  3117. +# ISA-based Watchdog Cards
  3118. +#
  3119. +# CONFIG_PCWATCHDOG is not set
  3120. +# CONFIG_MIXCOMWD is not set
  3121. +# CONFIG_WDT is not set
  3122. +
  3123. +#
  3124. +# PCI-based Watchdog Cards
  3125. +#
  3126. +# CONFIG_PCIPCWATCHDOG is not set
  3127. +# CONFIG_WDTPCI is not set
  3128. +
  3129. +#
  3130. +# USB-based Watchdog Cards
  3131. +#
  3132. +# CONFIG_USBPCWATCHDOG is not set
  3133. +CONFIG_HW_RANDOM=y
  3134. +CONFIG_HW_RANDOM_INTEL=y
  3135. +CONFIG_HW_RANDOM_AMD=y
  3136. +CONFIG_HW_RANDOM_GEODE=y
  3137. +CONFIG_HW_RANDOM_VIA=y
  3138. +CONFIG_NVRAM=y
  3139. +CONFIG_RTC=y
  3140. +# CONFIG_DTLK is not set
  3141. +# CONFIG_R3964 is not set
  3142. +# CONFIG_APPLICOM is not set
  3143. +# CONFIG_SONYPI is not set
  3144. +# CONFIG_AGP is not set
  3145. +# CONFIG_DRM is not set
  3146. +# CONFIG_MWAVE is not set
  3147. +# CONFIG_PC8736x_GPIO is not set
  3148. +# CONFIG_NSC_GPIO is not set
  3149. +# CONFIG_CS5535_GPIO is not set
  3150. +# CONFIG_RAW_DRIVER is not set
  3151. +# CONFIG_HPET is not set
  3152. +# CONFIG_HANGCHECK_TIMER is not set
  3153. +
  3154. +#
  3155. +# TPM devices
  3156. +#
  3157. +# CONFIG_TCG_TPM is not set
  3158. +# CONFIG_TELCLOCK is not set
  3159. +CONFIG_DEVPORT=y
  3160. +CONFIG_I2C=y
  3161. +CONFIG_I2C_BOARDINFO=y
  3162. +# CONFIG_I2C_CHARDEV is not set
  3163. +
  3164. +#
  3165. +# I2C Algorithms
  3166. +#
  3167. +# CONFIG_I2C_ALGOBIT is not set
  3168. +# CONFIG_I2C_ALGOPCF is not set
  3169. +# CONFIG_I2C_ALGOPCA is not set
  3170. +
  3171. +#
  3172. +# I2C Hardware Bus support
  3173. +#
  3174. +# CONFIG_I2C_ALI1535 is not set
  3175. +# CONFIG_I2C_ALI1563 is not set
  3176. +# CONFIG_I2C_ALI15X3 is not set
  3177. +# CONFIG_I2C_AMD756 is not set
  3178. +# CONFIG_I2C_AMD8111 is not set
  3179. +# CONFIG_I2C_ELEKTOR is not set
  3180. +# CONFIG_I2C_I801 is not set
  3181. +# CONFIG_I2C_I810 is not set
  3182. +# CONFIG_I2C_PIIX4 is not set
  3183. +# CONFIG_I2C_NFORCE2 is not set
  3184. +# CONFIG_I2C_OCORES is not set
  3185. +# CONFIG_I2C_PARPORT_LIGHT is not set
  3186. +# CONFIG_I2C_PROSAVAGE is not set
  3187. +# CONFIG_I2C_SAVAGE4 is not set
  3188. +# CONFIG_I2C_SIMTEC is not set
  3189. +# CONFIG_SCx200_ACB is not set
  3190. +# CONFIG_I2C_SIS5595 is not set
  3191. +# CONFIG_I2C_SIS630 is not set
  3192. +# CONFIG_I2C_SIS96X is not set
  3193. +# CONFIG_I2C_STUB is not set
  3194. +# CONFIG_I2C_TINY_USB is not set
  3195. +# CONFIG_I2C_VIA is not set
  3196. +# CONFIG_I2C_VIAPRO is not set
  3197. +# CONFIG_I2C_VOODOO3 is not set
  3198. +# CONFIG_I2C_PCA_ISA is not set
  3199. +
  3200. +#
  3201. +# Miscellaneous I2C Chip support
  3202. +#
  3203. +# CONFIG_SENSORS_DS1337 is not set
  3204. +# CONFIG_SENSORS_DS1374 is not set
  3205. +# CONFIG_SENSORS_EEPROM is not set
  3206. +# CONFIG_SENSORS_PCF8574 is not set
  3207. +# CONFIG_SENSORS_PCA9539 is not set
  3208. +# CONFIG_SENSORS_PCF8591 is not set
  3209. +# CONFIG_SENSORS_MAX6875 is not set
  3210. +# CONFIG_I2C_DEBUG_CORE is not set
  3211. +# CONFIG_I2C_DEBUG_ALGO is not set
  3212. +# CONFIG_I2C_DEBUG_BUS is not set
  3213. +# CONFIG_I2C_DEBUG_CHIP is not set
  3214. +
  3215. +#
  3216. +# SPI support
  3217. +#
  3218. +# CONFIG_SPI is not set
  3219. +# CONFIG_SPI_MASTER is not set
  3220. +
  3221. +#
  3222. +# Dallas's 1-wire bus
  3223. +#
  3224. +# CONFIG_W1 is not set
  3225. +CONFIG_HWMON=y
  3226. +# CONFIG_HWMON_VID is not set
  3227. +# CONFIG_SENSORS_ABITUGURU is not set
  3228. +# CONFIG_SENSORS_AD7418 is not set
  3229. +# CONFIG_SENSORS_ADM1021 is not set
  3230. +# CONFIG_SENSORS_ADM1025 is not set
  3231. +# CONFIG_SENSORS_ADM1026 is not set
  3232. +# CONFIG_SENSORS_ADM1029 is not set
  3233. +# CONFIG_SENSORS_ADM1031 is not set
  3234. +# CONFIG_SENSORS_ADM9240 is not set
  3235. +# CONFIG_SENSORS_K8TEMP is not set
  3236. +# CONFIG_SENSORS_ASB100 is not set
  3237. +# CONFIG_SENSORS_ATXP1 is not set
  3238. +# CONFIG_SENSORS_DS1621 is not set
  3239. +# CONFIG_SENSORS_F71805F is not set
  3240. +# CONFIG_SENSORS_FSCHER is not set
  3241. +# CONFIG_SENSORS_FSCPOS is not set
  3242. +# CONFIG_SENSORS_GL518SM is not set
  3243. +# CONFIG_SENSORS_GL520SM is not set
  3244. +# CONFIG_SENSORS_CORETEMP is not set
  3245. +# CONFIG_SENSORS_IT87 is not set
  3246. +# CONFIG_SENSORS_LM63 is not set
  3247. +# CONFIG_SENSORS_LM75 is not set
  3248. +# CONFIG_SENSORS_LM77 is not set
  3249. +# CONFIG_SENSORS_LM78 is not set
  3250. +# CONFIG_SENSORS_LM80 is not set
  3251. +# CONFIG_SENSORS_LM83 is not set
  3252. +# CONFIG_SENSORS_LM85 is not set
  3253. +# CONFIG_SENSORS_LM87 is not set
  3254. +# CONFIG_SENSORS_LM90 is not set
  3255. +# CONFIG_SENSORS_LM92 is not set
  3256. +# CONFIG_SENSORS_MAX1619 is not set
  3257. +# CONFIG_SENSORS_MAX6650 is not set
  3258. +# CONFIG_SENSORS_PC87360 is not set
  3259. +# CONFIG_SENSORS_PC87427 is not set
  3260. +# CONFIG_SENSORS_SIS5595 is not set
  3261. +# CONFIG_SENSORS_SMSC47M1 is not set
  3262. +# CONFIG_SENSORS_SMSC47M192 is not set
  3263. +# CONFIG_SENSORS_SMSC47B397 is not set
  3264. +# CONFIG_SENSORS_VIA686A is not set
  3265. +# CONFIG_SENSORS_VT1211 is not set
  3266. +# CONFIG_SENSORS_VT8231 is not set
  3267. +# CONFIG_SENSORS_W83781D is not set
  3268. +# CONFIG_SENSORS_W83791D is not set
  3269. +# CONFIG_SENSORS_W83792D is not set
  3270. +# CONFIG_SENSORS_W83793 is not set
  3271. +# CONFIG_SENSORS_W83L785TS is not set
  3272. +# CONFIG_SENSORS_W83627HF is not set
  3273. +# CONFIG_SENSORS_W83627EHF is not set
  3274. +# CONFIG_SENSORS_HDAPS is not set
  3275. +# CONFIG_SENSORS_APPLESMC is not set
  3276. +# CONFIG_HWMON_DEBUG_CHIP is not set
  3277. +
  3278. +#
  3279. +# Multifunction device drivers
  3280. +#
  3281. +# CONFIG_MFD_SM501 is not set
  3282. +
  3283. +#
  3284. +# Multimedia devices
  3285. +#
  3286. +# CONFIG_VIDEO_DEV is not set
  3287. +# CONFIG_DVB_CORE is not set
  3288. +# CONFIG_DAB is not set
  3289. +
  3290. +#
  3291. +# Graphics support
  3292. +#
  3293. +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
  3294. +
  3295. +#
  3296. +# Display device support
  3297. +#
  3298. +# CONFIG_DISPLAY_SUPPORT is not set
  3299. +# CONFIG_VGASTATE is not set
  3300. +# CONFIG_FB is not set
  3301. +# CONFIG_VIDEO_SELECT is not set
  3302. +
  3303. +#
  3304. +# Console display driver support
  3305. +#
  3306. +CONFIG_VGA_CONSOLE=y
  3307. +# CONFIG_VGACON_SOFT_SCROLLBACK is not set
  3308. +# CONFIG_MDA_CONSOLE is not set
  3309. +CONFIG_DUMMY_CONSOLE=y
  3310. +
  3311. +#
  3312. +# Sound
  3313. +#
  3314. +# CONFIG_SOUND is not set
  3315. +
  3316. +#
  3317. +# HID Devices
  3318. +#
  3319. +# CONFIG_HID is not set
  3320. +
  3321. +#
  3322. +# USB Input Devices
  3323. +#
  3324. +# CONFIG_USB_HID is not set
  3325. +
  3326. +#
  3327. +# USB HID Boot Protocol drivers
  3328. +#
  3329. +# CONFIG_USB_KBD is not set
  3330. +# CONFIG_USB_MOUSE is not set
  3331. +
  3332. +#
  3333. +# USB support
  3334. +#
  3335. +CONFIG_USB_ARCH_HAS_HCD=y
  3336. +CONFIG_USB_ARCH_HAS_OHCI=y
  3337. +CONFIG_USB_ARCH_HAS_EHCI=y
  3338. +CONFIG_USB=y
  3339. +# CONFIG_USB_DEBUG is not set
  3340. +
  3341. +#
  3342. +# Miscellaneous USB options
  3343. +#
  3344. +# CONFIG_USB_DEVICEFS is not set
  3345. +CONFIG_USB_DEVICE_CLASS=y
  3346. +# CONFIG_USB_DYNAMIC_MINORS is not set
  3347. +# CONFIG_USB_SUSPEND is not set
  3348. +# CONFIG_USB_OTG is not set
  3349. +
  3350. +#
  3351. +# USB Host Controller Drivers
  3352. +#
  3353. +# CONFIG_USB_EHCI_HCD is not set
  3354. +# CONFIG_USB_ISP116X_HCD is not set
  3355. +CONFIG_USB_OHCI_HCD=y
  3356. +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
  3357. +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
  3358. +CONFIG_USB_OHCI_LITTLE_ENDIAN=y
  3359. +# CONFIG_USB_UHCI_HCD is not set
  3360. +# CONFIG_USB_SL811_HCD is not set
  3361. +
  3362. +#
  3363. +# USB Device Class drivers
  3364. +#
  3365. +# CONFIG_USB_ACM is not set
  3366. +# CONFIG_USB_PRINTER is not set
  3367. +
  3368. +#
  3369. +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
  3370. +#
  3371. +
  3372. +#
  3373. +# may also be needed; see USB_STORAGE Help for more information
  3374. +#
  3375. +# CONFIG_USB_LIBUSUAL is not set
  3376. +
  3377. +#
  3378. +# USB Imaging devices
  3379. +#
  3380. +# CONFIG_USB_MDC800 is not set
  3381. +CONFIG_USB_MON=y
  3382. +
  3383. +#
  3384. +# USB port drivers
  3385. +#
  3386. +
  3387. +#
  3388. +# USB Serial Converter support
  3389. +#
  3390. +# CONFIG_USB_SERIAL is not set
  3391. +
  3392. +#
  3393. +# USB Miscellaneous drivers
  3394. +#
  3395. +# CONFIG_USB_EMI62 is not set
  3396. +# CONFIG_USB_EMI26 is not set
  3397. +# CONFIG_USB_ADUTUX is not set
  3398. +# CONFIG_USB_AUERSWALD is not set
  3399. +# CONFIG_USB_RIO500 is not set
  3400. +# CONFIG_USB_LEGOTOWER is not set
  3401. +# CONFIG_USB_LCD is not set
  3402. +# CONFIG_USB_BERRY_CHARGE is not set
  3403. +# CONFIG_USB_LED is not set
  3404. +# CONFIG_USB_CYPRESS_CY7C63 is not set
  3405. +# CONFIG_USB_CYTHERM is not set
  3406. +# CONFIG_USB_PHIDGET is not set
  3407. +# CONFIG_USB_IDMOUSE is not set
  3408. +# CONFIG_USB_FTDI_ELAN is not set
  3409. +# CONFIG_USB_APPLEDISPLAY is not set
  3410. +# CONFIG_USB_LD is not set
  3411. +# CONFIG_USB_TRANCEVIBRATOR is not set
  3412. +# CONFIG_USB_IOWARRIOR is not set
  3413. +
  3414. +#
  3415. +# USB DSL modem support
  3416. +#
  3417. +
  3418. +#
  3419. +# USB Gadget Support
  3420. +#
  3421. +# CONFIG_USB_GADGET is not set
  3422. +# CONFIG_MMC is not set
  3423. +
  3424. +#
  3425. +# LED devices
  3426. +#
  3427. +# CONFIG_NEW_LEDS is not set
  3428. +
  3429. +#
  3430. +# LED drivers
  3431. +#
  3432. +
  3433. +#
  3434. +# LED Triggers
  3435. +#
  3436. +
  3437. +#
  3438. +# InfiniBand support
  3439. +#
  3440. +# CONFIG_INFINIBAND is not set
  3441. +
  3442. +#
  3443. +# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
  3444. +#
  3445. +# CONFIG_EDAC is not set
  3446. +
  3447. +#
  3448. +# Real Time Clock
  3449. +#
  3450. +# CONFIG_RTC_CLASS is not set
  3451. +
  3452. +#
  3453. +# DMA Engine support
  3454. +#
  3455. +# CONFIG_DMA_ENGINE is not set
  3456. +
  3457. +#
  3458. +# DMA Clients
  3459. +#
  3460. +
  3461. +#
  3462. +# DMA Devices
  3463. +#
  3464. +
  3465. +#
  3466. +# Virtualization
  3467. +#
  3468. +# CONFIG_KVM is not set
  3469. +
  3470. +#
  3471. +# Cobalt RaQ/Qube Hardware
  3472. +#
  3473. +CONFIG_COBALT_RAQ=y
  3474. +# CONFIG_COBALT_GEN_III is not set
  3475. +CONFIG_COBALT_GEN_V=y
  3476. +CONFIG_COBALT_OLDPROC=y
  3477. +
  3478. +#
  3479. +# Cobalt Hardware Options
  3480. +#
  3481. +CONFIG_COBALT_LCD=y
  3482. +CONFIG_COBALT_LCD_TWIDDLE=y
  3483. +CONFIG_COBALT_LED=y
  3484. +CONFIG_COBALT_SERNUM=y
  3485. +CONFIG_COBALT_WDT=y
  3486. +CONFIG_COBALT_POWERMODE=y
  3487. +CONFIG_COBALT_SENSORS=y
  3488. +CONFIG_COBALT_FANS=y
  3489. +CONFIG_COBALT_RAMINFO=y
  3490. +CONFIG_COBALT_RULER=y
  3491. +CONFIG_COBALT_ACPI=y
  3492. +CONFIG_COBALT_EMU_ACPI=y
  3493. +
  3494. +#
  3495. +# File systems
  3496. +#
  3497. +CONFIG_EXT2_FS=y
  3498. +# CONFIG_EXT2_FS_XATTR is not set
  3499. +# CONFIG_EXT2_FS_XIP is not set
  3500. +CONFIG_EXT3_FS=y
  3501. +CONFIG_EXT3_FS_XATTR=y
  3502. +# CONFIG_EXT3_FS_POSIX_ACL is not set
  3503. +# CONFIG_EXT3_FS_SECURITY is not set
  3504. +# CONFIG_EXT4DEV_FS is not set
  3505. +CONFIG_JBD=y
  3506. +# CONFIG_JBD_DEBUG is not set
  3507. +CONFIG_FS_MBCACHE=y
  3508. +# CONFIG_REISERFS_FS is not set
  3509. +# CONFIG_JFS_FS is not set
  3510. +# CONFIG_FS_POSIX_ACL is not set
  3511. +# CONFIG_XFS_FS is not set
  3512. +# CONFIG_GFS2_FS is not set
  3513. +# CONFIG_OCFS2_FS is not set
  3514. +# CONFIG_MINIX_FS is not set
  3515. +# CONFIG_ROMFS_FS is not set
  3516. +CONFIG_INOTIFY=y
  3517. +CONFIG_INOTIFY_USER=y
  3518. +# CONFIG_QUOTA is not set
  3519. +CONFIG_DNOTIFY=y
  3520. +# CONFIG_AUTOFS_FS is not set
  3521. +CONFIG_AUTOFS4_FS=y
  3522. +# CONFIG_FUSE_FS is not set
  3523. +
  3524. +#
  3525. +# CD-ROM/DVD Filesystems
  3526. +#
  3527. +# CONFIG_ISO9660_FS is not set
  3528. +# CONFIG_UDF_FS is not set
  3529. +
  3530. +#
  3531. +# DOS/FAT/NT Filesystems
  3532. +#
  3533. +# CONFIG_MSDOS_FS is not set
  3534. +# CONFIG_VFAT_FS is not set
  3535. +# CONFIG_NTFS_FS is not set
  3536. +
  3537. +#
  3538. +# Pseudo filesystems
  3539. +#
  3540. +CONFIG_PROC_FS=y
  3541. +# CONFIG_PROC_KCORE is not set
  3542. +CONFIG_PROC_SYSCTL=y
  3543. +CONFIG_SYSFS=y
  3544. +CONFIG_TMPFS=y
  3545. +# CONFIG_TMPFS_POSIX_ACL is not set
  3546. +# CONFIG_HUGETLBFS is not set
  3547. +# CONFIG_HUGETLB_PAGE is not set
  3548. +CONFIG_RAMFS=y
  3549. +# CONFIG_CONFIGFS_FS is not set
  3550. +
  3551. +#
  3552. +# Miscellaneous filesystems
  3553. +#
  3554. +# CONFIG_ADFS_FS is not set
  3555. +# CONFIG_AFFS_FS is not set
  3556. +# CONFIG_HFS_FS is not set
  3557. +# CONFIG_HFSPLUS_FS is not set
  3558. +# CONFIG_BEFS_FS is not set
  3559. +# CONFIG_BFS_FS is not set
  3560. +# CONFIG_EFS_FS is not set
  3561. +# CONFIG_CRAMFS is not set
  3562. +# CONFIG_SQUASHFS is not set
  3563. +# CONFIG_VXFS_FS is not set
  3564. +# CONFIG_HPFS_FS is not set
  3565. +# CONFIG_QNX4FS_FS is not set
  3566. +# CONFIG_SYSV_FS is not set
  3567. +# CONFIG_UFS_FS is not set
  3568. +
  3569. +#
  3570. +# Network File Systems
  3571. +#
  3572. +CONFIG_NFS_FS=m
  3573. +# CONFIG_NFS_V3 is not set
  3574. +# CONFIG_NFS_V4 is not set
  3575. +# CONFIG_NFS_DIRECTIO is not set
  3576. +# CONFIG_NFSD is not set
  3577. +CONFIG_LOCKD=m
  3578. +CONFIG_NFS_COMMON=y
  3579. +CONFIG_SUNRPC=m
  3580. +# CONFIG_SUNRPC_BIND34 is not set
  3581. +# CONFIG_RPCSEC_GSS_KRB5 is not set
  3582. +# CONFIG_RPCSEC_GSS_SPKM3 is not set
  3583. +# CONFIG_SMB_FS is not set
  3584. +# CONFIG_CIFS is not set
  3585. +# CONFIG_NCP_FS is not set
  3586. +# CONFIG_CODA_FS is not set
  3587. +# CONFIG_AFS_FS is not set
  3588. +# CONFIG_9P_FS is not set
  3589. +
  3590. +#
  3591. +# Partition Types
  3592. +#
  3593. +# CONFIG_PARTITION_ADVANCED is not set
  3594. +CONFIG_MSDOS_PARTITION=y
  3595. +
  3596. +#
  3597. +# Native Language Support
  3598. +#
  3599. +CONFIG_NLS=y
  3600. +CONFIG_NLS_DEFAULT="iso8859-1"
  3601. +CONFIG_NLS_CODEPAGE_437=y
  3602. +# CONFIG_NLS_CODEPAGE_737 is not set
  3603. +# CONFIG_NLS_CODEPAGE_775 is not set
  3604. +# CONFIG_NLS_CODEPAGE_850 is not set
  3605. +# CONFIG_NLS_CODEPAGE_852 is not set
  3606. +# CONFIG_NLS_CODEPAGE_855 is not set
  3607. +# CONFIG_NLS_CODEPAGE_857 is not set
  3608. +# CONFIG_NLS_CODEPAGE_860 is not set
  3609. +# CONFIG_NLS_CODEPAGE_861 is not set
  3610. +# CONFIG_NLS_CODEPAGE_862 is not set
  3611. +# CONFIG_NLS_CODEPAGE_863 is not set
  3612. +# CONFIG_NLS_CODEPAGE_864 is not set
  3613. +# CONFIG_NLS_CODEPAGE_865 is not set
  3614. +# CONFIG_NLS_CODEPAGE_866 is not set
  3615. +# CONFIG_NLS_CODEPAGE_869 is not set
  3616. +# CONFIG_NLS_CODEPAGE_936 is not set
  3617. +# CONFIG_NLS_CODEPAGE_950 is not set
  3618. +# CONFIG_NLS_CODEPAGE_932 is not set
  3619. +# CONFIG_NLS_CODEPAGE_949 is not set
  3620. +# CONFIG_NLS_CODEPAGE_874 is not set
  3621. +# CONFIG_NLS_ISO8859_8 is not set
  3622. +# CONFIG_NLS_CODEPAGE_1250 is not set
  3623. +# CONFIG_NLS_CODEPAGE_1251 is not set
  3624. +# CONFIG_NLS_ASCII is not set
  3625. +CONFIG_NLS_ISO8859_1=y
  3626. +# CONFIG_NLS_ISO8859_2 is not set
  3627. +# CONFIG_NLS_ISO8859_3 is not set
  3628. +# CONFIG_NLS_ISO8859_4 is not set
  3629. +# CONFIG_NLS_ISO8859_5 is not set
  3630. +# CONFIG_NLS_ISO8859_6 is not set
  3631. +# CONFIG_NLS_ISO8859_7 is not set
  3632. +# CONFIG_NLS_ISO8859_9 is not set
  3633. +# CONFIG_NLS_ISO8859_13 is not set
  3634. +# CONFIG_NLS_ISO8859_14 is not set
  3635. +# CONFIG_NLS_ISO8859_15 is not set
  3636. +# CONFIG_NLS_KOI8_R is not set
  3637. +# CONFIG_NLS_KOI8_U is not set
  3638. +# CONFIG_NLS_UTF8 is not set
  3639. +
  3640. +#
  3641. +# Distributed Lock Manager
  3642. +#
  3643. +# CONFIG_DLM is not set
  3644. +
  3645. +#
  3646. +# Instrumentation Support
  3647. +#
  3648. +# CONFIG_PROFILING is not set
  3649. +# CONFIG_KPROBES is not set
  3650. +
  3651. +#
  3652. +# Kernel hacking
  3653. +#
  3654. +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
  3655. +# CONFIG_PRINTK_TIME is not set
  3656. +CONFIG_ENABLE_MUST_CHECK=y
  3657. +# CONFIG_MAGIC_SYSRQ is not set
  3658. +CONFIG_UNUSED_SYMBOLS=y
  3659. +# CONFIG_DEBUG_FS is not set
  3660. +# CONFIG_HEADERS_CHECK is not set
  3661. +# CONFIG_DEBUG_KERNEL is not set
  3662. +CONFIG_DEBUG_BUGVERBOSE=y
  3663. +CONFIG_EARLY_PRINTK=y
  3664. +CONFIG_DOUBLEFAULT=y
  3665. +
  3666. +#
  3667. +# Security options
  3668. +#
  3669. +# CONFIG_KEYS is not set
  3670. +# CONFIG_SECURITY is not set
  3671. +
  3672. +#
  3673. +# Cryptographic options
  3674. +#
  3675. +# CONFIG_CRYPTO is not set
  3676. +
  3677. +#
  3678. +# Library routines
  3679. +#
  3680. +CONFIG_BITREVERSE=y
  3681. +# CONFIG_CRC_CCITT is not set
  3682. +# CONFIG_CRC16 is not set
  3683. +# CONFIG_CRC_ITU_T is not set
  3684. +CONFIG_CRC32=y
  3685. +# CONFIG_LIBCRC32C is not set
  3686. +CONFIG_PLIST=y
  3687. +CONFIG_HAS_IOMEM=y
  3688. +CONFIG_HAS_IOPORT=y
  3689. +CONFIG_HAS_DMA=y
  3690. +CONFIG_GENERIC_HARDIRQS=y
  3691. +CONFIG_GENERIC_IRQ_PROBE=y
  3692. +CONFIG_X86_BIOS_REBOOT=y
  3693. +CONFIG_KTIME_SCALAR=y
  3694. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/configs/raqxtr_defconfig linux-3.2.5-cobalt/arch/x86/configs/raqxtr_defconfig
  3695. --- linux-3.2.5/arch/x86/configs/raqxtr_defconfig 1969-12-31 16:00:00.000000000 -0800
  3696. +++ linux-3.2.5-cobalt/arch/x86/configs/raqxtr_defconfig 2012-02-06 21:34:59.000000000 -0800
  3697. @@ -0,0 +1,1324 @@
  3698. +#
  3699. +# Automatically generated make config: don't edit
  3700. +# Linux kernel version: 2.6.22-gentoo-r9
  3701. +# Mon Nov 12 08:26:53 2007
  3702. +#
  3703. +CONFIG_X86_32=y
  3704. +CONFIG_GENERIC_TIME=y
  3705. +CONFIG_CLOCKSOURCE_WATCHDOG=y
  3706. +CONFIG_GENERIC_CLOCKEVENTS=y
  3707. +CONFIG_LOCKDEP_SUPPORT=y
  3708. +CONFIG_STACKTRACE_SUPPORT=y
  3709. +CONFIG_SEMAPHORE_SLEEPERS=y
  3710. +CONFIG_X86=y
  3711. +CONFIG_MMU=y
  3712. +CONFIG_ZONE_DMA=y
  3713. +CONFIG_QUICKLIST=y
  3714. +CONFIG_GENERIC_ISA_DMA=y
  3715. +CONFIG_GENERIC_IOMAP=y
  3716. +CONFIG_GENERIC_BUG=y
  3717. +CONFIG_GENERIC_HWEIGHT=y
  3718. +CONFIG_ARCH_MAY_HAVE_PC_FDC=y
  3719. +CONFIG_DMI=y
  3720. +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
  3721. +
  3722. +#
  3723. +# Code maturity level options
  3724. +#
  3725. +CONFIG_EXPERIMENTAL=y
  3726. +CONFIG_BROKEN_ON_SMP=y
  3727. +CONFIG_INIT_ENV_ARG_LIMIT=32
  3728. +
  3729. +#
  3730. +# General setup
  3731. +#
  3732. +CONFIG_LOCALVERSION=""
  3733. +CONFIG_LOCALVERSION_AUTO=y
  3734. +CONFIG_SWAP=y
  3735. +CONFIG_SYSVIPC=y
  3736. +# CONFIG_IPC_NS is not set
  3737. +CONFIG_SYSVIPC_SYSCTL=y
  3738. +# CONFIG_POSIX_MQUEUE is not set
  3739. +# CONFIG_BSD_PROCESS_ACCT is not set
  3740. +# CONFIG_TASKSTATS is not set
  3741. +# CONFIG_UTS_NS is not set
  3742. +# CONFIG_AUDIT is not set
  3743. +CONFIG_IKCONFIG=y
  3744. +CONFIG_IKCONFIG_PROC=y
  3745. +CONFIG_LOG_BUF_SHIFT=14
  3746. +CONFIG_SYSFS_DEPRECATED=y
  3747. +# CONFIG_RELAY is not set
  3748. +# CONFIG_BLK_DEV_INITRD is not set
  3749. +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
  3750. +CONFIG_SYSCTL=y
  3751. +# CONFIG_EMBEDDED is not set
  3752. +CONFIG_UID16=y
  3753. +CONFIG_SYSCTL_SYSCALL=y
  3754. +CONFIG_KALLSYMS=y
  3755. +# CONFIG_KALLSYMS_EXTRA_PASS is not set
  3756. +CONFIG_HOTPLUG=y
  3757. +CONFIG_PRINTK=y
  3758. +CONFIG_BUG=y
  3759. +CONFIG_ELF_CORE=y
  3760. +CONFIG_BASE_FULL=y
  3761. +CONFIG_FUTEX=y
  3762. +CONFIG_ANON_INODES=y
  3763. +CONFIG_EPOLL=y
  3764. +CONFIG_SIGNALFD=y
  3765. +CONFIG_EVENTFD=y
  3766. +CONFIG_SHMEM=y
  3767. +CONFIG_VM_EVENT_COUNTERS=y
  3768. +CONFIG_SLAB=y
  3769. +# CONFIG_SLUB is not set
  3770. +# CONFIG_SLOB is not set
  3771. +CONFIG_RT_MUTEXES=y
  3772. +# CONFIG_TINY_SHMEM is not set
  3773. +CONFIG_BASE_SMALL=0
  3774. +
  3775. +#
  3776. +# Loadable module support
  3777. +#
  3778. +CONFIG_MODULES=y
  3779. +CONFIG_MODULE_UNLOAD=y
  3780. +CONFIG_MODULE_FORCE_UNLOAD=y
  3781. +CONFIG_MODVERSIONS=y
  3782. +# CONFIG_MODULE_SRCVERSION_ALL is not set
  3783. +CONFIG_KMOD=y
  3784. +
  3785. +#
  3786. +# Block layer
  3787. +#
  3788. +CONFIG_BLOCK=y
  3789. +CONFIG_LBD=y
  3790. +# CONFIG_BLK_DEV_IO_TRACE is not set
  3791. +# CONFIG_LSF is not set
  3792. +
  3793. +#
  3794. +# IO Schedulers
  3795. +#
  3796. +CONFIG_IOSCHED_NOOP=y
  3797. +CONFIG_IOSCHED_AS=y
  3798. +# CONFIG_IOSCHED_DEADLINE is not set
  3799. +# CONFIG_IOSCHED_CFQ is not set
  3800. +CONFIG_DEFAULT_AS=y
  3801. +# CONFIG_DEFAULT_DEADLINE is not set
  3802. +# CONFIG_DEFAULT_CFQ is not set
  3803. +# CONFIG_DEFAULT_NOOP is not set
  3804. +CONFIG_DEFAULT_IOSCHED="anticipatory"
  3805. +
  3806. +#
  3807. +# Processor type and features
  3808. +#
  3809. +# CONFIG_TICK_ONESHOT is not set
  3810. +# CONFIG_NO_HZ is not set
  3811. +# CONFIG_HIGH_RES_TIMERS is not set
  3812. +# CONFIG_SMP is not set
  3813. +CONFIG_X86_PC=y
  3814. +# CONFIG_X86_ELAN is not set
  3815. +# CONFIG_X86_VOYAGER is not set
  3816. +# CONFIG_X86_NUMAQ is not set
  3817. +# CONFIG_X86_SUMMIT is not set
  3818. +# CONFIG_X86_BIGSMP is not set
  3819. +# CONFIG_X86_VISWS is not set
  3820. +# CONFIG_X86_GENERICARCH is not set
  3821. +# CONFIG_X86_ES7000 is not set
  3822. +# CONFIG_PARAVIRT is not set
  3823. +# CONFIG_M386 is not set
  3824. +# CONFIG_M486 is not set
  3825. +# CONFIG_M586 is not set
  3826. +# CONFIG_M586TSC is not set
  3827. +# CONFIG_M586MMX is not set
  3828. +# CONFIG_M686 is not set
  3829. +# CONFIG_MPENTIUMII is not set
  3830. +CONFIG_MPENTIUMIII=y
  3831. +# CONFIG_MPENTIUMM is not set
  3832. +# CONFIG_MCORE2 is not set
  3833. +# CONFIG_MPENTIUM4 is not set
  3834. +# CONFIG_MK6 is not set
  3835. +# CONFIG_MK7 is not set
  3836. +# CONFIG_MK8 is not set
  3837. +# CONFIG_MCRUSOE is not set
  3838. +# CONFIG_MEFFICEON is not set
  3839. +# CONFIG_MWINCHIPC6 is not set
  3840. +# CONFIG_MWINCHIP2 is not set
  3841. +# CONFIG_MWINCHIP3D is not set
  3842. +# CONFIG_MGEODEGX1 is not set
  3843. +# CONFIG_MGEODE_LX is not set
  3844. +# CONFIG_MCYRIXIII is not set
  3845. +# CONFIG_MVIAC3_2 is not set
  3846. +# CONFIG_MVIAC7 is not set
  3847. +# CONFIG_X86_GENERIC is not set
  3848. +CONFIG_X86_CMPXCHG=y
  3849. +CONFIG_X86_L1_CACHE_SHIFT=5
  3850. +CONFIG_X86_XADD=y
  3851. +CONFIG_RWSEM_XCHGADD_ALGORITHM=y
  3852. +# CONFIG_ARCH_HAS_ILOG2_U32 is not set
  3853. +# CONFIG_ARCH_HAS_ILOG2_U64 is not set
  3854. +CONFIG_GENERIC_CALIBRATE_DELAY=y
  3855. +CONFIG_X86_WP_WORKS_OK=y
  3856. +CONFIG_X86_INVLPG=y
  3857. +CONFIG_X86_BSWAP=y
  3858. +CONFIG_X86_POPAD_OK=y
  3859. +CONFIG_X86_GOOD_APIC=y
  3860. +CONFIG_X86_INTEL_USERCOPY=y
  3861. +CONFIG_X86_USE_PPRO_CHECKSUM=y
  3862. +CONFIG_X86_TSC=y
  3863. +CONFIG_X86_CMOV=y
  3864. +CONFIG_X86_MINIMUM_CPU_MODEL=4
  3865. +# CONFIG_HPET_TIMER is not set
  3866. +CONFIG_PREEMPT_NONE=y
  3867. +# CONFIG_PREEMPT_VOLUNTARY is not set
  3868. +# CONFIG_PREEMPT is not set
  3869. +# CONFIG_X86_UP_APIC is not set
  3870. +# CONFIG_X86_MCE is not set
  3871. +CONFIG_VM86=y
  3872. +# CONFIG_TOSHIBA is not set
  3873. +# CONFIG_I8K is not set
  3874. +# CONFIG_X86_REBOOTFIXUPS is not set
  3875. +# CONFIG_MICROCODE is not set
  3876. +# CONFIG_X86_MSR is not set
  3877. +# CONFIG_X86_CPUID is not set
  3878. +
  3879. +#
  3880. +# Firmware Drivers
  3881. +#
  3882. +# CONFIG_EDD is not set
  3883. +# CONFIG_DELL_RBU is not set
  3884. +# CONFIG_DCDBAS is not set
  3885. +CONFIG_NOHIGHMEM=y
  3886. +# CONFIG_HIGHMEM4G is not set
  3887. +# CONFIG_HIGHMEM64G is not set
  3888. +# CONFIG_VMSPLIT_3G is not set
  3889. +# CONFIG_VMSPLIT_3G_OPT is not set
  3890. +# CONFIG_VMSPLIT_2G is not set
  3891. +# CONFIG_VMSPLIT_2G_OPT is not set
  3892. +# CONFIG_VMSPLIT_1G is not set
  3893. +CONFIG_PAGE_OFFSET=0xC0000000
  3894. +CONFIG_ARCH_FLATMEM_ENABLE=y
  3895. +CONFIG_ARCH_SPARSEMEM_ENABLE=y
  3896. +CONFIG_ARCH_SELECT_MEMORY_MODEL=y
  3897. +CONFIG_ARCH_POPULATES_NODE_MAP=y
  3898. +CONFIG_SELECT_MEMORY_MODEL=y
  3899. +CONFIG_FLATMEM_MANUAL=y
  3900. +# CONFIG_DISCONTIGMEM_MANUAL is not set
  3901. +# CONFIG_SPARSEMEM_MANUAL is not set
  3902. +CONFIG_FLATMEM=y
  3903. +CONFIG_FLAT_NODE_MEM_MAP=y
  3904. +CONFIG_SPARSEMEM_STATIC=y
  3905. +CONFIG_SPLIT_PTLOCK_CPUS=4
  3906. +# CONFIG_RESOURCES_64BIT is not set
  3907. +CONFIG_ZONE_DMA_FLAG=1
  3908. +CONFIG_NR_QUICK=1
  3909. +# CONFIG_MATH_EMULATION is not set
  3910. +CONFIG_MTRR=y
  3911. +# CONFIG_EFI is not set
  3912. +# CONFIG_SECCOMP is not set
  3913. +# CONFIG_HZ_100 is not set
  3914. +CONFIG_HZ_250=y
  3915. +# CONFIG_HZ_300 is not set
  3916. +# CONFIG_HZ_1000 is not set
  3917. +CONFIG_HZ=250
  3918. +# CONFIG_KEXEC is not set
  3919. +CONFIG_PHYSICAL_START=0x100000
  3920. +# CONFIG_RELOCATABLE is not set
  3921. +CONFIG_PHYSICAL_ALIGN=0x100000
  3922. +# CONFIG_COMPAT_VDSO is not set
  3923. +
  3924. +#
  3925. +# Power management options (ACPI, APM)
  3926. +#
  3927. +CONFIG_PM=y
  3928. +# CONFIG_PM_LEGACY is not set
  3929. +# CONFIG_PM_DEBUG is not set
  3930. +# CONFIG_PM_SYSFS_DEPRECATED is not set
  3931. +# CONFIG_SOFTWARE_SUSPEND is not set
  3932. +
  3933. +#
  3934. +# ACPI (Advanced Configuration and Power Interface) Support
  3935. +#
  3936. +CONFIG_ACPI=y
  3937. +CONFIG_ACPI_SLEEP=y
  3938. +CONFIG_ACPI_SLEEP_PROC_FS=y
  3939. +# CONFIG_ACPI_SLEEP_PROC_SLEEP is not set
  3940. +CONFIG_ACPI_PROCFS=y
  3941. +CONFIG_ACPI_AC=y
  3942. +CONFIG_ACPI_BATTERY=y
  3943. +CONFIG_ACPI_BUTTON=y
  3944. +CONFIG_ACPI_FAN=y
  3945. +# CONFIG_ACPI_DOCK is not set
  3946. +CONFIG_ACPI_PROCESSOR=y
  3947. +CONFIG_ACPI_THERMAL=y
  3948. +# CONFIG_ACPI_ASUS is not set
  3949. +# CONFIG_ACPI_TOSHIBA is not set
  3950. +CONFIG_ACPI_BLACKLIST_YEAR=0
  3951. +# CONFIG_ACPI_DEBUG is not set
  3952. +CONFIG_ACPI_EC=y
  3953. +CONFIG_ACPI_POWER=y
  3954. +CONFIG_ACPI_SYSTEM=y
  3955. +CONFIG_X86_PM_TIMER=y
  3956. +# CONFIG_ACPI_CONTAINER is not set
  3957. +# CONFIG_ACPI_SBS is not set
  3958. +# CONFIG_APM is not set
  3959. +
  3960. +#
  3961. +# CPU Frequency scaling
  3962. +#
  3963. +# CONFIG_CPU_FREQ is not set
  3964. +
  3965. +#
  3966. +# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
  3967. +#
  3968. +CONFIG_PCI=y
  3969. +# CONFIG_PCI_GOBIOS is not set
  3970. +# CONFIG_PCI_GOMMCONFIG is not set
  3971. +# CONFIG_PCI_GODIRECT is not set
  3972. +CONFIG_PCI_GOANY=y
  3973. +CONFIG_PCI_BIOS=y
  3974. +CONFIG_PCI_DIRECT=y
  3975. +CONFIG_PCI_MMCONFIG=y
  3976. +# CONFIG_PCIEPORTBUS is not set
  3977. +# CONFIG_ARCH_SUPPORTS_MSI is not set
  3978. +CONFIG_ISA_DMA_API=y
  3979. +CONFIG_ISA=y
  3980. +# CONFIG_EISA is not set
  3981. +# CONFIG_MCA is not set
  3982. +# CONFIG_SCx200 is not set
  3983. +
  3984. +#
  3985. +# PCCARD (PCMCIA/CardBus) support
  3986. +#
  3987. +# CONFIG_PCCARD is not set
  3988. +# CONFIG_HOTPLUG_PCI is not set
  3989. +
  3990. +#
  3991. +# Executable file formats
  3992. +#
  3993. +CONFIG_BINFMT_ELF=y
  3994. +CONFIG_BINFMT_AOUT=y
  3995. +CONFIG_BINFMT_MISC=y
  3996. +
  3997. +#
  3998. +# Networking
  3999. +#
  4000. +CONFIG_NET=y
  4001. +
  4002. +#
  4003. +# Networking options
  4004. +#
  4005. +CONFIG_PACKET=y
  4006. +# CONFIG_PACKET_MMAP is not set
  4007. +CONFIG_UNIX=y
  4008. +# CONFIG_NET_KEY is not set
  4009. +CONFIG_INET=y
  4010. +# CONFIG_IP_MULTICAST is not set
  4011. +# CONFIG_IP_ADVANCED_ROUTER is not set
  4012. +CONFIG_IP_FIB_HASH=y
  4013. +# CONFIG_IP_PNP is not set
  4014. +# CONFIG_NET_IPIP is not set
  4015. +# CONFIG_NET_IPGRE is not set
  4016. +# CONFIG_ARPD is not set
  4017. +# CONFIG_SYN_COOKIES is not set
  4018. +# CONFIG_INET_AH is not set
  4019. +# CONFIG_INET_ESP is not set
  4020. +# CONFIG_INET_IPCOMP is not set
  4021. +# CONFIG_INET_XFRM_TUNNEL is not set
  4022. +# CONFIG_INET_TUNNEL is not set
  4023. +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
  4024. +# CONFIG_INET_XFRM_MODE_TUNNEL is not set
  4025. +# CONFIG_INET_XFRM_MODE_BEET is not set
  4026. +# CONFIG_INET_DIAG is not set
  4027. +# CONFIG_TCP_CONG_ADVANCED is not set
  4028. +CONFIG_TCP_CONG_CUBIC=y
  4029. +CONFIG_DEFAULT_TCP_CONG="cubic"
  4030. +# CONFIG_TCP_MD5SIG is not set
  4031. +# CONFIG_IPV6 is not set
  4032. +# CONFIG_INET6_XFRM_TUNNEL is not set
  4033. +# CONFIG_INET6_TUNNEL is not set
  4034. +# CONFIG_NETWORK_SECMARK is not set
  4035. +# CONFIG_NETFILTER is not set
  4036. +# CONFIG_IP_DCCP is not set
  4037. +# CONFIG_IP_SCTP is not set
  4038. +# CONFIG_TIPC is not set
  4039. +# CONFIG_ATM is not set
  4040. +# CONFIG_BRIDGE is not set
  4041. +# CONFIG_VLAN_8021Q is not set
  4042. +# CONFIG_DECNET is not set
  4043. +# CONFIG_LLC2 is not set
  4044. +# CONFIG_IPX is not set
  4045. +# CONFIG_ATALK is not set
  4046. +# CONFIG_X25 is not set
  4047. +# CONFIG_LAPB is not set
  4048. +# CONFIG_ECONET is not set
  4049. +# CONFIG_WAN_ROUTER is not set
  4050. +
  4051. +#
  4052. +# QoS and/or fair queueing
  4053. +#
  4054. +# CONFIG_NET_SCHED is not set
  4055. +
  4056. +#
  4057. +# Network testing
  4058. +#
  4059. +# CONFIG_NET_PKTGEN is not set
  4060. +# CONFIG_HAMRADIO is not set
  4061. +# CONFIG_IRDA is not set
  4062. +# CONFIG_BT is not set
  4063. +# CONFIG_AF_RXRPC is not set
  4064. +
  4065. +#
  4066. +# Wireless
  4067. +#
  4068. +# CONFIG_CFG80211 is not set
  4069. +# CONFIG_WIRELESS_EXT is not set
  4070. +# CONFIG_MAC80211 is not set
  4071. +# CONFIG_IEEE80211 is not set
  4072. +# CONFIG_RFKILL is not set
  4073. +
  4074. +#
  4075. +# Device Drivers
  4076. +#
  4077. +
  4078. +#
  4079. +# Generic Driver Options
  4080. +#
  4081. +CONFIG_STANDALONE=y
  4082. +CONFIG_PREVENT_FIRMWARE_BUILD=y
  4083. +CONFIG_FW_LOADER=y
  4084. +# CONFIG_SYS_HYPERVISOR is not set
  4085. +
  4086. +#
  4087. +# Connector - unified userspace <-> kernelspace linker
  4088. +#
  4089. +# CONFIG_CONNECTOR is not set
  4090. +# CONFIG_MTD is not set
  4091. +
  4092. +#
  4093. +# Parallel port support
  4094. +#
  4095. +# CONFIG_PARPORT is not set
  4096. +
  4097. +#
  4098. +# Plug and Play support
  4099. +#
  4100. +CONFIG_PNP=y
  4101. +# CONFIG_PNP_DEBUG is not set
  4102. +
  4103. +#
  4104. +# Protocols
  4105. +#
  4106. +CONFIG_ISAPNP=y
  4107. +# CONFIG_PNPBIOS is not set
  4108. +CONFIG_PNPACPI=y
  4109. +
  4110. +#
  4111. +# Block devices
  4112. +#
  4113. +# CONFIG_BLK_DEV_FD is not set
  4114. +# CONFIG_BLK_DEV_XD is not set
  4115. +# CONFIG_BLK_CPQ_DA is not set
  4116. +# CONFIG_BLK_CPQ_CISS_DA is not set
  4117. +# CONFIG_BLK_DEV_DAC960 is not set
  4118. +# CONFIG_BLK_DEV_UMEM is not set
  4119. +# CONFIG_BLK_DEV_COW_COMMON is not set
  4120. +# CONFIG_BLK_DEV_LOOP is not set
  4121. +# CONFIG_BLK_DEV_NBD is not set
  4122. +# CONFIG_BLK_DEV_SX8 is not set
  4123. +# CONFIG_BLK_DEV_UB is not set
  4124. +# CONFIG_BLK_DEV_RAM is not set
  4125. +# CONFIG_CDROM_PKTCDVD is not set
  4126. +# CONFIG_ATA_OVER_ETH is not set
  4127. +
  4128. +#
  4129. +# Misc devices
  4130. +#
  4131. +# CONFIG_IBM_ASM is not set
  4132. +# CONFIG_PHANTOM is not set
  4133. +# CONFIG_SGI_IOC4 is not set
  4134. +# CONFIG_TIFM_CORE is not set
  4135. +# CONFIG_SONY_LAPTOP is not set
  4136. +# CONFIG_THINKPAD_ACPI is not set
  4137. +CONFIG_IDE=y
  4138. +CONFIG_BLK_DEV_IDE=y
  4139. +
  4140. +#
  4141. +# Please see Documentation/ide.txt for help/info on IDE drives
  4142. +#
  4143. +# CONFIG_BLK_DEV_IDE_SATA is not set
  4144. +# CONFIG_BLK_DEV_HD_IDE is not set
  4145. +CONFIG_BLK_DEV_IDEDISK=y
  4146. +CONFIG_IDEDISK_MULTI_MODE=y
  4147. +CONFIG_BLK_DEV_IDECD=y
  4148. +# CONFIG_BLK_DEV_IDETAPE is not set
  4149. +# CONFIG_BLK_DEV_IDEFLOPPY is not set
  4150. +# CONFIG_BLK_DEV_IDEACPI is not set
  4151. +# CONFIG_IDE_TASK_IOCTL is not set
  4152. +CONFIG_IDE_PROC_FS=y
  4153. +
  4154. +#
  4155. +# IDE chipset support/bugfixes
  4156. +#
  4157. +# CONFIG_IDE_GENERIC is not set
  4158. +# CONFIG_BLK_DEV_CMD640 is not set
  4159. +# CONFIG_BLK_DEV_IDEPNP is not set
  4160. +CONFIG_BLK_DEV_IDEPCI=y
  4161. +CONFIG_IDEPCI_SHARE_IRQ=y
  4162. +CONFIG_IDEPCI_PCIBUS_ORDER=y
  4163. +# CONFIG_BLK_DEV_OFFBOARD is not set
  4164. +# CONFIG_BLK_DEV_GENERIC is not set
  4165. +# CONFIG_BLK_DEV_OPTI621 is not set
  4166. +# CONFIG_BLK_DEV_RZ1000 is not set
  4167. +CONFIG_BLK_DEV_IDEDMA_PCI=y
  4168. +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
  4169. +# CONFIG_IDEDMA_ONLYDISK is not set
  4170. +# CONFIG_BLK_DEV_AEC62XX is not set
  4171. +# CONFIG_BLK_DEV_ALI15X3 is not set
  4172. +# CONFIG_BLK_DEV_AMD74XX is not set
  4173. +# CONFIG_BLK_DEV_ATIIXP is not set
  4174. +# CONFIG_BLK_DEV_CMD64X is not set
  4175. +# CONFIG_BLK_DEV_TRIFLEX is not set
  4176. +# CONFIG_BLK_DEV_CY82C693 is not set
  4177. +# CONFIG_BLK_DEV_CS5520 is not set
  4178. +# CONFIG_BLK_DEV_CS5530 is not set
  4179. +# CONFIG_BLK_DEV_CS5535 is not set
  4180. +# CONFIG_BLK_DEV_HPT34X is not set
  4181. +CONFIG_BLK_DEV_HPT366=y
  4182. +# CONFIG_BLK_DEV_JMICRON is not set
  4183. +# CONFIG_BLK_DEV_SC1200 is not set
  4184. +# CONFIG_BLK_DEV_PIIX is not set
  4185. +# CONFIG_BLK_DEV_IT8213 is not set
  4186. +# CONFIG_BLK_DEV_IT821X is not set
  4187. +# CONFIG_BLK_DEV_NS87415 is not set
  4188. +# CONFIG_BLK_DEV_PDC202XX_OLD is not set
  4189. +# CONFIG_BLK_DEV_PDC202XX_NEW is not set
  4190. +CONFIG_BLK_DEV_SVWKS=y
  4191. +# CONFIG_BLK_DEV_SIIMAGE is not set
  4192. +# CONFIG_BLK_DEV_SIS5513 is not set
  4193. +# CONFIG_BLK_DEV_SLC90E66 is not set
  4194. +# CONFIG_BLK_DEV_TRM290 is not set
  4195. +# CONFIG_BLK_DEV_VIA82CXXX is not set
  4196. +# CONFIG_BLK_DEV_TC86C001 is not set
  4197. +# CONFIG_IDE_ARM is not set
  4198. +# CONFIG_IDE_CHIPSETS is not set
  4199. +CONFIG_BLK_DEV_IDEDMA=y
  4200. +# CONFIG_IDEDMA_IVB is not set
  4201. +# CONFIG_BLK_DEV_HD is not set
  4202. +
  4203. +#
  4204. +# SCSI device support
  4205. +#
  4206. +# CONFIG_RAID_ATTRS is not set
  4207. +# CONFIG_SCSI is not set
  4208. +# CONFIG_SCSI_NETLINK is not set
  4209. +# CONFIG_ATA is not set
  4210. +
  4211. +#
  4212. +# Old CD-ROM drivers (not SCSI, not IDE)
  4213. +#
  4214. +# CONFIG_CD_NO_IDESCSI is not set
  4215. +
  4216. +#
  4217. +# Multi-device support (RAID and LVM)
  4218. +#
  4219. +# CONFIG_MD is not set
  4220. +
  4221. +#
  4222. +# Fusion MPT device support
  4223. +#
  4224. +# CONFIG_FUSION is not set
  4225. +
  4226. +#
  4227. +# IEEE 1394 (FireWire) support
  4228. +#
  4229. +# CONFIG_FIREWIRE is not set
  4230. +# CONFIG_IEEE1394 is not set
  4231. +
  4232. +#
  4233. +# I2O device support
  4234. +#
  4235. +# CONFIG_I2O is not set
  4236. +# CONFIG_MACINTOSH_DRIVERS is not set
  4237. +
  4238. +#
  4239. +# Network device support
  4240. +#
  4241. +CONFIG_NETDEVICES=y
  4242. +# CONFIG_DUMMY is not set
  4243. +# CONFIG_BONDING is not set
  4244. +# CONFIG_EQUALIZER is not set
  4245. +# CONFIG_TUN is not set
  4246. +# CONFIG_NET_SB1000 is not set
  4247. +# CONFIG_ARCNET is not set
  4248. +# CONFIG_PHYLIB is not set
  4249. +
  4250. +#
  4251. +# Ethernet (10 or 100Mbit)
  4252. +#
  4253. +CONFIG_NET_ETHERNET=y
  4254. +CONFIG_MII=y
  4255. +# CONFIG_HAPPYMEAL is not set
  4256. +# CONFIG_SUNGEM is not set
  4257. +# CONFIG_CASSINI is not set
  4258. +# CONFIG_NET_VENDOR_3COM is not set
  4259. +# CONFIG_LANCE is not set
  4260. +# CONFIG_NET_VENDOR_SMC is not set
  4261. +# CONFIG_NET_VENDOR_RACAL is not set
  4262. +
  4263. +#
  4264. +# Tulip family network device support
  4265. +#
  4266. +# CONFIG_NET_TULIP is not set
  4267. +# CONFIG_AT1700 is not set
  4268. +# CONFIG_DEPCA is not set
  4269. +# CONFIG_HP100 is not set
  4270. +# CONFIG_NET_ISA is not set
  4271. +CONFIG_NET_PCI=y
  4272. +# CONFIG_PCNET32 is not set
  4273. +# CONFIG_AMD8111_ETH is not set
  4274. +# CONFIG_ADAPTEC_STARFIRE is not set
  4275. +# CONFIG_AC3200 is not set
  4276. +# CONFIG_APRICOT is not set
  4277. +# CONFIG_B44 is not set
  4278. +# CONFIG_FORCEDETH is not set
  4279. +# CONFIG_CS89x0 is not set
  4280. +# CONFIG_DGRS is not set
  4281. +# CONFIG_EEPRO100 is not set
  4282. +# CONFIG_E100 is not set
  4283. +# CONFIG_FEALNX is not set
  4284. +CONFIG_NATSEMI=y
  4285. +# CONFIG_NE2K_PCI is not set
  4286. +# CONFIG_8139CP is not set
  4287. +# CONFIG_8139TOO is not set
  4288. +# CONFIG_SIS900 is not set
  4289. +# CONFIG_EPIC100 is not set
  4290. +# CONFIG_SUNDANCE is not set
  4291. +# CONFIG_TLAN is not set
  4292. +# CONFIG_VIA_RHINE is not set
  4293. +# CONFIG_SC92031 is not set
  4294. +# CONFIG_NETDEV_1000 is not set
  4295. +# CONFIG_NETDEV_10000 is not set
  4296. +# CONFIG_TR is not set
  4297. +
  4298. +#
  4299. +# Wireless LAN
  4300. +#
  4301. +# CONFIG_WLAN_PRE80211 is not set
  4302. +# CONFIG_WLAN_80211 is not set
  4303. +
  4304. +#
  4305. +# USB Network Adapters
  4306. +#
  4307. +# CONFIG_USB_CATC is not set
  4308. +# CONFIG_USB_KAWETH is not set
  4309. +# CONFIG_USB_PEGASUS is not set
  4310. +# CONFIG_USB_RTL8150 is not set
  4311. +# CONFIG_USB_USBNET_MII is not set
  4312. +# CONFIG_USB_USBNET is not set
  4313. +# CONFIG_WAN is not set
  4314. +# CONFIG_FDDI is not set
  4315. +# CONFIG_HIPPI is not set
  4316. +# CONFIG_PPP is not set
  4317. +# CONFIG_SLIP is not set
  4318. +# CONFIG_SHAPER is not set
  4319. +# CONFIG_NETCONSOLE is not set
  4320. +# CONFIG_NETPOLL is not set
  4321. +# CONFIG_NET_POLL_CONTROLLER is not set
  4322. +
  4323. +#
  4324. +# ISDN subsystem
  4325. +#
  4326. +# CONFIG_ISDN is not set
  4327. +
  4328. +#
  4329. +# Telephony Support
  4330. +#
  4331. +# CONFIG_PHONE is not set
  4332. +
  4333. +#
  4334. +# Input device support
  4335. +#
  4336. +CONFIG_INPUT=y
  4337. +# CONFIG_INPUT_FF_MEMLESS is not set
  4338. +# CONFIG_INPUT_POLLDEV is not set
  4339. +
  4340. +#
  4341. +# Userland interfaces
  4342. +#
  4343. +CONFIG_INPUT_MOUSEDEV=y
  4344. +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
  4345. +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
  4346. +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
  4347. +# CONFIG_INPUT_JOYDEV is not set
  4348. +# CONFIG_INPUT_TSDEV is not set
  4349. +# CONFIG_INPUT_EVDEV is not set
  4350. +# CONFIG_INPUT_EVBUG is not set
  4351. +
  4352. +#
  4353. +# Input Device Drivers
  4354. +#
  4355. +CONFIG_INPUT_KEYBOARD=y
  4356. +CONFIG_KEYBOARD_ATKBD=y
  4357. +# CONFIG_KEYBOARD_SUNKBD is not set
  4358. +# CONFIG_KEYBOARD_LKKBD is not set
  4359. +# CONFIG_KEYBOARD_XTKBD is not set
  4360. +# CONFIG_KEYBOARD_NEWTON is not set
  4361. +# CONFIG_KEYBOARD_STOWAWAY is not set
  4362. +# CONFIG_INPUT_MOUSE is not set
  4363. +# CONFIG_INPUT_JOYSTICK is not set
  4364. +# CONFIG_INPUT_TABLET is not set
  4365. +# CONFIG_INPUT_TOUCHSCREEN is not set
  4366. +# CONFIG_INPUT_MISC is not set
  4367. +
  4368. +#
  4369. +# Hardware I/O ports
  4370. +#
  4371. +CONFIG_SERIO=y
  4372. +CONFIG_SERIO_I8042=y
  4373. +# CONFIG_SERIO_SERPORT is not set
  4374. +# CONFIG_SERIO_CT82C710 is not set
  4375. +# CONFIG_SERIO_PCIPS2 is not set
  4376. +CONFIG_SERIO_LIBPS2=y
  4377. +# CONFIG_SERIO_RAW is not set
  4378. +# CONFIG_GAMEPORT is not set
  4379. +
  4380. +#
  4381. +# Character devices
  4382. +#
  4383. +CONFIG_VT=y
  4384. +CONFIG_VT_CONSOLE=y
  4385. +CONFIG_HW_CONSOLE=y
  4386. +# CONFIG_VT_HW_CONSOLE_BINDING is not set
  4387. +# CONFIG_SERIAL_NONSTANDARD is not set
  4388. +
  4389. +#
  4390. +# Serial drivers
  4391. +#
  4392. +CONFIG_SERIAL_8250=y
  4393. +CONFIG_SERIAL_8250_CONSOLE=y
  4394. +CONFIG_SERIAL_8250_PCI=y
  4395. +CONFIG_SERIAL_8250_PNP=y
  4396. +CONFIG_SERIAL_8250_NR_UARTS=2
  4397. +CONFIG_SERIAL_8250_RUNTIME_UARTS=2
  4398. +# CONFIG_SERIAL_8250_EXTENDED is not set
  4399. +
  4400. +#
  4401. +# Non-8250 serial port support
  4402. +#
  4403. +CONFIG_SERIAL_CORE=y
  4404. +CONFIG_SERIAL_CORE_CONSOLE=y
  4405. +# CONFIG_SERIAL_JSM is not set
  4406. +CONFIG_UNIX98_PTYS=y
  4407. +# CONFIG_LEGACY_PTYS is not set
  4408. +
  4409. +#
  4410. +# IPMI
  4411. +#
  4412. +# CONFIG_IPMI_HANDLER is not set
  4413. +CONFIG_WATCHDOG=y
  4414. +# CONFIG_WATCHDOG_NOWAYOUT is not set
  4415. +
  4416. +#
  4417. +# Watchdog Device Drivers
  4418. +#
  4419. +# CONFIG_SOFT_WATCHDOG is not set
  4420. +# CONFIG_ACQUIRE_WDT is not set
  4421. +# CONFIG_ADVANTECH_WDT is not set
  4422. +# CONFIG_ALIM1535_WDT is not set
  4423. +# CONFIG_ALIM7101_WDT is not set
  4424. +# CONFIG_SC520_WDT is not set
  4425. +# CONFIG_EUROTECH_WDT is not set
  4426. +# CONFIG_IB700_WDT is not set
  4427. +# CONFIG_IBMASR is not set
  4428. +# CONFIG_WAFER_WDT is not set
  4429. +# CONFIG_I6300ESB_WDT is not set
  4430. +# CONFIG_ITCO_WDT is not set
  4431. +# CONFIG_SC1200_WDT is not set
  4432. +# CONFIG_PC87413_WDT is not set
  4433. +# CONFIG_60XX_WDT is not set
  4434. +# CONFIG_SBC8360_WDT is not set
  4435. +# CONFIG_CPU5_WDT is not set
  4436. +# CONFIG_SMSC37B787_WDT is not set
  4437. +# CONFIG_W83627HF_WDT is not set
  4438. +# CONFIG_W83697HF_WDT is not set
  4439. +# CONFIG_W83877F_WDT is not set
  4440. +# CONFIG_W83977F_WDT is not set
  4441. +# CONFIG_MACHZ_WDT is not set
  4442. +# CONFIG_SBC_EPX_C3_WATCHDOG is not set
  4443. +
  4444. +#
  4445. +# ISA-based Watchdog Cards
  4446. +#
  4447. +# CONFIG_PCWATCHDOG is not set
  4448. +# CONFIG_MIXCOMWD is not set
  4449. +# CONFIG_WDT is not set
  4450. +
  4451. +#
  4452. +# PCI-based Watchdog Cards
  4453. +#
  4454. +# CONFIG_PCIPCWATCHDOG is not set
  4455. +# CONFIG_WDTPCI is not set
  4456. +
  4457. +#
  4458. +# USB-based Watchdog Cards
  4459. +#
  4460. +# CONFIG_USBPCWATCHDOG is not set
  4461. +CONFIG_HW_RANDOM=y
  4462. +CONFIG_HW_RANDOM_INTEL=y
  4463. +CONFIG_HW_RANDOM_AMD=y
  4464. +CONFIG_HW_RANDOM_GEODE=y
  4465. +CONFIG_HW_RANDOM_VIA=y
  4466. +CONFIG_NVRAM=y
  4467. +CONFIG_RTC=y
  4468. +# CONFIG_DTLK is not set
  4469. +# CONFIG_R3964 is not set
  4470. +# CONFIG_APPLICOM is not set
  4471. +# CONFIG_SONYPI is not set
  4472. +# CONFIG_AGP is not set
  4473. +# CONFIG_DRM is not set
  4474. +# CONFIG_MWAVE is not set
  4475. +# CONFIG_PC8736x_GPIO is not set
  4476. +# CONFIG_NSC_GPIO is not set
  4477. +# CONFIG_CS5535_GPIO is not set
  4478. +# CONFIG_RAW_DRIVER is not set
  4479. +# CONFIG_HPET is not set
  4480. +# CONFIG_HANGCHECK_TIMER is not set
  4481. +
  4482. +#
  4483. +# TPM devices
  4484. +#
  4485. +# CONFIG_TCG_TPM is not set
  4486. +# CONFIG_TELCLOCK is not set
  4487. +CONFIG_DEVPORT=y
  4488. +CONFIG_I2C=y
  4489. +CONFIG_I2C_BOARDINFO=y
  4490. +# CONFIG_I2C_CHARDEV is not set
  4491. +
  4492. +#
  4493. +# I2C Algorithms
  4494. +#
  4495. +# CONFIG_I2C_ALGOBIT is not set
  4496. +# CONFIG_I2C_ALGOPCF is not set
  4497. +# CONFIG_I2C_ALGOPCA is not set
  4498. +
  4499. +#
  4500. +# I2C Hardware Bus support
  4501. +#
  4502. +# CONFIG_I2C_ALI1535 is not set
  4503. +# CONFIG_I2C_ALI1563 is not set
  4504. +# CONFIG_I2C_ALI15X3 is not set
  4505. +# CONFIG_I2C_AMD756 is not set
  4506. +# CONFIG_I2C_AMD8111 is not set
  4507. +# CONFIG_I2C_ELEKTOR is not set
  4508. +# CONFIG_I2C_I801 is not set
  4509. +# CONFIG_I2C_I810 is not set
  4510. +# CONFIG_I2C_PIIX4 is not set
  4511. +# CONFIG_I2C_NFORCE2 is not set
  4512. +# CONFIG_I2C_OCORES is not set
  4513. +# CONFIG_I2C_PARPORT_LIGHT is not set
  4514. +# CONFIG_I2C_PROSAVAGE is not set
  4515. +# CONFIG_I2C_SAVAGE4 is not set
  4516. +# CONFIG_I2C_SIMTEC is not set
  4517. +# CONFIG_SCx200_ACB is not set
  4518. +# CONFIG_I2C_SIS5595 is not set
  4519. +# CONFIG_I2C_SIS630 is not set
  4520. +# CONFIG_I2C_SIS96X is not set
  4521. +# CONFIG_I2C_STUB is not set
  4522. +# CONFIG_I2C_TINY_USB is not set
  4523. +# CONFIG_I2C_VIA is not set
  4524. +# CONFIG_I2C_VIAPRO is not set
  4525. +# CONFIG_I2C_VOODOO3 is not set
  4526. +# CONFIG_I2C_PCA_ISA is not set
  4527. +
  4528. +#
  4529. +# Miscellaneous I2C Chip support
  4530. +#
  4531. +# CONFIG_SENSORS_DS1337 is not set
  4532. +# CONFIG_SENSORS_DS1374 is not set
  4533. +# CONFIG_SENSORS_EEPROM is not set
  4534. +# CONFIG_SENSORS_PCF8574 is not set
  4535. +# CONFIG_SENSORS_PCA9539 is not set
  4536. +# CONFIG_SENSORS_PCF8591 is not set
  4537. +# CONFIG_SENSORS_MAX6875 is not set
  4538. +# CONFIG_I2C_DEBUG_CORE is not set
  4539. +# CONFIG_I2C_DEBUG_ALGO is not set
  4540. +# CONFIG_I2C_DEBUG_BUS is not set
  4541. +# CONFIG_I2C_DEBUG_CHIP is not set
  4542. +
  4543. +#
  4544. +# SPI support
  4545. +#
  4546. +# CONFIG_SPI is not set
  4547. +# CONFIG_SPI_MASTER is not set
  4548. +
  4549. +#
  4550. +# Dallas's 1-wire bus
  4551. +#
  4552. +# CONFIG_W1 is not set
  4553. +CONFIG_HWMON=y
  4554. +# CONFIG_HWMON_VID is not set
  4555. +# CONFIG_SENSORS_ABITUGURU is not set
  4556. +# CONFIG_SENSORS_AD7418 is not set
  4557. +# CONFIG_SENSORS_ADM1021 is not set
  4558. +# CONFIG_SENSORS_ADM1025 is not set
  4559. +# CONFIG_SENSORS_ADM1026 is not set
  4560. +# CONFIG_SENSORS_ADM1029 is not set
  4561. +# CONFIG_SENSORS_ADM1031 is not set
  4562. +# CONFIG_SENSORS_ADM9240 is not set
  4563. +# CONFIG_SENSORS_K8TEMP is not set
  4564. +# CONFIG_SENSORS_ASB100 is not set
  4565. +# CONFIG_SENSORS_ATXP1 is not set
  4566. +# CONFIG_SENSORS_DS1621 is not set
  4567. +# CONFIG_SENSORS_F71805F is not set
  4568. +# CONFIG_SENSORS_FSCHER is not set
  4569. +# CONFIG_SENSORS_FSCPOS is not set
  4570. +# CONFIG_SENSORS_GL518SM is not set
  4571. +# CONFIG_SENSORS_GL520SM is not set
  4572. +# CONFIG_SENSORS_CORETEMP is not set
  4573. +# CONFIG_SENSORS_IT87 is not set
  4574. +# CONFIG_SENSORS_LM63 is not set
  4575. +# CONFIG_SENSORS_LM75 is not set
  4576. +# CONFIG_SENSORS_LM77 is not set
  4577. +# CONFIG_SENSORS_LM78 is not set
  4578. +# CONFIG_SENSORS_LM80 is not set
  4579. +# CONFIG_SENSORS_LM83 is not set
  4580. +# CONFIG_SENSORS_LM85 is not set
  4581. +# CONFIG_SENSORS_LM87 is not set
  4582. +# CONFIG_SENSORS_LM90 is not set
  4583. +# CONFIG_SENSORS_LM92 is not set
  4584. +# CONFIG_SENSORS_MAX1619 is not set
  4585. +# CONFIG_SENSORS_MAX6650 is not set
  4586. +# CONFIG_SENSORS_PC87360 is not set
  4587. +# CONFIG_SENSORS_PC87427 is not set
  4588. +# CONFIG_SENSORS_SIS5595 is not set
  4589. +# CONFIG_SENSORS_SMSC47M1 is not set
  4590. +# CONFIG_SENSORS_SMSC47M192 is not set
  4591. +# CONFIG_SENSORS_SMSC47B397 is not set
  4592. +# CONFIG_SENSORS_VIA686A is not set
  4593. +# CONFIG_SENSORS_VT1211 is not set
  4594. +# CONFIG_SENSORS_VT8231 is not set
  4595. +# CONFIG_SENSORS_W83781D is not set
  4596. +# CONFIG_SENSORS_W83791D is not set
  4597. +# CONFIG_SENSORS_W83792D is not set
  4598. +# CONFIG_SENSORS_W83793 is not set
  4599. +# CONFIG_SENSORS_W83L785TS is not set
  4600. +# CONFIG_SENSORS_W83627HF is not set
  4601. +# CONFIG_SENSORS_W83627EHF is not set
  4602. +# CONFIG_SENSORS_HDAPS is not set
  4603. +# CONFIG_SENSORS_APPLESMC is not set
  4604. +# CONFIG_HWMON_DEBUG_CHIP is not set
  4605. +
  4606. +#
  4607. +# Multifunction device drivers
  4608. +#
  4609. +# CONFIG_MFD_SM501 is not set
  4610. +
  4611. +#
  4612. +# Multimedia devices
  4613. +#
  4614. +# CONFIG_VIDEO_DEV is not set
  4615. +# CONFIG_DVB_CORE is not set
  4616. +# CONFIG_DAB is not set
  4617. +
  4618. +#
  4619. +# Graphics support
  4620. +#
  4621. +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
  4622. +
  4623. +#
  4624. +# Display device support
  4625. +#
  4626. +# CONFIG_DISPLAY_SUPPORT is not set
  4627. +# CONFIG_VGASTATE is not set
  4628. +# CONFIG_FB is not set
  4629. +# CONFIG_VIDEO_SELECT is not set
  4630. +
  4631. +#
  4632. +# Console display driver support
  4633. +#
  4634. +CONFIG_VGA_CONSOLE=y
  4635. +# CONFIG_VGACON_SOFT_SCROLLBACK is not set
  4636. +# CONFIG_MDA_CONSOLE is not set
  4637. +CONFIG_DUMMY_CONSOLE=y
  4638. +
  4639. +#
  4640. +# Sound
  4641. +#
  4642. +# CONFIG_SOUND is not set
  4643. +
  4644. +#
  4645. +# HID Devices
  4646. +#
  4647. +# CONFIG_HID is not set
  4648. +
  4649. +#
  4650. +# USB Input Devices
  4651. +#
  4652. +# CONFIG_USB_HID is not set
  4653. +
  4654. +#
  4655. +# USB HID Boot Protocol drivers
  4656. +#
  4657. +# CONFIG_USB_KBD is not set
  4658. +# CONFIG_USB_MOUSE is not set
  4659. +
  4660. +#
  4661. +# USB support
  4662. +#
  4663. +CONFIG_USB_ARCH_HAS_HCD=y
  4664. +CONFIG_USB_ARCH_HAS_OHCI=y
  4665. +CONFIG_USB_ARCH_HAS_EHCI=y
  4666. +CONFIG_USB=y
  4667. +# CONFIG_USB_DEBUG is not set
  4668. +
  4669. +#
  4670. +# Miscellaneous USB options
  4671. +#
  4672. +# CONFIG_USB_DEVICEFS is not set
  4673. +CONFIG_USB_DEVICE_CLASS=y
  4674. +# CONFIG_USB_DYNAMIC_MINORS is not set
  4675. +# CONFIG_USB_SUSPEND is not set
  4676. +# CONFIG_USB_OTG is not set
  4677. +
  4678. +#
  4679. +# USB Host Controller Drivers
  4680. +#
  4681. +# CONFIG_USB_EHCI_HCD is not set
  4682. +# CONFIG_USB_ISP116X_HCD is not set
  4683. +CONFIG_USB_OHCI_HCD=y
  4684. +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
  4685. +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
  4686. +CONFIG_USB_OHCI_LITTLE_ENDIAN=y
  4687. +# CONFIG_USB_UHCI_HCD is not set
  4688. +# CONFIG_USB_SL811_HCD is not set
  4689. +
  4690. +#
  4691. +# USB Device Class drivers
  4692. +#
  4693. +# CONFIG_USB_ACM is not set
  4694. +# CONFIG_USB_PRINTER is not set
  4695. +
  4696. +#
  4697. +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
  4698. +#
  4699. +
  4700. +#
  4701. +# may also be needed; see USB_STORAGE Help for more information
  4702. +#
  4703. +# CONFIG_USB_LIBUSUAL is not set
  4704. +
  4705. +#
  4706. +# USB Imaging devices
  4707. +#
  4708. +# CONFIG_USB_MDC800 is not set
  4709. +CONFIG_USB_MON=y
  4710. +
  4711. +#
  4712. +# USB port drivers
  4713. +#
  4714. +
  4715. +#
  4716. +# USB Serial Converter support
  4717. +#
  4718. +# CONFIG_USB_SERIAL is not set
  4719. +
  4720. +#
  4721. +# USB Miscellaneous drivers
  4722. +#
  4723. +# CONFIG_USB_EMI62 is not set
  4724. +# CONFIG_USB_EMI26 is not set
  4725. +# CONFIG_USB_ADUTUX is not set
  4726. +# CONFIG_USB_AUERSWALD is not set
  4727. +# CONFIG_USB_RIO500 is not set
  4728. +# CONFIG_USB_LEGOTOWER is not set
  4729. +# CONFIG_USB_LCD is not set
  4730. +# CONFIG_USB_BERRY_CHARGE is not set
  4731. +# CONFIG_USB_LED is not set
  4732. +# CONFIG_USB_CYPRESS_CY7C63 is not set
  4733. +# CONFIG_USB_CYTHERM is not set
  4734. +# CONFIG_USB_PHIDGET is not set
  4735. +# CONFIG_USB_IDMOUSE is not set
  4736. +# CONFIG_USB_FTDI_ELAN is not set
  4737. +# CONFIG_USB_APPLEDISPLAY is not set
  4738. +# CONFIG_USB_LD is not set
  4739. +# CONFIG_USB_TRANCEVIBRATOR is not set
  4740. +# CONFIG_USB_IOWARRIOR is not set
  4741. +
  4742. +#
  4743. +# USB DSL modem support
  4744. +#
  4745. +
  4746. +#
  4747. +# USB Gadget Support
  4748. +#
  4749. +# CONFIG_USB_GADGET is not set
  4750. +# CONFIG_MMC is not set
  4751. +
  4752. +#
  4753. +# LED devices
  4754. +#
  4755. +# CONFIG_NEW_LEDS is not set
  4756. +
  4757. +#
  4758. +# LED drivers
  4759. +#
  4760. +
  4761. +#
  4762. +# LED Triggers
  4763. +#
  4764. +
  4765. +#
  4766. +# InfiniBand support
  4767. +#
  4768. +# CONFIG_INFINIBAND is not set
  4769. +
  4770. +#
  4771. +# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
  4772. +#
  4773. +# CONFIG_EDAC is not set
  4774. +
  4775. +#
  4776. +# Real Time Clock
  4777. +#
  4778. +# CONFIG_RTC_CLASS is not set
  4779. +
  4780. +#
  4781. +# DMA Engine support
  4782. +#
  4783. +# CONFIG_DMA_ENGINE is not set
  4784. +
  4785. +#
  4786. +# DMA Clients
  4787. +#
  4788. +
  4789. +#
  4790. +# DMA Devices
  4791. +#
  4792. +
  4793. +#
  4794. +# Virtualization
  4795. +#
  4796. +# CONFIG_KVM is not set
  4797. +
  4798. +#
  4799. +# Cobalt RaQ/Qube Hardware
  4800. +#
  4801. +CONFIG_COBALT_RAQ=y
  4802. +# CONFIG_COBALT_GEN_III is not set
  4803. +CONFIG_COBALT_GEN_V=y
  4804. +CONFIG_COBALT_OLDPROC=y
  4805. +
  4806. +#
  4807. +# Cobalt Hardware Options
  4808. +#
  4809. +CONFIG_COBALT_LCD=y
  4810. +CONFIG_COBALT_LCD_TWIDDLE=y
  4811. +CONFIG_COBALT_LED=y
  4812. +CONFIG_COBALT_SERNUM=y
  4813. +CONFIG_COBALT_WDT=y
  4814. +CONFIG_COBALT_POWERMODE=y
  4815. +CONFIG_COBALT_SENSORS=y
  4816. +CONFIG_COBALT_FANS=y
  4817. +CONFIG_COBALT_RAMINFO=y
  4818. +CONFIG_COBALT_RULER=y
  4819. +CONFIG_COBALT_ACPI=y
  4820. +CONFIG_COBALT_EMU_ACPI=y
  4821. +
  4822. +#
  4823. +# File systems
  4824. +#
  4825. +CONFIG_EXT2_FS=y
  4826. +# CONFIG_EXT2_FS_XATTR is not set
  4827. +# CONFIG_EXT2_FS_XIP is not set
  4828. +CONFIG_EXT3_FS=y
  4829. +CONFIG_EXT3_FS_XATTR=y
  4830. +# CONFIG_EXT3_FS_POSIX_ACL is not set
  4831. +# CONFIG_EXT3_FS_SECURITY is not set
  4832. +# CONFIG_EXT4DEV_FS is not set
  4833. +CONFIG_JBD=y
  4834. +# CONFIG_JBD_DEBUG is not set
  4835. +CONFIG_FS_MBCACHE=y
  4836. +# CONFIG_REISERFS_FS is not set
  4837. +# CONFIG_JFS_FS is not set
  4838. +# CONFIG_FS_POSIX_ACL is not set
  4839. +# CONFIG_XFS_FS is not set
  4840. +# CONFIG_GFS2_FS is not set
  4841. +# CONFIG_OCFS2_FS is not set
  4842. +# CONFIG_MINIX_FS is not set
  4843. +# CONFIG_ROMFS_FS is not set
  4844. +CONFIG_INOTIFY=y
  4845. +CONFIG_INOTIFY_USER=y
  4846. +# CONFIG_QUOTA is not set
  4847. +CONFIG_DNOTIFY=y
  4848. +# CONFIG_AUTOFS_FS is not set
  4849. +CONFIG_AUTOFS4_FS=y
  4850. +# CONFIG_FUSE_FS is not set
  4851. +
  4852. +#
  4853. +# CD-ROM/DVD Filesystems
  4854. +#
  4855. +# CONFIG_ISO9660_FS is not set
  4856. +# CONFIG_UDF_FS is not set
  4857. +
  4858. +#
  4859. +# DOS/FAT/NT Filesystems
  4860. +#
  4861. +# CONFIG_MSDOS_FS is not set
  4862. +# CONFIG_VFAT_FS is not set
  4863. +# CONFIG_NTFS_FS is not set
  4864. +
  4865. +#
  4866. +# Pseudo filesystems
  4867. +#
  4868. +CONFIG_PROC_FS=y
  4869. +# CONFIG_PROC_KCORE is not set
  4870. +CONFIG_PROC_SYSCTL=y
  4871. +CONFIG_SYSFS=y
  4872. +CONFIG_TMPFS=y
  4873. +# CONFIG_TMPFS_POSIX_ACL is not set
  4874. +# CONFIG_HUGETLBFS is not set
  4875. +# CONFIG_HUGETLB_PAGE is not set
  4876. +CONFIG_RAMFS=y
  4877. +# CONFIG_CONFIGFS_FS is not set
  4878. +
  4879. +#
  4880. +# Miscellaneous filesystems
  4881. +#
  4882. +# CONFIG_ADFS_FS is not set
  4883. +# CONFIG_AFFS_FS is not set
  4884. +# CONFIG_HFS_FS is not set
  4885. +# CONFIG_HFSPLUS_FS is not set
  4886. +# CONFIG_BEFS_FS is not set
  4887. +# CONFIG_BFS_FS is not set
  4888. +# CONFIG_EFS_FS is not set
  4889. +# CONFIG_CRAMFS is not set
  4890. +# CONFIG_SQUASHFS is not set
  4891. +# CONFIG_VXFS_FS is not set
  4892. +# CONFIG_HPFS_FS is not set
  4893. +# CONFIG_QNX4FS_FS is not set
  4894. +# CONFIG_SYSV_FS is not set
  4895. +# CONFIG_UFS_FS is not set
  4896. +
  4897. +#
  4898. +# Network File Systems
  4899. +#
  4900. +CONFIG_NFS_FS=m
  4901. +# CONFIG_NFS_V3 is not set
  4902. +# CONFIG_NFS_V4 is not set
  4903. +# CONFIG_NFS_DIRECTIO is not set
  4904. +# CONFIG_NFSD is not set
  4905. +CONFIG_LOCKD=m
  4906. +CONFIG_NFS_COMMON=y
  4907. +CONFIG_SUNRPC=m
  4908. +# CONFIG_SUNRPC_BIND34 is not set
  4909. +# CONFIG_RPCSEC_GSS_KRB5 is not set
  4910. +# CONFIG_RPCSEC_GSS_SPKM3 is not set
  4911. +# CONFIG_SMB_FS is not set
  4912. +# CONFIG_CIFS is not set
  4913. +# CONFIG_NCP_FS is not set
  4914. +# CONFIG_CODA_FS is not set
  4915. +# CONFIG_AFS_FS is not set
  4916. +# CONFIG_9P_FS is not set
  4917. +
  4918. +#
  4919. +# Partition Types
  4920. +#
  4921. +# CONFIG_PARTITION_ADVANCED is not set
  4922. +CONFIG_MSDOS_PARTITION=y
  4923. +
  4924. +#
  4925. +# Native Language Support
  4926. +#
  4927. +CONFIG_NLS=y
  4928. +CONFIG_NLS_DEFAULT="iso8859-1"
  4929. +CONFIG_NLS_CODEPAGE_437=y
  4930. +# CONFIG_NLS_CODEPAGE_737 is not set
  4931. +# CONFIG_NLS_CODEPAGE_775 is not set
  4932. +# CONFIG_NLS_CODEPAGE_850 is not set
  4933. +# CONFIG_NLS_CODEPAGE_852 is not set
  4934. +# CONFIG_NLS_CODEPAGE_855 is not set
  4935. +# CONFIG_NLS_CODEPAGE_857 is not set
  4936. +# CONFIG_NLS_CODEPAGE_860 is not set
  4937. +# CONFIG_NLS_CODEPAGE_861 is not set
  4938. +# CONFIG_NLS_CODEPAGE_862 is not set
  4939. +# CONFIG_NLS_CODEPAGE_863 is not set
  4940. +# CONFIG_NLS_CODEPAGE_864 is not set
  4941. +# CONFIG_NLS_CODEPAGE_865 is not set
  4942. +# CONFIG_NLS_CODEPAGE_866 is not set
  4943. +# CONFIG_NLS_CODEPAGE_869 is not set
  4944. +# CONFIG_NLS_CODEPAGE_936 is not set
  4945. +# CONFIG_NLS_CODEPAGE_950 is not set
  4946. +# CONFIG_NLS_CODEPAGE_932 is not set
  4947. +# CONFIG_NLS_CODEPAGE_949 is not set
  4948. +# CONFIG_NLS_CODEPAGE_874 is not set
  4949. +# CONFIG_NLS_ISO8859_8 is not set
  4950. +# CONFIG_NLS_CODEPAGE_1250 is not set
  4951. +# CONFIG_NLS_CODEPAGE_1251 is not set
  4952. +# CONFIG_NLS_ASCII is not set
  4953. +CONFIG_NLS_ISO8859_1=y
  4954. +# CONFIG_NLS_ISO8859_2 is not set
  4955. +# CONFIG_NLS_ISO8859_3 is not set
  4956. +# CONFIG_NLS_ISO8859_4 is not set
  4957. +# CONFIG_NLS_ISO8859_5 is not set
  4958. +# CONFIG_NLS_ISO8859_6 is not set
  4959. +# CONFIG_NLS_ISO8859_7 is not set
  4960. +# CONFIG_NLS_ISO8859_9 is not set
  4961. +# CONFIG_NLS_ISO8859_13 is not set
  4962. +# CONFIG_NLS_ISO8859_14 is not set
  4963. +# CONFIG_NLS_ISO8859_15 is not set
  4964. +# CONFIG_NLS_KOI8_R is not set
  4965. +# CONFIG_NLS_KOI8_U is not set
  4966. +# CONFIG_NLS_UTF8 is not set
  4967. +
  4968. +#
  4969. +# Distributed Lock Manager
  4970. +#
  4971. +# CONFIG_DLM is not set
  4972. +
  4973. +#
  4974. +# Instrumentation Support
  4975. +#
  4976. +# CONFIG_PROFILING is not set
  4977. +# CONFIG_KPROBES is not set
  4978. +
  4979. +#
  4980. +# Kernel hacking
  4981. +#
  4982. +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
  4983. +# CONFIG_PRINTK_TIME is not set
  4984. +CONFIG_ENABLE_MUST_CHECK=y
  4985. +# CONFIG_MAGIC_SYSRQ is not set
  4986. +CONFIG_UNUSED_SYMBOLS=y
  4987. +# CONFIG_DEBUG_FS is not set
  4988. +# CONFIG_HEADERS_CHECK is not set
  4989. +# CONFIG_DEBUG_KERNEL is not set
  4990. +CONFIG_DEBUG_BUGVERBOSE=y
  4991. +CONFIG_EARLY_PRINTK=y
  4992. +CONFIG_DOUBLEFAULT=y
  4993. +
  4994. +#
  4995. +# Security options
  4996. +#
  4997. +# CONFIG_KEYS is not set
  4998. +# CONFIG_SECURITY is not set
  4999. +
  5000. +#
  5001. +# Cryptographic options
  5002. +#
  5003. +# CONFIG_CRYPTO is not set
  5004. +
  5005. +#
  5006. +# Library routines
  5007. +#
  5008. +CONFIG_BITREVERSE=y
  5009. +# CONFIG_CRC_CCITT is not set
  5010. +# CONFIG_CRC16 is not set
  5011. +# CONFIG_CRC_ITU_T is not set
  5012. +CONFIG_CRC32=y
  5013. +# CONFIG_LIBCRC32C is not set
  5014. +CONFIG_PLIST=y
  5015. +CONFIG_HAS_IOMEM=y
  5016. +CONFIG_HAS_IOPORT=y
  5017. +CONFIG_HAS_DMA=y
  5018. +CONFIG_GENERIC_HARDIRQS=y
  5019. +CONFIG_GENERIC_IRQ_PROBE=y
  5020. +CONFIG_X86_BIOS_REBOOT=y
  5021. +CONFIG_KTIME_SCALAR=y
  5022. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/include/asm/setup.h linux-3.2.5-cobalt/arch/x86/include/asm/setup.h
  5023. --- linux-3.2.5/arch/x86/include/asm/setup.h 2012-02-06 09:47:00.000000000 -0800
  5024. +++ linux-3.2.5-cobalt/arch/x86/include/asm/setup.h 2012-02-06 21:34:59.000000000 -0800
  5025. @@ -18,7 +18,10 @@
  5026.  
  5027. #define PARAM_SIZE 4096 /* sizeof(struct boot_params) */
  5028.  
  5029. +#define OLD_CL_MAGIC_ADDR 0x90020
  5030. #define OLD_CL_MAGIC 0xA33F
  5031. +#define OLD_CL_BASE_ADDR 0x90000
  5032. +#define OLD_CL_OFFSET 0x90022
  5033. #define OLD_CL_ADDRESS 0x020 /* Relative to real mode data */
  5034. #define NEW_CL_POINTER 0x228 /* Relative to real mode data */
  5035.  
  5036. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/kernel/Makefile linux-3.2.5-cobalt/arch/x86/kernel/Makefile
  5037. --- linux-3.2.5/arch/x86/kernel/Makefile 2012-02-06 09:47:00.000000000 -0800
  5038. +++ linux-3.2.5-cobalt/arch/x86/kernel/Makefile 2012-02-06 21:34:59.000000000 -0800
  5039. @@ -94,6 +94,8 @@
  5040. microcode-$(CONFIG_MICROCODE_INTEL) += microcode_intel.o
  5041. microcode-$(CONFIG_MICROCODE_AMD) += microcode_amd.o
  5042. microcode-$(CONFIG_MICROCODE_XEN) += microcode_xen.o
  5043. +obj-$(CONFIG_COBALT_RAQ) += cobalt.o
  5044. +
  5045. obj-$(CONFIG_MICROCODE) += microcode.o
  5046.  
  5047. obj-$(CONFIG_X86_CHECK_BIOS_CORRUPTION) += check.o
  5048. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/kernel/cobalt.c linux-3.2.5-cobalt/arch/x86/kernel/cobalt.c
  5049. --- linux-3.2.5/arch/x86/kernel/cobalt.c 1969-12-31 16:00:00.000000000 -0800
  5050. +++ linux-3.2.5-cobalt/arch/x86/kernel/cobalt.c 2012-02-08 19:25:30.000000000 -0800
  5051. @@ -0,0 +1,280 @@
  5052. +/* $Id: cobalt.c,v 1.34 2002/11/04 17:54:14 thockin Exp $ */
  5053. +/* updated for new spinlock functions 2011/06/04 dwstudeman*/
  5054. +#include <linux/types.h>
  5055. +#include <linux/stddef.h>
  5056. +#include <linux/kernel.h>
  5057. +#include <linux/ptrace.h>
  5058. +#include <linux/reboot.h>
  5059. +#include <linux/delay.h>
  5060. +#include <linux/pci.h>
  5061. +#include <linux/timer.h>
  5062. +#include <linux/init.h>
  5063. +#include <asm/processor.h>
  5064. +#include <cobalt/cobalt.h>
  5065. +#include <cobalt/misc.h>
  5066. +#include <cobalt/led.h>
  5067. +#include <cobalt/wdt.h>
  5068. +#include <cobalt/acpi.h>
  5069. +#include <cobalt/superio.h>
  5070. +#include <cobalt/systype.h>
  5071. +
  5072. +#define MAX_NMI_PS 10
  5073. +
  5074. +static u8 last_err;
  5075. +static u32 last_address;
  5076. +static unsigned long nmi_repeats;
  5077. +static struct timer_list nmi_timer;
  5078. +static int timer_added;
  5079. +static unsigned long nmi_count;
  5080. +static DEFINE_SPINLOCK(nmi_state_lock);
  5081. +
  5082. +static inline void
  5083. +ledonoff(unsigned long on, unsigned long off)
  5084. +{
  5085. +#ifdef CONFIG_COBALT_LED
  5086. + unsigned long start;
  5087. + int haltok = cpu_data(cpu).hlt_works_ok;
  5088. +
  5089. + if (on) {
  5090. + start = jiffies;
  5091. + cobalt_led_set(cobalt_led_get() | LED_SHUTDOWN);
  5092. + while (jiffies < start + on) {
  5093. + if (haltok) __asm__("hlt");
  5094. + }
  5095. + }
  5096. +
  5097. + if (off) {
  5098. + start = jiffies;
  5099. + cobalt_led_set(cobalt_led_get() & ~LED_SHUTDOWN);
  5100. + while (jiffies < start + off) {
  5101. + if (haltok) __asm__("hlt");
  5102. + }
  5103. + }
  5104. +#endif
  5105. +}
  5106. +
  5107. +/* clla this holding nmi_state_lock */
  5108. +static inline void
  5109. +do_repeats(void)
  5110. +{
  5111. + if (nmi_repeats) {
  5112. + printk("NMI: last error repeated %lu times\n", nmi_repeats);
  5113. + nmi_repeats = 0;
  5114. + }
  5115. +}
  5116. +
  5117. +static void
  5118. +nmi_throttle_fn(unsigned long data)
  5119. +{
  5120. + unsigned long flags;
  5121. +
  5122. + spin_lock_irqsave(&nmi_state_lock, flags);
  5123. +
  5124. + /* clear any repeated NMIs */
  5125. + do_repeats();
  5126. +
  5127. + /* have we had a lot of errors this second */
  5128. + if (nmi_count > MAX_NMI_PS) {
  5129. + printk("NMI: %lu messages were throttled\n",
  5130. + nmi_count - MAX_NMI_PS);
  5131. + nmi_count = 0;
  5132. + }
  5133. +
  5134. + /* de-activate the timer - will be reactivated by an NMI */
  5135. + del_timer(&nmi_timer);
  5136. + timer_added = 0;
  5137. +
  5138. + spin_unlock_irqrestore(&nmi_state_lock, flags);
  5139. +}
  5140. +
  5141. +void
  5142. +cobalt_nmi(unsigned char reason, struct pt_regs *regs)
  5143. +{
  5144. + if (cobt_is_5k()) {
  5145. + static struct pci_dev *cnb_dev;
  5146. + u8 err;
  5147. + u32 address = 0;
  5148. + unsigned long flags;
  5149. +
  5150. + /* find our memory controller */
  5151. + if (!cnb_dev) {
  5152. + cnb_dev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  5153. + PCI_DEVICE_ID_SERVERWORKS_LE, NULL);
  5154. + }
  5155. + if (!cnb_dev) {
  5156. + EPRINTK("can't find north bridge for NMI status\n");
  5157. + return;
  5158. + }
  5159. +
  5160. + /* read the error number */
  5161. + pci_read_config_byte(cnb_dev, 0x47, &err);
  5162. +
  5163. + /* if a memory error was detected, where? */
  5164. + if (err & 0x06) {
  5165. + pci_read_config_dword(cnb_dev, 0x94, &address);
  5166. + }
  5167. +
  5168. + spin_lock_irqsave(&nmi_state_lock, flags);
  5169. +
  5170. + /* set up the timer, if it isn't set to go already */
  5171. + if (!timer_added) {
  5172. + init_timer(&nmi_timer);
  5173. + nmi_timer.expires = jiffies + HZ;
  5174. + nmi_timer.function = nmi_throttle_fn;
  5175. + add_timer(&nmi_timer);
  5176. + timer_added = 1;
  5177. + }
  5178. +
  5179. + /* if we already printed this error */
  5180. + if (last_err && err == last_err && address == last_address) {
  5181. + nmi_repeats++;
  5182. + spin_unlock_irqrestore(&nmi_state_lock, flags);
  5183. + } else {
  5184. + unsigned long nmi_now;
  5185. +
  5186. + /* different error - show repeats */
  5187. + do_repeats();
  5188. +
  5189. + /* we only want to do a few messages per second */
  5190. + nmi_now = nmi_count++;
  5191. +
  5192. + spin_unlock_irqrestore(&nmi_state_lock, flags);
  5193. +
  5194. + /* generate a new message */
  5195. + if (nmi_now < MAX_NMI_PS) {
  5196. + /* only remember NMIs that we can print */
  5197. + last_err = err;
  5198. + last_address = address;
  5199. +
  5200. + printk("NMI:");
  5201. + if (err & 0x40)
  5202. + printk(" (PCI tx data error)");
  5203. + if (err & 0x20)
  5204. + printk(" (PCI rx data error)");
  5205. + if (err & 0x10)
  5206. + printk(" (PCI address error)");
  5207. + if (err & 0x04)
  5208. + printk(" (DRAM uncorrectable error)");
  5209. + if (err & 0x02)
  5210. + printk(" (DRAM correctable error)");
  5211. + if (err & 0x01)
  5212. + printk(" (Shutdown cycle detected)");
  5213. +
  5214. + if (err & 0x06) {
  5215. + u8 row, dimm, ecc;
  5216. +
  5217. + row = (address >> 29) & 0x7;
  5218. + pci_read_config_byte(cnb_dev,
  5219. + 0x7c + (row >> 1), &dimm);
  5220. + dimm = ((row & 1) ?
  5221. + (dimm >> 4) : dimm) & 0xf;
  5222. + pci_read_config_byte(cnb_dev, 0xe8,
  5223. + &ecc);
  5224. +
  5225. + printk(" [memory row %d, DIMM type %d, "
  5226. + "col=0x%x, row=0x%x, ECC=0x%x]",
  5227. + row, dimm,
  5228. + (address >> 15) & 0x3fff,
  5229. + address & 0x7fff, ecc);
  5230. + }
  5231. + printk("\n");
  5232. + }
  5233. + }
  5234. +
  5235. + /* clear errors */
  5236. + pci_write_config_byte(cnb_dev, 0x47, err);
  5237. + } else {
  5238. + /* TODO: make throttling generic, handle GP NMIs */
  5239. + printk("NMI: unknown error\n");
  5240. + }
  5241. +}
  5242. +
  5243. +void
  5244. +cobalt_restart(void)
  5245. +{
  5246. + if (cobt_is_3k()) {
  5247. + /* kick watchdog */
  5248. + cobalt_wdt_trigger_reboot();
  5249. + } else if (cobt_is_5k()) {
  5250. + /* set "Enable Hard Reset" bit to 1 */
  5251. + outb(0x02, 0x0cf9);
  5252. +
  5253. + /* 0-to-1 transition of bit 2 will cause reset of processor */
  5254. + outb(0x06, 0x0cf9);
  5255. + }
  5256. + mdelay(3000);
  5257. +
  5258. + /* we should not get here unless there is a BAD error */
  5259. + EPRINTK("can not restart - halting\n");
  5260. + machine_halt();
  5261. +}
  5262. +
  5263. +void
  5264. +cobalt_halt(void)
  5265. +{
  5266. + int haltok = cpu_data(cpu).hlt_works_ok;
  5267. +
  5268. + if (cobt_is_5k()) {
  5269. + /* we have soft power-off */
  5270. + machine_power_off();
  5271. + }
  5272. +
  5273. + /*
  5274. + * we want to do cpu_idle, but we don't actually want to
  5275. + * call cpu_idle. bleah.
  5276. + */
  5277. + while (1) {
  5278. + ledonoff(HZ >> 1, HZ >> 1);
  5279. + if (haltok) {
  5280. + __asm__("hlt");
  5281. + }
  5282. + }
  5283. +}
  5284. +
  5285. +void
  5286. +cobalt_power_off(void)
  5287. +{
  5288. + u16 addr;
  5289. +
  5290. + if (cobt_is_monterey()) {
  5291. + u8 val;
  5292. + /* use card control reg. 7 to select logical device 2 (APC) */
  5293. + addr = superio_ldev_base(PC87317_DEV_RTC);
  5294. +
  5295. + /* set up bank 2 */
  5296. + outb(PC87317_RTC_CRA, addr);
  5297. + val = inb(addr + 1) & 0x8f;
  5298. + outb(val | PC87317_RTC_BANK_2, addr + 1);
  5299. +
  5300. + /* power off the machine with APCR1 */
  5301. + outb(PC87317_APCR1, addr);
  5302. + val = inb(addr + 1);
  5303. + outb(0x20 | val, addr + 1);
  5304. + } else if (cobt_is_alpine()) {
  5305. + int i;
  5306. + /* clear status bits, base addr 3 */
  5307. + addr = superio_ldev_base_n(PC87417_DEV_SWC, 3);
  5308. + for (i = 0; i < 4; i++) {
  5309. + /*
  5310. + * if we have an event while running,
  5311. + * we can't halt unless we clear these
  5312. + * */
  5313. + outb(0xff, addr+i);
  5314. + }
  5315. +
  5316. + /* set sleep state, base addr 2 */
  5317. + addr = superio_ldev_base_n(PC87417_DEV_SWC, 2);
  5318. + /* PM1b_CNT_HIGH @offset 1 - set state to S5 */
  5319. + outb(0x34, addr+1);
  5320. + }
  5321. + mdelay(3000);
  5322. + EPRINTK("can not power off\n");
  5323. +}
  5324. +
  5325. +/* put arch specific stuff to run at init time here */
  5326. +static int __init
  5327. +cobalt_arch_init(void)
  5328. +{
  5329. + return 0;
  5330. +}
  5331. +module_init(cobalt_arch_init);
  5332. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/kernel/head_32.S linux-3.2.5-cobalt/arch/x86/kernel/head_32.S
  5333. --- linux-3.2.5/arch/x86/kernel/head_32.S 2012-02-06 09:47:00.000000000 -0800
  5334. +++ linux-3.2.5-cobalt/arch/x86/kernel/head_32.S 2012-02-06 21:34:59.000000000 -0800
  5335. @@ -130,7 +130,16 @@
  5336. movsl
  5337. movl pa(boot_params) + NEW_CL_POINTER,%esi
  5338. andl %esi,%esi
  5339. +#ifndef CONFIG_COBALT_NEWCMDLINE
  5340. jz 1f # No command line
  5341. +#else
  5342. + jnz 2f # New command line protocol
  5343. + cmpw $(OLD_CL_MAGIC),OLD_CL_MAGIC_ADDR
  5344. + jne 1f
  5345. + movzwl OLD_CL_OFFSET,%esi
  5346. + addl $(OLD_CL_BASE_ADDR),%esi
  5347. +2:
  5348. +#endif
  5349. movl $pa(boot_command_line),%edi
  5350. movl $(COMMAND_LINE_SIZE/4),%ecx
  5351. rep
  5352. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/kernel/nmi.c linux-3.2.5-cobalt/arch/x86/kernel/nmi.c
  5353. --- linux-3.2.5/arch/x86/kernel/nmi.c 2012-02-06 09:47:00.000000000 -0800
  5354. +++ linux-3.2.5-cobalt/arch/x86/kernel/nmi.c 2012-02-08 19:30:10.000000000 -0800
  5355. @@ -5,6 +5,9 @@
  5356. *
  5357. * Pentium III FXSR, SSE support
  5358. * Gareth Hughes <gareth@valinux.com>, May 2000
  5359. + *
  5360. + * Cobalt Support, Moved from Traps
  5361. + * David W Studeman <dwstudeman@raqcop.com>, February 2012
  5362. */
  5363.  
  5364. /*
  5365. @@ -31,6 +34,10 @@
  5366. #include <asm/nmi.h>
  5367. #include <asm/x86_init.h>
  5368.  
  5369. +#ifdef CONFIG_COBALT_RAQ
  5370. +#include <cobalt/misc.h>
  5371. +#endif
  5372. +
  5373. #define NMI_MAX_NAMELEN 16
  5374. struct nmiaction {
  5375. struct list_head list;
  5376. @@ -212,8 +219,12 @@
  5377. static notrace __kprobes void
  5378. pci_serr_error(unsigned char reason, struct pt_regs *regs)
  5379. {
  5380. +#ifdef CONFIG_COBALT_RAQ
  5381. + cobalt_nmi(reason, regs);
  5382. +#else
  5383. pr_emerg("NMI: PCI system error (SERR) for reason %02x on CPU %d.\n",
  5384. reason, smp_processor_id());
  5385. +#endif
  5386.  
  5387. /*
  5388. * On some machines, PCI SERR line is used to report memory
  5389. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/arch/x86/kernel/reboot.c linux-3.2.5-cobalt/arch/x86/kernel/reboot.c
  5390. --- linux-3.2.5/arch/x86/kernel/reboot.c 2012-02-06 09:47:00.000000000 -0800
  5391. +++ linux-3.2.5-cobalt/arch/x86/kernel/reboot.c 2012-02-06 21:34:59.000000000 -0800
  5392. @@ -28,6 +28,11 @@
  5393. # include <asm/x86_init.h>
  5394. #endif
  5395.  
  5396. +#ifdef CONFIG_COBALT_RAQ
  5397. +#include <cobalt/misc.h>
  5398. +#include <cobalt/lcd.h>
  5399. +#endif
  5400. +
  5401. /*
  5402. * Power off function, if any
  5403. */
  5404. @@ -551,6 +556,10 @@
  5405.  
  5406. tboot_shutdown(TB_SHUTDOWN_REBOOT);
  5407.  
  5408. +#ifdef CONFIG_COBALT_RAQ
  5409. + cobalt_restart();
  5410. +#endif
  5411. +
  5412. /* Tell the BIOS if we want cold or warm reboot */
  5413. *((unsigned short *)__va(0x472)) = reboot_mode;
  5414.  
  5415. @@ -625,7 +634,11 @@
  5416. {
  5417. /* Stop the cpus and apics */
  5418. #ifdef CONFIG_SMP
  5419. -
  5420. +#ifdef CONFIG_COBALT_RAQ
  5421. + wait_for_flush();
  5422. + //cobalt_halt();
  5423. + cobalt_lcd_print("It is now safe", "to remove power");
  5424. +#endif
  5425. /* The boot cpu is always logical cpu 0 */
  5426. int reboot_cpu_id = 0;
  5427.  
  5428. @@ -670,10 +683,37 @@
  5429. machine_ops.emergency_restart();
  5430. }
  5431.  
  5432. +/* kill some time at halt/reboot to allow drives with large cache to sync */
  5433. +void wait_for_flush(void)
  5434. +{
  5435. + int i;
  5436. + static int flushed;
  5437. +
  5438. + if (flushed)
  5439. + return;
  5440. + flushed = 1;
  5441. +
  5442. + printk("waiting for devices to flush");
  5443. + for (i = 0 ; i < 10; i++) {
  5444. + printk(".");
  5445. + mdelay(500);
  5446. +#ifdef CONFIG_COBALT_LCD
  5447. + if (i == 8)
  5448. + cobalt_lcd_off();
  5449. +#endif
  5450. + }
  5451. + printk("done\n");
  5452. +}
  5453. +
  5454. static void native_machine_restart(char *__unused)
  5455. {
  5456. printk("machine restart\n");
  5457.  
  5458. +#ifdef CONFIG_COBALT_RAQ
  5459. + wait_for_flush();
  5460. + cobalt_restart();
  5461. +#endif
  5462. +
  5463. if (!reboot_force)
  5464. machine_shutdown();
  5465. __machine_emergency_restart(0);
  5466. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/Kconfig linux-3.2.5-cobalt/drivers/Kconfig
  5467. --- linux-3.2.5/drivers/Kconfig 2012-02-06 09:47:00.000000000 -0800
  5468. +++ linux-3.2.5-cobalt/drivers/Kconfig 2012-02-06 21:34:59.000000000 -0800
  5469. @@ -108,6 +108,8 @@
  5470.  
  5471. source "drivers/dca/Kconfig"
  5472.  
  5473. +source "drivers/cobalt/Kconfig"
  5474. +
  5475. source "drivers/auxdisplay/Kconfig"
  5476.  
  5477. source "drivers/uio/Kconfig"
  5478. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/Makefile linux-3.2.5-cobalt/drivers/Makefile
  5479. --- linux-3.2.5/drivers/Makefile 2012-02-06 09:47:00.000000000 -0800
  5480. +++ linux-3.2.5-cobalt/drivers/Makefile 2012-02-06 21:34:59.000000000 -0800
  5481. @@ -94,6 +94,7 @@
  5482. obj-$(CONFIG_EDAC) += edac/
  5483. obj-$(CONFIG_MCA) += mca/
  5484. obj-$(CONFIG_EISA) += eisa/
  5485. +obj-$(CONFIG_COBALT_RAQ) += cobalt/
  5486. obj-y += lguest/
  5487. obj-$(CONFIG_CPU_FREQ) += cpufreq/
  5488. obj-$(CONFIG_CPU_IDLE) += cpuidle/
  5489. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/char/misc.c linux-3.2.5-cobalt/drivers/char/misc.c
  5490. --- linux-3.2.5/drivers/char/misc.c 2012-02-06 09:47:00.000000000 -0800
  5491. +++ linux-3.2.5-cobalt/drivers/char/misc.c 2012-02-06 21:34:59.000000000 -0800
  5492. @@ -50,6 +50,17 @@
  5493. #include <linux/kmod.h>
  5494. #include <linux/gfp.h>
  5495.  
  5496. +#ifdef CONFIG_COBALT_RAQ
  5497. +#include <cobalt/cobalt.h>
  5498. +#include <cobalt/systype.h>
  5499. +#include <cobalt/superio.h>
  5500. +#include <cobalt/serialnum.h>
  5501. +#include <cobalt/i2c.h>
  5502. +#include <cobalt/misc.h>
  5503. +#include <cobalt/lcd.h>
  5504. +#endif
  5505. +
  5506. +
  5507. /*
  5508. * Head entry for the doubly linked miscdevice list
  5509. */
  5510. @@ -62,6 +73,13 @@
  5511. #define DYNAMIC_MINORS 64 /* like dynamic majors */
  5512. static DECLARE_BITMAP(misc_minors, DYNAMIC_MINORS);
  5513.  
  5514. +#ifdef CONFIG_COBALT_RAQ
  5515. +extern int cobalt_init(void);
  5516. +#endif
  5517. +#ifdef CONFIG_COBALT_MIPS_LCD
  5518. +extern int lcd_init(void);
  5519. +#endif
  5520. +
  5521. #ifdef CONFIG_PROC_FS
  5522. static void *misc_seq_start(struct seq_file *seq, loff_t *pos)
  5523. {
  5524. @@ -281,6 +299,10 @@
  5525. if (IS_ERR(misc_class))
  5526. goto fail_remove;
  5527.  
  5528. +#ifdef CONFIG_COBALT_MIPS_LCD
  5529. + lcd_init();
  5530. +#endif
  5531. +
  5532. err = -EIO;
  5533. if (register_chrdev(MISC_MAJOR,"misc",&misc_fops))
  5534. goto fail_printk;
  5535. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/char/nvram.c linux-3.2.5-cobalt/drivers/char/nvram.c
  5536. --- linux-3.2.5/drivers/char/nvram.c 2012-02-06 09:47:00.000000000 -0800
  5537. +++ linux-3.2.5-cobalt/drivers/char/nvram.c 2012-02-06 21:34:59.000000000 -0800
  5538. @@ -48,6 +48,9 @@
  5539. # define MACH ATARI
  5540. #elif defined(__i386__) || defined(__x86_64__) || defined(__arm__) /* and ?? */
  5541. # define MACH PC
  5542. +#elif defined(CONFIG_COBALT_RAQ)
  5543. +# include <cobalt/nvram.h>
  5544. +# define MACH PC
  5545. #else
  5546. # error Cannot build nvram driver for this machine configuration.
  5547. #endif
  5548. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/Kconfig linux-3.2.5-cobalt/drivers/cobalt/Kconfig
  5549. --- linux-3.2.5/drivers/cobalt/Kconfig 1969-12-31 16:00:00.000000000 -0800
  5550. +++ linux-3.2.5-cobalt/drivers/cobalt/Kconfig 2012-02-06 21:34:59.000000000 -0800
  5551. @@ -0,0 +1,169 @@
  5552. +#
  5553. +# Cobalt Drivers
  5554. +#
  5555. +
  5556. +menu "Cobalt RaQ/Qube Hardware"
  5557. +
  5558. +config COBALT_RAQ
  5559. + bool "Cobalt RaQ/Qube Hardware Support"
  5560. + select INPUT
  5561. + default n
  5562. + ---help---
  5563. + NOTE: This support is for x86 Cobalts, not MIPS versions
  5564. +
  5565. + If you have a Gen III or Gen V Cobalt RaQ/Qube machine, it's probably
  5566. + a good idea to say Y here and choose from the options below.
  5567. +
  5568. +config COBALT_GEN_III
  5569. + bool "Gen III (3000 series) system support"
  5570. + depends on COBALT_RAQ
  5571. + default y
  5572. + ---help---
  5573. + If you have one of the following Gen III Cobalt systems, say Y here.
  5574. + Otherwise, it's best to say N.
  5575. +
  5576. + - RaQ 3
  5577. + - RaQ 4
  5578. + - Qube3
  5579. +
  5580. +config COBALT_GEN_V
  5581. + bool "Gen V (5000 series) system support"
  5582. + depends on COBALT_RAQ
  5583. + default n
  5584. + ---help---
  5585. + If you have one of the following Gen V Cobalt systems, say Y here.
  5586. + Otherwise, it's best to say N.
  5587. +
  5588. + - RaQ XTR
  5589. + - RaQ550
  5590. +
  5591. +config COBALT_NEWCMDLINE
  5592. + bool "New kernel commandline handling"
  5593. + depends on COBALT_RAQ
  5594. + default y
  5595. + ---help---
  5596. + In 2.6.24 a new method for handling the kernel commandline was
  5597. + introduced. This broke the commandline received from the ROM kernel.
  5598. +
  5599. + It is in your best interest to say Y here.
  5600. +
  5601. +config COBALT_OLDPROC
  5602. + bool "Create legacy /proc files"
  5603. + depends on COBALT_RAQ
  5604. + depends on PROC_FS
  5605. + default y
  5606. + ---help---
  5607. + Creates entries in /proc/cobalt which provide useful information about
  5608. + your RaQ/Qube. Best to say Y here.
  5609. +
  5610. +#config COBALT_BOOTLOADER
  5611. +# bool "Cobalt Bootloader Support"
  5612. +# depends on COBALT_RAQ
  5613. +# default n
  5614. +# ---help---
  5615. +# If you are going to being burning this kernel to the RaQ/Qube's ROM to
  5616. +# act as a loader kernel, this is required to load the system kernel and
  5617. +# hand off control to it. It is recommended you say N here unless you
  5618. +# know what you're getting yourself into.
  5619. +#
  5620. +menu "Cobalt Hardware Options"
  5621. + depends on COBALT_RAQ
  5622. +
  5623. + config COBALT_LCD
  5624. + bool "Front panel LCD support"
  5625. + default y
  5626. + ---help---
  5627. + Handles support for the front panel LCD screen and buttons.
  5628. +
  5629. + config COBALT_LCD_TWIDDLE
  5630. + bool "Twiddle LCD on boot"
  5631. + depends on COBALT_LCD
  5632. + default y
  5633. + ---help---
  5634. + Gives you a nice little twiddle on the LCD while booting.
  5635. +
  5636. + config COBALT_LED
  5637. + bool "Software controlled LED support"
  5638. + default y
  5639. + ---help---
  5640. + Allows software to play with the LEDs on the front of the
  5641. + system.
  5642. +
  5643. + config COBALT_SERNUM
  5644. + tristate "Serial number support"
  5645. + depends on COBALT_OLDPROC
  5646. + default y
  5647. + ---help---
  5648. + Allows you to retrieve the system's serial number via a /proc
  5649. + entry.
  5650. +
  5651. + config COBALT_WDT
  5652. + bool "Watchdog timer support"
  5653. + depends on WATCHDOG
  5654. + default y
  5655. + ---help---
  5656. + w00f?
  5657. +
  5658. + config COBALT_POWERMODE
  5659. + bool "Powermode Restore support"
  5660. + depends on COBALT_OLDPROC
  5661. + depends on COBALT_GEN_V
  5662. + default y
  5663. + ---help---
  5664. + On GenV RaQs you can specify what action to take should a
  5665. + power failure occur. This code allows you to set that action
  5666. + via /proc/cobalt/powermode. Your options are "on", "off", and
  5667. + "same", except on Monterey hardware (XTR's) where there is no
  5668. + support for "on".
  5669. +
  5670. + config COBALT_SENSORS
  5671. + bool "System sensors support"
  5672. + depends on COBALT_OLDPROC
  5673. + default y
  5674. + ---help---
  5675. + Allows you to retrieve system temperatures via /proc entries.
  5676. +
  5677. + config COBALT_FANS
  5678. + tristate "Fan tachometer support"
  5679. + depends on COBALT_OLDPROC
  5680. + depends on COBALT_GEN_V
  5681. + default y
  5682. + ---help---
  5683. + Allows you to retrieve fan speeds via /proc entries.
  5684. +
  5685. + config COBALT_RAMINFO
  5686. + tristate "Memory information support"
  5687. + depends on COBALT_OLDPROC
  5688. + default y
  5689. + ---help---
  5690. + Got DIMMs? This will tell you how much and in which slot via a
  5691. + /proc entry.
  5692. +
  5693. +# config COBALT_RULER
  5694. +# bool "Disk drive ruler support"
  5695. +# depends on COBALT_OLDPROC
  5696. +# depends on COBALT_GEN_V
  5697. +# default n
  5698. +# ---help---
  5699. +# Not sure what this does... A purple tape measure maybe?
  5700. +#
  5701. +# NOTE: Whatever it does, someone changed ide_hwif_t and broke it.
  5702. +# I don't see an easy fix for this.
  5703. +#
  5704. + config COBALT_ACPI
  5705. + bool "Cobalt ACPI support"
  5706. + depends on COBALT_GEN_V
  5707. + default y
  5708. + ---help---
  5709. + ACPI support for the Generation V Cobalts.
  5710. +
  5711. + config COBALT_EMU_ACPI
  5712. + bool "/proc/acpi emulation"
  5713. + depends on COBALT_ACPI
  5714. + default y
  5715. + ---help---
  5716. + Emulates the /proc/acpi interface.
  5717. +
  5718. +endmenu
  5719. +
  5720. +endmenu
  5721. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/Makefile linux-3.2.5-cobalt/drivers/cobalt/Makefile
  5722. --- linux-3.2.5/drivers/cobalt/Makefile 1969-12-31 16:00:00.000000000 -0800
  5723. +++ linux-3.2.5-cobalt/drivers/cobalt/Makefile 2012-02-06 21:34:59.000000000 -0800
  5724. @@ -0,0 +1,18 @@
  5725. +#
  5726. +# Makefile for the Sun/Cobalt device drivers
  5727. +#
  5728. +
  5729. +#O_TARGET := cobalt.o
  5730. +
  5731. +#export-objs := init.o systype.o wdt.o i2c.o
  5732. +
  5733. +obj-$(CONFIG_COBALT_RAQ) += init.o systype.o i2c.o wdt.o
  5734. +obj-$(CONFIG_COBALT_ACPI) += acpi.o
  5735. +obj-$(CONFIG_COBALT_SERNUM) += serialnum.o
  5736. +obj-$(CONFIG_COBALT_LCD) += lcd.o
  5737. +obj-$(CONFIG_COBALT_LED) += net.o led.o
  5738. +obj-$(CONFIG_COBALT_SENSORS) += sensors.o
  5739. +obj-$(CONFIG_COBALT_FANS) += fans.o
  5740. +obj-$(CONFIG_COBALT_RAMINFO) += raminfo.o
  5741. +obj-$(CONFIG_COBALT_RULER) += ruler.o
  5742. +obj-$(CONFIG_COBALT_POWERMODE) += powermode.o
  5743. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/README linux-3.2.5-cobalt/drivers/cobalt/README
  5744. --- linux-3.2.5/drivers/cobalt/README 1969-12-31 16:00:00.000000000 -0800
  5745. +++ linux-3.2.5-cobalt/drivers/cobalt/README 2012-02-06 21:34:59.000000000 -0800
  5746. @@ -0,0 +1,19 @@
  5747. +Notes on Cobalt's drivers:
  5748. +
  5749. +You will notice in several places constructs such as this:
  5750. +
  5751. + if (cobt_is_3k()) {
  5752. + foo();
  5753. + } else if (cobt_is_5k()) {
  5754. + bar();
  5755. + }
  5756. +
  5757. +The goal here is to only compile in code that is needed, but to allow one to
  5758. +define support for both 3k and 5k (and more?) style systems. The systype
  5759. +check macros are very simple and clean. They check whether config-time
  5760. +support for the generation has been enabled, and (if so) whether the current
  5761. +systype matches the spcified generation. This leaves the code free from
  5762. +#ifdef cruft, but lets the compiler throw out unsupported generation-specific
  5763. +code with if (0) detection.
  5764. +
  5765. +--
  5766. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/acpi.c linux-3.2.5-cobalt/drivers/cobalt/acpi.c
  5767. --- linux-3.2.5/drivers/cobalt/acpi.c 1969-12-31 16:00:00.000000000 -0800
  5768. +++ linux-3.2.5-cobalt/drivers/cobalt/acpi.c 2012-02-06 21:34:59.000000000 -0800
  5769. @@ -0,0 +1,1993 @@
  5770. + /*
  5771. + * cobalt acpi driver
  5772. + * Copyright (c) 2000, Cobalt Networks, Inc.
  5773. + * Copyright (c) 2001, Sun Microsystems, Inc.
  5774. + * $Id: acpi.c,v 1.32 2002/06/26 19:08:54 duncan Exp $
  5775. + *
  5776. + * author: asun@cobalt.com, thockin@sun.com
  5777. + * modified by: jeff@404ster.com
  5778. + *
  5779. + * this driver just sets stuff up for ACPI interrupts
  5780. + *
  5781. + * if acpi support really existed in the kernel, we would read
  5782. + * data from the ACPI tables. however, it doesn't. as a result,
  5783. + * we use some hardcoded values.
  5784. + *
  5785. + * This should be SMP safe. The only data that needs protection is the acpi
  5786. + * handler list. It gets scanned at timer-interrupts, must use
  5787. + * irqsave/restore locks. Read/write locks would be useful if there were any
  5788. + * other times that the list was read but never written. --TPH
  5789. + *
  5790. + * /proc/acpi emulation emulates the /proc/acpi/events interface supplied by
  5791. + * the INTEL acpi drivers. A lot of the code to handle it has been adapted
  5792. + * from there.
  5793. + */
  5794. +
  5795. +#include <stdarg.h>
  5796. +#include <stddef.h>
  5797. +#include <linux/init.h>
  5798. +#include <linux/sched.h>
  5799. +#include <linux/pci.h>
  5800. +#include <linux/sched.h>
  5801. +#include <linux/ioport.h>
  5802. +#include <linux/delay.h>
  5803. +#include <linux/spinlock.h>
  5804. +#include <linux/proc_fs.h>
  5805. +#include <linux/poll.h>
  5806. +#include <linux/interrupt.h>
  5807. +#include <asm/uaccess.h>
  5808. +#include <asm/io.h>
  5809. +#include <asm/irq.h>
  5810. +
  5811. +#include <cobalt/cobalt.h>
  5812. +#include <cobalt/systype.h>
  5813. +#include <cobalt/acpi.h>
  5814. +#include <cobalt/superio.h>
  5815. +
  5816. +#define ACPI_DRIVER "Cobalt Networks ACPI driver"
  5817. +#define ACPI_DRIVER_VMAJ 1
  5818. +#define ACPI_DRIVER_VMIN 0
  5819. +
  5820. +#define POWER_BUTTON_SHUTDOWN 0
  5821. +
  5822. +#define ACPI_IRQ 10 /* XXX: hardcoded interrupt */
  5823. +#define ACPI_NAME "sci"
  5824. +#define ACPI_MAGIC 0xc0b7ac21
  5825. +
  5826. +#define SUPERIO_EVENT 0xff
  5827. +#define OSB4_EVENT 0x40
  5828. +#define OSB4_INDEX_PORT SERVERWORKS_ACPI_INDEX_PORT
  5829. +#define OSB4_DATA_PORT SERVERWORKS_ACPI_DATA_PORT
  5830. +
  5831. +#define GEN_ACPI_TMR_STS (0x1 << 0)
  5832. +#define GEN_ACPI_BM_STS (0x1 << 4)
  5833. +#define GEN_ACPI_GBL_STS (0x1 << 5)
  5834. +#define GEN_ACPI_PWRBTN_STS (0x1 << 8)
  5835. +#define GEN_ACPI_SLPBTN_STS (0x1 << 9)
  5836. +#define GEN_ACPI_RTC_STS (0x1 << 10)
  5837. +#define GEN_ACPI_WAK_STS (0x1 << 15)
  5838. +
  5839. +#ifdef CONFIG_COBALT_EMU_ACPI
  5840. +static int cobalt_acpi_setup_proc(void);
  5841. +static int cobalt_acpi_open_event(struct inode *inode, struct file *file);
  5842. +static int cobalt_acpi_close_event(struct inode *inode, struct file *file);
  5843. +static ssize_t cobalt_acpi_read_event(struct file *file, char *buf,
  5844. + size_t count, loff_t *ppos);
  5845. +static unsigned int cobalt_acpi_poll_event(struct file *file, poll_table *wait);
  5846. +#endif
  5847. +
  5848. +
  5849. +
  5850. +typedef struct
  5851. +{
  5852. + u16 hw_type;
  5853. + cobalt_acpi_hw_handler hw_handler;
  5854. + cobalt_acpi_enable_handler en_handler;
  5855. + void *data;
  5856. + struct list_head link;
  5857. +} hw_handler_datum;
  5858. +
  5859. +typedef struct
  5860. +{
  5861. + u16 hw_type;
  5862. + u16 table_len;
  5863. + u16 *table;
  5864. + struct list_head link;
  5865. +} trans_table_datum;
  5866. +
  5867. +typedef struct
  5868. +{
  5869. + cobalt_acpi_evt_handler handler;
  5870. + u16 ev_type;
  5871. + void *data;
  5872. + struct list_head link;
  5873. +} evt_handler_datum;
  5874. +
  5875. +typedef struct
  5876. +{
  5877. + cobalt_acpi_evt evt;
  5878. + struct list_head link;
  5879. +} evt_list_datum;
  5880. +
  5881. +static LIST_HEAD( hw_handler_list );
  5882. +static DEFINE_SPINLOCK(hw_handler_list_lock);
  5883. +static LIST_HEAD( trans_table_list );
  5884. +static DEFINE_SPINLOCK(trans_table_list_lock);
  5885. +static LIST_HEAD( evt_handler_list );
  5886. +static DEFINE_SPINLOCK(evt_handler_list_lock);
  5887. +static LIST_HEAD( dispatch_queue );
  5888. +static DEFINE_SPINLOCK(dispatch_queue_lock);
  5889. +
  5890. +typedef struct
  5891. +{
  5892. + u16 hw_type;
  5893. +
  5894. + /* block lengths */
  5895. + u16 pm1_evt_len;
  5896. + u16 pm1_cnt_len;
  5897. + u16 pm2_cnt_len;
  5898. + u16 pm_tmr_len;
  5899. + u16 gpe0_len;
  5900. + u16 gpe1_len;
  5901. +
  5902. + /* block I/O locations */
  5903. + u16 pm1a_evt_blk;
  5904. + u16 pm1b_evt_blk;
  5905. + u16 pm1a_cnt_blk;
  5906. + u16 pm1b_cnt_blk;
  5907. + u16 pm2_cnt_blk;
  5908. + u16 pm_tmr_blk;
  5909. + u16 p_blk;
  5910. + u16 gpe0_blk;
  5911. + u16 gpe1_blk;
  5912. +
  5913. + /* ponters to strings for the io names */
  5914. + char *pm1a_evt_nam;
  5915. + char *pm1b_evt_nam;
  5916. + char *pm1a_cnt_nam;
  5917. + char *pm1b_cnt_nam;
  5918. + char *pm2_cnt_nam;
  5919. + char *pm_tmr_nam;
  5920. + char *p_nam;
  5921. + char *gpe0_nam;
  5922. + char *gpe1_nam;
  5923. +
  5924. + /* reference counts for events */
  5925. + atomic_t tmr_ref_cnt;
  5926. + atomic_t bm_ref_cnt;
  5927. + atomic_t gbl_ref_cnt;
  5928. + atomic_t pwrbtn_ref_cnt;
  5929. + atomic_t slpbtn_ref_cnt;
  5930. + atomic_t rtc_ref_cnt;
  5931. + atomic_t wak_ref_cnt;
  5932. + atomic_t *gpe_ref_cnt;
  5933. +
  5934. +
  5935. +} generic_acpi_regions;
  5936. +
  5937. +
  5938. +static void cobalt_acpi_enable_event( u16 ev_type, int en );
  5939. +static void cobalt_acpi_run_enable_handler( u16 hw_type, u16 ev_type,
  5940. + u16 ev_data, int en);
  5941. +static int cobalt_acpi_apply_evt_handlers( evt_list_datum *d );
  5942. +static int cobalt_acpi_run_dispatch_queue( void );
  5943. +static irqreturn_t acpi_interrupt(int irq, void *dev_id);
  5944. +static void cobalt_acpi_cleanup( void );
  5945. +
  5946. +static int register_acpi_regions( generic_acpi_regions *regions, char * subsys_name );
  5947. +static int unregister_acpi_regions( generic_acpi_regions *regions );
  5948. +static void cobalt_acpi_handle_pm1_blk( u16 io_addr, u16 len,
  5949. + generic_acpi_regions * regions );
  5950. +static void cobalt_acpi_handle_gpe_blk( u16 io_addr, u16 len,
  5951. + generic_acpi_regions * regions );
  5952. +static int cobalt_acpi_generic_hw_handler( int irq, void *dev_id,
  5953. + struct pt_regs *regs, void * data );
  5954. +
  5955. +static int cobalt_acpi_osb4_init( void );
  5956. +static int cobalt_acpi_osb4_cleanup( void );
  5957. +static int get_osb4_regions( generic_acpi_regions *regions);
  5958. +
  5959. +static int cobalt_acpi_csb5_init( void );
  5960. +static int cobalt_acpi_csb5_cleanup( void );
  5961. +static int get_csb5_regions( generic_acpi_regions *regions);
  5962. +
  5963. +static int cobalt_acpi_pc8731x_init( void );
  5964. +static int cobalt_acpi_pc8731x_cleanup( void );
  5965. +static int get_pc8731x_regions( generic_acpi_regions *regions );
  5966. +
  5967. +static int cobalt_acpi_pc8741x_init( void );
  5968. +static int cobalt_acpi_pc8741x_cleanup( void );
  5969. +static int get_pc8741x_regions( generic_acpi_regions *regions );
  5970. +
  5971. +static int cobalt_acpi_monterey_init( void );
  5972. +static int cobalt_acpi_monterey_cleanup( void );
  5973. +
  5974. +static int cobalt_acpi_alpine_init( void );
  5975. +static int cobalt_acpi_alpine_cleanup( void );
  5976. +
  5977. +static __inline__ struct list_head *list_pop( struct list_head *head )
  5978. +{
  5979. + struct list_head *e;
  5980. +
  5981. + if( list_empty( head ) )
  5982. + return NULL;
  5983. +
  5984. + e = head->next;
  5985. + list_del( e );
  5986. + return e;
  5987. +}
  5988. +
  5989. +static __inline__ u16 get_reg(u16 index, u16 data, u8 port)
  5990. +{
  5991. + u16 reg;
  5992. +
  5993. + outb(port, index);
  5994. + reg = inb(data);
  5995. + outb(port + 1, index);
  5996. + reg |= inb(data) << 8;
  5997. + return reg;
  5998. +}
  5999. +
  6000. +/*
  6001. + *
  6002. + * Main ACPI Subsystem Code
  6003. + *
  6004. + */
  6005. +
  6006. +extern int cobalt_acpi_register_hw_handler( u16 hw_type,
  6007. + cobalt_acpi_hw_handler hw_handler,
  6008. + cobalt_acpi_enable_handler en_handler,
  6009. + void *data )
  6010. +{
  6011. + hw_handler_datum *d;
  6012. + unsigned long flags;
  6013. +
  6014. + if( ! (d = (hw_handler_datum *) kmalloc( sizeof( hw_handler_datum ), GFP_ATOMIC )) )
  6015. + return -ENOMEM;
  6016. +
  6017. + d->hw_type = hw_type;
  6018. + d->hw_handler = hw_handler;
  6019. + d->en_handler = en_handler;
  6020. + d->data = data;
  6021. +
  6022. + spin_lock_irqsave( &hw_handler_list_lock, flags );
  6023. + list_add( &(d->link), &hw_handler_list );
  6024. + spin_unlock_irqrestore( &hw_handler_list_lock, flags );
  6025. +
  6026. + return 0;
  6027. +}
  6028. +
  6029. +extern int cobalt_acpi_unregister_hw_handler( cobalt_acpi_hw_handler handler )
  6030. +{
  6031. + struct list_head *pos;
  6032. + unsigned long flags;
  6033. +
  6034. + spin_lock_irqsave( &hw_handler_list_lock, flags );
  6035. + list_for_each( pos, &hw_handler_list )
  6036. + {
  6037. + if( list_entry( pos, hw_handler_datum, link )->hw_handler == handler )
  6038. + {
  6039. + list_del( pos );
  6040. + spin_unlock_irqrestore( &hw_handler_list_lock, flags );
  6041. +
  6042. + kfree( list_entry( pos, hw_handler_datum, link ) );
  6043. + return 0;
  6044. + }
  6045. +
  6046. + };
  6047. +
  6048. + spin_unlock_irqrestore( &hw_handler_list_lock, flags );
  6049. + return -1;
  6050. +}
  6051. +
  6052. +extern int cobalt_acpi_register_trans_table( u16 hw_type, u16 table_len, u16 *table )
  6053. +{
  6054. + trans_table_datum *d;
  6055. + unsigned long flags;
  6056. +
  6057. + if( ! (d = (trans_table_datum *) kmalloc( sizeof( trans_table_datum ), GFP_ATOMIC )) )
  6058. + return -ENOMEM;
  6059. +
  6060. + d->hw_type = hw_type;
  6061. + d->table_len = table_len;
  6062. + d->table = table;
  6063. +
  6064. + spin_lock_irqsave( &trans_table_list_lock, flags );
  6065. + list_add( &(d->link), &trans_table_list );
  6066. + spin_unlock_irqrestore( &trans_table_list_lock, flags );
  6067. +
  6068. + return 0;
  6069. +}
  6070. +
  6071. +extern int cobalt_acpi_unregister_trans_table( u16 hw_type )
  6072. +{
  6073. + struct list_head *pos;
  6074. + unsigned long flags;
  6075. +
  6076. + spin_lock_irqsave( &trans_table_list_lock, flags );
  6077. + list_for_each( pos, &trans_table_list )
  6078. + {
  6079. + if( list_entry( pos, trans_table_datum, link )->hw_type == hw_type )
  6080. + {
  6081. + list_del( pos );
  6082. + spin_unlock_irqrestore( &trans_table_list_lock, flags );
  6083. +
  6084. + kfree( list_entry( pos, trans_table_datum, link ) );
  6085. + return 0;
  6086. + }
  6087. +
  6088. + };
  6089. +
  6090. + spin_unlock_irqrestore( &trans_table_list_lock, flags );
  6091. + return -1;
  6092. +}
  6093. +
  6094. +extern int cobalt_acpi_register_evt_handler( cobalt_acpi_evt_handler handler,
  6095. + u16 ev_type,
  6096. + void *data )
  6097. +{
  6098. + evt_handler_datum *d;
  6099. + unsigned long flags;
  6100. +
  6101. + if( ! (d = (evt_handler_datum *) kmalloc( sizeof( evt_handler_datum ), GFP_ATOMIC )) )
  6102. + return -ENOMEM;
  6103. +
  6104. + d->handler = handler;
  6105. + d->data = data;
  6106. + d->ev_type = ev_type;
  6107. +
  6108. + spin_lock_irqsave( &evt_handler_list_lock, flags );
  6109. + list_add( &(d->link), &evt_handler_list );
  6110. + spin_unlock_irqrestore( &evt_handler_list_lock, flags );
  6111. +
  6112. + cobalt_acpi_enable_event( ev_type, 1 );
  6113. +
  6114. + return 0;
  6115. +}
  6116. +
  6117. +extern int cobalt_acpi_unregister_evt_handler( cobalt_acpi_evt_handler handler )
  6118. +{
  6119. + struct list_head *pos;
  6120. + unsigned long flags;
  6121. +
  6122. +
  6123. + spin_lock_irqsave( &evt_handler_list_lock, flags );
  6124. + list_for_each( pos, &evt_handler_list )
  6125. + {
  6126. + if( list_entry( pos, evt_handler_datum, link )->handler == handler )
  6127. + {
  6128. + list_del( pos );
  6129. + spin_unlock_irqrestore( &evt_handler_list_lock, flags );
  6130. +
  6131. + cobalt_acpi_enable_event( list_entry( pos,
  6132. + evt_handler_datum,
  6133. + link )->ev_type, 0 );
  6134. +
  6135. + kfree( list_entry( pos, evt_handler_datum, link ) );
  6136. + return 0;
  6137. + }
  6138. +
  6139. + };
  6140. +
  6141. + spin_unlock_irqrestore( &evt_handler_list_lock, flags );
  6142. + return -EINVAL;
  6143. +}
  6144. +
  6145. +static void cobalt_acpi_enable_event( u16 ev_type, int en )
  6146. +{
  6147. + if( ev_type >= 0x8000 )
  6148. + {
  6149. + struct list_head *pos;
  6150. + trans_table_datum *d;
  6151. + int i;
  6152. + unsigned long flags;
  6153. +
  6154. + spin_lock_irqsave( &trans_table_list_lock, flags );
  6155. + list_for_each( pos, &trans_table_list )
  6156. + {
  6157. + d = list_entry( pos, trans_table_datum, link );
  6158. + for( i=0 ; i<d->table_len ; i++ )
  6159. + {
  6160. + if( d->table[i] == ev_type )
  6161. + {
  6162. + cobalt_acpi_run_enable_handler( d->hw_type,
  6163. + COBALT_ACPI_EVT_GPE,
  6164. + i, en );
  6165. + }
  6166. + }
  6167. + }
  6168. + spin_unlock_irqrestore( &trans_table_list_lock, flags );
  6169. + }
  6170. + else
  6171. + cobalt_acpi_run_enable_handler( COBALT_ACPI_HW_ANY, ev_type, 0, en);
  6172. +}
  6173. +
  6174. +static void cobalt_acpi_run_enable_handler( u16 hw_type, u16 ev_type,
  6175. + u16 ev_data, int en)
  6176. +{
  6177. + struct list_head *pos;
  6178. + unsigned long flags;
  6179. + hw_handler_datum *d;
  6180. +
  6181. + spin_lock_irqsave(&hw_handler_list_lock, flags);
  6182. + list_for_each( pos, &hw_handler_list )
  6183. + {
  6184. + d = list_entry( pos, hw_handler_datum, link );
  6185. + if( (!hw_type) || (d->hw_type == hw_type) )
  6186. + d->en_handler( ev_type, ev_data, en, d->data );
  6187. + }
  6188. + spin_unlock_irqrestore(&hw_handler_list_lock, flags);
  6189. +
  6190. +}
  6191. +
  6192. +static int cobalt_acpi_translate_event( cobalt_acpi_evt *evt )
  6193. +{
  6194. + struct list_head *pos;
  6195. + unsigned long flags;
  6196. + trans_table_datum *d;
  6197. +
  6198. + if( evt->ev_type != COBALT_ACPI_EVT_GPE )
  6199. + return 0;
  6200. +
  6201. + spin_lock_irqsave( &trans_table_list_lock, flags );
  6202. + list_for_each( pos, &trans_table_list )
  6203. + {
  6204. + d = list_entry( pos, trans_table_datum, link );
  6205. + if( d->hw_type == evt->hw_type )
  6206. + {
  6207. + if( evt->ev_data >= d->table_len )
  6208. + goto err_out;
  6209. +
  6210. + if( d->table[ evt->ev_data ] != COBALT_ACPI_EVT_NONE )
  6211. + {
  6212. + evt->ev_type = d->table[ evt->ev_data ];
  6213. + evt->ev_data = 0;
  6214. + }
  6215. +
  6216. + spin_unlock_irqrestore( &trans_table_list_lock, flags );
  6217. + return 0;
  6218. + }
  6219. + }
  6220. +
  6221. + err_out:
  6222. + spin_unlock_irqrestore( &trans_table_list_lock, flags );
  6223. + return -1;
  6224. +}
  6225. +
  6226. +extern int cobalt_acpi_post_event( cobalt_acpi_evt evt )
  6227. +{
  6228. + evt_list_datum *d;
  6229. + unsigned long flags;
  6230. +
  6231. + if( ! (d = (evt_list_datum *) kmalloc( sizeof( evt_handler_datum ), GFP_ATOMIC )) )
  6232. + return -ENOMEM;
  6233. +
  6234. +
  6235. + cobalt_acpi_translate_event( &evt );
  6236. +
  6237. + memcpy( &(d->evt), &evt, sizeof(evt) );
  6238. +
  6239. + spin_lock_irqsave( &dispatch_queue_lock, flags );
  6240. + list_add_tail( &(d->link), &dispatch_queue );
  6241. + spin_unlock_irqrestore( &dispatch_queue_lock, flags );
  6242. +
  6243. + return 0;
  6244. +}
  6245. +
  6246. +static int cobalt_acpi_apply_evt_handlers( evt_list_datum *d )
  6247. +{
  6248. + struct list_head *pos;
  6249. + evt_handler_datum *evt_h;
  6250. + int ret,err = 0;
  6251. + unsigned long flags;
  6252. +
  6253. + spin_lock_irqsave( &evt_handler_list_lock, flags );
  6254. + list_for_each( pos, &evt_handler_list )
  6255. + {
  6256. + evt_h = list_entry( pos, evt_handler_datum, link );
  6257. + if( (! evt_h->ev_type) || (evt_h->ev_type == d->evt.ev_type) )
  6258. + {
  6259. + if( (ret = evt_h->handler( &d->evt, evt_h->data )) < 0 )
  6260. + err = ret;
  6261. + }
  6262. + }
  6263. + spin_unlock_irqrestore( &evt_handler_list_lock, flags );
  6264. +
  6265. + return err;
  6266. +}
  6267. +
  6268. +static int cobalt_acpi_run_dispatch_queue( void )
  6269. +{
  6270. + struct list_head *pos;
  6271. + int ret;
  6272. + int err=0;
  6273. + evt_list_datum *d;
  6274. + unsigned long flags;
  6275. +
  6276. + spin_lock_irqsave( &dispatch_queue_lock, flags );
  6277. + while( (pos = list_pop( &dispatch_queue )) )
  6278. + {
  6279. + d = list_entry( pos, evt_list_datum, link );
  6280. + if( (ret = cobalt_acpi_apply_evt_handlers( d )) < 0 )
  6281. + err = ret;
  6282. +#ifdef CONFIG_COBALT_EMU_ACPI
  6283. + cobalt_acpi_generate_proc_evt( &d->evt );
  6284. +#endif
  6285. + kfree( d );
  6286. + }
  6287. + spin_unlock_irqrestore( &dispatch_queue_lock, flags );
  6288. +
  6289. + return err;
  6290. +}
  6291. +
  6292. +static irqreturn_t acpi_interrupt(int irq, void *dev_id)
  6293. +{
  6294. + struct list_head *pos;
  6295. + hw_handler_datum *d;
  6296. + int ret=0, err=0;
  6297. + unsigned long flags;
  6298. +
  6299. + spin_lock_irqsave(&hw_handler_list_lock, flags);
  6300. + list_for_each( pos, &hw_handler_list )
  6301. + {
  6302. + d = list_entry( pos, hw_handler_datum, link );
  6303. + if( (ret = d->hw_handler( irq, dev_id, (void *) NULL, d->data )) < 0 )
  6304. + err = ret;
  6305. +
  6306. + }
  6307. + spin_unlock_irqrestore(&hw_handler_list_lock, flags);
  6308. +
  6309. + if( (err = cobalt_acpi_run_dispatch_queue()) < 0 )
  6310. + err = ret;
  6311. +
  6312. + if( err )
  6313. + EPRINTK( "error at interrupt time of type %d.\n", err );
  6314. +
  6315. + return IRQ_HANDLED;
  6316. +}
  6317. +
  6318. +
  6319. +
  6320. +
  6321. +int __init cobalt_acpi_init(void)
  6322. +{
  6323. + int err;
  6324. +
  6325. + printk(KERN_INFO "%s %d.%d (modified by jeff@404ster.com, further modified by dave.studeman@raqcop.com)\n", ACPI_DRIVER,ACPI_DRIVER_VMAJ,ACPI_DRIVER_VMIN);
  6326. +
  6327. + if( cobt_is_monterey() )
  6328. + cobalt_acpi_monterey_init();
  6329. + else if( cobt_is_alpine() )
  6330. + cobalt_acpi_alpine_init();
  6331. +
  6332. + if( cobt_is_5k() )
  6333. + {
  6334. + if( pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  6335. + PCI_DEVICE_ID_SERVERWORKS_OSB4, NULL ) )
  6336. + {
  6337. + if( (err = cobalt_acpi_osb4_init()) < 0 )
  6338. + {
  6339. + goto cleanup;
  6340. + }
  6341. + }
  6342. +
  6343. + if( pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  6344. + PCI_DEVICE_ID_SERVERWORKS_CSB5, NULL ) )
  6345. + {
  6346. + if( (err = cobalt_acpi_csb5_init()) < 0 )
  6347. + {
  6348. + goto cleanup;
  6349. + }
  6350. + }
  6351. +
  6352. + switch( superio_type() )
  6353. + {
  6354. + case SIO_TYPE_PC8731X:
  6355. + if( (err = cobalt_acpi_pc8731x_init()) )
  6356. + {
  6357. + goto cleanup;
  6358. + }
  6359. + break;
  6360. +
  6361. + case SIO_TYPE_PC8741X:
  6362. + if( (err = cobalt_acpi_pc8741x_init()) )
  6363. + {
  6364. + goto cleanup;
  6365. + }
  6366. + break;
  6367. +
  6368. + case SIO_TYPE_UNKNOWN:
  6369. + EPRINTK("unknown superio type\n");
  6370. + break;
  6371. + }
  6372. +
  6373. + /* setup an interrupt handler for an ACPI SCI */
  6374. + err = request_irq(ACPI_IRQ, acpi_interrupt,
  6375. + IRQF_SHARED, ACPI_NAME, (void *)ACPI_MAGIC);
  6376. + if (err) {
  6377. + EPRINTK("can't assign ACPI IRQ (%d)\n", ACPI_IRQ);
  6378. + return err;
  6379. + }
  6380. +
  6381. +#ifdef CONFIG_COBALT_EMU_ACPI
  6382. + cobalt_acpi_setup_proc();
  6383. +#endif
  6384. + }
  6385. +
  6386. + /* enable some events we may want */
  6387. + cobalt_acpi_enable_event( COBALT_ACPI_EVT_PWRBTN, 1 );
  6388. +
  6389. + return 0;
  6390. +
  6391. + cleanup:
  6392. + cobalt_acpi_cleanup();
  6393. + return err;
  6394. +}
  6395. +
  6396. +static void cobalt_acpi_cleanup( void )
  6397. +{
  6398. + cobalt_acpi_osb4_cleanup();
  6399. + cobalt_acpi_csb5_cleanup();
  6400. + cobalt_acpi_pc8731x_cleanup();
  6401. + cobalt_acpi_pc8741x_cleanup();
  6402. +
  6403. + if( cobt_is_monterey() )
  6404. + cobalt_acpi_monterey_cleanup();
  6405. + if( cobt_is_alpine() )
  6406. + cobalt_acpi_alpine_cleanup();
  6407. +}
  6408. +
  6409. +/*
  6410. + *
  6411. + * Generic ACPI HW Support
  6412. + *
  6413. + */
  6414. +
  6415. +static __inline__ char *region_name( char * subsys_name, char * blk_name )
  6416. +{
  6417. + char * new_name;
  6418. +
  6419. + if( !( new_name = (char *) kmalloc( strlen(subsys_name) + strlen(blk_name) + 14,
  6420. + GFP_ATOMIC)) )
  6421. + return NULL;
  6422. +
  6423. + sprintf( new_name, "%s (%s)", subsys_name, blk_name );
  6424. + return new_name;
  6425. +}
  6426. +
  6427. +static void free_region_names( generic_acpi_regions *regions )
  6428. +{
  6429. + if( regions->pm1a_evt_nam )
  6430. + kfree( regions->pm1a_evt_nam );
  6431. +
  6432. + if( regions->pm1b_evt_nam )
  6433. + kfree( regions->pm1b_evt_nam );
  6434. +
  6435. + if( regions->pm1a_cnt_nam )
  6436. + kfree( regions->pm1a_cnt_nam );
  6437. +
  6438. + if( regions->pm1b_cnt_nam )
  6439. + kfree( regions->pm1b_cnt_nam );
  6440. +
  6441. + if( regions->pm2_cnt_nam )
  6442. + kfree( regions->pm2_cnt_nam );
  6443. +
  6444. + if( regions->pm_tmr_nam )
  6445. + kfree( regions->pm_tmr_nam );
  6446. +
  6447. + if( regions->p_nam )
  6448. + kfree( regions->p_nam );
  6449. +
  6450. + if( regions->gpe0_nam )
  6451. + kfree( regions->gpe0_nam );
  6452. +
  6453. + if( regions->gpe1_nam )
  6454. + kfree( regions->gpe1_nam );
  6455. +}
  6456. +
  6457. +static int register_acpi_regions( generic_acpi_regions *regions, char * subsys_name )
  6458. +{
  6459. + int i;
  6460. +
  6461. + if( regions->pm1a_evt_blk && regions->pm1_evt_len )
  6462. + {
  6463. + if( !(regions->pm1a_evt_nam = region_name( subsys_name, "pm1a_evt_blk" )) )
  6464. + goto cleanup0;
  6465. +
  6466. + if( !request_region( regions->pm1a_evt_blk, regions->pm1_evt_len,
  6467. + regions->pm1a_evt_nam ) )
  6468. + goto cleanup0;
  6469. + }
  6470. +
  6471. + if( regions->pm1b_evt_blk && regions->pm1_evt_len )
  6472. + {
  6473. + if( !(regions->pm1b_evt_nam = region_name( subsys_name, "pm1b_evt_blk" )) )
  6474. + goto cleanup0;
  6475. +
  6476. + if( !request_region( regions->pm1b_evt_blk, regions->pm1_evt_len,
  6477. + regions->pm1b_evt_nam) )
  6478. + goto cleanup1;
  6479. + }
  6480. +
  6481. + if( regions->pm1a_cnt_blk && regions->pm1_cnt_len )
  6482. + {
  6483. + if( !(regions->pm1a_cnt_nam = region_name( subsys_name, "pm1a_cnt_blk" )) )
  6484. + goto cleanup1;
  6485. +
  6486. + if( !request_region( regions->pm1a_cnt_blk, regions->pm1_cnt_len,
  6487. + regions->pm1a_cnt_nam ) )
  6488. + goto cleanup2;
  6489. + }
  6490. +
  6491. + if( regions->pm1b_cnt_blk && regions->pm1_cnt_len )
  6492. + {
  6493. + if( !(regions->pm1b_cnt_nam = region_name( subsys_name, "pm1b_cnt_blk" )) )
  6494. + goto cleanup2;
  6495. +
  6496. + if( !request_region( regions->pm1b_cnt_blk, regions->pm1_cnt_len,
  6497. + regions->pm1b_cnt_nam ) )
  6498. + goto cleanup3;
  6499. + }
  6500. +
  6501. + if( regions->pm2_cnt_blk && regions->pm2_cnt_len )
  6502. + {
  6503. + if( !(regions->pm2_cnt_nam = region_name( subsys_name, "pm2_cnt_blk" )) )
  6504. + goto cleanup3;
  6505. +
  6506. + if( !request_region( regions->pm2_cnt_blk, regions->pm2_cnt_len,
  6507. + regions->pm2_cnt_nam ) )
  6508. + goto cleanup4;
  6509. + }
  6510. +
  6511. + if( regions->pm_tmr_blk && regions->pm_tmr_len )
  6512. + {
  6513. + if( !(regions->pm_tmr_nam = region_name( subsys_name, "pm_tmp_blk" )) )
  6514. + goto cleanup4;
  6515. +
  6516. + if( !request_region( regions->pm_tmr_blk, regions->pm_tmr_len,
  6517. + regions->pm_tmr_nam ) )
  6518. + goto cleanup5;
  6519. + }
  6520. +
  6521. + if( regions->p_blk )
  6522. + {
  6523. + if( !(regions->p_nam = region_name( subsys_name, "p_blk" )) )
  6524. + goto cleanup5;
  6525. +
  6526. + if( !request_region( regions->p_blk, 6, regions->p_nam ) )
  6527. + goto cleanup6;
  6528. + }
  6529. +
  6530. + if( regions->gpe0_blk && regions->gpe0_len )
  6531. + {
  6532. + if( !(regions->gpe0_nam = region_name( subsys_name, "gpe0_blk" )) )
  6533. + goto cleanup6;
  6534. +
  6535. + if( !request_region( regions->gpe0_blk, regions->gpe0_len,
  6536. + regions->gpe0_nam ) )
  6537. + goto cleanup7;
  6538. + }
  6539. +
  6540. + if( regions->gpe1_blk && regions->gpe1_len )
  6541. + {
  6542. + if( !(regions->gpe1_nam = region_name( subsys_name, "gpe1_blk" )) )
  6543. + goto cleanup7;
  6544. +
  6545. + if( !request_region( regions->gpe1_blk, regions->gpe1_len,
  6546. + regions->gpe1_nam ) )
  6547. + goto cleanup8;
  6548. + }
  6549. +
  6550. + if( (regions->gpe_ref_cnt = (atomic_t *) kmalloc( sizeof( atomic_t ) *
  6551. + regions->gpe0_len * 8,
  6552. + GFP_ATOMIC)) == NULL )
  6553. + goto cleanup9;
  6554. +
  6555. + memset( regions->gpe_ref_cnt, 0x0, sizeof( atomic_t ) * regions->gpe0_len * 8 );
  6556. +
  6557. + /* disable all events and ack them */
  6558. + if( regions->pm1a_evt_blk )
  6559. + {
  6560. + outw( 0x0000, regions->pm1a_evt_blk + regions->pm1_evt_len/2 );
  6561. + outw( 0xffff, regions->pm1a_evt_blk );
  6562. + }
  6563. +
  6564. + if( regions->pm1b_evt_blk )
  6565. + {
  6566. + outw( 0x0000, regions->pm1b_evt_blk + regions->pm1_evt_len/2 );
  6567. + outw( 0xffff, regions->pm1b_evt_blk );
  6568. + }
  6569. +
  6570. + if( regions->gpe0_blk )
  6571. + {
  6572. + for( i=0 ; i<(regions->gpe0_len/2) ; i++ )
  6573. + {
  6574. + outb( 0x00, regions->gpe0_blk + regions->gpe0_len/2 + i );
  6575. + outb( 0xff, regions->gpe0_blk + i );
  6576. + }
  6577. + }
  6578. +
  6579. + if( regions->gpe1_blk )
  6580. + {
  6581. + for( i=0 ; i<(regions->gpe1_len/2) ; i++ )
  6582. + {
  6583. + outb( 0x00, regions->gpe1_blk + regions->gpe1_len/2 + i );
  6584. + outb( 0xff, regions->gpe1_blk + i );
  6585. + }
  6586. + }
  6587. +
  6588. + return 0;
  6589. +
  6590. + cleanup9:
  6591. + if( regions->gpe1_blk )
  6592. + {
  6593. + release_region( regions->gpe1_blk, regions->gpe1_len );
  6594. + regions->gpe1_blk = 0;
  6595. + }
  6596. +
  6597. + cleanup8:
  6598. + if( regions->gpe0_blk )
  6599. + {
  6600. + release_region( regions->gpe0_blk, regions->gpe0_len );
  6601. + regions->gpe0_blk = 0;
  6602. + }
  6603. +
  6604. + cleanup7:
  6605. + if( regions->p_blk )
  6606. + {
  6607. + release_region( regions->p_blk, 6 );
  6608. + regions->p_blk = 0;
  6609. + }
  6610. +
  6611. + cleanup6:
  6612. + if( regions->pm_tmr_blk )
  6613. + {
  6614. + release_region( regions->pm_tmr_blk, regions->pm_tmr_len );
  6615. + regions->pm_tmr_blk = 0;
  6616. + }
  6617. +
  6618. + cleanup5:
  6619. + if( regions->pm2_cnt_blk )
  6620. + {
  6621. + release_region( regions->pm2_cnt_blk, regions->pm2_cnt_len );
  6622. + regions->pm2_cnt_blk = 0;
  6623. + }
  6624. +
  6625. + cleanup4:
  6626. + if( regions->pm1b_cnt_blk )
  6627. + {
  6628. + release_region( regions->pm1b_cnt_blk, regions->pm1_cnt_len );
  6629. + regions->pm1b_cnt_blk = 0;
  6630. + }
  6631. +
  6632. + cleanup3:
  6633. + if( regions->pm1a_cnt_blk )
  6634. + {
  6635. + release_region( regions->pm1a_cnt_blk, regions->pm1_cnt_len );
  6636. + regions->pm1a_cnt_blk = 0;
  6637. + }
  6638. +
  6639. + cleanup2:
  6640. + if( regions->pm1b_evt_blk )
  6641. + {
  6642. + release_region( regions->pm1b_evt_blk, regions->pm1_evt_len );
  6643. + regions->pm1b_evt_blk = 0;
  6644. + }
  6645. +
  6646. + cleanup1:
  6647. + if( regions->pm1a_evt_blk )
  6648. + {
  6649. + release_region( regions->pm1a_evt_blk, regions->pm1_evt_len );
  6650. + regions->pm1a_evt_blk = 0;
  6651. + }
  6652. +
  6653. + cleanup0:
  6654. + free_region_names( regions );
  6655. +
  6656. + return -EBUSY;
  6657. +}
  6658. +
  6659. +static int unregister_acpi_regions( generic_acpi_regions *regions )
  6660. +{
  6661. + if( regions->pm1a_evt_blk && regions->pm1_evt_len )
  6662. + {
  6663. + release_region( regions->pm1a_evt_blk, regions->pm1_evt_len );
  6664. + regions->pm1a_evt_blk = 0;
  6665. + }
  6666. +
  6667. + if( regions->pm1b_evt_blk && regions->pm1_evt_len )
  6668. + {
  6669. + release_region( regions->pm1b_evt_blk, regions->pm1_evt_len );
  6670. + regions->pm1b_evt_blk = 0;
  6671. + }
  6672. +
  6673. + if( regions->pm1a_cnt_blk && regions->pm1_cnt_len )
  6674. + {
  6675. + release_region( regions->pm1a_cnt_blk, regions->pm1_cnt_len );
  6676. + regions->pm1a_cnt_blk = 0;
  6677. + }
  6678. +
  6679. + if( regions->pm1b_cnt_blk && regions->pm1_cnt_len )
  6680. + {
  6681. + release_region( regions->pm1b_cnt_blk, regions->pm1_cnt_len );
  6682. + regions->pm1b_cnt_blk = 0;
  6683. + }
  6684. +
  6685. + if( regions->pm2_cnt_blk && regions->pm2_cnt_len )
  6686. + {
  6687. + release_region( regions->pm2_cnt_blk, regions->pm2_cnt_len );
  6688. + regions->pm2_cnt_blk = 0;
  6689. + }
  6690. +
  6691. + if( regions->pm_tmr_blk && regions->pm_tmr_len )
  6692. + {
  6693. + release_region( regions->pm_tmr_blk, regions->pm_tmr_len );
  6694. + regions->pm_tmr_blk = 0;
  6695. + }
  6696. +
  6697. + if( regions->p_blk )
  6698. + {
  6699. + release_region( regions->p_blk, 6 );
  6700. + regions->p_blk = 0;
  6701. + }
  6702. +
  6703. + if( regions->gpe0_blk && regions->gpe0_len )
  6704. + {
  6705. + release_region( regions->gpe0_blk, regions->gpe0_len );
  6706. + regions->gpe0_blk = 0;
  6707. + }
  6708. +
  6709. + if( regions->gpe1_blk && regions->gpe1_len )
  6710. + {
  6711. + release_region( regions->gpe1_blk, regions->gpe1_len );
  6712. + regions->gpe1_blk = 0;
  6713. + }
  6714. +
  6715. + if( regions->gpe_ref_cnt )
  6716. + kfree( regions->gpe_ref_cnt );
  6717. +
  6718. + free_region_names( regions );
  6719. +
  6720. + return 0;
  6721. +}
  6722. +
  6723. +static void cobalt_acpi_handle_pm1_blk( u16 io_addr, u16 len,
  6724. + generic_acpi_regions * regions )
  6725. +{
  6726. + cobalt_acpi_evt evt;
  6727. + u16 sts, en;
  6728. +
  6729. + evt.hw_type = regions->hw_type;
  6730. +
  6731. + if( (sts = inw( io_addr )) &&
  6732. + (en = inw( io_addr + len/2 )) )
  6733. + {
  6734. +
  6735. +
  6736. + /* clear status bits */
  6737. + outw( sts, io_addr);
  6738. +
  6739. + if( (en & GEN_ACPI_TMR_STS) &&
  6740. + (sts & GEN_ACPI_TMR_STS) )
  6741. + {
  6742. + evt.ev_type = COBALT_ACPI_EVT_TMR;
  6743. + evt.ev_data = 0x0;
  6744. + cobalt_acpi_post_event( evt );
  6745. + }
  6746. + if( (en & GEN_ACPI_BM_STS) &&
  6747. + (sts & GEN_ACPI_BM_STS) )
  6748. + {
  6749. + evt.ev_type = COBALT_ACPI_EVT_BM;
  6750. + evt.ev_data = 0x0;
  6751. + cobalt_acpi_post_event( evt );
  6752. + }
  6753. + if( (en & GEN_ACPI_GBL_STS) &&
  6754. + (sts & GEN_ACPI_GBL_STS) )
  6755. + {
  6756. + evt.ev_type = COBALT_ACPI_EVT_GBL;
  6757. + evt.ev_data = 0x0;
  6758. + cobalt_acpi_post_event( evt );
  6759. + }
  6760. + if( (en & GEN_ACPI_PWRBTN_STS) &&
  6761. + (sts & GEN_ACPI_PWRBTN_STS) )
  6762. + {
  6763. + evt.ev_type = COBALT_ACPI_EVT_PWRBTN;
  6764. + evt.ev_data = 0x0;
  6765. + cobalt_acpi_post_event( evt );
  6766. + }
  6767. + if( (en & GEN_ACPI_SLPBTN_STS) &&
  6768. + (sts & GEN_ACPI_SLPBTN_STS) )
  6769. + {
  6770. + evt.ev_type = COBALT_ACPI_EVT_SLPBTN;
  6771. + evt.ev_data = 0x0;
  6772. + cobalt_acpi_post_event( evt );
  6773. + }
  6774. + if( (en & GEN_ACPI_RTC_STS) &&
  6775. + (sts & GEN_ACPI_RTC_STS) )
  6776. + {
  6777. + evt.ev_type = COBALT_ACPI_EVT_RTC;
  6778. + evt.ev_data = 0x0;
  6779. + cobalt_acpi_post_event( evt );
  6780. + }
  6781. + if( (sts & GEN_ACPI_WAK_STS) )
  6782. + {
  6783. + evt.ev_type = COBALT_ACPI_EVT_WAK;
  6784. + evt.ev_data = 0x0;
  6785. + cobalt_acpi_post_event( evt );
  6786. + }
  6787. + }
  6788. +}
  6789. +
  6790. +static void cobalt_acpi_handle_gpe_blk( u16 io_addr, u16 len,
  6791. + generic_acpi_regions * regions )
  6792. +{
  6793. + cobalt_acpi_evt evt;
  6794. + int i,j;
  6795. + u8 sts, en;
  6796. +
  6797. + evt.hw_type = regions->hw_type;
  6798. + evt.ev_type = COBALT_ACPI_EVT_GPE;
  6799. +
  6800. + for( i=0 ; i<(len/2) ; i++ )
  6801. + {
  6802. + sts = inb( io_addr + i );
  6803. + en = inb( io_addr + len/2 + i );
  6804. +
  6805. + /* clear status bits */
  6806. + outb( sts, io_addr);
  6807. +
  6808. + for( j=0 ; j<8 ; j++ )
  6809. + {
  6810. + if( (en & 0x1) &&
  6811. + (sts & 0x1) )
  6812. + {
  6813. + evt.ev_data = i*8 + j;
  6814. + cobalt_acpi_post_event( evt );
  6815. + }
  6816. + en >>= 1;
  6817. + sts >>= 1;
  6818. + }
  6819. + }
  6820. +}
  6821. +
  6822. +static int cobalt_acpi_generic_hw_handler( int irq, void *dev_id,
  6823. + struct pt_regs *regs, void * data )
  6824. +{
  6825. + generic_acpi_regions * regions = (generic_acpi_regions *) data;
  6826. + cobalt_acpi_evt evt;
  6827. +
  6828. + evt.hw_type = regions->hw_type;
  6829. +
  6830. + /* various PM events */
  6831. + if( regions->pm1a_evt_blk )
  6832. + cobalt_acpi_handle_pm1_blk( regions->pm1a_evt_blk, regions->pm1_evt_len, regions );
  6833. +
  6834. + if( regions->pm1b_evt_blk )
  6835. + cobalt_acpi_handle_pm1_blk( regions->pm1b_evt_blk, regions->pm1_evt_len, regions );
  6836. +
  6837. + if( regions->gpe0_blk )
  6838. + cobalt_acpi_handle_gpe_blk( regions->gpe0_blk, regions->gpe0_len, regions );
  6839. +
  6840. + if( regions->gpe1_blk )
  6841. + cobalt_acpi_handle_gpe_blk( regions->gpe1_blk, regions->gpe1_len, regions );
  6842. +
  6843. +
  6844. + return 0;
  6845. +}
  6846. +
  6847. +static int cobalt_acpi_generic_en_handler( u16 ev_type, u16 ev_data, int en, void *data )
  6848. +{
  6849. + generic_acpi_regions * regions = (generic_acpi_regions *) data;
  6850. + int block, offset;
  6851. + u8 data8;
  6852. + u16 data16;
  6853. +
  6854. + switch( ev_type )
  6855. + {
  6856. + case COBALT_ACPI_EVT_TMR:
  6857. + data16 = inw( regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6858. +
  6859. + if( en )
  6860. + {
  6861. + data16 |= GEN_ACPI_TMR_STS;
  6862. + atomic_inc( &regions->tmr_ref_cnt );
  6863. + }
  6864. + else
  6865. + {
  6866. + if( atomic_dec_and_test( &regions->tmr_ref_cnt ) )
  6867. + data16 &= ~GEN_ACPI_TMR_STS;
  6868. + }
  6869. + outw( data16, regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6870. + break;
  6871. +
  6872. + case COBALT_ACPI_EVT_BM:
  6873. + data16 = inw( regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6874. +
  6875. + if( en )
  6876. + {
  6877. + data16 |= GEN_ACPI_BM_STS;
  6878. + atomic_inc( &regions->bm_ref_cnt );
  6879. + }
  6880. + else
  6881. + {
  6882. + if( atomic_dec_and_test( &regions->bm_ref_cnt ) )
  6883. + data16 &= ~GEN_ACPI_BM_STS;
  6884. + }
  6885. + outw( data16, regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6886. + break;
  6887. +
  6888. + case COBALT_ACPI_EVT_GBL:
  6889. + data16 = inw( regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6890. +
  6891. + if( en )
  6892. + {
  6893. + data16 |= GEN_ACPI_GBL_STS;
  6894. + atomic_inc( &regions->gbl_ref_cnt );
  6895. + }
  6896. + else
  6897. + {
  6898. + if( atomic_dec_and_test( &regions->gbl_ref_cnt ) )
  6899. + data16 &= ~GEN_ACPI_GBL_STS;
  6900. + }
  6901. + outw( data16, regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6902. + break;
  6903. +
  6904. + case COBALT_ACPI_EVT_PWRBTN:
  6905. + data16 = inw( regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6906. +
  6907. + if( en )
  6908. + {
  6909. + data16 |= GEN_ACPI_PWRBTN_STS;
  6910. + atomic_inc( &regions->pwrbtn_ref_cnt );
  6911. + }
  6912. + else
  6913. + {
  6914. + if( atomic_dec_and_test( &regions->pwrbtn_ref_cnt ) )
  6915. + data16 &= ~GEN_ACPI_PWRBTN_STS;
  6916. + }
  6917. + outw( data16, regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6918. + break;
  6919. +
  6920. + case COBALT_ACPI_EVT_SLPBTN:
  6921. + data16 = inw( regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6922. +
  6923. + if( en )
  6924. + {
  6925. + data16 |= GEN_ACPI_SLPBTN_STS;
  6926. + atomic_inc( &regions->slpbtn_ref_cnt );
  6927. + }
  6928. + else
  6929. + {
  6930. + if( atomic_dec_and_test( &regions->slpbtn_ref_cnt ) )
  6931. + data16 &= ~GEN_ACPI_SLPBTN_STS;
  6932. + }
  6933. + outw( data16, regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6934. + break;
  6935. +
  6936. + case COBALT_ACPI_EVT_RTC:
  6937. + data16 = inw( regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6938. +
  6939. + if( en )
  6940. + {
  6941. + data16 |= GEN_ACPI_RTC_STS;
  6942. + atomic_inc( &regions->rtc_ref_cnt );
  6943. + }
  6944. + else
  6945. + {
  6946. + if( atomic_dec_and_test( &regions->rtc_ref_cnt ) )
  6947. + data16 &= ~GEN_ACPI_RTC_STS;
  6948. + }
  6949. + outw( data16, regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6950. + break;
  6951. +
  6952. + case COBALT_ACPI_EVT_WAK:
  6953. + data16 = inw( regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6954. +
  6955. + if( en )
  6956. + {
  6957. + data16 |= GEN_ACPI_WAK_STS;
  6958. + atomic_inc( &regions->wak_ref_cnt );
  6959. + }
  6960. + else
  6961. + {
  6962. + if( atomic_dec_and_test( &regions->wak_ref_cnt ) )
  6963. + data16 &= ~GEN_ACPI_WAK_STS;
  6964. + }
  6965. + outw( data16, regions->pm1a_evt_blk + (regions->pm1_evt_len / 2) );
  6966. + break;
  6967. +
  6968. + case COBALT_ACPI_EVT_GPE:
  6969. + if( (ev_data/8) >= (regions->gpe0_len / 2) )
  6970. + return -EINVAL;
  6971. +
  6972. + block = ev_data / 8;
  6973. + offset = ev_data % 8;
  6974. +
  6975. + data8 = inb( regions->gpe0_blk + (regions->gpe0_len / 2) + block );
  6976. +
  6977. + if( en )
  6978. + {
  6979. + data8 |= 0x1 << offset;
  6980. + atomic_inc( &regions->gpe_ref_cnt[ev_data] );
  6981. + }
  6982. + else
  6983. + {
  6984. + if( atomic_dec_and_test( &regions->gpe_ref_cnt[ev_data] ) )
  6985. + data8 &= ~( 0x1 << offset );
  6986. + }
  6987. +
  6988. + outb( data8, regions->gpe0_blk + (regions->gpe0_len / 2) + block );
  6989. +
  6990. + break;
  6991. +
  6992. + default:
  6993. + return -EINVAL;
  6994. +
  6995. + }
  6996. +
  6997. + return 0;
  6998. +}
  6999. +
  7000. +/*
  7001. + *
  7002. + * Generic ServerWorks region code
  7003. + *
  7004. + */
  7005. +
  7006. +static int get_serverworks_regions( generic_acpi_regions *regions, u16 type )
  7007. +{
  7008. + int reg;
  7009. +
  7010. + memset( regions, 0x0, sizeof( *regions ) );
  7011. +
  7012. + regions->hw_type = type;
  7013. +
  7014. + regions->pm1_evt_len = 4;
  7015. + regions->pm1_cnt_len = 2;
  7016. + regions->pm_tmr_len = 4;
  7017. + regions->gpe0_len = 8;
  7018. +
  7019. + if( (reg = get_reg(OSB4_INDEX_PORT, OSB4_DATA_PORT, 0x20)) )
  7020. + regions->pm1a_evt_blk = (u16) reg;
  7021. +
  7022. + if( (reg = get_reg(OSB4_INDEX_PORT, OSB4_DATA_PORT, 0x22)) )
  7023. + regions->pm1a_cnt_blk = (u16) reg;
  7024. +
  7025. + if( (reg = get_reg(OSB4_INDEX_PORT, OSB4_DATA_PORT, 0x24)) )
  7026. + regions->pm_tmr_blk = (u16) reg;
  7027. +
  7028. + if( (reg = get_reg(OSB4_INDEX_PORT, OSB4_DATA_PORT, 0x26)) )
  7029. + regions->p_blk = (u16) reg;
  7030. +
  7031. + if( (reg = get_reg(OSB4_INDEX_PORT, OSB4_DATA_PORT, 0x28)) )
  7032. + regions->gpe0_blk = (u16) reg;
  7033. +
  7034. + if( type == COBALT_ACPI_HW_OSB4 )
  7035. + {
  7036. + regions->pm2_cnt_len = 1;
  7037. + if( (reg = get_reg(OSB4_INDEX_PORT, OSB4_DATA_PORT, 0x2E)) )
  7038. + regions->pm2_cnt_blk = (u16) reg;
  7039. + }
  7040. +
  7041. + switch( type )
  7042. + {
  7043. + case COBALT_ACPI_HW_OSB4:
  7044. + return register_acpi_regions( regions, "OSB4" );
  7045. +
  7046. + case COBALT_ACPI_HW_CSB5:
  7047. + return register_acpi_regions( regions, "CSB5" );
  7048. + }
  7049. +
  7050. + return -EINVAL;
  7051. +
  7052. +}
  7053. +
  7054. +/*
  7055. + *
  7056. + * ServerWorks OSB4
  7057. + *
  7058. + */
  7059. +
  7060. +static generic_acpi_regions osb4_regions;
  7061. +
  7062. +static int cobalt_acpi_osb4_init( void )
  7063. +{
  7064. + int err;
  7065. +
  7066. + if( (err = get_osb4_regions( &osb4_regions )) < 0 )
  7067. + return err;
  7068. +
  7069. + if( (err = cobalt_acpi_register_hw_handler( COBALT_ACPI_HW_OSB4,
  7070. + cobalt_acpi_generic_hw_handler,
  7071. + cobalt_acpi_generic_en_handler,
  7072. + &osb4_regions )) < 0 )
  7073. + return err;
  7074. +
  7075. + return 0;
  7076. +}
  7077. +
  7078. +static int cobalt_acpi_osb4_cleanup( void )
  7079. +{
  7080. + unregister_acpi_regions( &osb4_regions );
  7081. + return 0;
  7082. +}
  7083. +
  7084. +static int get_osb4_regions( generic_acpi_regions *regions)
  7085. +{
  7086. + return get_serverworks_regions( regions, COBALT_ACPI_HW_OSB4 );
  7087. +}
  7088. +
  7089. +/*
  7090. + *
  7091. + * ServerWorks CSB5
  7092. + *
  7093. + */
  7094. +
  7095. +/* static generic_acpi_regions csb5_regions; */
  7096. +
  7097. +static generic_acpi_regions csb5_regions;
  7098. +
  7099. +static int cobalt_acpi_csb5_init( void )
  7100. +{
  7101. + int err;
  7102. +
  7103. + if( (err = get_csb5_regions( &csb5_regions )) < 0 )
  7104. + return err;
  7105. +
  7106. + if( (err = cobalt_acpi_register_hw_handler( COBALT_ACPI_HW_CSB5,
  7107. + cobalt_acpi_generic_hw_handler,
  7108. + cobalt_acpi_generic_en_handler,
  7109. + &csb5_regions )) < 0 )
  7110. + return err;
  7111. +
  7112. + return 0;
  7113. +}
  7114. +
  7115. +static int cobalt_acpi_csb5_cleanup( void )
  7116. +{
  7117. + unregister_acpi_regions( &csb5_regions );
  7118. + return 0;
  7119. +}
  7120. +
  7121. +static int get_csb5_regions( generic_acpi_regions *regions)
  7122. +{
  7123. + return get_serverworks_regions( regions, COBALT_ACPI_HW_CSB5 );
  7124. +}
  7125. +
  7126. +/*
  7127. + *
  7128. + * NatSemi PC8731x
  7129. + *
  7130. + */
  7131. +static generic_acpi_regions pc8731x_regions;
  7132. +
  7133. +static int cobalt_acpi_pc8731x_init( void )
  7134. +{
  7135. + int err;
  7136. +
  7137. + if( (err = get_pc8731x_regions( &pc8731x_regions )) < 0 )
  7138. + return err;
  7139. +
  7140. + if( (err = cobalt_acpi_register_hw_handler( COBALT_ACPI_HW_PC8731X,
  7141. + cobalt_acpi_generic_hw_handler,
  7142. + cobalt_acpi_generic_en_handler,
  7143. + &pc8731x_regions )) < 0 )
  7144. + return err;
  7145. +
  7146. + return 0;
  7147. +}
  7148. +
  7149. +static int cobalt_acpi_pc8731x_cleanup( void )
  7150. +{
  7151. + unregister_acpi_regions( &pc8731x_regions );
  7152. + return 0;
  7153. +}
  7154. +
  7155. +static int get_pc8731x_regions( generic_acpi_regions *regions )
  7156. +{
  7157. + int reg;
  7158. + u16 addr;
  7159. +
  7160. + memset( regions, 0x0, sizeof( *regions ) );
  7161. +
  7162. + regions->hw_type = COBALT_ACPI_HW_PC8731X;
  7163. +
  7164. + regions->pm1_evt_len = 4;
  7165. + regions->pm1_cnt_len = 2;
  7166. + regions->pm_tmr_len = 4;
  7167. + regions->gpe0_len = 4;
  7168. +
  7169. + /* superi/o -- select pm logical device and get base address */
  7170. + addr = superio_ldev_base(PC87317_DEV_PM);
  7171. + if( addr )
  7172. + {
  7173. + /* get registers */
  7174. + if( (reg = get_reg(addr, addr + 1, 0x08)) )
  7175. + regions->pm1a_evt_blk = reg;
  7176. +
  7177. + if( (reg = get_reg(addr, addr + 1, 0x0a)) )
  7178. + regions->pm_tmr_blk = reg;
  7179. +
  7180. + if( (reg = get_reg(addr, addr + 1, 0x0c)) )
  7181. + regions->pm1a_cnt_blk = reg;
  7182. +
  7183. + if( (reg = get_reg(addr, addr + 1, 0x0e)) )
  7184. + regions->gpe0_blk = reg;
  7185. + }
  7186. +
  7187. + return register_acpi_regions( regions, "pc8731x" );
  7188. +}
  7189. +
  7190. +/*
  7191. + *
  7192. + * NatSemi PC8741x
  7193. + *
  7194. + */
  7195. +
  7196. +static generic_acpi_regions pc8741x_regions;
  7197. +
  7198. +static int cobalt_acpi_pc8741x_init( void )
  7199. +{
  7200. + int err;
  7201. +
  7202. + if( (err = get_pc8741x_regions( &pc8741x_regions )) < 0 )
  7203. + return err;
  7204. +
  7205. + if( (err = cobalt_acpi_register_hw_handler( COBALT_ACPI_HW_PC8741X,
  7206. + cobalt_acpi_generic_hw_handler,
  7207. + cobalt_acpi_generic_en_handler,
  7208. + &pc8741x_regions )) < 0 )
  7209. + return err;
  7210. +
  7211. + return 0;
  7212. +}
  7213. +
  7214. +static int cobalt_acpi_pc8741x_cleanup( void )
  7215. +{
  7216. + unregister_acpi_regions( &pc8741x_regions );
  7217. + return 0;
  7218. +}
  7219. +
  7220. +static int get_pc8741x_regions( generic_acpi_regions *regions )
  7221. +{
  7222. + int reg;
  7223. +
  7224. + memset( regions, 0x0, sizeof( *regions ) );
  7225. +
  7226. + regions->hw_type = COBALT_ACPI_HW_PC8741X;
  7227. +
  7228. + regions->pm1_evt_len = 4;
  7229. + regions->pm1_cnt_len = 2;
  7230. + regions->pm_tmr_len = 4;
  7231. + regions->gpe0_len = 8;
  7232. +
  7233. + /* get registers */
  7234. + if( (reg = superio_ldev_base_n(PC87417_DEV_SWC, 1)) )
  7235. + regions->pm1a_evt_blk = reg;
  7236. +
  7237. + if( (reg = superio_ldev_base_n(PC87417_DEV_SWC, 2)) )
  7238. + regions->pm1a_cnt_blk = reg;
  7239. +
  7240. + if( (reg = superio_ldev_base_n(PC87417_DEV_SWC, 3)) )
  7241. + regions->gpe0_blk = reg;
  7242. +
  7243. + return register_acpi_regions( regions, "pc8741x" );
  7244. +}
  7245. +
  7246. +/*
  7247. + *
  7248. + * Platform support
  7249. + *
  7250. + */
  7251. +
  7252. +/*
  7253. + *
  7254. + * Monterey
  7255. + *
  7256. + */
  7257. +
  7258. +static u16 cobalt_acpi_monterey_osb4_table[] = {
  7259. +/* GPE 0 */ COBALT_ACPI_EVT_NONE,
  7260. +/* GPE 1 */ COBALT_ACPI_EVT_NONE,
  7261. +/* GPE 2 */ COBALT_ACPI_EVT_NONE,
  7262. +/* GPE 3 */ COBALT_ACPI_EVT_NONE,
  7263. +/* GPE 4 */ COBALT_ACPI_EVT_NONE,
  7264. +/* GPE 5 */ COBALT_ACPI_EVT_NONE,
  7265. +/* GPE 6 */ COBALT_ACPI_EVT_SLED,
  7266. +/* GPE 7 */ COBALT_ACPI_EVT_NONE,
  7267. +/* GPE 8 */ COBALT_ACPI_EVT_NONE,
  7268. +/* GPE 9 */ COBALT_ACPI_EVT_NONE,
  7269. +/* GPE 10 */ COBALT_ACPI_EVT_NONE,
  7270. +/* GPE 11 */ COBALT_ACPI_EVT_NONE,
  7271. +/* GPE 12 */ COBALT_ACPI_EVT_NONE,
  7272. +/* GPE 13 */ COBALT_ACPI_EVT_NONE,
  7273. +/* GPE 14 */ COBALT_ACPI_EVT_NONE,
  7274. +/* GPE 15 */ COBALT_ACPI_EVT_NONE };
  7275. +
  7276. +static u16 cobalt_acpi_monterey_superio_table[] = {
  7277. +/* GPE 0 */ COBALT_ACPI_EVT_NONE,
  7278. +/* GPE 1 */ COBALT_ACPI_EVT_NONE,
  7279. +/* GPE 2 */ COBALT_ACPI_EVT_NONE,
  7280. +/* GPE 3 */ COBALT_ACPI_EVT_NONE,
  7281. +/* GPE 4 */ COBALT_ACPI_EVT_NONE,
  7282. +/* GPE 5 */ COBALT_ACPI_EVT_NONE,
  7283. +/* GPE 6 */ COBALT_ACPI_EVT_NONE,
  7284. +/* GPE 7 */ COBALT_ACPI_EVT_NONE,
  7285. +/* GPE 8 */ COBALT_ACPI_EVT_NONE,
  7286. +/* GPE 9 */ COBALT_ACPI_EVT_NONE,
  7287. +/* GPE 10 */ COBALT_ACPI_EVT_NONE,
  7288. +/* GPE 11 */ COBALT_ACPI_EVT_NONE,
  7289. +/* GPE 12 */ COBALT_ACPI_EVT_NONE,
  7290. +/* GPE 13 */ COBALT_ACPI_EVT_NONE,
  7291. +/* GPE 14 */ COBALT_ACPI_EVT_NONE,
  7292. +/* GPE 15 */ COBALT_ACPI_EVT_NONE,
  7293. +/* GPE 16 */ COBALT_ACPI_EVT_NONE,
  7294. +/* GPE 17 */ COBALT_ACPI_EVT_NONE,
  7295. +/* GPE 18 */ COBALT_ACPI_EVT_NONE,
  7296. +/* GPE 19 */ COBALT_ACPI_EVT_NONE,
  7297. +/* GPE 20 */ COBALT_ACPI_EVT_NONE,
  7298. +/* GPE 21 */ COBALT_ACPI_EVT_NONE,
  7299. +/* GPE 22 */ COBALT_ACPI_EVT_NONE,
  7300. +/* GPE 23 */ COBALT_ACPI_EVT_NONE,
  7301. +/* GPE 24 */ COBALT_ACPI_EVT_NONE,
  7302. +/* GPE 25 */ COBALT_ACPI_EVT_NONE,
  7303. +/* GPE 26 */ COBALT_ACPI_EVT_NONE,
  7304. +/* GPE 27 */ COBALT_ACPI_EVT_NONE,
  7305. +/* GPE 28 */ COBALT_ACPI_EVT_NONE,
  7306. +/* GPE 29 */ COBALT_ACPI_EVT_NONE,
  7307. +/* GPE 30 */ COBALT_ACPI_EVT_NONE,
  7308. +/* GPE 31 */ COBALT_ACPI_EVT_NONE };
  7309. +
  7310. +static int cobalt_acpi_monterey_init( void )
  7311. +{
  7312. + int err;
  7313. +
  7314. + err = cobalt_acpi_register_trans_table( COBALT_ACPI_HW_OSB4,
  7315. + sizeof( cobalt_acpi_monterey_osb4_table )/sizeof( u16 ),
  7316. + cobalt_acpi_monterey_osb4_table );
  7317. + if( err < 0 )
  7318. + return err;
  7319. +
  7320. + err = cobalt_acpi_register_trans_table( COBALT_ACPI_HW_PC8731X,
  7321. + sizeof( cobalt_acpi_monterey_superio_table )/sizeof( u16 ),
  7322. + cobalt_acpi_monterey_superio_table );
  7323. + if( err < 0 )
  7324. + return err;
  7325. +
  7326. + return 0;
  7327. +}
  7328. +
  7329. +static int cobalt_acpi_monterey_cleanup( void )
  7330. +{
  7331. + cobalt_acpi_unregister_trans_table( COBALT_ACPI_HW_OSB4 );
  7332. + cobalt_acpi_unregister_trans_table( COBALT_ACPI_HW_PC8731X );
  7333. +
  7334. + return 0;
  7335. +}
  7336. +
  7337. +/*
  7338. + *
  7339. + * Alpine
  7340. + *
  7341. + */
  7342. +
  7343. +static u16 cobalt_acpi_alpine_csb5_table[] = {
  7344. +/* GPE 0 */ COBALT_ACPI_EVT_NONE,
  7345. +/* GPE 1 */ COBALT_ACPI_EVT_NONE,
  7346. +/* GPE 2 */ COBALT_ACPI_EVT_NONE,
  7347. +/* GPE 3 */ COBALT_ACPI_EVT_FAN,
  7348. +/* GPE 4 */ COBALT_ACPI_EVT_NONE,
  7349. +/* GPE 5 */ COBALT_ACPI_EVT_SM_INT,
  7350. +/* GPE 6 */ COBALT_ACPI_EVT_THERM,
  7351. +/* GPE 7 */ COBALT_ACPI_EVT_NONE,
  7352. +/* GPE 8 */ COBALT_ACPI_EVT_NONE,
  7353. +/* GPE 9 */ COBALT_ACPI_EVT_NONE,
  7354. +/* GPE 10 */ COBALT_ACPI_EVT_NONE,
  7355. +/* GPE 11 */ COBALT_ACPI_EVT_NONE,
  7356. +/* GPE 12 */ COBALT_ACPI_EVT_NONE,
  7357. +/* GPE 13 */ COBALT_ACPI_EVT_NONE,
  7358. +/* GPE 14 */ COBALT_ACPI_EVT_NONE,
  7359. +/* GPE 15 */ COBALT_ACPI_EVT_NONE };
  7360. +
  7361. +static u16 cobalt_acpi_alpine_superio_table[] = {
  7362. +/* GPE 0 */ COBALT_ACPI_EVT_NONE,
  7363. +/* GPE 1 */ COBALT_ACPI_EVT_NONE,
  7364. +/* GPE 2 */ COBALT_ACPI_EVT_NONE,
  7365. +/* GPE 3 */ COBALT_ACPI_EVT_NONE,
  7366. +/* GPE 4 */ COBALT_ACPI_EVT_NONE,
  7367. +/* GPE 5 */ COBALT_ACPI_EVT_NONE,
  7368. +/* GPE 6 */ COBALT_ACPI_EVT_NONE,
  7369. +/* GPE 7 */ COBALT_ACPI_EVT_NONE,
  7370. +/* GPE 8 */ COBALT_ACPI_EVT_NONE,
  7371. +/* GPE 9 */ COBALT_ACPI_EVT_NONE,
  7372. +/* GPE 10 */ COBALT_ACPI_EVT_NONE,
  7373. +/* GPE 11 */ COBALT_ACPI_EVT_NONE,
  7374. +/* GPE 12 */ COBALT_ACPI_EVT_NONE,
  7375. +/* GPE 13 */ COBALT_ACPI_EVT_NONE,
  7376. +/* GPE 14 */ COBALT_ACPI_EVT_NONE,
  7377. +/* GPE 15 */ COBALT_ACPI_EVT_NONE,
  7378. +/* GPE 16 */ COBALT_ACPI_EVT_NONE,
  7379. +/* GPE 17 */ COBALT_ACPI_EVT_NONE,
  7380. +/* GPE 18 */ COBALT_ACPI_EVT_NONE,
  7381. +/* GPE 19 */ COBALT_ACPI_EVT_NONE,
  7382. +/* GPE 20 */ COBALT_ACPI_EVT_NONE,
  7383. +/* GPE 21 */ COBALT_ACPI_EVT_NONE,
  7384. +/* GPE 22 */ COBALT_ACPI_EVT_NONE,
  7385. +/* GPE 23 */ COBALT_ACPI_EVT_NONE,
  7386. +/* GPE 24 */ COBALT_ACPI_EVT_NONE,
  7387. +/* GPE 25 */ COBALT_ACPI_EVT_NONE,
  7388. +/* GPE 26 */ COBALT_ACPI_EVT_NONE,
  7389. +/* GPE 27 */ COBALT_ACPI_EVT_NONE,
  7390. +/* GPE 28 */ COBALT_ACPI_EVT_NONE,
  7391. +/* GPE 29 */ COBALT_ACPI_EVT_NONE,
  7392. +/* GPE 30 */ COBALT_ACPI_EVT_NONE,
  7393. +/* GPE 31 */ COBALT_ACPI_EVT_NONE };
  7394. +
  7395. +static int cobalt_acpi_alpine_init( void )
  7396. +{
  7397. + int err;
  7398. +
  7399. + err = cobalt_acpi_register_trans_table( COBALT_ACPI_HW_CSB5,
  7400. + sizeof( cobalt_acpi_alpine_csb5_table )/sizeof( u16 ),
  7401. + cobalt_acpi_alpine_csb5_table );
  7402. + if( err < 0 )
  7403. + return err;
  7404. +
  7405. + err = cobalt_acpi_register_trans_table( COBALT_ACPI_HW_PC8741X,
  7406. + sizeof( cobalt_acpi_alpine_superio_table )/sizeof( u16 ),
  7407. + cobalt_acpi_alpine_superio_table );
  7408. + if( err < 0 )
  7409. + return err;
  7410. +
  7411. + return 0;
  7412. +}
  7413. +
  7414. +static int cobalt_acpi_alpine_cleanup( void )
  7415. +{
  7416. + cobalt_acpi_unregister_trans_table( COBALT_ACPI_HW_CSB5 );
  7417. + cobalt_acpi_unregister_trans_table( COBALT_ACPI_HW_PC8741X );
  7418. +
  7419. + return 0;
  7420. +}
  7421. +
  7422. +/*
  7423. + * end platform support
  7424. + */
  7425. +#ifdef CONFIG_COBALT_EMU_ACPI
  7426. +/*
  7427. + * This is all necessary because we don't have BIOS support for ACPI yet.
  7428. + * We can fake it here, and when full support is ready just yank this.
  7429. + */
  7430. +typedef struct {
  7431. + char *device_type;
  7432. + char *device_instance;
  7433. + u32 event_type;
  7434. + u32 event_data;
  7435. + struct list_head list;
  7436. +} cobalt_acpi_event_t;
  7437. +
  7438. +#define COBALT_ACPI_MAX_STRING_LENGTH 80
  7439. +
  7440. +static LIST_HEAD(cobalt_acpi_event_list);
  7441. +static DECLARE_WAIT_QUEUE_HEAD(cobalt_acpi_event_wait_queue);
  7442. +static int event_is_open = 0;
  7443. +static DEFINE_SPINLOCK(cobalt_acpi_event_lock);
  7444. +
  7445. +static struct proc_dir_entry *cobalt_acpi_proc_root;
  7446. +static struct proc_dir_entry *cobalt_acpi_proc_event;
  7447. +
  7448. +static struct file_operations proc_event_ops = {
  7449. + open: cobalt_acpi_open_event,
  7450. + read: cobalt_acpi_read_event,
  7451. + release: cobalt_acpi_close_event,
  7452. + poll: cobalt_acpi_poll_event,
  7453. +};
  7454. +
  7455. +static int
  7456. +cobalt_acpi_setup_proc(void)
  7457. +{
  7458. + cobalt_acpi_proc_root = proc_mkdir("acpi", NULL);
  7459. + if (!cobalt_acpi_proc_root) {
  7460. + return -ENOMEM;
  7461. + }
  7462. +
  7463. + cobalt_acpi_proc_event = create_proc_entry("event", S_IRUSR,
  7464. + cobalt_acpi_proc_root);
  7465. + if (!cobalt_acpi_proc_event) {
  7466. + return -ENOMEM;
  7467. + }
  7468. +
  7469. + cobalt_acpi_proc_event->proc_fops = &proc_event_ops;
  7470. +
  7471. + return 0;
  7472. +}
  7473. +
  7474. +
  7475. +int
  7476. +cobalt_acpi_generate_proc_evt( cobalt_acpi_evt * evt )
  7477. +{
  7478. + cobalt_acpi_event_t *event = NULL, *tmp;
  7479. + unsigned long flags = 0;
  7480. + char *dev_type;
  7481. + char *dev_instance;
  7482. + u32 event_type;
  7483. + u32 event_data;
  7484. + struct list_head *pos;
  7485. +
  7486. + /* drop event on the floor if no one's listening */
  7487. + if (!event_is_open)
  7488. + return 0;
  7489. +
  7490. + event_type = (evt->ev_type << 0x10) |
  7491. + evt->hw_type;
  7492. + event_data = evt->ev_data;
  7493. +
  7494. +
  7495. + /*
  7496. + * Check to see if an event of this type is already
  7497. + * pending
  7498. + */
  7499. + spin_lock_irqsave(&cobalt_acpi_event_lock, flags);
  7500. + list_for_each( pos, &cobalt_acpi_event_list )
  7501. + {
  7502. + tmp = list_entry(pos, cobalt_acpi_event_t, list);
  7503. + if( (tmp->event_type == event_type) &&
  7504. + (tmp->event_data == event_data) )
  7505. + {
  7506. + spin_unlock_irqrestore(&cobalt_acpi_event_lock, flags);
  7507. + return 0;
  7508. + }
  7509. +
  7510. +
  7511. + }
  7512. + spin_unlock_irqrestore(&cobalt_acpi_event_lock, flags);
  7513. +
  7514. +
  7515. + /* parse the event struct */
  7516. + switch( evt->ev_type )
  7517. + {
  7518. + case COBALT_ACPI_EVT_TMR:
  7519. + dev_type = "generic";
  7520. + dev_instance = "timer";
  7521. + break;
  7522. +
  7523. + case COBALT_ACPI_EVT_BM:
  7524. + dev_type = "generic";
  7525. + dev_instance = "bus-master";
  7526. + break;
  7527. +
  7528. + case COBALT_ACPI_EVT_GBL:
  7529. + dev_type = "generic";
  7530. + dev_instance = "global";
  7531. + break;
  7532. +
  7533. + case COBALT_ACPI_EVT_PWRBTN:
  7534. + dev_type = "button";
  7535. + dev_instance = "power";
  7536. + break;
  7537. +
  7538. + case COBALT_ACPI_EVT_SLPBTN:
  7539. + dev_type = "button";
  7540. + dev_instance = "sleep";
  7541. + break;
  7542. +
  7543. + case COBALT_ACPI_EVT_RTC:
  7544. + dev_type = "generic";
  7545. + dev_instance = "rtc";
  7546. + break;
  7547. +
  7548. + case COBALT_ACPI_EVT_WAK:
  7549. + dev_type = "generic";
  7550. + dev_instance = "wake";
  7551. + break;
  7552. +
  7553. + case COBALT_ACPI_EVT_GPE:
  7554. + dev_type = "generic";
  7555. + dev_instance = "gpe";
  7556. + break;
  7557. +
  7558. + case COBALT_ACPI_EVT_SLED:
  7559. + dev_type = "cobalt";
  7560. + dev_instance = "sled";
  7561. + break;
  7562. +
  7563. + case COBALT_ACPI_EVT_THERM:
  7564. + dev_type = "cobalt";
  7565. + dev_instance = "therm_trip";
  7566. + break;
  7567. +
  7568. + case COBALT_ACPI_EVT_FAN:
  7569. + dev_type = "cobalt";
  7570. + dev_instance = "fan";
  7571. + break;
  7572. +
  7573. + case COBALT_ACPI_EVT_SM_INT:
  7574. + dev_type = "cobalt";
  7575. + dev_instance = "sm_int";
  7576. + break;
  7577. +
  7578. + case COBALT_ACPI_EVT_VOLT:
  7579. + dev_type = "cobalt";
  7580. + dev_instance = "volt_trip";
  7581. + break;
  7582. +
  7583. + default:
  7584. + dev_type = "unknown";
  7585. + dev_instance = "unknown";
  7586. + break;
  7587. + }
  7588. +
  7589. +
  7590. + /*
  7591. + * Allocate a new event structure.
  7592. + */
  7593. + event = kmalloc(sizeof(*event), GFP_ATOMIC);
  7594. + if (!event)
  7595. + goto alloc_error;
  7596. +
  7597. + event->device_type=NULL;
  7598. + event->device_instance=NULL;
  7599. +
  7600. + event->device_type = kmalloc(strlen(dev_type) + sizeof(char),
  7601. + GFP_ATOMIC);
  7602. + if (!event->device_type)
  7603. + goto alloc_error;
  7604. +
  7605. + event->device_instance = kmalloc(strlen(dev_instance) + sizeof(char),
  7606. + GFP_ATOMIC );
  7607. + if (!event->device_instance)
  7608. + goto alloc_error;
  7609. +
  7610. + /*
  7611. + * Set event data.
  7612. + */
  7613. + strcpy(event->device_type, dev_type);
  7614. + strcpy(event->device_instance, dev_instance);
  7615. + event->event_type = event_type;
  7616. + event->event_data = event_data;
  7617. +
  7618. + /*
  7619. + * Add to the end of our event list.
  7620. + */
  7621. + spin_lock_irqsave(&cobalt_acpi_event_lock, flags);
  7622. + list_add_tail(&event->list, &cobalt_acpi_event_list);
  7623. + spin_unlock_irqrestore(&cobalt_acpi_event_lock, flags);
  7624. +
  7625. + /*
  7626. + * Signal waiting threads (if any).
  7627. + */
  7628. + wake_up_interruptible(&cobalt_acpi_event_wait_queue);
  7629. +
  7630. + return 0;
  7631. +
  7632. +alloc_error:
  7633. + if(event)
  7634. + {
  7635. + if (event->device_instance)
  7636. + kfree(event->device_instance);
  7637. +
  7638. + if (event->device_type)
  7639. + kfree(event->device_type);
  7640. +
  7641. + kfree(event);
  7642. + }
  7643. +
  7644. + return -ENOMEM;
  7645. +}
  7646. +
  7647. +
  7648. +static int
  7649. +cobalt_acpi_open_event(struct inode *inode, struct file *file)
  7650. +{
  7651. + unsigned long flags;
  7652. + spin_lock_irqsave(&cobalt_acpi_event_lock, flags);
  7653. +
  7654. + if (event_is_open)
  7655. + goto out_busy;
  7656. +
  7657. + event_is_open = 1;
  7658. +
  7659. + spin_unlock_irqrestore(&cobalt_acpi_event_lock, flags);
  7660. + return 0;
  7661. +
  7662. +out_busy:
  7663. + spin_unlock_irqrestore(&cobalt_acpi_event_lock, flags);
  7664. + return -EBUSY;
  7665. +}
  7666. +
  7667. +
  7668. +static int
  7669. +cobalt_acpi_close_event(struct inode *inode, struct file *file)
  7670. +{
  7671. + unsigned long flags;
  7672. + struct list_head *pos;
  7673. + cobalt_acpi_event_t *tmp;
  7674. +
  7675. + spin_lock_irqsave(&cobalt_acpi_event_lock, flags);
  7676. +
  7677. + while( (pos = list_pop( &cobalt_acpi_event_list )) )
  7678. + {
  7679. + tmp = list_entry(pos, cobalt_acpi_event_t, list);
  7680. + if (tmp->device_instance)
  7681. + kfree(tmp->device_instance);
  7682. +
  7683. + if (tmp->device_type)
  7684. + kfree(tmp->device_type);
  7685. +
  7686. + kfree( tmp );
  7687. + }
  7688. + event_is_open = 0;
  7689. + spin_unlock_irqrestore(&cobalt_acpi_event_lock, flags);
  7690. + return 0;
  7691. +}
  7692. +
  7693. +#define ACPI_MAX_STRING_LENGTH 80
  7694. +static ssize_t
  7695. +cobalt_acpi_read_event(struct file *file, char *buf, size_t count, loff_t *ppos)
  7696. +{
  7697. + cobalt_acpi_event_t *event = NULL;
  7698. + unsigned long flags = 0;
  7699. + static char str[ACPI_MAX_STRING_LENGTH];
  7700. + static int strsize;
  7701. + static char *ptr;
  7702. +
  7703. + if (!strsize) {
  7704. + DECLARE_WAITQUEUE(wait, current);
  7705. +
  7706. + if (list_empty(&cobalt_acpi_event_list)) {
  7707. + if (file->f_flags & O_NONBLOCK) {
  7708. + return -EAGAIN;
  7709. + }
  7710. + set_current_state(TASK_INTERRUPTIBLE);
  7711. + add_wait_queue(&cobalt_acpi_event_wait_queue, &wait);
  7712. +
  7713. + if (list_empty(&cobalt_acpi_event_list)) {
  7714. + schedule();
  7715. + }
  7716. +
  7717. + remove_wait_queue(&cobalt_acpi_event_wait_queue, &wait);
  7718. + set_current_state(TASK_RUNNING);
  7719. +
  7720. + if (signal_pending(current)) {
  7721. + return -ERESTARTSYS;
  7722. + }
  7723. + }
  7724. +
  7725. + spin_lock_irqsave(&cobalt_acpi_event_lock, flags);
  7726. + event = list_entry(cobalt_acpi_event_list.next,
  7727. + cobalt_acpi_event_t, list);
  7728. + list_del(&event->list);
  7729. + spin_unlock_irqrestore(&cobalt_acpi_event_lock, flags);
  7730. +
  7731. + strsize = sprintf(str, "%s %s %08x %08x\n",
  7732. + event->device_type, event->device_instance,
  7733. + event->event_type, event->event_data);
  7734. + ptr = str;
  7735. +
  7736. + kfree(event->device_type);
  7737. + kfree(event->device_instance);
  7738. + kfree(event);
  7739. + }
  7740. + if (strsize < count)
  7741. + count = strsize;
  7742. +
  7743. + if (copy_to_user(buf, ptr, count))
  7744. + return -EFAULT;
  7745. +
  7746. + *ppos += count;
  7747. + strsize -= count;
  7748. + ptr += count;
  7749. +
  7750. + return count;
  7751. +}
  7752. +
  7753. +static unsigned int
  7754. +cobalt_acpi_poll_event(struct file *file, poll_table *wait)
  7755. +{
  7756. + poll_wait(file, &cobalt_acpi_event_wait_queue, wait);
  7757. + if (!list_empty(&cobalt_acpi_event_list))
  7758. + return POLLIN | POLLRDNORM;
  7759. + return 0;
  7760. +}
  7761. +
  7762. +#endif /* CONFIG_COBALT_EMU_ACPI */
  7763. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/fans.c linux-3.2.5-cobalt/drivers/cobalt/fans.c
  7764. --- linux-3.2.5/drivers/cobalt/fans.c 1969-12-31 16:00:00.000000000 -0800
  7765. +++ linux-3.2.5-cobalt/drivers/cobalt/fans.c 2012-02-06 21:34:59.000000000 -0800
  7766. @@ -0,0 +1,416 @@
  7767. +/* $Id: fans.c,v 1.18 2002/03/16 21:33:02 duncan Exp $
  7768. + * Copyright (c) 2000-2001 Sun Microsystems, Inc
  7769. + *
  7770. + * This should be SMP safe. The critical data (the info list) and the
  7771. + * critical code (inb()/outb() calls) are protected by fan_lock. It is
  7772. + * locked at the only external access points - the proc read()/write()
  7773. + * methods. --TPH
  7774. + */
  7775. +#if defined(CONFIG_COBALT_FANS) || defined(CONFIG_COBALT_FANS_MODULE)
  7776. +
  7777. +#include <stdarg.h>
  7778. +#include <stddef.h>
  7779. +
  7780. +#include <linux/init.h>
  7781. +#include <linux/sched.h>
  7782. +#include <linux/module.h>
  7783. +#include <linux/pci.h>
  7784. +#include <linux/errno.h>
  7785. +#include <linux/proc_fs.h>
  7786. +#include <linux/time.h>
  7787. +
  7788. +#include <asm/io.h>
  7789. +#include <asm/uaccess.h>
  7790. +
  7791. +#include <cobalt/cobalt.h>
  7792. +#include <cobalt/systype.h>
  7793. +
  7794. +#define FAN_DRIVER "Cobalt Networks Fan driver"
  7795. +#define FAN_DRIVER_VMAJ 1
  7796. +#define FAN_DRIVER_VMIN 0
  7797. +
  7798. +/* GPIO base is assigned by BIOS, perhaps we should probe it */
  7799. +#define GPIO_BASE 0x600
  7800. +#define FAN_GPIO_MAX 8
  7801. +#define FAN_RPM(fn,ms) ((fn).hcyl * (60000000 / (fn).poles) / (ms))
  7802. +#define FAN_VALID(f) ((f)->mask && (f)->poles)
  7803. +#define FAN_CACHE_TIME 2 /* seconds */
  7804. +#define FAN_SAMPLE_LEN 50 /* milliseconds */
  7805. +
  7806. +/*
  7807. + * fans are attached to GPIO pins
  7808. + * each pin is part of a port, multiple fans are controlled by a port
  7809. + */
  7810. +struct fan_info {
  7811. + int id; /* fan number */
  7812. + uint8_t mask; /* mask within the port */
  7813. + int poles; /* # of magnetic poles (divisor) */
  7814. + int hcyl; /* # of half cycles */
  7815. + unsigned rpm; /* calculated fan speed */
  7816. + char *type; /* FAN description */
  7817. +};
  7818. +
  7819. +struct fan_gpio {
  7820. + int port; /* GPIO Port */
  7821. + uint16_t base; /* GPDI (data in) base address */
  7822. + uint8_t latch; /* latched 'data in' value */
  7823. + long tcache; /* latched 'epoch' value */
  7824. + struct fan_info fan[FAN_GPIO_MAX];
  7825. +};
  7826. +
  7827. +/* the current fanlist */
  7828. +static struct fan_gpio *sys_fanlist;
  7829. +static DEFINE_SPINLOCK(fan_lock);
  7830. +
  7831. +static struct fan_gpio fan_gpio_raqxtr[] = {
  7832. + {
  7833. + port: 1,
  7834. + base: GPIO_BASE,
  7835. + fan: {
  7836. + { mask: 0x2, poles: 4, type: "processor" },
  7837. + { mask: 0x4, poles: 4, type: "processor" },
  7838. + { mask: 0 },
  7839. + },
  7840. + },
  7841. + {
  7842. + port: 2,
  7843. + base: GPIO_BASE+4,
  7844. + fan: {
  7845. + { mask: 0x10, poles: 4 },
  7846. + { mask: 0x20, poles: 4 },
  7847. + { mask: 0x40, poles: 4 },
  7848. + { mask: 0x80, poles: 4 },
  7849. + { mask: 0 },
  7850. + },
  7851. + },
  7852. + { port: -1 }
  7853. +};
  7854. +
  7855. +static struct fan_gpio fan_gpio_alpine[] = {
  7856. + {
  7857. + port: 2,
  7858. + base: GPIO_BASE+7,
  7859. + fan: {
  7860. + { mask: 0x4, poles: 4 },
  7861. + { mask: 0x8, poles: 4 },
  7862. + { mask: 0x10, poles: 4 },
  7863. + { mask: 0x20, poles: 4, type: "power supply" },
  7864. + { mask: 0x40, poles: 4, type: "processor" },
  7865. + { mask: 0 },
  7866. + },
  7867. + },
  7868. + { port: -1 }
  7869. +};
  7870. +
  7871. +#ifdef CONFIG_PROC_FS
  7872. +#ifdef CONFIG_COBALT_OLDPROC
  7873. +static struct proc_dir_entry *proc_faninfo;
  7874. +#endif /* CONFIG_COBALT_OLDPROC */
  7875. +static struct proc_dir_entry *proc_cfaninfo;
  7876. +#endif /* CONFIG_PROC_FS */
  7877. +
  7878. +static struct fan_info *fan_info_find(int id);
  7879. +static int fan_control(struct fan_info *fi, int todo);
  7880. +static int fan_info_print(char *buffer);
  7881. +static int fan_read_proc(char *buf, char **start, off_t pos,
  7882. + int len, int *eof, void *x);
  7883. +static int fan_write_proc(struct file *file, const char *buf,
  7884. + unsigned long len, void *x);
  7885. +
  7886. +int __init
  7887. +cobalt_fan_init(void)
  7888. +{
  7889. + if (cobt_is_monterey()) {
  7890. + sys_fanlist = (struct fan_gpio *)fan_gpio_raqxtr;
  7891. + } else if (cobt_is_alpine()) {
  7892. + sys_fanlist = (struct fan_gpio *)fan_gpio_alpine;
  7893. + } else {
  7894. + sys_fanlist = NULL;
  7895. + return -ENOSYS;
  7896. + }
  7897. +
  7898. + printk(KERN_INFO "%s %d.%d (modified by jeff@404ster.com, further modified by dave.studeman@raqcop.com)\n", FAN_DRIVER,FAN_DRIVER_VMAJ,FAN_DRIVER_VMIN);
  7899. +
  7900. +#ifdef CONFIG_PROC_FS
  7901. +#ifdef CONFIG_COBALT_OLDPROC
  7902. + proc_faninfo = create_proc_entry("faninfo", S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, NULL);
  7903. + if (!proc_faninfo) {
  7904. + EPRINTK("can't create /proc/faninfo\n");
  7905. + return -ENOENT;
  7906. + }
  7907. + proc_faninfo->read_proc = fan_read_proc;
  7908. + proc_faninfo->write_proc = fan_write_proc;
  7909. +#endif /* CONFIG_COBALT_OLDPROC */
  7910. + proc_cfaninfo = create_proc_entry("faninfo", S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, proc_cobalt);
  7911. + if (!proc_cfaninfo) {
  7912. + EPRINTK("can't create /proc/cobalt/faninfo\n");
  7913. + return -ENOENT;
  7914. + }
  7915. + proc_cfaninfo->read_proc = fan_read_proc;
  7916. + proc_cfaninfo->write_proc = fan_write_proc;
  7917. +#endif /* CONFIG_PROC_FS */
  7918. +
  7919. + return 0;
  7920. +}
  7921. +
  7922. +static void __exit
  7923. +cobalt_fan_exit(void)
  7924. +{
  7925. +#ifdef CONFIG_PROC_FS
  7926. +#ifdef CONFIG_COBALT_OLDPROC
  7927. + if (proc_faninfo) {
  7928. + remove_proc_entry("faninfo", NULL);
  7929. + }
  7930. +#endif /* CONFIG_COBALT_OLDPROC */
  7931. + if (proc_cfaninfo) {
  7932. + remove_proc_entry("faninfo", proc_cobalt);
  7933. + }
  7934. +#endif /* CONFIG_PROC_FS */
  7935. +
  7936. + sys_fanlist = NULL;
  7937. +}
  7938. +
  7939. +/*
  7940. + * Samples fan tachometer square wave to calculate and report RPM
  7941. + */
  7942. +static int
  7943. +get_faninfo(char *buffer)
  7944. +{
  7945. + struct fan_gpio *fg;
  7946. + struct timeval utime;
  7947. + unsigned long elapsed, start;
  7948. + int i, val, len;
  7949. +
  7950. + if (!sys_fanlist || !cobt_is_5k()) {
  7951. + /* software is keyed off this string - do not change it ! */
  7952. + return sprintf(buffer, "Fan monitoring not supported.\n");
  7953. + }
  7954. +
  7955. + /* save start timestamp */
  7956. + do_gettimeofday(&utime);
  7957. + start = utime.tv_usec;
  7958. +
  7959. + /* initialize 'previous' values. we do edge detection by
  7960. + * looking for transitions from previous values */
  7961. + for (fg = sys_fanlist; fg->port >= 0; fg++) {
  7962. + if (fg->tcache && utime.tv_sec < fg->tcache+FAN_CACHE_TIME) {
  7963. + return fan_info_print(buffer);
  7964. + }
  7965. + fg->tcache = utime.tv_sec;
  7966. + fg->latch = inb(fg->base);
  7967. + for (i = 0; i < FAN_GPIO_MAX; i++) {
  7968. + fg->fan[i].hcyl = 0;
  7969. + fg->fan[i].rpm = 0;
  7970. + }
  7971. + }
  7972. +
  7973. + /* We are counting the number of halfcycles in a square wave
  7974. + * that pass in a given amount of time to determine frequency */
  7975. + do {
  7976. + for (fg=sys_fanlist; fg->port>=0; fg++) {
  7977. + val = inb(fg->base);
  7978. + for (i=0; i<FAN_GPIO_MAX; i++) {
  7979. + struct fan_info *p = &fg->fan[i];
  7980. + if (FAN_VALID(p)) {
  7981. + if ((val ^ fg->latch) & p->mask) {
  7982. + p->hcyl++;
  7983. + }
  7984. + }
  7985. + }
  7986. + fg->latch = val;
  7987. + }
  7988. +
  7989. + do_gettimeofday(&utime);
  7990. + if (utime.tv_usec > start) {
  7991. + elapsed = utime.tv_usec - start;
  7992. + } else {
  7993. + elapsed = utime.tv_usec + 1000001 - start;
  7994. + }
  7995. +
  7996. + } while (elapsed < (FAN_SAMPLE_LEN) * 1000);
  7997. +
  7998. + /* Fan rpm = 60 / ( t * poles )
  7999. + * where t is 1/2 the period and poles are the number of
  8000. + * magnetic poles for the fan.
  8001. + *
  8002. + * For the Sunon KDE1204PKBX fans on Raq XTR, poles = 4
  8003. + * So, in terms of cycles,
  8004. + *
  8005. + * rpm = 60 s/m halfcycles
  8006. + * ------ * -------------- * 1,000,000 us/s * 2
  8007. + * 4 2 * elapsed us
  8008. + *
  8009. + * = (60,000,000 / 4 poles) * halfcycles / elapsed
  8010. + * = 15,000,000 * halfcycles / elapsed
  8011. + *
  8012. + * Note, by this method and sampling for 50ms, our accuracy
  8013. + * is +/- 300 rpm. The fans are spec'ed for +/- 1000 rpm
  8014. + */
  8015. + for (val=len=0, fg=sys_fanlist; fg->port>=0; fg++) {
  8016. + for (i=0; i<FAN_GPIO_MAX; i++) {
  8017. + struct fan_info *p = &fg->fan[i];
  8018. + if (FAN_VALID(p)) {
  8019. + p->id = val++;
  8020. + p->rpm = FAN_RPM(fg->fan[i], elapsed);
  8021. + len += sprintf(buffer+len, "fan %d : %u\n",
  8022. + p->id, p->rpm);
  8023. + }
  8024. + }
  8025. + }
  8026. +
  8027. + return len;
  8028. +}
  8029. +
  8030. +static int
  8031. +fan_info_print(char *buffer)
  8032. +{
  8033. + struct fan_gpio *fg;
  8034. + int i, len=0;
  8035. +
  8036. + if (!sys_fanlist) {
  8037. + return -1;
  8038. + }
  8039. +
  8040. + for (fg=sys_fanlist; fg->port>=0; fg++) {
  8041. + for (i=0; i<FAN_GPIO_MAX; i++) {
  8042. + struct fan_info *p = &fg->fan[i];
  8043. + if (FAN_VALID(p)) {
  8044. + len += sprintf(buffer+len, "fan %d : %u\n",
  8045. + p->id, p->rpm);
  8046. + }
  8047. + }
  8048. + }
  8049. +
  8050. + return len;
  8051. +}
  8052. +
  8053. +/* FIXME: generify */
  8054. +static int
  8055. +fan_control(struct fan_info *fi, int todo)
  8056. +{
  8057. + if (fi && cobt_is_alpine()) {
  8058. + switch (fi->id) {
  8059. + case 4: {
  8060. + /* CPU FAN */
  8061. + uint8_t gpdo = inb(GPIO_BASE+6);
  8062. +
  8063. + if (todo) {
  8064. + gpdo &= ~fi->mask; /* 0 = on */
  8065. + } else {
  8066. + gpdo |= fi->mask; /* 1 = off */
  8067. + }
  8068. + outb(gpdo, GPIO_BASE+6);
  8069. + return 0;
  8070. + }
  8071. + default:
  8072. + return -ENODEV;
  8073. + }
  8074. + }
  8075. +
  8076. + return -ENOSYS;
  8077. +}
  8078. +
  8079. +static struct fan_info *
  8080. +fan_info_find(int id)
  8081. +{
  8082. + struct fan_gpio *fg;
  8083. + int i;
  8084. +
  8085. + if (!sys_fanlist) {
  8086. + return NULL;
  8087. + }
  8088. +
  8089. + for (fg=sys_fanlist; fg->port>=0; fg++) {
  8090. + for (i=0; i<FAN_GPIO_MAX; i++) {
  8091. + if (FAN_VALID(&fg->fan[i])) {
  8092. + if (fg->fan[i].id == id) {
  8093. + return &fg->fan[i];
  8094. + }
  8095. + }
  8096. + }
  8097. + }
  8098. +
  8099. + return NULL;
  8100. +}
  8101. +
  8102. +#ifdef CONFIG_PROC_FS
  8103. +static int
  8104. +fan_read_proc(char *buf, char **start, off_t pos, int len, int *eof, void *x)
  8105. +{
  8106. + int plen;
  8107. +
  8108. + //MOD_INC_USE_COUNT;
  8109. +
  8110. + spin_lock(&fan_lock);
  8111. + plen = get_faninfo(buf);
  8112. + spin_unlock(&fan_lock);
  8113. +
  8114. + //MOD_DEC_USE_COUNT;
  8115. +
  8116. + return cobalt_gen_proc_read(buf, plen, start, pos, len, eof);
  8117. +}
  8118. +
  8119. +static int
  8120. +fan_write_proc(struct file *file, const char *buf, unsigned long len, void *x)
  8121. +{
  8122. + char *page;
  8123. + int retval = -EINVAL;
  8124. +
  8125. + //MOD_INC_USE_COUNT;
  8126. +
  8127. + if (len > PAGE_SIZE) {
  8128. + //MOD_DEC_USE_COUNT;
  8129. + return -EOVERFLOW;
  8130. + }
  8131. +
  8132. + page = (char *)__get_free_page(GFP_KERNEL);
  8133. + if (!page) {
  8134. + //MOD_DEC_USE_COUNT;
  8135. + return -ENOMEM;
  8136. + }
  8137. +
  8138. + if (copy_from_user(page, buf, len)) {
  8139. + free_page((unsigned long)page);
  8140. + //MOD_DEC_USE_COUNT;
  8141. + return -EFAULT;
  8142. + }
  8143. + page[len] = '\0';
  8144. +
  8145. + /* format: `fan ID COMMAND' */
  8146. + if (len>5 && !strncmp("fan ", page, 4)) {
  8147. + if (*(page+4) != '\0') {
  8148. + struct fan_info *finf;
  8149. + char *nextpg = NULL;
  8150. +
  8151. + spin_lock(&fan_lock);
  8152. + finf = fan_info_find(simple_strtoul(page+4,&nextpg,0));
  8153. + if (!finf) {
  8154. + retval = -ENOENT;
  8155. + } else if (nextpg != '\0') {
  8156. + if (!strncmp("on", nextpg+1, 2)) {
  8157. + retval = fan_control(finf, 1);
  8158. + }
  8159. + else if (!strncmp("off", nextpg+1, 3)) {
  8160. + retval = fan_control(finf, 0);
  8161. + }
  8162. + }
  8163. + spin_unlock(&fan_lock);
  8164. + }
  8165. + }
  8166. +
  8167. + free_page((unsigned long)page);
  8168. + //MOD_DEC_USE_COUNT;
  8169. +
  8170. + return (retval < 0) ? retval : len;
  8171. +}
  8172. +#endif /* CONFIG_PROC_FS */
  8173. +
  8174. +#if defined(CONFIG_COBALT_FANS_MODULE)
  8175. +module_init(cobalt_fan_init);
  8176. +module_exit(cobalt_fan_exit);
  8177. +
  8178. +MODULE_AUTHOR("Sun Cobalt");
  8179. +MODULE_DESCRIPTION("Sun Cobalt fan tachometers");
  8180. +#endif
  8181. +
  8182. +#endif /* CONFIG_COBALT_FANS || CONFIG_COBALT_FANS_MODULE */
  8183. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/i2c.c linux-3.2.5-cobalt/drivers/cobalt/i2c.c
  8184. --- linux-3.2.5/drivers/cobalt/i2c.c 1969-12-31 16:00:00.000000000 -0800
  8185. +++ linux-3.2.5-cobalt/drivers/cobalt/i2c.c 2012-02-06 21:34:59.000000000 -0800
  8186. @@ -0,0 +1,518 @@
  8187. +/*
  8188. + * $Id: i2c.c,v 1.19 2002/09/17 23:41:29 sparker Exp $
  8189. + * i2c.c : Cobalt I2C driver support
  8190. + *
  8191. + * Copyright (C) 2000 Cobalt Networks, Inc.
  8192. + * Copyright (C) 2001 Sun Microsystems, Inc.
  8193. + *
  8194. + * Modified By: jeff@404ster.com
  8195. + *
  8196. + * This should be SMP safe. All the exported functions lock on enter and
  8197. + * unlock on exit. These exported functions may be called at interupt time,
  8198. + * so we have to use the IRQ safe locks. NOTE: no function herein may call
  8199. + * any exported function herein. --TPH
  8200. + */
  8201. +#include <stddef.h>
  8202. +#include <linux/init.h>
  8203. +#include <linux/types.h>
  8204. +#include <linux/pci.h>
  8205. +#include <linux/delay.h>
  8206. +#include <linux/module.h>
  8207. +#include <asm/io.h>
  8208. +
  8209. +#include <cobalt/cobalt.h>
  8210. +#include <cobalt/i2c.h>
  8211. +#include <cobalt/systype.h>
  8212. +
  8213. +#define I2C_3K_STATUS 0x00
  8214. +#define I2C_3K_CMD 0x01
  8215. +#define I2C_3K_START 0x02
  8216. +#define I2C_3K_ADDR 0x03
  8217. +#define I2C_3K_LOW_DATA 0x04
  8218. +#define I2C_3K_HIGH_DATA 0x05
  8219. +#define I2C_3K_BLOCK_DATA 0x06
  8220. +#define I2C_3K_INDEX 0x07
  8221. +#define I2C_3K_STATUS_IDLE 0x04
  8222. +#define I2C_3K_CMD_RW_BYTE 0x20
  8223. +#define I2C_3K_CMD_RW_WORD 0x30
  8224. +#define I2C_3K_CMD_RW_BLOCK 0xC0
  8225. +#define I2C_3K_CMD_RESET_PTR 0x80
  8226. +
  8227. +#define I2C_5K_HOST_STATUS 0x00
  8228. +#define I2C_5K_SLAVE_STATUS 0x01
  8229. +#define I2C_5K_HOST_CONTROL 0x02
  8230. +#define I2C_5K_HOST_COMMAND 0x03
  8231. +#define I2C_5K_HOST_ADDR 0x04
  8232. +#define I2C_5K_DATA_0 0x05
  8233. +#define I2C_5K_DATA_1 0x06
  8234. +#define I2C_5K_BLOCK_DATA 0x07
  8235. +#define I2C_5K_SLAVE_CONTROL 0x08
  8236. +#define I2C_5K_SHADOW_COMMAND 0x09
  8237. +#define I2C_5K_SLAVE_EVENT 0x0a
  8238. +#define I2C_5K_SLAVE_DATA 0x0c
  8239. +#define I2C_5K_HOST_STATUS_BUSY 0x01
  8240. +#define I2C_5K_HOST_CMD_START 0x40
  8241. +#define I2C_5K_HOST_CMD_QUICK_RW (0 << 2)
  8242. +#define I2C_5K_HOST_CMD_BYTE_RW (1 << 2)
  8243. +#define I2C_5K_HOST_CMD_BYTE_DATA_RW (2 << 2)
  8244. +#define I2C_5K_HOST_CMD_WORD_DATA_RW (3 << 2)
  8245. +#define I2C_5K_HOST_CMD_BLOCK_DATA_RW (5 << 2)
  8246. +
  8247. +#define I2C_WRITE 0
  8248. +#define I2C_READ 1
  8249. +
  8250. +/* this delay was determined empirically */
  8251. +#define I2C_WRITE_UDELAY 1000
  8252. +
  8253. +struct cobalt_i2c_data {
  8254. + const unsigned char status;
  8255. + const unsigned char addr;
  8256. + const unsigned char index;
  8257. + const unsigned char data_low;
  8258. + const unsigned char data_high;
  8259. + const unsigned char data_block;
  8260. + const unsigned char rw_byte;
  8261. + const unsigned char rw_word;
  8262. + const unsigned char rw_block;
  8263. + unsigned int io_port;
  8264. +};
  8265. +
  8266. +struct cobalt_i2c_data cobalt_i2c_3k = {
  8267. + I2C_3K_STATUS,
  8268. + I2C_3K_ADDR,
  8269. + I2C_3K_INDEX,
  8270. + I2C_3K_LOW_DATA,
  8271. + I2C_3K_HIGH_DATA,
  8272. + I2C_3K_BLOCK_DATA,
  8273. + I2C_3K_CMD_RW_BYTE,
  8274. + I2C_3K_CMD_RW_WORD,
  8275. + I2C_3K_CMD_RW_BLOCK,
  8276. + 0L
  8277. +};
  8278. +
  8279. +struct cobalt_i2c_data cobalt_i2c_5k = {
  8280. + I2C_5K_HOST_STATUS,
  8281. + I2C_5K_HOST_ADDR,
  8282. + I2C_5K_HOST_COMMAND,
  8283. + I2C_5K_DATA_0,
  8284. + I2C_5K_DATA_1,
  8285. + I2C_5K_BLOCK_DATA,
  8286. + I2C_5K_HOST_CMD_BYTE_DATA_RW,
  8287. + I2C_5K_HOST_CMD_WORD_DATA_RW,
  8288. + I2C_5K_HOST_CMD_BLOCK_DATA_RW,
  8289. + 0L
  8290. +};
  8291. +
  8292. +/* a global pointer for our i2c data */
  8293. +struct cobalt_i2c_data *i2c_data;
  8294. +
  8295. +#define I2C_REG(r) (i2c_data->io_port + i2c_data->r)
  8296. +#define I2C_CMD(c) (i2c_data->c)
  8297. +
  8298. +#define I2C_LOCK (1 << 0)
  8299. +#define I2C_DEAD (1 << 1)
  8300. +static unsigned long i2c_state;
  8301. +
  8302. +static int initialized;
  8303. +
  8304. +static inline int
  8305. +do_i2c_lock(void)
  8306. +{
  8307. + int i = 0;
  8308. +
  8309. + if (test_bit(I2C_DEAD, &i2c_state))
  8310. + return -1;
  8311. +
  8312. + while (test_and_set_bit(I2C_LOCK, &i2c_state)) {
  8313. + if (i++ > 5)
  8314. + return -1;
  8315. + udelay(10);
  8316. + }
  8317. + udelay(1);
  8318. + return 0;
  8319. +}
  8320. +
  8321. +static inline void
  8322. +do_i2c_unlock(void)
  8323. +{
  8324. + clear_bit(I2C_LOCK, &i2c_state);
  8325. +}
  8326. +
  8327. +/* do a little squelching */
  8328. +#define NOISE_RATE (5*HZ)
  8329. +static int
  8330. +i2c_noisy(void)
  8331. +{
  8332. + static unsigned long last_time;
  8333. + static unsigned int messages;
  8334. +
  8335. + if ((long) (jiffies - last_time) > NOISE_RATE) {
  8336. + last_time = jiffies;
  8337. + if (messages) {
  8338. + WPRINTK("skipped %u kernel messages\n", messages);
  8339. + messages = 0;
  8340. + }
  8341. + return 0;
  8342. + }
  8343. + messages++;
  8344. + return 1;
  8345. +}
  8346. +
  8347. +static int
  8348. +i2c_wait_for_smi(void)
  8349. +{
  8350. + static unsigned int shutup = 0;
  8351. + int timeout=10;
  8352. + int status;
  8353. +
  8354. + while (timeout--) {
  8355. + udelay(100); /* wait */
  8356. + status = inb_p(I2C_REG(status));
  8357. +
  8358. + if (cobt_is_3k()) {
  8359. + if (status & I2C_3K_STATUS_IDLE) {
  8360. + return 0;
  8361. + }
  8362. + } else if (cobt_is_5k()) {
  8363. + if (!(status & I2C_5K_HOST_STATUS_BUSY)) {
  8364. + return 0;
  8365. + }
  8366. + }
  8367. + outb_p(status, I2C_REG(status));
  8368. + }
  8369. +
  8370. + /* still busy - complain */
  8371. + if (!i2c_noisy()) {
  8372. + if (++shutup > 2) {
  8373. + EPRINTK("i2c seems to be dead - sorry\n");
  8374. + set_bit(I2C_DEAD, &i2c_state);
  8375. + } else {
  8376. + WPRINTK("i2c timeout: status busy (0x%x), resetting\n",
  8377. + status);
  8378. + }
  8379. + }
  8380. +
  8381. + /* punch the abort bit */
  8382. + if (cobt_is_3k()) {
  8383. + outb_p(4, i2c_data->io_port + I2C_3K_CMD);
  8384. + } else if (cobt_is_5k()) {
  8385. + outb_p(2, i2c_data->io_port + I2C_5K_HOST_CONTROL);
  8386. + outb_p(1, i2c_data->io_port + I2C_5K_HOST_CONTROL);
  8387. + }
  8388. +
  8389. + return -1;
  8390. +}
  8391. +
  8392. +static inline int
  8393. +i2c_setup(const int dev, const int index, const int r)
  8394. +{
  8395. + if (i2c_wait_for_smi() < 0)
  8396. + return -1;
  8397. +
  8398. + /* clear status */
  8399. + outb_p(0xff, I2C_REG(status));
  8400. +
  8401. + /* device address */
  8402. + outb_p((dev|r) & 0xff, I2C_REG(addr));
  8403. +
  8404. + /* I2C index */
  8405. + outb_p(index & 0xff, I2C_REG(index));
  8406. +
  8407. + return 0;
  8408. +}
  8409. +
  8410. +static inline int
  8411. +i2c_cmd(const unsigned char command)
  8412. +{
  8413. + if (cobt_is_3k()) {
  8414. + outb_p(command, i2c_data->io_port + I2C_3K_CMD);
  8415. + outb_p(0xff, i2c_data->io_port + I2C_3K_START);
  8416. + } else if (cobt_is_5k()) {
  8417. + outb_p(I2C_5K_HOST_CMD_START | command,
  8418. + i2c_data->io_port + I2C_5K_HOST_CONTROL);
  8419. + }
  8420. +
  8421. + if (i2c_wait_for_smi() < 0)
  8422. + return -1;
  8423. +
  8424. + return 0;
  8425. +}
  8426. +
  8427. +int
  8428. +cobalt_i2c_init(void)
  8429. +{
  8430. + struct pci_dev *i2cdev = NULL;
  8431. +
  8432. + if( ! initialized ) {
  8433. + if (cobt_is_3k()) {
  8434. + i2c_data = &cobalt_i2c_3k;
  8435. + i2cdev = pci_get_device(PCI_VENDOR_ID_AL,
  8436. + PCI_DEVICE_ID_AL_M7101, NULL);
  8437. + if (!i2cdev) {
  8438. + EPRINTK("can't find PMU for i2c access\n");
  8439. + return -1;
  8440. + }
  8441. + pci_read_config_dword(i2cdev, 0x14, &i2c_data->io_port);
  8442. + } else if (cobt_is_5k()) {
  8443. + i2c_data = &cobalt_i2c_5k;
  8444. + i2cdev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  8445. + PCI_DEVICE_ID_SERVERWORKS_OSB4, i2cdev);
  8446. + if (!i2cdev) {
  8447. + i2cdev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  8448. + PCI_DEVICE_ID_SERVERWORKS_CSB5, i2cdev);
  8449. + if (!i2cdev) {
  8450. + EPRINTK("can't find OSB4 or CSB5 for i2c access\n");
  8451. + return -1;
  8452. + }
  8453. + }
  8454. + pci_read_config_dword(i2cdev, 0x90, &i2c_data->io_port);
  8455. + }
  8456. +
  8457. + i2c_data->io_port &= 0xfff0;
  8458. + if (!i2c_data->io_port) {
  8459. + EPRINTK("i2c IO port not found\n");
  8460. + }
  8461. + initialized = 1;
  8462. + }
  8463. +
  8464. + return 0;
  8465. +}
  8466. +
  8467. +int
  8468. +cobalt_i2c_reset(void)
  8469. +{
  8470. + int r;
  8471. +
  8472. + if( !initialized ) {
  8473. + if( cobalt_i2c_init() < 0 )
  8474. + return -1;
  8475. + }
  8476. +
  8477. + if (do_i2c_lock() < 0)
  8478. + return -1;
  8479. +
  8480. + if (cobt_is_3k()) {
  8481. + /* clear status */
  8482. + outb_p(0xff, i2c_data->io_port + I2C_3K_STATUS);
  8483. + /* reset SMB devs */
  8484. + outb_p(0x08, i2c_data->io_port + I2C_3K_CMD);
  8485. + /* start command */
  8486. + outb_p(0xff, i2c_data->io_port + I2C_3K_START);
  8487. + } else if (cobt_is_5k()) {
  8488. + /* clear status */
  8489. + outb_p(0x2, i2c_data->io_port + I2C_5K_HOST_CONTROL);
  8490. + outb_p(0x1, i2c_data->io_port + I2C_5K_HOST_CONTROL);
  8491. + outb_p(0xff, i2c_data->io_port + I2C_5K_HOST_STATUS);
  8492. + outb_p(I2C_5K_HOST_CMD_START | 0x08,
  8493. + i2c_data->io_port + I2C_5K_HOST_CONTROL);
  8494. + }
  8495. +
  8496. + r = i2c_wait_for_smi();
  8497. +
  8498. + do_i2c_unlock();
  8499. +
  8500. + return r;
  8501. +}
  8502. +
  8503. +int
  8504. +cobalt_i2c_read_byte(const int dev, const int index)
  8505. +{
  8506. + int val = 0;
  8507. +
  8508. + if( !initialized ) {
  8509. + if( cobalt_i2c_init() < 0 )
  8510. + return -1;
  8511. + }
  8512. +
  8513. + if (do_i2c_lock() < 0)
  8514. + return -1;
  8515. +
  8516. + if (i2c_setup(dev, index, I2C_READ) < 0
  8517. + || i2c_cmd(I2C_CMD(rw_byte)) < 0) {
  8518. + val = -1;
  8519. + }
  8520. +
  8521. + if (val == 0) {
  8522. + val = inb_p(I2C_REG(data_low));
  8523. + }
  8524. +
  8525. + do_i2c_unlock();
  8526. +
  8527. + return val;
  8528. +}
  8529. +
  8530. +int
  8531. +cobalt_i2c_read_word(const int dev, const int index)
  8532. +{
  8533. + int val = 0;
  8534. +
  8535. + if( !initialized ) {
  8536. + if( cobalt_i2c_init() < 0 )
  8537. + return -1;
  8538. + }
  8539. +
  8540. + if (do_i2c_lock() < 0)
  8541. + return -1;
  8542. +
  8543. + if (i2c_setup(dev, index, I2C_READ) < 0
  8544. + || i2c_cmd(I2C_CMD(rw_word)) < 0) {
  8545. + val = -1;
  8546. + }
  8547. +
  8548. + if (val == 0) {
  8549. + val = inb_p(I2C_REG(data_low));
  8550. + val += inb_p(I2C_REG(data_high)) << 8;
  8551. + }
  8552. +
  8553. + do_i2c_unlock();
  8554. +
  8555. + return val;
  8556. +}
  8557. +
  8558. +int
  8559. +cobalt_i2c_read_block(const int dev, const int index,
  8560. + unsigned char *data, int count)
  8561. +{
  8562. + if( !initialized ) {
  8563. + if( cobalt_i2c_init() < 0 )
  8564. + return -1;
  8565. + }
  8566. +
  8567. + if (do_i2c_lock() < 0)
  8568. + return -1;
  8569. +
  8570. + if (i2c_setup(dev, index, I2C_READ) < 0) {
  8571. + do_i2c_unlock();
  8572. + return -1;
  8573. + }
  8574. +
  8575. + outb_p(count & 0xff, I2C_REG(data_low));
  8576. + outb_p(count & 0xff, I2C_REG(data_high));
  8577. +
  8578. + if (i2c_cmd(I2C_CMD(rw_block)) < 0) {
  8579. + do_i2c_unlock();
  8580. + return -1;
  8581. + }
  8582. +
  8583. + while (count) {
  8584. + /* read a byte of block data */
  8585. + *data = inb_p(I2C_REG(data_block));
  8586. + data++;
  8587. + count--;
  8588. + }
  8589. +
  8590. + do_i2c_unlock();
  8591. +
  8592. + return 0;
  8593. +}
  8594. +
  8595. +int
  8596. +cobalt_i2c_write_byte(const int dev, const int index, const u8 val)
  8597. +{
  8598. + int r = 0;
  8599. +
  8600. + if( !initialized ) {
  8601. + if( cobalt_i2c_init() < 0 )
  8602. + return -1;
  8603. + }
  8604. +
  8605. + if (do_i2c_lock() < 0)
  8606. + return -1;
  8607. +
  8608. + if (i2c_setup(dev, index, I2C_WRITE) < 0) {
  8609. + r = -1;
  8610. + }
  8611. +
  8612. + if (r == 0) {
  8613. + outb_p(val & 0xff, I2C_REG(data_low));
  8614. +
  8615. + if (i2c_cmd(I2C_CMD(rw_byte)) < 0) {
  8616. + r = -1;
  8617. + }
  8618. + }
  8619. +
  8620. + udelay(I2C_WRITE_UDELAY);
  8621. +
  8622. + do_i2c_unlock();
  8623. +
  8624. + return r;
  8625. +}
  8626. +
  8627. +int
  8628. +cobalt_i2c_write_word(const int dev, const int index, const u16 val)
  8629. +{
  8630. + int r = 0;
  8631. +
  8632. + if( !initialized ) {
  8633. + if( cobalt_i2c_init() < 0 )
  8634. + return -1;
  8635. + }
  8636. +
  8637. + if (do_i2c_lock() < 0)
  8638. + return -1;
  8639. +
  8640. + if (i2c_setup(dev, index, I2C_WRITE) < 0) {
  8641. + r = -1;
  8642. + }
  8643. +
  8644. + if (r == 0) {
  8645. + outb_p(val & 0xff, I2C_REG(data_low));
  8646. + outb_p((val >> 8) & 0xff, I2C_REG(data_high));
  8647. +
  8648. + if (i2c_cmd(I2C_CMD(rw_word)) < 0) {
  8649. + r = -1;
  8650. + }
  8651. + }
  8652. +
  8653. + udelay(I2C_WRITE_UDELAY);
  8654. +
  8655. + do_i2c_unlock();
  8656. +
  8657. + return r;
  8658. +}
  8659. +
  8660. +int
  8661. +cobalt_i2c_write_block(int dev, int index, unsigned char *data, int count)
  8662. +{
  8663. + if( !initialized ) {
  8664. + if( cobalt_i2c_init() < 0 )
  8665. + return -1;
  8666. + }
  8667. +
  8668. + if (do_i2c_lock() < 0)
  8669. + return -1;
  8670. +
  8671. + if (i2c_setup(dev, index, I2C_WRITE) < 0) {
  8672. + do_i2c_unlock();
  8673. + return -1;
  8674. + }
  8675. +
  8676. + outb_p(count & 0xff, I2C_REG(data_low));
  8677. + outb_p(count & 0xff, I2C_REG(data_high));
  8678. +
  8679. + if (i2c_cmd(I2C_CMD(rw_block)) < 0) {
  8680. + do_i2c_unlock();
  8681. + return -1;
  8682. + }
  8683. +
  8684. + while (count) {
  8685. + /* write a byte of block data */
  8686. + outb_p(*data, I2C_REG(data_block));
  8687. + data++;
  8688. + count--;
  8689. + }
  8690. +
  8691. + udelay(I2C_WRITE_UDELAY);
  8692. +
  8693. + do_i2c_unlock();
  8694. +
  8695. + return 0;
  8696. +}
  8697. +
  8698. +EXPORT_SYMBOL(cobalt_i2c_reset);
  8699. +EXPORT_SYMBOL(cobalt_i2c_read_byte);
  8700. +EXPORT_SYMBOL(cobalt_i2c_read_word);
  8701. +EXPORT_SYMBOL(cobalt_i2c_read_block);
  8702. +EXPORT_SYMBOL(cobalt_i2c_write_byte);
  8703. +EXPORT_SYMBOL(cobalt_i2c_write_word);
  8704. +EXPORT_SYMBOL(cobalt_i2c_write_block);
  8705. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/init.c linux-3.2.5-cobalt/drivers/cobalt/init.c
  8706. --- linux-3.2.5/drivers/cobalt/init.c 1969-12-31 16:00:00.000000000 -0800
  8707. +++ linux-3.2.5-cobalt/drivers/cobalt/init.c 2012-02-06 21:34:59.000000000 -0800
  8708. @@ -0,0 +1,117 @@
  8709. +/* $Id: init.c,v 1.22 2002/11/04 17:54:15 thockin Exp $ */
  8710. +/*
  8711. + * Copyright (c) 2001 Sun Microsystems
  8712. + * Generic initialization, to reduce pollution of other files
  8713. + */
  8714. +#include <linux/module.h>
  8715. +#include <linux/stddef.h>
  8716. +#include <linux/version.h>
  8717. +#include <linux/types.h>
  8718. +#include <linux/init.h>
  8719. +#include <linux/proc_fs.h>
  8720. +#include <cobalt/cobalt.h>
  8721. +#include <cobalt/powermode.h>
  8722. +
  8723. +static int cobalt_proc_init(void);
  8724. +extern int cobalt_i2c_init(void);
  8725. +extern int cobalt_net_init(void);
  8726. +extern int cobalt_systype_init(void);
  8727. +extern void cobalt_boardrev_init(void);
  8728. +extern int cobalt_led_init(void);
  8729. +extern int cobalt_lcd_init(void);
  8730. +extern int cobalt_serialnum_init(void);
  8731. +extern int cobalt_wdt_init(void);
  8732. +extern int cobalt_sensors_init(void);
  8733. +extern int cobalt_fan_init(void);
  8734. +extern int cobalt_acpi_init(void);
  8735. +extern int cobalt_ruler_init(void);
  8736. +extern int cobalt_raminfo_init(void);
  8737. +
  8738. +#ifdef CONFIG_PROC_FS
  8739. +struct proc_dir_entry *proc_cobalt;
  8740. +EXPORT_SYMBOL(proc_cobalt);
  8741. +#endif
  8742. +DEFINE_SPINLOCK(cobalt_superio_lock);
  8743. +
  8744. +/* initialize all the cobalt specific stuff */
  8745. +int __init
  8746. +cobalt_init(void)
  8747. +{
  8748. + cobalt_proc_init();
  8749. + cobalt_systype_init();
  8750. +#ifdef CONFIG_COBALT_RAQ
  8751. + /* we might keep the boardrev on an i2c chip */
  8752. + cobalt_i2c_init();
  8753. +#endif
  8754. + cobalt_boardrev_init();
  8755. +#ifdef CONFIG_COBALT_ACPI
  8756. + cobalt_acpi_init();
  8757. +#endif
  8758. +#ifdef CONFIG_COBALT_LED
  8759. + cobalt_net_init();
  8760. + cobalt_led_init();
  8761. +#endif
  8762. +#ifdef CONFIG_COBALT_LCD
  8763. + cobalt_lcd_init();
  8764. +#endif
  8765. +#ifdef CONFIG_COBALT_RULER
  8766. + cobalt_ruler_init();
  8767. +#endif
  8768. +#ifdef CONFIG_COBALT_SERNUM
  8769. + cobalt_serialnum_init();
  8770. +#endif
  8771. +#ifdef CONFIG_COBALT_RAQ
  8772. + /* some systems use WDT it for reboot */
  8773. + cobalt_wdt_init();
  8774. +#endif
  8775. +#ifdef CONFIG_COBALT_SENSORS
  8776. + cobalt_sensors_init();
  8777. +#endif
  8778. +#ifdef CONFIG_COBALT_FANS
  8779. + cobalt_fan_init();
  8780. +#endif
  8781. +#ifdef CONFIG_COBALT_RAMINFO
  8782. + cobalt_raminfo_init();
  8783. +#endif
  8784. +#ifdef CONFIG_COBALT_POWERMODE
  8785. + cobalt_powermode_init();
  8786. +#endif
  8787. + return 0;
  8788. +}
  8789. +
  8790. +static int __init
  8791. +cobalt_proc_init(void)
  8792. +{
  8793. +#ifdef CONFIG_PROC_FS
  8794. + proc_cobalt = proc_mkdir("cobalt", 0);
  8795. + if (!proc_cobalt) {
  8796. + EPRINTK("can't create /proc/cobalt\n");
  8797. + return -1;
  8798. + }
  8799. +#endif
  8800. +
  8801. + return 0;
  8802. +}
  8803. +
  8804. +/* a function that handles the blah stuff in a simple proc read function */
  8805. +int
  8806. +cobalt_gen_proc_read(char *buf, int plen, char **start, off_t pos,
  8807. + int len, int *eof)
  8808. +{
  8809. + /* trying to read a bad offset? */
  8810. + if (pos >= plen) {
  8811. + *eof = 1;
  8812. + return 0;
  8813. + }
  8814. +
  8815. + /* did we write everything we wanted to? */
  8816. + if (len >= (plen-pos)) {
  8817. + *eof = 1;
  8818. + }
  8819. +
  8820. + *start = buf + pos;
  8821. + plen -= pos;
  8822. +
  8823. + return (len > plen) ? plen : len;
  8824. +}
  8825. +EXPORT_SYMBOL(cobalt_gen_proc_read);
  8826. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/lcd.c linux-3.2.5-cobalt/drivers/cobalt/lcd.c
  8827. --- linux-3.2.5/drivers/cobalt/lcd.c 1969-12-31 16:00:00.000000000 -0800
  8828. +++ linux-3.2.5-cobalt/drivers/cobalt/lcd.c 2012-02-06 21:34:59.000000000 -0800
  8829. @@ -0,0 +1,859 @@
  8830. +/*
  8831. + * $Id: lcd.c,v 1.44 2002/05/10 18:44:45 duncan Exp $
  8832. + * lcd.c : driver for Cobalt LCD/Buttons
  8833. + *
  8834. + * Copyright 1996-2000 Cobalt Networks, Inc.
  8835. + * Copyright 2001 Sun Microsystems, Inc.
  8836. + *
  8837. + * By: Andrew Bose
  8838. + * Timothy Stonis
  8839. + * Tim Hockin
  8840. + * Adrian Sun
  8841. + * Duncan Laurie
  8842. + *
  8843. + * Modified By: jeff@404ster.com
  8844. + *
  8845. + * This should be SMP safe. We're hardly performance critical,
  8846. + * so we lock around lcd_ioctl() and just where needed by other external
  8847. + * functions. There is a static global waiters variable that is atomic_t, and
  8848. + * so should be safe. --TPH
  8849. + */
  8850. +
  8851. +#ifdef CONFIG_COBALT_LCD
  8852. +
  8853. +#include <linux/module.h>
  8854. +#include <linux/types.h>
  8855. +#include <linux/errno.h>
  8856. +#include <linux/miscdevice.h>
  8857. +#include <linux/slab.h>
  8858. +#include <linux/ioport.h>
  8859. +#include <linux/fcntl.h>
  8860. +#include <linux/stat.h>
  8861. +#include <linux/netdevice.h>
  8862. +#include <linux/proc_fs.h>
  8863. +#include <linux/in6.h>
  8864. +#include <linux/pci.h>
  8865. +#include <linux/init.h>
  8866. +#include <linux/timer.h>
  8867. +#include <linux/kernel.h>
  8868. +#include <linux/sched.h>
  8869. +
  8870. +#include <asm/io.h>
  8871. +#include <asm/segment.h>
  8872. +#include <asm/system.h>
  8873. +#include <asm/uaccess.h>
  8874. +#include <asm/checksum.h>
  8875. +#include <linux/delay.h>
  8876. +
  8877. +#include <cobalt/cobalt.h>
  8878. +#include <cobalt/systype.h>
  8879. +#include <cobalt/lcd.h>
  8880. +#include <cobalt/superio.h>
  8881. +#include <cobalt/i2c.h>
  8882. +
  8883. +#define TWIDDLE_HZ (HZ/10)
  8884. +
  8885. +#ifndef min
  8886. +#define min(a, b) ((a) < (b) ? (a) : (b))
  8887. +#endif
  8888. +
  8889. +#define LCD_DRIVER "Cobalt Networks LCD driver"
  8890. +#define LCD_DRIVER_VMAJ 4
  8891. +#define LCD_DRIVER_VMIN 0
  8892. +
  8893. +/* io registers */
  8894. +#define LPT 0x0378
  8895. +#define LCD_DATA_ADDRESS LPT+0
  8896. +#define LCD_CONTROL_ADDRESS LPT+2
  8897. +
  8898. +/* LCD device info */
  8899. +#define LCD_Addr 0x80
  8900. +#define DD_R00 0x00
  8901. +#define DD_R01 0x27
  8902. +#define DD_R10 0x40
  8903. +#define DD_R11 0x67
  8904. +
  8905. +/* driver functions */
  8906. +static int cobalt_lcd_open(struct inode *, struct file *);
  8907. +static ssize_t cobalt_lcd_read(struct file *, char *, size_t, loff_t *);
  8908. +static int cobalt_lcd_read_proc(char *, char **, off_t, int, int *, void *);
  8909. +static char *cobalt_lcddev_read_line(int, char *);
  8910. +static int cobalt_lcd_ioctl(struct inode *, struct file *,
  8911. + unsigned int, unsigned long);
  8912. +static int cobalt_lcd_panic(struct notifier_block *self, unsigned long, void *);
  8913. +
  8914. +/* globals used throughout */
  8915. +#ifdef CONFIG_PROC_FS
  8916. +#ifdef CONFIG_COBALT_OLDPROC
  8917. +static struct proc_dir_entry *proc_lcd;
  8918. +#endif
  8919. +static struct proc_dir_entry *proc_clcd;
  8920. +#endif
  8921. +static int lcd_present;
  8922. +static int has_i2c_lcd;
  8923. +static DEFINE_SPINLOCK(lcd_lock);
  8924. +
  8925. +/* various file operations we support for this driver */
  8926. +static struct file_operations lcd_fops = {
  8927. + .read = cobalt_lcd_read,
  8928. + .unlocked_ioctl = cobalt_lcd_ioctl,
  8929. + .open = cobalt_lcd_open,
  8930. +};
  8931. +
  8932. +/* device structure */
  8933. +static struct miscdevice lcd_dev = {
  8934. + MISC_DYNAMIC_MINOR,
  8935. + "lcd",
  8936. + &lcd_fops
  8937. +};
  8938. +
  8939. +static int disable_lcd;
  8940. +static int __init
  8941. +lcd_disable_setup(char *str)
  8942. +{
  8943. + disable_lcd = 1;
  8944. + return 0;
  8945. +}
  8946. +__setup("nolcd", lcd_disable_setup);
  8947. +
  8948. +/* Read a control instruction from the LCD */
  8949. +static inline int
  8950. +lcddev_read_inst(void)
  8951. +{
  8952. + int a = 0;
  8953. +
  8954. + if (cobt_is_5k() && has_i2c_lcd) {
  8955. + a = cobalt_i2c_read_byte(
  8956. + COBALT_I2C_DEV_LCD_INST | COBALT_I2C_READ, 0);
  8957. + } else if (cobt_is_3k() || (cobt_is_5k() && !has_i2c_lcd)) {
  8958. + outb(0x21, LCD_CONTROL_ADDRESS); /* RS=0, R/W=1, E=0 */
  8959. + outb(0x20, LCD_CONTROL_ADDRESS); /* RS=0, R/W=1, E=1 */
  8960. + a = inb(LCD_DATA_ADDRESS);
  8961. + outb(0x21, LCD_CONTROL_ADDRESS); /* RS=0, R/W=1, E=0 */
  8962. + outb(0x01, LCD_CONTROL_ADDRESS); /* RS=0, R/W=1, E=0 */
  8963. + }
  8964. +
  8965. + /* small delay */
  8966. + udelay(100);
  8967. +
  8968. + return a;
  8969. +}
  8970. +
  8971. +#define LCD_MAX_POLL 10000
  8972. +static inline void
  8973. +lcddev_poll_wait(void)
  8974. +{
  8975. + int i=0;
  8976. +
  8977. + while (i++ < LCD_MAX_POLL) {
  8978. + int r = lcddev_read_inst();
  8979. + if (r < 0 || !(r & 0x80))
  8980. + break;
  8981. + }
  8982. +}
  8983. +
  8984. +/* Write a control instruction to the LCD */
  8985. +static inline void
  8986. +lcddev_write_inst(unsigned char data)
  8987. +{
  8988. + lcddev_poll_wait();
  8989. +
  8990. + if (cobt_is_5k() && has_i2c_lcd) {
  8991. + cobalt_i2c_write_byte(
  8992. + COBALT_I2C_DEV_LCD_INST | COBALT_I2C_WRITE, 0, data);
  8993. + } else if (cobt_is_3k() || (cobt_is_5k() && !has_i2c_lcd)) {
  8994. + outb(0x03, LCD_CONTROL_ADDRESS); /* RS=0, R/W=0, E=0 */
  8995. + outb(data, LCD_DATA_ADDRESS);
  8996. + outb(0x02, LCD_CONTROL_ADDRESS); /* RS=0, R/W=0, E=1 */
  8997. + outb(0x03, LCD_CONTROL_ADDRESS); /* RS=0, R/W=0, E=0 */
  8998. + outb(0x01, LCD_CONTROL_ADDRESS); /* RS=0, R/W=1, E=0 */
  8999. + }
  9000. +
  9001. + /* small delay */
  9002. + udelay(100);
  9003. +}
  9004. +
  9005. +/* Write one byte of data to the LCD */
  9006. +static inline void
  9007. +lcddev_write_data(unsigned char data)
  9008. +{
  9009. + lcddev_poll_wait();
  9010. +
  9011. + if (cobt_is_5k() && has_i2c_lcd) {
  9012. + cobalt_i2c_write_byte(
  9013. + COBALT_I2C_DEV_LCD_DATA | COBALT_I2C_WRITE, 0, data);
  9014. + } else if (cobt_is_3k() || (cobt_is_5k() && !has_i2c_lcd)) {
  9015. + outb(0x07, LCD_CONTROL_ADDRESS); /* RS=1, R/W=0, E=0 */
  9016. + outb(data, LCD_DATA_ADDRESS);
  9017. + outb(0x06, LCD_CONTROL_ADDRESS); /* RS=1, R/W=0, E=1 */
  9018. + outb(0x07, LCD_CONTROL_ADDRESS); /* RS=1, R/W=0, E=0 */
  9019. + outb(0x05, LCD_CONTROL_ADDRESS); /* RS=1, R/W=1, E=0 */
  9020. + }
  9021. + /* small delay */
  9022. + udelay(100);
  9023. +}
  9024. +
  9025. +/* Read one byte of data from the LCD */
  9026. +static inline unsigned char
  9027. +lcddev_read_data(void)
  9028. +{
  9029. + unsigned char a = 0;
  9030. +
  9031. + lcddev_poll_wait();
  9032. +
  9033. + if (cobt_is_5k() && has_i2c_lcd) {
  9034. + a = cobalt_i2c_read_byte(
  9035. + COBALT_I2C_DEV_LCD_DATA | COBALT_I2C_READ, 0);
  9036. + } else if (cobt_is_3k() || (cobt_is_5k() && !has_i2c_lcd)) {
  9037. + outb(0x25, LCD_CONTROL_ADDRESS); /* RS=1, R/W=1, E=0 */
  9038. + outb(0x24, LCD_CONTROL_ADDRESS); /* RS=1, R/W=1, E=1 */
  9039. + a = inb(LCD_DATA_ADDRESS);
  9040. + outb(0x25, LCD_CONTROL_ADDRESS); /* RS=1, R/W=1, E=0 */
  9041. + outb(0x01, LCD_CONTROL_ADDRESS); /* RS=1, R/W=1, E=0 */
  9042. + }
  9043. +
  9044. + /* small delay */
  9045. + udelay(100);
  9046. +
  9047. + return a;
  9048. +}
  9049. +
  9050. +static inline void
  9051. +lcddev_init(void)
  9052. +{
  9053. + lcddev_write_inst(0x38);
  9054. + lcddev_write_inst(0x38);
  9055. + lcddev_write_inst(0x38);
  9056. + lcddev_write_inst(0x06);
  9057. + lcddev_write_inst(0x0c);
  9058. +}
  9059. +
  9060. +static inline char
  9061. +read_buttons(void)
  9062. +{
  9063. + char r = 0;
  9064. +
  9065. + if (cobt_is_5k() && has_i2c_lcd) {
  9066. + unsigned char inst;
  9067. + inst = cobalt_i2c_read_byte(COBALT_I2C_DEV_FP_BUTTONS, 0);
  9068. + switch (inst) {
  9069. + case 0x3e: r = BUTTON_Next_B; break;
  9070. + case 0x3d: r = BUTTON_Enter_B; break;
  9071. + case 0x1f: r = BUTTON_Left_B; break;
  9072. + case 0x3b: r = BUTTON_Right_B; break;
  9073. + case 0x2f: r = BUTTON_Up_B; break;
  9074. + case 0x37: r = BUTTON_Down_B; break;
  9075. + case 0x3f:
  9076. + default: r = BUTTON_NONE_B;
  9077. + }
  9078. + } else if (cobt_is_3k() || (cobt_is_5k() && !has_i2c_lcd)) {
  9079. + outb(0x29, LCD_CONTROL_ADDRESS); /* Sel=0, Bi=1 */
  9080. + r = inb(LCD_DATA_ADDRESS) & BUTTON_MASK;
  9081. + }
  9082. +
  9083. + return r;
  9084. +}
  9085. +
  9086. +static inline int
  9087. +button_pressed(void)
  9088. +{
  9089. + unsigned char b;
  9090. + unsigned long flags;
  9091. +
  9092. + spin_lock_irqsave(&lcd_lock, flags);
  9093. + b = read_buttons();
  9094. + spin_unlock_irqrestore(&lcd_lock, flags);
  9095. +
  9096. + switch (b) {
  9097. + case BUTTON_Next:
  9098. + case BUTTON_Next_B:
  9099. + case BUTTON_Reset_B:
  9100. + return b;
  9101. + default:
  9102. + break;
  9103. + }
  9104. +
  9105. + return 0;
  9106. +}
  9107. +
  9108. +/* this could be protected by CAP_RAW_IO here, or by the FS permissions */
  9109. +static int
  9110. +cobalt_lcd_ioctl(struct inode *inode, struct file *file,
  9111. + unsigned int cmd, unsigned long arg)
  9112. +{
  9113. + struct lcd_display button_display, display;
  9114. + unsigned long address, a;
  9115. + int index;
  9116. + int dlen = sizeof(struct lcd_display);
  9117. + int r = 0;
  9118. + unsigned long flags;
  9119. +
  9120. +#ifdef CONFIG_COBALT_LCD_TWIDDLE
  9121. + cobalt_lcd_stop_twiddle();
  9122. +#endif
  9123. + switch (cmd) {
  9124. + /* Turn the LCD on */
  9125. + case LCD_On:
  9126. + spin_lock_irqsave(&lcd_lock, flags);
  9127. + lcddev_write_inst(0x0F);
  9128. + spin_unlock_irqrestore(&lcd_lock, flags);
  9129. + break;
  9130. +
  9131. + /* Turn the LCD off */
  9132. + case LCD_Off:
  9133. + spin_lock_irqsave(&lcd_lock, flags);
  9134. + lcddev_write_inst(0x08);
  9135. + spin_unlock_irqrestore(&lcd_lock, flags);
  9136. + break;
  9137. +
  9138. + /* Reset the LCD */
  9139. + case LCD_Reset:
  9140. + spin_lock_irqsave(&lcd_lock, flags);
  9141. + lcddev_write_inst(0x3F);
  9142. + lcddev_write_inst(0x3F);
  9143. + lcddev_write_inst(0x3F);
  9144. + lcddev_write_inst(0x3F);
  9145. + lcddev_write_inst(0x01);
  9146. + lcddev_write_inst(0x06);
  9147. + spin_unlock_irqrestore(&lcd_lock, flags);
  9148. + break;
  9149. +
  9150. + /* Clear the LCD */
  9151. + case LCD_Clear:
  9152. + spin_lock_irqsave(&lcd_lock, flags);
  9153. + lcddev_write_inst(0x01);
  9154. + spin_unlock_irqrestore(&lcd_lock, flags);
  9155. + break;
  9156. +
  9157. + /* Move the cursor one position to the left */
  9158. + case LCD_Cursor_Left:
  9159. + spin_lock_irqsave(&lcd_lock, flags);
  9160. + lcddev_write_inst(0x10);
  9161. + spin_unlock_irqrestore(&lcd_lock, flags);
  9162. + break;
  9163. +
  9164. + /* Move the cursor one position to the right */
  9165. + case LCD_Cursor_Right:
  9166. + spin_lock_irqsave(&lcd_lock, flags);
  9167. + lcddev_write_inst(0x14);
  9168. + spin_unlock_irqrestore(&lcd_lock, flags);
  9169. + break;
  9170. +
  9171. + /* Turn the cursor off */
  9172. + case LCD_Cursor_Off:
  9173. + spin_lock_irqsave(&lcd_lock, flags);
  9174. + lcddev_write_inst(0x0C);
  9175. + spin_unlock_irqrestore(&lcd_lock, flags);
  9176. + break;
  9177. +
  9178. + /* Turn the cursor on */
  9179. + case LCD_Cursor_On:
  9180. + spin_lock_irqsave(&lcd_lock, flags);
  9181. + lcddev_write_inst(0x0F);
  9182. + spin_unlock_irqrestore(&lcd_lock, flags);
  9183. + break;
  9184. +
  9185. + /* Turn blinking off? I don't know what this does - TJS */
  9186. + case LCD_Blink_Off:
  9187. + spin_lock_irqsave(&lcd_lock, flags);
  9188. + lcddev_write_inst(0x0E);
  9189. + spin_unlock_irqrestore(&lcd_lock, flags);
  9190. + break;
  9191. +
  9192. + /* Get the current cursor position */
  9193. + case LCD_Get_Cursor_Pos:
  9194. + spin_lock_irqsave(&lcd_lock, flags);
  9195. + display.cursor_address = (unsigned char)lcddev_read_inst();
  9196. + display.cursor_address = display.cursor_address & 0x07F;
  9197. + spin_unlock_irqrestore(&lcd_lock, flags);
  9198. + if (copy_to_user((struct lcd_display *)arg, &display, dlen)) {
  9199. + r = -EFAULT;
  9200. + }
  9201. + break;
  9202. +
  9203. + /* Set the cursor position */
  9204. + case LCD_Set_Cursor_Pos:
  9205. + if (copy_from_user(&display, (struct lcd_display *)arg, dlen)) {
  9206. + r = -EFAULT;
  9207. + break;
  9208. + }
  9209. + a = display.cursor_address | LCD_Addr;
  9210. + spin_lock_irqsave(&lcd_lock, flags);
  9211. + lcddev_write_inst(a);
  9212. + spin_unlock_irqrestore(&lcd_lock, flags);
  9213. + break;
  9214. +
  9215. + /* Get the value at the current cursor position? - TJS */
  9216. + case LCD_Get_Cursor:
  9217. + spin_lock_irqsave(&lcd_lock, flags);
  9218. + display.character = lcddev_read_data();
  9219. + lcddev_write_inst(0x10);
  9220. + spin_unlock_irqrestore(&lcd_lock, flags);
  9221. + if (copy_to_user((struct lcd_display *)arg, &display, dlen)) {
  9222. + r = -EFAULT;
  9223. + }
  9224. + break;
  9225. +
  9226. + /* Set the character at the cursor position? - TJS */
  9227. + case LCD_Set_Cursor:
  9228. + if (copy_from_user(&display, (struct lcd_display *)arg, dlen)) {
  9229. + r = -EFAULT;
  9230. + break;
  9231. + }
  9232. + spin_lock_irqsave(&lcd_lock, flags);
  9233. + lcddev_write_data(display.character);
  9234. + lcddev_write_inst(0x10);
  9235. + spin_unlock_irqrestore(&lcd_lock, flags);
  9236. + break;
  9237. +
  9238. + /* Dunno what this does - TJS */
  9239. + case LCD_Disp_Left:
  9240. + spin_lock_irqsave(&lcd_lock, flags);
  9241. + lcddev_write_inst(0x18);
  9242. + spin_unlock_irqrestore(&lcd_lock, flags);
  9243. + break;
  9244. +
  9245. + /* Dunno what this does - TJS */
  9246. + case LCD_Disp_Right:
  9247. + spin_lock_irqsave(&lcd_lock, flags);
  9248. + lcddev_write_inst(0x1C);
  9249. + spin_unlock_irqrestore(&lcd_lock, flags);
  9250. + break;
  9251. +
  9252. + /* Dunno what this does - TJS */
  9253. + case LCD_Home:
  9254. + spin_lock_irqsave(&lcd_lock, flags);
  9255. + lcddev_write_inst(0x02);
  9256. + spin_unlock_irqrestore(&lcd_lock, flags);
  9257. + break;
  9258. +
  9259. + /* Write a string to the LCD */
  9260. + case LCD_Write:
  9261. + if (copy_from_user(&display, (struct lcd_display *)arg, dlen)) {
  9262. + r = -EFAULT;
  9263. + break;
  9264. + }
  9265. +
  9266. + spin_lock_irqsave(&lcd_lock, flags);
  9267. +
  9268. + display.size1 = display.size1 > 0 ?
  9269. + min(display.size1, (int) sizeof(display.line1)) : 0;
  9270. + display.size2 = display.size2 > 0 ?
  9271. + min(display.size2, (int) sizeof(display.line2)) : 0;
  9272. +
  9273. + /* First line */
  9274. + lcddev_write_inst(0x80);
  9275. + for (index = 0; index < display.size1; index++)
  9276. + lcddev_write_data(display.line1[index]);
  9277. + for (index = display.size1; index < sizeof(display.line1); index++)
  9278. + lcddev_write_data(' ');
  9279. +
  9280. + /* Second line */
  9281. + lcddev_write_inst(0xC0);
  9282. + for (index = 0; index < display.size2; index++)
  9283. + lcddev_write_data(display.line2[index]);
  9284. + for (index = display.size2; index < sizeof(display.line2); index++)
  9285. + lcddev_write_data(' ');
  9286. +
  9287. + spin_unlock_irqrestore(&lcd_lock, flags);
  9288. + break;
  9289. +
  9290. + /* Read what's on the LCD */
  9291. + case LCD_Read:
  9292. + spin_lock_irqsave(&lcd_lock, flags);
  9293. +
  9294. + for (address = DD_R00; address <= DD_R01; address++) {
  9295. + lcddev_write_inst(address | LCD_Addr);
  9296. + display.line1[address] = lcddev_read_data();
  9297. + }
  9298. + for (address = DD_R10; address <= DD_R11; address++) {
  9299. + lcddev_write_inst(address | LCD_Addr);
  9300. + display.line2[address - DD_R10] = lcddev_read_data();
  9301. + }
  9302. +
  9303. + spin_unlock_irqrestore(&lcd_lock, flags);
  9304. +
  9305. + display.line1[DD_R01] = '\0';
  9306. + display.line2[DD_R01] = '\0';
  9307. +
  9308. + if (copy_to_user((struct lcd_display *)arg, &display, dlen)) {
  9309. + r = -EFAULT;
  9310. + }
  9311. + break;
  9312. +
  9313. + case LCD_Raw_Inst:
  9314. + if (copy_from_user(&display, (struct lcd_display *)arg, dlen)) {
  9315. + r = -EFAULT;
  9316. + break;
  9317. + }
  9318. + spin_lock_irqsave(&lcd_lock, flags);
  9319. + lcddev_write_inst(display.character);
  9320. + spin_unlock_irqrestore(&lcd_lock, flags);
  9321. + break;
  9322. +
  9323. + case LCD_Raw_Data:
  9324. + if (copy_from_user(&display, (struct lcd_display *)arg, dlen)) {
  9325. + r = -EFAULT;
  9326. + break;
  9327. + }
  9328. + spin_lock_irqsave(&lcd_lock, flags);
  9329. + lcddev_write_data(display.character);
  9330. + spin_unlock_irqrestore(&lcd_lock, flags);
  9331. + break;
  9332. +
  9333. + case LCD_Type:
  9334. + if (cobt_is_5k() && has_i2c_lcd) {
  9335. + if (put_user(LCD_TYPE_I2C, (int *)arg)) {
  9336. + r = -EFAULT;
  9337. + }
  9338. + } else if (cobt_is_3k() || (cobt_is_5k() && !has_i2c_lcd)) {
  9339. + if (put_user(LCD_TYPE_PARALLEL_B, (int *)arg)) {
  9340. + r = -EFAULT;
  9341. + }
  9342. + }
  9343. + break;
  9344. +
  9345. + /* Read the buttons */
  9346. + case BUTTON_Read:
  9347. + spin_lock_irqsave(&lcd_lock, flags);
  9348. + button_display.buttons = read_buttons();
  9349. + spin_unlock_irqrestore(&lcd_lock, flags);
  9350. + if (copy_to_user((struct lcd_display *)arg,
  9351. + &button_display, dlen)) {
  9352. + r = -EFAULT;
  9353. + }
  9354. + break;
  9355. +
  9356. +#ifdef CONFIG_COBALT_LED
  9357. + /* a slightly different api that allows you to set 32 leds */
  9358. + case LED32_Set:
  9359. + cobalt_led_set_lazy(arg);
  9360. + break;
  9361. +
  9362. + case LED32_Bit_Set:
  9363. + cobalt_led_set_bits_lazy(arg);
  9364. + break;
  9365. +
  9366. + case LED32_Bit_Clear:
  9367. + cobalt_led_clear_bits_lazy(arg);
  9368. + break;
  9369. +
  9370. + case LED32_Get:
  9371. + *(unsigned int *)arg = cobalt_led_get();
  9372. + break;
  9373. +
  9374. + /* set all the leds */
  9375. + case LED_Set:
  9376. + if (copy_from_user(&display, (struct lcd_display *)arg, dlen)) {
  9377. + r = -EFAULT;
  9378. + break;
  9379. + }
  9380. + cobalt_led_set_lazy(display.leds);
  9381. + break;
  9382. +
  9383. + /* set a single led */
  9384. + case LED_Bit_Set:
  9385. + if (copy_from_user(&display, (struct lcd_display *)arg, dlen)) {
  9386. + r = -EFAULT;
  9387. + break;
  9388. + }
  9389. + cobalt_led_set_bits_lazy(display.leds);
  9390. + break;
  9391. +
  9392. + /* clear an led */
  9393. + case LED_Bit_Clear:
  9394. + if (copy_from_user(&display, (struct lcd_display *)arg, dlen)) {
  9395. + r = -EFAULT;
  9396. + break;
  9397. + }
  9398. + cobalt_led_clear_bits_lazy(display.leds);
  9399. + break;
  9400. +#endif
  9401. +
  9402. + default:
  9403. + break;
  9404. + }
  9405. +
  9406. + return r;
  9407. +}
  9408. +
  9409. +static int
  9410. +cobalt_lcd_open(struct inode *inode, struct file *file)
  9411. +{
  9412. + if (!lcd_present) {
  9413. + return -ENXIO;
  9414. + } else {
  9415. + return 0;
  9416. + }
  9417. +}
  9418. +
  9419. +/* LCD daemon sits on this, we wake it up once a key is pressed */
  9420. +static ssize_t
  9421. +cobalt_lcd_read(struct file *file, char *buf, size_t count, loff_t *ppos)
  9422. +{
  9423. + int bnow;
  9424. + static unsigned long lcd_waiters;
  9425. +
  9426. + if (test_and_set_bit(0, &lcd_waiters)) {
  9427. + return -EINVAL;
  9428. + }
  9429. +
  9430. + while (((bnow = button_pressed()) == 0) && !(signal_pending(current))) {
  9431. + if (file->f_flags & O_NONBLOCK) {
  9432. + lcd_waiters = 0;
  9433. + return -EAGAIN;
  9434. + }
  9435. + set_current_state(TASK_INTERRUPTIBLE);
  9436. + schedule_timeout(2 * HZ);
  9437. + }
  9438. + lcd_waiters = 0;
  9439. +
  9440. + if (signal_pending(current)) {
  9441. + return -ERESTARTSYS;
  9442. + }
  9443. +
  9444. + return bnow;
  9445. +}
  9446. +
  9447. +/* read a single line from the LCD into a string */
  9448. +static char *
  9449. +cobalt_lcddev_read_line(int lineno, char *line)
  9450. +{
  9451. + unsigned long addr, min, max;
  9452. + unsigned long flags;
  9453. +
  9454. + switch (lineno) {
  9455. + case 0:
  9456. + min = DD_R00;
  9457. + max = DD_R01;
  9458. + break;
  9459. + case 1:
  9460. + min = DD_R10;
  9461. + max = DD_R11;
  9462. + break;
  9463. + default:
  9464. + min = 1;
  9465. + max = 0;
  9466. + }
  9467. +
  9468. + spin_lock_irqsave(&lcd_lock, flags);
  9469. + for (addr = min; addr <= max; addr++) {
  9470. + lcddev_write_inst(addr | LCD_Addr);
  9471. + udelay(150);
  9472. + line[addr-min] = lcddev_read_data();
  9473. + udelay(150);
  9474. + }
  9475. + spin_unlock_irqrestore(&lcd_lock, flags);
  9476. + line[addr-min] = '\0';
  9477. +
  9478. + return line;
  9479. +}
  9480. +
  9481. +#ifdef CONFIG_PROC_FS
  9482. +static int
  9483. +cobalt_lcd_read_proc(char *buf, char **start, off_t pos,
  9484. + int len, int *eof, void *private)
  9485. +{
  9486. + int plen = 0;
  9487. + char line[COBALT_LCD_LINELEN+1];
  9488. +
  9489. + /* first line */
  9490. + cobalt_lcddev_read_line(0, line);
  9491. + plen += sprintf(buf+plen, "%s\n", line);
  9492. +
  9493. + /* second line */
  9494. + cobalt_lcddev_read_line(1, line);
  9495. + plen += sprintf(buf+plen, "%s\n", line);
  9496. +
  9497. + return cobalt_gen_proc_read(buf, plen, start, pos, len, eof);
  9498. +}
  9499. +#endif
  9500. +
  9501. +void cobalt_lcd_print(char * line1, char * line2)
  9502. +{
  9503. + int i;
  9504. + int len;
  9505. +
  9506. + if( !lcd_present )
  9507. + return;
  9508. +
  9509. +#ifdef CONFIG_COBALT_LCD_TWIDDLE
  9510. + cobalt_lcd_stop_twiddle();
  9511. +#endif
  9512. +
  9513. + lcddev_write_inst( (DD_R00) | LCD_Addr);
  9514. + len = strlen( line1 );
  9515. + for( i=0 ; i<16 ; i++ )
  9516. + lcddev_write_data( (i<len)?line1[i]:' ' );
  9517. +
  9518. + lcddev_write_inst( (DD_R10) | LCD_Addr);
  9519. + len = strlen( line2 );
  9520. + for( i=0 ; i<16 ; i++ )
  9521. + lcddev_write_data( (i<len)?line2[i]:' ' );
  9522. +
  9523. + return;
  9524. +}
  9525. +
  9526. +static char *lcd_panic_str1 = "Kernel";
  9527. +static char *lcd_panic_str2 = "Panic!";
  9528. +
  9529. +static int cobalt_lcd_panic(struct notifier_block *self, unsigned long a, void *b)
  9530. +{
  9531. + int i;
  9532. + int len;
  9533. +
  9534. + if( !lcd_present )
  9535. + return 0;
  9536. +
  9537. +#ifdef CONFIG_COBALT_LCD_TWIDDLE
  9538. + cobalt_lcd_stop_twiddle();
  9539. +#endif
  9540. +
  9541. + lcddev_write_inst( (DD_R00) | LCD_Addr);
  9542. + len = strlen( lcd_panic_str1 );
  9543. + for( i=0 ; i<16 ; i++ )
  9544. + lcddev_write_data( (i<len)?lcd_panic_str1[i]:' ' );
  9545. +
  9546. + lcddev_write_inst( (DD_R10) | LCD_Addr);
  9547. + len = strlen( lcd_panic_str2 );
  9548. + for( i=0 ; i<16 ; i++ )
  9549. + lcddev_write_data( (i<len)?lcd_panic_str2[i]:' ' );
  9550. +
  9551. + return 0;
  9552. +}
  9553. +
  9554. +#ifdef CONFIG_COBALT_LCD_TWIDDLE
  9555. +static struct timer_list twiddle_timer;
  9556. +static int twiddling;
  9557. +static void
  9558. +twiddle_timer_func(unsigned long data)
  9559. +{
  9560. + static int state=1;
  9561. + static int pos=0;
  9562. + unsigned long flags;
  9563. +
  9564. + spin_lock_irqsave(&lcd_lock, flags);
  9565. +
  9566. + lcddev_write_inst((DD_R10+4+pos) | LCD_Addr);
  9567. + lcddev_write_data(' ');
  9568. +
  9569. + pos += state;
  9570. + if (pos < 0) {
  9571. + state = 1;
  9572. + pos = 1;
  9573. + }
  9574. + if (pos > 11) {
  9575. + state = -1;
  9576. + pos = 10;
  9577. + }
  9578. +
  9579. + lcddev_write_inst((DD_R10+4+pos) | LCD_Addr);
  9580. + lcddev_write_data(0xff);
  9581. +
  9582. + spin_unlock_irqrestore(&lcd_lock, flags);
  9583. +
  9584. + mod_timer(&twiddle_timer, jiffies + TWIDDLE_HZ);
  9585. +}
  9586. +
  9587. +void
  9588. +cobalt_lcd_start_twiddle(void)
  9589. +{
  9590. + init_timer(&twiddle_timer);
  9591. + twiddle_timer.expires = jiffies + TWIDDLE_HZ;
  9592. + twiddle_timer.data = 0;
  9593. + twiddle_timer.function = &twiddle_timer_func;
  9594. + add_timer(&twiddle_timer);
  9595. + twiddling=1;
  9596. +}
  9597. +
  9598. +void
  9599. +cobalt_lcd_stop_twiddle(void)
  9600. +{
  9601. + unsigned long flags;
  9602. +
  9603. + spin_lock_irqsave(&lcd_lock, flags);
  9604. + if (twiddling) {
  9605. + del_timer_sync(&twiddle_timer);
  9606. + twiddling = 0;
  9607. + }
  9608. + spin_unlock_irqrestore(&lcd_lock, flags);
  9609. +}
  9610. +#endif /* CONFIG_COBALT_LCD_TWIDDLE */
  9611. +
  9612. +/* stop the lcd */
  9613. +void cobalt_lcd_off(void)
  9614. +{
  9615. + unsigned long flags;
  9616. +
  9617. + spin_lock_irqsave(&lcd_lock, flags);
  9618. + lcddev_write_inst(0x01); /* clear */
  9619. + lcddev_write_inst(0x08); /* off */
  9620. + spin_unlock_irqrestore(&lcd_lock, flags);
  9621. +}
  9622. +
  9623. +static int initialized;
  9624. +static struct notifier_block lcd_nb;
  9625. +
  9626. +int __init
  9627. +cobalt_lcd_init(void)
  9628. +{
  9629. + int retval;
  9630. +
  9631. + if (initialized)
  9632. + return 0;
  9633. +
  9634. + initialized=1;
  9635. + printk(KERN_INFO "%s %d.%d (modified by jeff@404ster.com, further modified by dave.studeman@raqcop.com)\n", LCD_DRIVER,LCD_DRIVER_VMAJ,LCD_DRIVER_VMIN);
  9636. +
  9637. + if (disable_lcd) {
  9638. + printk(KERN_INFO "%s DISABLED\n", LCD_DRIVER);
  9639. + return 0;
  9640. + }
  9641. +
  9642. + retval = misc_register(&lcd_dev);
  9643. +
  9644. + if (cobt_is_monterey()
  9645. + && (cobalt_i2c_read_byte(COBALT_I2C_DEV_LCD_INST, 0) != 0xff)) {
  9646. + printk(KERN_INFO " - LCD is an I2C device\n");
  9647. + has_i2c_lcd = 1;
  9648. + } else {
  9649. + has_i2c_lcd = 0;
  9650. + }
  9651. +
  9652. + /* flag ourselves as present */
  9653. + lcd_present = 1;
  9654. +
  9655. + /* initialize the device */
  9656. + lcddev_init();
  9657. +
  9658. +#ifdef CONFIG_PROC_FS
  9659. +#ifdef CONFIG_COBALT_OLDPROC
  9660. + /* create /proc/lcd */
  9661. + proc_lcd = create_proc_read_entry("lcd", S_IRUSR, NULL,
  9662. + cobalt_lcd_read_proc, NULL);
  9663. + if (!proc_lcd) {
  9664. + EPRINTK("can't create /proc/lcd\n");
  9665. + }
  9666. +#endif
  9667. + proc_clcd = create_proc_read_entry("lcd", S_IRUSR, proc_cobalt,
  9668. + cobalt_lcd_read_proc, NULL);
  9669. + if (!proc_clcd) {
  9670. + EPRINTK("can't create /proc/cobalt/lcd\n");
  9671. + }
  9672. +#endif
  9673. +
  9674. +#ifdef CONFIG_COBALT_LCD_TWIDDLE
  9675. + cobalt_lcd_start_twiddle();
  9676. +#endif
  9677. +
  9678. + /* register panic notifier */
  9679. + lcd_nb.notifier_call = cobalt_lcd_panic;
  9680. + lcd_nb.next = NULL;
  9681. + lcd_nb.priority = 0;
  9682. +
  9683. + atomic_notifier_chain_register( &panic_notifier_list, &lcd_nb );
  9684. +
  9685. + return 0;
  9686. +}
  9687. +
  9688. +#endif /* CONFIG_COBALT_LCD */
  9689. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/led.c linux-3.2.5-cobalt/drivers/cobalt/led.c
  9690. --- linux-3.2.5/drivers/cobalt/led.c 1969-12-31 16:00:00.000000000 -0800
  9691. +++ linux-3.2.5-cobalt/drivers/cobalt/led.c 2012-02-06 21:34:59.000000000 -0800
  9692. @@ -0,0 +1,502 @@
  9693. + /*
  9694. + * $Id: led.c,v 1.36 2002/05/10 18:44:45 duncan Exp $
  9695. + * led.c : driver for Cobalt LEDs
  9696. + *
  9697. + * Copyright 1996-2000 Cobalt Networks, Inc.
  9698. + * Copyright 2001 Sun Microsystems, Inc.
  9699. + *
  9700. + * By: Andrew Bose
  9701. + * Timothy Stonis
  9702. + * Tim Hockin
  9703. + * Adrian Sun
  9704. + * Duncan Laurie
  9705. + *
  9706. + * Modified By: jeff@404ster.com
  9707. + *
  9708. + * This should be SMP safe. There is one definite critical region: the
  9709. + * handler list (led_handler_lock). The led_state is protected by led_lock,
  9710. + * so should be safe against simultaneous writes. Bit banging of lights is
  9711. + * currently also a protected region (led_lock, rather than add a new lock).
  9712. + */
  9713. +
  9714. +#ifdef CONFIG_COBALT_LED
  9715. +
  9716. +#include <linux/module.h>
  9717. +#include <linux/types.h>
  9718. +#include <linux/errno.h>
  9719. +#include <linux/miscdevice.h>
  9720. +#include <linux/slab.h>
  9721. +#include <linux/ioport.h>
  9722. +#include <linux/fcntl.h>
  9723. +#include <linux/netdevice.h>
  9724. +#include <linux/pci.h>
  9725. +#include <linux/init.h>
  9726. +#include <linux/timer.h>
  9727. +#include <linux/nvram.h>
  9728. +#include <asm/io.h>
  9729. +#include <linux/delay.h>
  9730. +
  9731. +#include <cobalt/cobalt.h>
  9732. +#include <cobalt/systype.h>
  9733. +#include <cobalt/led.h>
  9734. +#include <cobalt/i2c.h>
  9735. +#include <cobalt/superio.h>
  9736. +
  9737. +#define LED_DRIVER "Cobalt Networks LED driver"
  9738. +#define LED_DRIVER_VMAJ 1
  9739. +#define LED_DRIVER_VMIN 0
  9740. +
  9741. +/* the rate at which software controlled frontpanel LEDs blink */
  9742. +#define FPLED_DEFAULT_HZ (HZ/20)
  9743. +
  9744. +/*
  9745. + * This is the abstracted state of active LEDs - see the defines for LED_*
  9746. + * LED masks are always 'unsigned int'. You must hold led_lock to muck with
  9747. + * these.
  9748. + */
  9749. +static unsigned int led_state;
  9750. +static unsigned int led_blips;
  9751. +
  9752. +/* leds are PCI on genIII */
  9753. +static struct pci_dev *led_dev;
  9754. +/* on XTR the front panel LEDs are software controlled */
  9755. +struct led_handler {
  9756. + unsigned int (*function)(void *);
  9757. + void *data;
  9758. + struct led_handler *next;
  9759. + struct led_handler *prev;
  9760. +};
  9761. +struct led_handler *led_handler_list;
  9762. +static DEFINE_SPINLOCK(led_handler_lock);
  9763. +static struct timer_list timer;
  9764. +
  9765. +static DEFINE_SPINLOCK(led_lock);
  9766. +
  9767. +/*
  9768. + * RaQ 3
  9769. + * RaQ 4
  9770. + * Qube 3
  9771. + */
  9772. +#define RAQ3_SHUTLOGO_ADDR 0x7e
  9773. +#define RAQ3_SHUTDOWN_OFF 0x40 /* reverse polarity */
  9774. +#define RAQ3_COBALTLOGO_ON 0x80
  9775. +#define QUBE3_LIGHTBAR_ON 0xc0 /* direct polarity */
  9776. +#define RAQ3_WEBLIGHT_ADDR 0xb8
  9777. +#define RAQ3_WEBLIGHT_ON 0x80
  9778. +
  9779. +/*
  9780. + * RaQ XTR
  9781. + */
  9782. +#define MONTEREY_FPLED00 0x8000
  9783. +#define MONTEREY_FPLED01 0x4000
  9784. +#define MONTEREY_FPLED02 0x2000
  9785. +#define MONTEREY_FPLED03 0x0200
  9786. +#define MONTEREY_FPLED04 0x0080
  9787. +#define MONTEREY_FPLED05 0x0040
  9788. +#define MONTEREY_FPLED10 0x1000
  9789. +#define MONTEREY_FPLED11 0x0800
  9790. +#define MONTEREY_FPLED12 0x0400
  9791. +#define MONTEREY_FPLED13 0x0100
  9792. +#define MONTEREY_FPLED14 0x0020
  9793. +#define MONTEREY_FPLED15 0x0010
  9794. +#define MONTEREY_FPLED_ETH0_TXRX MONTEREY_FPLED00
  9795. +#define MONTEREY_FPLED_ETH0_LINK MONTEREY_FPLED10
  9796. +#define MONTEREY_FPLED_ETH1_TXRX MONTEREY_FPLED01
  9797. +#define MONTEREY_FPLED_ETH1_LINK MONTEREY_FPLED11
  9798. +#define MONTEREY_FPLED_DISK0 MONTEREY_FPLED02
  9799. +#define MONTEREY_FPLED_DISK1 MONTEREY_FPLED03
  9800. +#define MONTEREY_FPLED_DISK2 MONTEREY_FPLED04
  9801. +#define MONTEREY_FPLED_DISK3 MONTEREY_FPLED05
  9802. +#define MONTEREY_FPLED_WEB MONTEREY_FPLED12
  9803. +#define MONTEREY_LOGOLED_BIT 0x40
  9804. +#define MONTEREY_SYSFAULTLED_BIT 0x80
  9805. +#define MONTEREY_SLED0 (1<<3)
  9806. +#define MONTEREY_SLED1 (1<<2)
  9807. +#define MONTEREY_SLED2 (1<<1)
  9808. +#define MONTEREY_SLED3 (1<<0)
  9809. +
  9810. +/*
  9811. + * Alpine
  9812. + */
  9813. +#define ALPINE_WEBLED_PORT 0x60e
  9814. +#define ALPINE_WEBLED_BIT 0x20
  9815. +#define ALPINE_POWERLED_PORT 0x50b
  9816. +#define ALPINE_POWERLED_CFG 0x23
  9817. +#define ALPINE_LOGOLED_BIT 0x02
  9818. +#define ALPINE_SYSFAULTLED_BIT 0x07
  9819. +
  9820. +/*
  9821. + * actually set the leds (icky details hidden within)
  9822. + * this must be protected against itself with led_lock
  9823. + * */
  9824. +static void
  9825. +__set_led_hw(const unsigned int newstate)
  9826. +{
  9827. + if (cobt_is_pacifica() && led_dev) {
  9828. + unsigned char tmp;
  9829. + /* RaQ 3, RaQ 4
  9830. + * - shutdown light
  9831. + * - logo light
  9832. + * - web light
  9833. + */
  9834. +
  9835. + /* read the current state of shutdown/logo lights */
  9836. + pci_read_config_byte(led_dev, RAQ3_SHUTLOGO_ADDR, &tmp);
  9837. +
  9838. + /* reverse polarity for shutdown light */
  9839. + if (newstate & LED_SHUTDOWN)
  9840. + tmp &= ~RAQ3_SHUTDOWN_OFF;
  9841. + else
  9842. + tmp |= RAQ3_SHUTDOWN_OFF;
  9843. +
  9844. + /* logo light is straight forward */
  9845. + if (newstate & LED_COBALTLOGO)
  9846. + tmp |= RAQ3_COBALTLOGO_ON;
  9847. + else
  9848. + tmp &= ~RAQ3_COBALTLOGO_ON;
  9849. +
  9850. + /* write new shutdown/logo light state */
  9851. + pci_write_config_byte(led_dev, RAQ3_SHUTLOGO_ADDR, tmp);
  9852. +
  9853. + /* read web light state */
  9854. + pci_read_config_byte(led_dev, RAQ3_WEBLIGHT_ADDR, &tmp);
  9855. + if (newstate & LED_WEBLIGHT) {
  9856. + tmp |= RAQ3_WEBLIGHT_ON;
  9857. + } else {
  9858. + tmp &= ~RAQ3_WEBLIGHT_ON;
  9859. + }
  9860. +
  9861. + /* write new web light state */
  9862. + pci_write_config_byte(led_dev, RAQ3_WEBLIGHT_ADDR, tmp);
  9863. + } else if (cobt_is_carmel() && led_dev) {
  9864. + unsigned char tmp;
  9865. + /* Qube 3
  9866. + * - no shutdown light
  9867. + * - lightbar instead of logo
  9868. + * - no web led (wired to 2nd IDE reset for staggered startup)
  9869. + */
  9870. +
  9871. + /* read the current state of lightbar */
  9872. + pci_read_config_byte(led_dev, RAQ3_SHUTLOGO_ADDR, &tmp);
  9873. + if (newstate & LED_COBALTLOGO) {
  9874. + tmp |= QUBE3_LIGHTBAR_ON;
  9875. + } else {
  9876. + tmp &= ~QUBE3_LIGHTBAR_ON;
  9877. + }
  9878. +
  9879. + /* write new lightbar state */
  9880. + pci_write_config_byte(led_dev, RAQ3_SHUTLOGO_ADDR, tmp);
  9881. + } else if (cobt_is_monterey()) {
  9882. + unsigned int tmp = 0;
  9883. + u8 val;
  9884. + unsigned long flags;
  9885. +
  9886. + if (newstate & LED_WEBLIGHT) {
  9887. + tmp |= MONTEREY_FPLED_WEB;
  9888. + }
  9889. + if (newstate & LED_ETH0_TXRX) {
  9890. + tmp |= MONTEREY_FPLED_ETH0_TXRX;
  9891. + }
  9892. + if (newstate & LED_ETH0_LINK) {
  9893. + tmp |= MONTEREY_FPLED_ETH0_LINK;
  9894. + }
  9895. + if (newstate & LED_ETH1_TXRX) {
  9896. + tmp |= MONTEREY_FPLED_ETH1_TXRX;
  9897. + }
  9898. + if (newstate & LED_ETH1_LINK) {
  9899. + tmp |= MONTEREY_FPLED_ETH1_LINK;
  9900. + }
  9901. + if (newstate & LED_DISK0) {
  9902. + tmp |= MONTEREY_FPLED_DISK0;
  9903. + }
  9904. + if (newstate & LED_DISK1) {
  9905. + tmp |= MONTEREY_FPLED_DISK1;
  9906. + }
  9907. + if (newstate & LED_DISK2) {
  9908. + tmp |= MONTEREY_FPLED_DISK2;
  9909. + }
  9910. + if (newstate & LED_DISK3) {
  9911. + tmp |= MONTEREY_FPLED_DISK3;
  9912. + }
  9913. + /* 3 LED's are unused on Monterey, but we support them */
  9914. + if (newstate & LED_MONTEREY_UNUSED0) {
  9915. + tmp |= MONTEREY_FPLED13;
  9916. + }
  9917. + if (newstate & LED_MONTEREY_UNUSED1) {
  9918. + tmp |= MONTEREY_FPLED14;
  9919. + }
  9920. + if (newstate & LED_MONTEREY_UNUSED2) {
  9921. + tmp |= MONTEREY_FPLED15;
  9922. + }
  9923. + /* I2C controlled front-panel lights */
  9924. + cobalt_i2c_write_byte(COBALT_I2C_DEV_LED_I, 0, tmp & 0xff);
  9925. + cobalt_i2c_write_byte(COBALT_I2C_DEV_LED_II, 0, tmp >> 8);
  9926. +
  9927. + /* drive sled LEDs are on a different i2c device */
  9928. + tmp = 0xf0; /* high nibble means something else */
  9929. + if (newstate * LED_SLED0)
  9930. + tmp |= MONTEREY_SLED0;
  9931. + if (newstate * LED_SLED1)
  9932. + tmp |= MONTEREY_SLED1;
  9933. + if (newstate * LED_SLED2)
  9934. + tmp |= MONTEREY_SLED2;
  9935. + if (newstate * LED_SLED3)
  9936. + tmp |= MONTEREY_SLED3;
  9937. + cobalt_i2c_write_byte(COBALT_I2C_DEV_RULER, 0, tmp);
  9938. +
  9939. + /* sysfault and logo are in APC page of nvram */
  9940. + spin_lock_irqsave(&rtc_lock, flags);
  9941. + superio_set_rtc_bank(PC87317_RTC_BANK_APC);
  9942. + val = CMOS_READ(PC87317_APCR4);
  9943. +
  9944. + /* reverse polarity */
  9945. + if (newstate & LED_COBALTLOGO) {
  9946. + val &= ~MONTEREY_LOGOLED_BIT; /* logo is on */
  9947. + } else {
  9948. + val |= MONTEREY_LOGOLED_BIT; /* logo is off */
  9949. + }
  9950. +
  9951. + if (newstate & LED_SYSFAULT) {
  9952. + val |= MONTEREY_SYSFAULTLED_BIT;
  9953. + } else {
  9954. + val &= ~MONTEREY_SYSFAULTLED_BIT;
  9955. + }
  9956. +
  9957. + CMOS_WRITE(val, PC87317_APCR4);
  9958. + superio_set_rtc_bank(PC87317_RTC_BANK_MAIN);
  9959. + spin_unlock_irqrestore(&rtc_lock, flags);
  9960. + } else if (cobt_is_alpine()) {
  9961. + unsigned char val;
  9962. +
  9963. + /* web LED is reverse polarity */
  9964. + val = inb(ALPINE_WEBLED_PORT);
  9965. + if (newstate & LED_WEBLIGHT) {
  9966. + val &= ~ALPINE_WEBLED_BIT;
  9967. + } else {
  9968. + val |= ALPINE_WEBLED_BIT;
  9969. + }
  9970. + outb(val, ALPINE_WEBLED_PORT);
  9971. +
  9972. + /*
  9973. + * the power led is controled by switching the pin between
  9974. + * a GPIO pin (on) and a LED pin (off)
  9975. + */
  9976. +
  9977. + outb( ALPINE_POWERLED_CFG, 0x2e );
  9978. + val = inb( 0x2f );
  9979. + if (newstate & LED_COBALTLOGO) {
  9980. + val &= ~ALPINE_LOGOLED_BIT;
  9981. + } else {
  9982. + val |= ALPINE_LOGOLED_BIT;
  9983. + }
  9984. + outb( val, 0x2f );
  9985. +
  9986. + if (newstate & LED_SYSFAULT) {
  9987. + val = ALPINE_SYSFAULTLED_BIT;
  9988. + } else {
  9989. + val = 0;
  9990. + }
  9991. +
  9992. + outb(val, ALPINE_POWERLED_PORT);
  9993. + }
  9994. +}
  9995. +
  9996. +/* blip the front panel leds */
  9997. +static void
  9998. +led_timer_func(unsigned long data)
  9999. +{
  10000. + unsigned int leds = 0;
  10001. + struct led_handler *p;
  10002. + unsigned long flags;
  10003. +
  10004. + /* call all registered callbacks */
  10005. + spin_lock_irqsave(&led_handler_lock, flags);
  10006. + for (p = led_handler_list; p; p = p->next) {
  10007. + leds |= p->function(p->data);
  10008. + }
  10009. + spin_unlock_irqrestore(&led_handler_lock, flags);
  10010. +
  10011. + /* set the led hardware */
  10012. + spin_lock_irqsave(&led_lock, flags);
  10013. + __set_led_hw(led_state | leds | led_blips);
  10014. + led_blips = 0;
  10015. + spin_unlock_irqrestore(&led_lock, flags);
  10016. +
  10017. + /* re-arm ourself */
  10018. + mod_timer(&timer, jiffies + FPLED_DEFAULT_HZ);
  10019. +}
  10020. +
  10021. +static void
  10022. +__cobalt_led_set(const unsigned int leds)
  10023. +{
  10024. + led_state = leds;
  10025. + __set_led_hw(leds);
  10026. +}
  10027. +
  10028. +void
  10029. +cobalt_led_set(const unsigned int leds)
  10030. +{
  10031. + unsigned long flags;
  10032. + spin_lock_irqsave(&led_lock, flags);
  10033. + __cobalt_led_set(leds);
  10034. + spin_unlock_irqrestore(&led_lock, flags);
  10035. +}
  10036. +
  10037. +void
  10038. +cobalt_led_set_bits(const unsigned int leds)
  10039. +{
  10040. + unsigned long flags;
  10041. + spin_lock_irqsave(&led_lock, flags);
  10042. + __cobalt_led_set(led_state | leds);
  10043. + spin_unlock_irqrestore(&led_lock, flags);
  10044. +}
  10045. +
  10046. +void
  10047. +cobalt_led_clear_bits(const unsigned int leds)
  10048. +{
  10049. + unsigned long flags;
  10050. + spin_lock_irqsave(&led_lock, flags);
  10051. + __cobalt_led_set(led_state & ~leds);
  10052. + spin_unlock_irqrestore(&led_lock, flags);
  10053. +}
  10054. +
  10055. +static void
  10056. +__cobalt_led_set_lazy(const unsigned int leds)
  10057. +{
  10058. + /* the next led timer run will catch these changes */
  10059. + led_state = leds;
  10060. + /* remember lights that were 'blipped' to force an edge */
  10061. + led_blips |= leds;
  10062. +}
  10063. +
  10064. +void
  10065. +cobalt_led_set_lazy(const unsigned int leds)
  10066. +{
  10067. + unsigned long flags;
  10068. + spin_lock_irqsave(&led_lock, flags);
  10069. + __cobalt_led_set_lazy(leds);
  10070. + spin_unlock_irqrestore(&led_lock, flags);
  10071. +}
  10072. +
  10073. +void
  10074. +cobalt_led_set_bits_lazy(const unsigned int leds)
  10075. +{
  10076. + unsigned long flags;
  10077. + spin_lock_irqsave(&led_lock, flags);
  10078. + __cobalt_led_set_lazy(led_state | leds);
  10079. + spin_unlock_irqrestore(&led_lock, flags);
  10080. +}
  10081. +
  10082. +void
  10083. +cobalt_led_clear_bits_lazy(const unsigned int leds)
  10084. +{
  10085. + unsigned long flags;
  10086. + spin_lock_irqsave(&led_lock, flags);
  10087. + __cobalt_led_set_lazy(led_state & ~leds);
  10088. + spin_unlock_irqrestore(&led_lock, flags);
  10089. +}
  10090. +
  10091. +unsigned int
  10092. +cobalt_led_get(void)
  10093. +{
  10094. + unsigned int r;
  10095. + unsigned long flags;
  10096. +
  10097. + spin_lock_irqsave(&led_lock, flags);
  10098. + r = led_state;
  10099. + spin_unlock_irqrestore(&led_lock, flags);
  10100. +
  10101. + return r;
  10102. +}
  10103. +
  10104. +int
  10105. +cobalt_fpled_register(unsigned int (*function)(void *), void *data)
  10106. +{
  10107. + struct led_handler *newh;
  10108. + unsigned long flags;
  10109. +
  10110. + newh = kmalloc(sizeof(*newh), GFP_ATOMIC);
  10111. + if (!newh) {
  10112. + EPRINTK("can't allocate memory for handler %p(%p)\n",
  10113. + function, data);
  10114. + return -1;
  10115. + }
  10116. +
  10117. + spin_lock_irqsave(&led_handler_lock, flags);
  10118. +
  10119. + /* head insert */
  10120. + newh->function = function;
  10121. + newh->data = data;
  10122. + newh->next = led_handler_list;
  10123. + newh->prev = NULL;
  10124. + if (led_handler_list) {
  10125. + led_handler_list->prev = newh;
  10126. + }
  10127. + led_handler_list = newh;
  10128. +
  10129. + spin_unlock_irqrestore(&led_handler_lock, flags);
  10130. +
  10131. + return 0;
  10132. +}
  10133. +
  10134. +int
  10135. +cobalt_fpled_unregister(unsigned int (*function)(void *), void *data)
  10136. +{
  10137. + int r = -1;
  10138. + struct led_handler *p;
  10139. + unsigned long flags;
  10140. +
  10141. + spin_lock_irqsave(&led_handler_lock, flags);
  10142. +
  10143. + for (p = led_handler_list; p; p = p->next) {
  10144. + if (p->function == function && p->data == data) {
  10145. + if (p->prev) {
  10146. + p->prev->next = p->next;
  10147. + }
  10148. + if (p->next) {
  10149. + p->next->prev = p->prev;
  10150. + }
  10151. + r = 0;
  10152. + break;
  10153. + }
  10154. + }
  10155. +
  10156. + spin_unlock_irqrestore(&led_handler_lock, flags);
  10157. +
  10158. + return r;
  10159. +}
  10160. +
  10161. +int __init
  10162. +cobalt_led_init(void)
  10163. +{
  10164. + unsigned int leds = LED_SHUTDOWN | LED_COBALTLOGO;
  10165. +
  10166. + printk(KERN_INFO "%s %d.%d (modified by jeff@404ster.com, further modified by dave.studeman@raqcop.com)\n", LED_DRIVER,LED_DRIVER_VMAJ,LED_DRIVER_VMIN);
  10167. +
  10168. + if (cobt_is_3k()) {
  10169. + /* LEDs for RaQ3/4 and Qube3 are on the PMU */
  10170. + led_dev = pci_get_device(PCI_VENDOR_ID_AL,
  10171. + PCI_DEVICE_ID_AL_M7101, NULL);
  10172. + if (!led_dev) {
  10173. + EPRINTK("can't find PMU for LED control\n");
  10174. + return -1;
  10175. + }
  10176. + }
  10177. +
  10178. + /* setup up timer for fp leds */
  10179. + init_timer(&timer);
  10180. + timer.expires = jiffies + FPLED_DEFAULT_HZ;
  10181. + timer.data = 0;
  10182. + timer.function = &led_timer_func;
  10183. + add_timer(&timer);
  10184. +
  10185. + /* set the initial state */
  10186. + leds |= cobalt_cmos_read_flag(COBT_CMOS_SYSFAULT_FLAG) ?
  10187. + LED_SYSFAULT : 0;
  10188. + led_state = leds;
  10189. + __set_led_hw(leds);
  10190. +
  10191. + return 0;
  10192. +}
  10193. +
  10194. +#endif /* CONFIG_COBALT_LED */
  10195. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/net.c linux-3.2.5-cobalt/drivers/cobalt/net.c
  10196. --- linux-3.2.5/drivers/cobalt/net.c 1969-12-31 16:00:00.000000000 -0800
  10197. +++ linux-3.2.5-cobalt/drivers/cobalt/net.c 2012-02-06 21:34:59.000000000 -0800
  10198. @@ -0,0 +1,132 @@
  10199. +/*
  10200. + * cobalt net wrappers
  10201. + * Copyright (c) 2000, Cobalt Networks, Inc.
  10202. + * Copyright (c) 2001, Sun Microsystems, Inc.
  10203. + * $Id: net.c,v 1.11 2001/10/27 00:40:24 thockin Exp $
  10204. + * author: thockin@sun.com
  10205. + *
  10206. + * This should be SMP safe. The only critical data is the list of devices.
  10207. + * The LED handler runs at timer-interrupt, so we must use the IRQ safe forms
  10208. + * of the locks. --TPH
  10209. + */
  10210. +
  10211. +#include <stdarg.h>
  10212. +#include <stddef.h>
  10213. +#include <linux/init.h>
  10214. +#include <linux/pci.h>
  10215. +#include <linux/ioport.h>
  10216. +#include <linux/netdevice.h>
  10217. +#include <asm/io.h>
  10218. +
  10219. +#include <cobalt/cobalt.h>
  10220. +#include <cobalt/net.h>
  10221. +#include <cobalt/led.h>
  10222. +
  10223. +#define MAX_COBT_NETDEVS 2
  10224. +static struct net_device *netdevs[MAX_COBT_NETDEVS];
  10225. +static int n_netdevs;
  10226. +static DEFINE_SPINLOCK(cobaltnet_lock);
  10227. +
  10228. +#if defined(CONFIG_COBALT_LED)
  10229. +static unsigned int
  10230. +net_led_handler(void *data)
  10231. +{
  10232. + int i;
  10233. + unsigned int leds = 0;
  10234. + static int txrxmap[MAX_COBT_NETDEVS] = {LED_ETH0_TXRX, LED_ETH1_TXRX};
  10235. + static int linkmap[MAX_COBT_NETDEVS] = {LED_ETH0_LINK, LED_ETH1_LINK};
  10236. + unsigned long flags;
  10237. + static unsigned long net_old[MAX_COBT_NETDEVS];
  10238. +
  10239. + spin_lock_irqsave(&cobaltnet_lock, flags);
  10240. +
  10241. + for (i = 0; i < n_netdevs; i++) {
  10242. + unsigned long txrxstate;
  10243. + struct net_device *dev = netdevs[i];
  10244. + if (!dev) {
  10245. + continue;
  10246. + }
  10247. + /* check for link */
  10248. + if (netif_running(dev) && netif_carrier_ok(dev)) {
  10249. + leds |= linkmap[i];
  10250. + }
  10251. + /* check for tx/rx */
  10252. + txrxstate = dev->trans_start ^ dev->last_rx;
  10253. + if (txrxstate != net_old[i]) {
  10254. + leds |= txrxmap[i];
  10255. + net_old[i] = txrxstate;
  10256. + }
  10257. + }
  10258. +
  10259. + spin_unlock_irqrestore(&cobaltnet_lock, flags);
  10260. +
  10261. + return leds;
  10262. +}
  10263. +#endif
  10264. +
  10265. +/*
  10266. + * We try to be VERY explicit here. Fine for now, may eventually break down.
  10267. + */
  10268. +void
  10269. +cobalt_net_register(struct net_device *ndev)
  10270. +{
  10271. + unsigned long flags;
  10272. + int i;
  10273. +
  10274. + if (!ndev) {
  10275. + return;
  10276. + }
  10277. +
  10278. + /* we'll track the first MAX_COBT_NETDEVS NICs */
  10279. + if (n_netdevs >= MAX_COBT_NETDEVS) {
  10280. + return;
  10281. + }
  10282. +
  10283. + spin_lock_irqsave(&cobaltnet_lock, flags);
  10284. +
  10285. + /* find a free slot */
  10286. + for (i = 0; i < MAX_COBT_NETDEVS; i++) {
  10287. + if (!netdevs[i]) {
  10288. + netdevs[i] = ndev;
  10289. + n_netdevs++;
  10290. + break;
  10291. + }
  10292. + }
  10293. +
  10294. + spin_unlock_irqrestore(&cobaltnet_lock, flags);
  10295. +}
  10296. +
  10297. +void
  10298. +cobalt_net_unregister(struct net_device *ndev)
  10299. +{
  10300. + int i;
  10301. + unsigned long flags;
  10302. +
  10303. + if (!ndev) {
  10304. + return;
  10305. + }
  10306. +
  10307. + spin_lock_irqsave(&cobaltnet_lock, flags);
  10308. +
  10309. + /* try to remove it from the list */
  10310. + for (i = 0; i < MAX_COBT_NETDEVS; i++) {
  10311. + if (netdevs[i] == ndev) {
  10312. + netdevs[i] = NULL;
  10313. + n_netdevs--;
  10314. + break;
  10315. + }
  10316. + }
  10317. +
  10318. + spin_unlock_irqrestore(&cobaltnet_lock, flags);
  10319. +}
  10320. +
  10321. +int __init
  10322. +cobalt_net_init(void)
  10323. +{
  10324. +#if defined(CONFIG_COBALT_LED)
  10325. + /* register an LED handler */
  10326. + cobalt_fpled_register(net_led_handler, NULL);
  10327. +#endif
  10328. +
  10329. + return 0;
  10330. +}
  10331. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/powermode.c linux-3.2.5-cobalt/drivers/cobalt/powermode.c
  10332. --- linux-3.2.5/drivers/cobalt/powermode.c 1969-12-31 16:00:00.000000000 -0800
  10333. +++ linux-3.2.5-cobalt/drivers/cobalt/powermode.c 2012-02-06 21:34:59.000000000 -0800
  10334. @@ -0,0 +1,278 @@
  10335. +/*
  10336. + * $Id: powermode.c,v 1.17 2007/02/20 23:14:23 illogical Exp $
  10337. + *
  10338. + * Copyright (c) 2001, Sun Microsystems, Inc.
  10339. + * All Rights Reserved
  10340. + *
  10341. + * Port of powermode functionality from sysctl.c
  10342. + */
  10343. +
  10344. +#if defined (CONFIG_COBALT_POWERMODE) || defined (MODULE)
  10345. +
  10346. +//#include <linux/module.h>
  10347. +//#include <linux/moduleparam.h>
  10348. +#include <linux/proc_fs.h>
  10349. +#include <linux/init.h>
  10350. +//#include <linux/nvram.h>
  10351. +
  10352. +#include <linux/string.h>
  10353. +#include <asm/uaccess.h>
  10354. +#include <cobalt/cobalt.h>
  10355. +//#include <cobalt/nvram.h>
  10356. +#include <cobalt/powermode.h>
  10357. +#include <cobalt/systype.h>
  10358. +#include <cobalt/superio.h>
  10359. +
  10360. +static int cobalt_powermode_status;
  10361. +
  10362. +static int set_powermode (void);
  10363. +static void get_powermode (void);
  10364. +static int cobalt_powermode_fail (const int set, const int val);
  10365. +static int cobalt_powermode_apply (const int set, const int val);
  10366. +
  10367. +#define POWERMODE_DRIVER "Cobalt Networks Powermode driver"
  10368. +#define POWERMODE_DRIVER_VMAJ 1
  10369. +#define POWERMODE_DRIVER_VMIN 0
  10370. +
  10371. +struct proc_dir_entry *cobalt_powermode_proc;
  10372. +
  10373. +int __init cobalt_powermode_init (void) {
  10374. + printk (KERN_INFO "%s %d.%d (modified by jeff@404ster.com, further modified by dave.studeman@raqcop.com)\n", POWERMODE_DRIVER, POWERMODE_DRIVER_VMAJ, POWERMODE_DRIVER_VMIN);
  10375. + if (cobt_is_monterey ()) {
  10376. + printk (KERN_INFO " NOTE: Monterey systems do not support the powermode \"on\"\n");
  10377. + } else if (cobt_is_3k ()) {
  10378. + EPRINTK ("No support for GenIII systems!\n");
  10379. + return -ENOENT;
  10380. + }
  10381. +
  10382. + cobalt_powermode_proc = create_proc_entry ("powermode", S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, proc_cobalt);
  10383. + if (! cobalt_powermode_proc) {
  10384. + EPRINTK ("Cannot create /proc/cobalt/powermode\n");
  10385. + return -ENOENT;
  10386. + }
  10387. + cobalt_powermode_proc->write_proc = cobalt_powermode_write_proc;
  10388. + cobalt_powermode_proc->read_proc = cobalt_powermode_read_proc;
  10389. + return 0;
  10390. +}
  10391. +
  10392. +void __exit cobalt_powermode_exit (void) {
  10393. + if (cobalt_powermode_proc) {
  10394. + remove_proc_entry ("powermode", proc_cobalt);
  10395. + cobalt_powermode_proc = NULL;
  10396. + }
  10397. +}
  10398. +
  10399. +int cobalt_powermode_read_proc (char *buf, char **st, off_t off, int len, int *eof, void *x) {
  10400. + int rlen;
  10401. +
  10402. + get_powermode ();
  10403. +
  10404. + rlen = 0;
  10405. + if (cobalt_powermode_status == COBALT_POWER_ON) {
  10406. + rlen += sprintf(buf + rlen, "on\n");
  10407. + } else if (cobalt_powermode_status == COBALT_POWER_OFF) {
  10408. + rlen += sprintf(buf + rlen, "off\n");
  10409. + } else if (cobalt_powermode_status == COBALT_POWER_SAME) {
  10410. + rlen += sprintf(buf + rlen, "same\n");
  10411. + } else {
  10412. + rlen += sprintf(buf + rlen, "uknown\n");
  10413. + }
  10414. + return cobalt_gen_proc_read(buf, rlen, st, off, len, eof);
  10415. +}
  10416. +
  10417. +int cobalt_powermode_write_proc (struct file *file, const char *buffer, unsigned long count, void *data) {
  10418. + int len, set_ret;
  10419. + char *p;
  10420. + char buf [9];
  10421. + enum cobalt_powermode val;
  10422. +
  10423. + if (count > 8)
  10424. + len = 8;
  10425. + else
  10426. + len = count;
  10427. +
  10428. + if (copy_from_user (buf, buffer, len)) {
  10429. + return -EFAULT;
  10430. + }
  10431. + buf [len] = '\0';
  10432. +
  10433. + val = simple_strtol(buf, &p, 0);
  10434. + if (p != buf) {
  10435. + if ((val < 1) || (val > 3)) {
  10436. + return -EINVAL;
  10437. + }
  10438. + cobalt_powermode_status = val;
  10439. + } else {
  10440. + if (buf [len - 1] == '\n')
  10441. + buf [len - 1] = '\0';
  10442. + if (! strcmp (buf, "on")) {
  10443. + cobalt_powermode_status = COBALT_POWER_ON;
  10444. + } else if (! strcmp (buf, "off")) {
  10445. + cobalt_powermode_status = COBALT_POWER_OFF;
  10446. + } else if (! strcmp (buf, "same")) {
  10447. + cobalt_powermode_status = COBALT_POWER_SAME;
  10448. + } else {
  10449. + return -EINVAL;
  10450. + }
  10451. + }
  10452. + set_ret = set_powermode ();
  10453. + if (set_ret != 0) {
  10454. + return set_ret;
  10455. + }
  10456. + return len;
  10457. +}
  10458. +
  10459. +static int set_powermode (void) {
  10460. + int r0,r1;
  10461. + int fail, apply;
  10462. +
  10463. + r0 = 0; r1 = 0;
  10464. +
  10465. + fail = cobalt_powermode_fail (0, 0);
  10466. + apply = cobalt_powermode_apply (0, 0);
  10467. +
  10468. + switch (cobalt_powermode_status) {
  10469. + case COBALT_POWER_ON:
  10470. + r0 = cobalt_powermode_fail (1, 1);
  10471. + r1 = cobalt_powermode_apply (1, 1);
  10472. + break;
  10473. + case COBALT_POWER_OFF:
  10474. + r0 = cobalt_powermode_fail (1, 0);
  10475. + r1 = cobalt_powermode_apply (1, 0);
  10476. + break;
  10477. + case COBALT_POWER_SAME:
  10478. + r0 = cobalt_powermode_fail (1, 1);
  10479. + r1 = cobalt_powermode_apply (1, 0);
  10480. + break;
  10481. + }
  10482. +
  10483. + if (r0 < 0 || r1 < 0) {
  10484. + cobalt_powermode_fail (1, fail);
  10485. + cobalt_powermode_apply (1, apply);
  10486. + return -EINVAL;
  10487. + }
  10488. + return 0;
  10489. +}
  10490. +
  10491. +static void get_powermode (void) {
  10492. + int fail, apply;
  10493. +
  10494. + fail = cobalt_powermode_fail (0, 0);
  10495. + apply = cobalt_powermode_apply (0, 0);
  10496. +
  10497. + if (fail && apply) {
  10498. + cobalt_powermode_status = COBALT_POWER_ON;
  10499. + } else if (! fail && ! apply) {
  10500. + cobalt_powermode_status = COBALT_POWER_OFF;
  10501. + } else if (fail && ! apply) {
  10502. + cobalt_powermode_status = COBALT_POWER_SAME;
  10503. + } else {
  10504. +
  10505. + }
  10506. +}
  10507. +
  10508. +static int cobalt_powermode_fail (const int set, const int val) {
  10509. + int r = 0;
  10510. + if (cobt_is_monterey ()) {
  10511. + u8 reg;
  10512. + unsigned long flags;
  10513. +
  10514. + spin_lock_irqsave (&rtc_lock, flags);
  10515. + superio_set_rtc_bank (PC87317_RTC_BANK_APC);
  10516. + reg = CMOS_READ (PC87317_APCR6);
  10517. + r = reg & 0x80 ? 0 : 1;
  10518. + if (set) {
  10519. + if (val) {
  10520. + reg &= ~0xc0;
  10521. + } else {
  10522. + reg |= 0x80;
  10523. + }
  10524. + CMOS_WRITE (reg, PC87317_APCR6);
  10525. + }
  10526. + superio_set_rtc_bank (PC87317_RTC_BANK_MAIN);
  10527. + spin_unlock_irqrestore (&rtc_lock, flags);
  10528. + } else if (cobt_is_alpine ()) {
  10529. + u16 addr;
  10530. + u8 reg;
  10531. +
  10532. + addr = superio_ldev_base (PC87417_DEV_SWC);
  10533. + reg = inb (addr + PC87417_SWC_PWONCTL);
  10534. + r = reg & 0x20 ? 1 : 0;
  10535. + if (set) {
  10536. + if (val) {
  10537. + reg |= 0x20;
  10538. + } else {
  10539. + reg &= ~0x20;
  10540. + }
  10541. + outb (reg, addr + PC87417_SWC_PWONCTL);
  10542. + }
  10543. + }
  10544. + return r;
  10545. +}
  10546. +
  10547. +#define NS_GP1_EN0_PME2_E 0x02
  10548. +#define NS_EVENT_WAKEUP_S345 0x03
  10549. +static int cobalt_powermode_apply (const int set, const int val) {
  10550. + int r = 0;
  10551. + if (cobt_is_monterey ()) {
  10552. +#if 0 /* not supported on monterey hardware */
  10553. + u8 reg;
  10554. + u16 pmaddr;
  10555. + u16 gpeaddr;
  10556. +
  10557. + /* figure out the PM base address */
  10558. + pmaddr = superio_ldev_base (PC87317_DEV_PM);
  10559. + /* figure out the GPE base address */
  10560. + outb (PC87317_PMDEV_GPELO, pmaddr);
  10561. + gpeaddr = inb (pmaddr + 1);
  10562. + outb (PC87317_PMDEV_GPEHI, pmaddr);
  10563. + gpeaddr |= inb (pmaddr + 1) << 8;
  10564. +
  10565. + reg = inb (gpeaddr + PC87317_GPE_GP1_EN0);
  10566. + r = (reg & NS_GP1_EN0_PME2_E) ? 1 : 0;
  10567. + if (set) {
  10568. + if (val) {
  10569. + reg |= NS_GP1_EN0_PME2_E;
  10570. + } else {
  10571. + reg &= ~NS_GP1_EN0_PME2_E;
  10572. + }
  10573. + outb (reg, gpeaddr + PC87317_GPE_GP1_EN0);
  10574. + }
  10575. +#endif
  10576. + if (set && val) {
  10577. + return -1;
  10578. + } else {
  10579. + return 0;
  10580. + }
  10581. + } else if (cobt_is_alpine ()) {
  10582. + u16 pmaddr;
  10583. + u8 reg;
  10584. +
  10585. + /* power event is attached to GPIOE42 */
  10586. + pmaddr = superio_ldev_base (PC87417_DEV_SWC);
  10587. + outb (PC87417_SWCWKEVENT_GPIOE42, pmaddr + PC87417_SWC_WKEVENT);
  10588. + reg = inb (pmaddr + PC87417_SWC_WKSTATE);
  10589. + r = reg & NS_EVENT_WAKEUP_S345 ? 1 : 0;
  10590. + if (set) {
  10591. + if (val) {
  10592. + reg |= NS_EVENT_WAKEUP_S345;
  10593. + } else {
  10594. + /* disable wakeup */
  10595. + reg &= ~NS_EVENT_WAKEUP_S345;
  10596. + }
  10597. + outb (reg, pmaddr + PC87417_SWC_WKSTATE);
  10598. + }
  10599. + }
  10600. + return r;
  10601. +}
  10602. +
  10603. +//#ifdef MODULE
  10604. +//module_init (cobalt_powermode_init);
  10605. +//module_exit (cobalt_powermode_exit);
  10606. +//#endif
  10607. +
  10608. +//MODULE_AUTHOR ("Sun Cobalt");
  10609. +//MODULE_DESCRIPTION ("Power State Storage");
  10610. +//MODULE_LICENSE ("GPL");
  10611. +
  10612. +#endif
  10613. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/raminfo.c linux-3.2.5-cobalt/drivers/cobalt/raminfo.c
  10614. --- linux-3.2.5/drivers/cobalt/raminfo.c 1969-12-31 16:00:00.000000000 -0800
  10615. +++ linux-3.2.5-cobalt/drivers/cobalt/raminfo.c 2012-02-06 21:34:59.000000000 -0800
  10616. @@ -0,0 +1,317 @@
  10617. +/* $Id: raminfo.c,v 1.7 2001/10/29 22:21:36 thockin Exp $
  10618. + *
  10619. + * Copyright (c) 2000-2001 Sun Microsystems, Inc.
  10620. + * All Rights Reserved.
  10621. + *
  10622. + * This is SMP safe - the init runs once on load, and the rest is just
  10623. + * printing information. --TPH
  10624. + */
  10625. +#if defined(CONFIG_COBALT_RAMINFO) || defined(CONFIG_COBALT_RAMINFO_MODULE)
  10626. +
  10627. +#include <linux/module.h>
  10628. +#include <linux/init.h>
  10629. +#include <linux/pci.h>
  10630. +#include <linux/proc_fs.h>
  10631. +
  10632. +#include <cobalt/cobalt.h>
  10633. +#include <cobalt/systype.h>
  10634. +
  10635. +#define RAM_DRIVER "Cobalt Networks RAM Info driver"
  10636. +#define RAM_DRIVER_VMAJ 1
  10637. +#define RAM_DRIVER_VMIN 0
  10638. +
  10639. +#define MAX_DIMM_SLOTS 4
  10640. +
  10641. +enum dimm_t {
  10642. + DIMM_TYPE_FPM_DRAM,
  10643. + DIMM_TYPE_EDO_DRAM,
  10644. + DIMM_TYPE_REG_SDRAM,
  10645. + DIMM_TYPE_SDRAM
  10646. +};
  10647. +
  10648. +static char *dimm_desc[] = {
  10649. + "Fast-page Mode DRAM",
  10650. + "EDO DRAM",
  10651. + "Registered SDRAM",
  10652. + "SDRAM",
  10653. +};
  10654. +
  10655. +struct dimm_slot {
  10656. + int num;
  10657. + enum dimm_t type;
  10658. + uint16_t size;
  10659. + int ecc;
  10660. +};
  10661. +
  10662. +struct raminfo {
  10663. + int total;
  10664. + int (*query)(struct dimm_slot *);
  10665. + struct pci_dev *dev;
  10666. + struct dimm_slot *dimm;
  10667. +#ifdef CONFIG_PROC_FS
  10668. + struct proc_dir_entry *proc;
  10669. +#endif /* CONFIG_PROC_FS */
  10670. +};
  10671. +
  10672. +/*########################################################################*/
  10673. +
  10674. +static int serverworks_le_dimm_info(struct dimm_slot *);
  10675. +static int ali_1541_dimm_info(struct dimm_slot *);
  10676. +static int raminfo_read_proc(char*, char**, off_t, int, int*, void*);
  10677. +
  10678. +/* RaQ-3, RaQ-4, Qube-3
  10679. + * - uses ALI M1541 for memory controller
  10680. + * - has 2 dimm slots */
  10681. +static struct raminfo gen3_raminfo = {
  10682. + total: 2,
  10683. + query: ali_1541_dimm_info
  10684. +};
  10685. +/* RaQ-XTR (Monterey)
  10686. + * - uses ServerWorks CNB30LE for Memory Controller
  10687. + * - has 4 dimm slots */
  10688. +static struct raminfo gen5_monterey_raminfo = {
  10689. + total: 4,
  10690. + query: serverworks_le_dimm_info
  10691. +};
  10692. +/* RaQ (Alpine)
  10693. + * - uses ServerWorks CNB30LE for Memory Controller
  10694. + * - has 2 dimm slots */
  10695. +static struct raminfo gen5_alpine_raminfo = {
  10696. + total: 2,
  10697. + query: serverworks_le_dimm_info
  10698. +};
  10699. +
  10700. +static struct raminfo *sys_raminfo;
  10701. +
  10702. +/*########################################################################*/
  10703. +
  10704. +#define SERVERWORKS_DRAM_MRPR (0x90)
  10705. +#define SERVERWORKS_DRAM_MRAR(slot) (0x7c + (slot))
  10706. +#define SERVERWORKS_DRAM_ECCR (0xe0)
  10707. +
  10708. +static int
  10709. +serverworks_le_dimm_info(struct dimm_slot *dimm)
  10710. +{
  10711. + int row;
  10712. + uint8_t rar, active, eccr;
  10713. + uint16_t ma_map[] = {
  10714. + 32, 16, 32, 256, 512, 128, 128, 64, 256, 128, 64, 64, 128,
  10715. + };
  10716. +
  10717. + if (!sys_raminfo || !sys_raminfo->dev || !dimm)
  10718. + return -ENOSYS;
  10719. +
  10720. + pci_read_config_byte(sys_raminfo->dev,
  10721. + SERVERWORKS_DRAM_MRPR, &active);
  10722. + pci_read_config_byte(sys_raminfo->dev,
  10723. + SERVERWORKS_DRAM_MRAR(dimm->num), &rar);
  10724. +
  10725. + /* serverworks uses only registered sdram */
  10726. + dimm->type = DIMM_TYPE_REG_SDRAM;
  10727. + dimm->size = 0;
  10728. +
  10729. + /* check to see if ECC is enabled (bit 4 of reg 0xE0) */
  10730. + pci_read_config_byte(sys_raminfo->dev,
  10731. + SERVERWORKS_DRAM_ECCR, &eccr);
  10732. + dimm->ecc = (eccr & (1<<2)) ? 1 : 0;
  10733. +
  10734. + /* two rows for each dimm slot */
  10735. + for (row=2*dimm->num; row<=(2*dimm->num+1); row++) {
  10736. + /* each active row will have corresponding bit
  10737. + * set in the Memory Row Presence Register */
  10738. + if (active & (1 << row)) {
  10739. + /* lookup size ma_map table */
  10740. + dimm->size += ma_map[ rar & 0xf ];
  10741. + }
  10742. + /* two rows per RAR register, bits 7-4 and bits 3-0 */
  10743. + rar >>= 4;
  10744. + }
  10745. +
  10746. + return 0;
  10747. +}
  10748. +
  10749. +#define ALI_DRAM_CONF_1(row) (0x60 + ((row) * 2))
  10750. +#define ALI_DRAM_CONF_2(row) (0x61 + ((row) * 2))
  10751. +#define ALI_DIMM_TYPE(d2) (((d2) >> 4) & 0x3)
  10752. +#define ALI_DIMM_MMAP(d2) (((d2) >> 6) & 0x3)
  10753. +#define ALI_DIMM_SIZE(d1, d2) (((((d2) & 0xf) << 8) | (d1)) + 1)
  10754. +
  10755. +static int
  10756. +ali_1541_dimm_info(struct dimm_slot *dimm)
  10757. +{
  10758. + int row;
  10759. + uint8_t dbc1, dbc2;
  10760. +
  10761. + if (!sys_raminfo || !sys_raminfo->dev || !dimm)
  10762. + return -ENOSYS;
  10763. +
  10764. + dimm->size = 0;
  10765. + dimm->ecc = 0;
  10766. +
  10767. + /* read two rows per dimm (for double-side) */
  10768. + for (row=2*dimm->num; row<=(2*dimm->num + 1); row++) {
  10769. + pci_read_config_byte(sys_raminfo->dev,
  10770. + ALI_DRAM_CONF_2(row), &dbc2);
  10771. +
  10772. + /* row is empty iff dimm type and ma_map are both 0 */
  10773. + if (!ALI_DIMM_TYPE(dbc2) && !ALI_DIMM_MMAP(dbc2))
  10774. + continue;
  10775. +
  10776. + pci_read_config_byte(sys_raminfo->dev,
  10777. + ALI_DRAM_CONF_1(row), &dbc1);
  10778. +
  10779. + /* type is bits 4-5 of dimm conf reg 2 */
  10780. + dimm->type = ALI_DIMM_TYPE(dbc2);
  10781. +
  10782. + /* A27-A20 address lines are bits 7-0 of dimm conf reg 1
  10783. + * A31-A28 address lines are bits 3-0 of dimm conf reg 2 */
  10784. + dimm->size = ALI_DIMM_SIZE(dbc1, dbc2);
  10785. + }
  10786. +
  10787. + /* the M1541 uses "not less than" policy to determine which row a
  10788. + * memory address resides in. the top address boundary for each
  10789. + * row is the maximum memory value minus 1. so to determine the
  10790. + * size of a row you must subtract the size of the previous row.
  10791. + * (unless this is slot 0 or the first populated slot) */
  10792. + if (dimm->num > 0 && dimm->size > 0) {
  10793. + uint16_t sz;
  10794. + pci_read_config_byte(sys_raminfo->dev,
  10795. + ALI_DRAM_CONF_1(2*dimm->num - 1), &dbc1);
  10796. + pci_read_config_byte(sys_raminfo->dev,
  10797. + ALI_DRAM_CONF_2(2*dimm->num - 1), &dbc2);
  10798. + sz = ALI_DIMM_SIZE(dbc1, dbc2);
  10799. + dimm->size -= (sz > 1) ? sz : 0;
  10800. + }
  10801. +
  10802. + return 0;
  10803. +}
  10804. +
  10805. +int __init
  10806. +cobalt_raminfo_init(void)
  10807. +{
  10808. + int j;
  10809. +
  10810. + /* determine system type and find memory controller pci dev
  10811. + * so we don't have to do pci lookup for each proc read */
  10812. + if (cobt_is_3k()) {
  10813. + sys_raminfo = &gen3_raminfo;
  10814. + sys_raminfo->dev = pci_get_device(PCI_VENDOR_ID_AL,
  10815. + PCI_DEVICE_ID_AL_M1541, NULL);
  10816. + } else if (cobt_is_5k()) {
  10817. + if (cobt_is_monterey()) {
  10818. + sys_raminfo = &gen5_monterey_raminfo;
  10819. + } else if (cobt_is_alpine()) {
  10820. + sys_raminfo = &gen5_alpine_raminfo;
  10821. + } else {
  10822. + EPRINTK("unable to identify gen5 board\n");
  10823. + return -ENOSYS;
  10824. + }
  10825. + sys_raminfo->dev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  10826. + PCI_DEVICE_ID_SERVERWORKS_LE, NULL);
  10827. + }
  10828. +
  10829. + if (!sys_raminfo || !sys_raminfo->dev) {
  10830. + EPRINTK("unable to identify system type\n");
  10831. + return -ENOSYS;
  10832. + }
  10833. +
  10834. + printk(KERN_INFO "%s %d.%d (modified by jeff@404ster.com)\n", RAM_DRIVER,RAM_DRIVER_VMAJ,RAM_DRIVER_VMIN);
  10835. +
  10836. +#ifdef CONFIG_PROC_FS
  10837. + /* add entry to /proc filesytem */
  10838. + sys_raminfo->proc = create_proc_entry("raminfo",
  10839. + S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, proc_cobalt);
  10840. + if (!sys_raminfo->proc) {
  10841. + EPRINTK("can't create /proc/cobalt/raminfo\n");
  10842. + return -ENOENT;
  10843. + }
  10844. + sys_raminfo->proc->write_proc = NULL;
  10845. + sys_raminfo->proc->read_proc = raminfo_read_proc;
  10846. +#endif /* CONFIG_PROC_FS */
  10847. +
  10848. + /* create arrary of dimm slots to store info */
  10849. + sys_raminfo->dimm = kmalloc(
  10850. + sys_raminfo->total * sizeof(struct dimm_slot), GFP_ATOMIC);
  10851. + if (!sys_raminfo->dimm) {
  10852. + EPRINTK("unable to allocate memory\n");
  10853. +#ifdef CONFIG_PROC_FS
  10854. + if (sys_raminfo->proc) {
  10855. + remove_proc_entry("raminfo", proc_cobalt);
  10856. + sys_raminfo->proc = NULL;
  10857. + }
  10858. +#endif /* CONFIG_PROC_FS */
  10859. + return -ENOMEM;
  10860. + }
  10861. +
  10862. + {
  10863. + struct dimm_slot *ds = sys_raminfo->dimm;
  10864. + for (j=0; j<sys_raminfo->total; j++, ds++) {
  10865. + if (!ds) continue;
  10866. + ds->num = j;
  10867. + if (sys_raminfo->query(ds) < 0) {
  10868. + EPRINTK("unable to read dimm %d\n", j);
  10869. + ds->num = -1;
  10870. + }
  10871. + }
  10872. + }
  10873. +
  10874. + return 0;
  10875. +}
  10876. +
  10877. +static void __exit
  10878. +cobalt_raminfo_exit(void)
  10879. +{
  10880. +#ifdef CONFIG_PROC_FS
  10881. + if (sys_raminfo->proc) {
  10882. + remove_proc_entry("raminfo", proc_cobalt);
  10883. + sys_raminfo->proc = NULL;
  10884. + }
  10885. +#endif /* CONFIG_PROC_FS */
  10886. +
  10887. + if (sys_raminfo->dimm) {
  10888. + kfree(sys_raminfo->dimm);
  10889. + sys_raminfo->dimm = NULL;
  10890. + }
  10891. +
  10892. + sys_raminfo->dev = NULL;
  10893. + sys_raminfo = NULL;
  10894. +}
  10895. +
  10896. +#ifdef CONFIG_PROC_FS
  10897. +static int
  10898. +raminfo_read_proc(char *buf, char **st, off_t off, int len, int *eof, void *x)
  10899. +{
  10900. + int rlen, i;
  10901. + struct dimm_slot *ds;
  10902. +
  10903. + if (!sys_raminfo)
  10904. + return -ENOSYS;
  10905. +
  10906. + //MOD_INC_USE_COUNT;
  10907. +
  10908. + ds = sys_raminfo->dimm;
  10909. + for (rlen=i=0; i<sys_raminfo->total; i++, ds++) {
  10910. + if (!ds || ds->num < 0)
  10911. + continue;
  10912. + rlen += sprintf(buf+rlen, "%d [%s%s]: %u MB\n", i,
  10913. + ds->size ? dimm_desc[ds->type] : "Empty",
  10914. + ds->size ? ds->ecc ? "+ECC" : "" : "",
  10915. + ds->size);
  10916. + }
  10917. +
  10918. + //MOD_DEC_USE_COUNT;
  10919. +
  10920. + return cobalt_gen_proc_read(buf, rlen, st, off, len, eof);
  10921. +}
  10922. +#endif /* CONFIG_PROC_FS */
  10923. +
  10924. +#ifdef CONFIG_COBALT_RAMINFO_MODULE
  10925. +module_init(cobalt_raminfo_init);
  10926. +module_exit(cobalt_raminfo_exit);
  10927. +#endif
  10928. +
  10929. +MODULE_AUTHOR("Sun Cobalt");
  10930. +MODULE_DESCRIPTION("DIMM Information");
  10931. +MODULE_LICENSE("GPL");
  10932. +
  10933. +#endif /* CONFIG_COBALT_RAMINFO || CONFIG_COBALT_RAMINFO_MODULE */
  10934. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/ruler.c linux-3.2.5-cobalt/drivers/cobalt/ruler.c
  10935. --- linux-3.2.5/drivers/cobalt/ruler.c 1969-12-31 16:00:00.000000000 -0800
  10936. +++ linux-3.2.5-cobalt/drivers/cobalt/ruler.c 2012-02-06 21:34:59.000000000 -0800
  10937. @@ -0,0 +1,418 @@
  10938. +/*
  10939. + * cobalt ruler driver
  10940. + * Copyright (c) 2000, Cobalt Networks, Inc.
  10941. + * Copyright (c) 2001, Sun Microsystems, Inc.
  10942. + * $Id: ruler.c,v 1.23 2002/08/29 00:33:01 uzi Exp $
  10943. + *
  10944. + * author: asun@cobalt.com, thockin@sun.com
  10945. + *
  10946. + * This should be SMP safe. There is one critical piece of data, and thus
  10947. + * one lock. The ruler_lock protects the arrays of channels(hwifs) and
  10948. + * busproc function pointers. These are only ever written in the
  10949. + * register/unregister functions but read in several other places. A
  10950. + * read/write lock is appropriate. The global switches and sled_leds are
  10951. + * atomic_t. --TPH
  10952. + */
  10953. +
  10954. +#include <stdarg.h>
  10955. +#include <stddef.h>
  10956. +#include <linux/init.h>
  10957. +#include <linux/sched.h>
  10958. +#include <linux/timer.h>
  10959. +#include <linux/pci.h>
  10960. +#include <linux/proc_fs.h>
  10961. +#include <linux/sched.h>
  10962. +#include <linux/ioport.h>
  10963. +#include <linux/ide.h>
  10964. +#include <linux/hdreg.h>
  10965. +#include <linux/notifier.h>
  10966. +#include <linux/sysctl.h>
  10967. +#include <linux/reboot.h>
  10968. +#include <linux/delay.h>
  10969. +#include <linux/ide.h>
  10970. +#include <asm/io.h>
  10971. +
  10972. +#include <cobalt/cobalt.h>
  10973. +#include <cobalt/systype.h>
  10974. +#include <cobalt/i2c.h>
  10975. +#include <cobalt/acpi.h>
  10976. +#include <cobalt/led.h>
  10977. +#include <cobalt/ruler.h>
  10978. +
  10979. +#define RULER_TIMEOUT (HZ >> 1) /* .5s */
  10980. +#define MAX_COBT_DRIVES 4
  10981. +
  10982. +#define RULER_DRIVER "Cobalt Networks Disk Ruler driver"
  10983. +#define RULER_DRIVER_VMAJ 1
  10984. +#define RULER_DRIVER_VMIN 0
  10985. +
  10986. +/* all of this is for gen V */
  10987. +static struct timer_list cobalt_ruler_timer;
  10988. +static rwlock_t ruler_lock = RW_LOCK_UNLOCKED;
  10989. +static ide_drive_t *channels[MAX_COBT_DRIVES];
  10990. +
  10991. +static int (*busprocs[MAX_COBT_DRIVES])(ide_drive_t *, int);
  10992. +
  10993. +//static cob_busprocs_t busprocs[MAX_COBT_DRIVES];
  10994. +
  10995. +/* NOTE: switches is a bitmask of DETACHED sleds */
  10996. +static atomic_t switches = ATOMIC_INIT(0);
  10997. +static atomic_t sled_leds = ATOMIC_INIT(0);
  10998. +static int sled_led_map[] = {LED_SLED0, LED_SLED1, LED_SLED2, LED_SLED3};
  10999. +static int ruler_detect;
  11000. +static int initialized;
  11001. +
  11002. +static void ruler_hwif_added(ide_hwif_t *hwif, int idx);
  11003. +
  11004. +static inline u8
  11005. +read_switches(void)
  11006. +{
  11007. + u8 state = 0;
  11008. + if (cobt_is_monterey()) {
  11009. + int tries = 3;
  11010. +
  11011. + /* i2c can be busy, and this can read wrong - try a few times */
  11012. + while (tries--) {
  11013. + state = cobalt_i2c_read_byte(COBALT_I2C_DEV_DRV_SWITCH,
  11014. + 0);
  11015. + if ((state & 0xf0) != 0xf0) {
  11016. + break;
  11017. + }
  11018. + }
  11019. + }
  11020. +
  11021. + return state;
  11022. +}
  11023. +
  11024. +static inline unsigned int
  11025. +get_sled_leds(void)
  11026. +{
  11027. + return atomic_read(&sled_leds);
  11028. +}
  11029. +
  11030. +/*
  11031. + * deal with sled leds: LED on means OK to remove
  11032. + * NOTE: all the reset lines are kept high.
  11033. + * NOTE: the reset lines are in the reverse order of the switches.
  11034. + */
  11035. +static void
  11036. +set_sled_leds(unsigned int leds)
  11037. +{
  11038. + if (cobt_is_monterey()) {
  11039. + unsigned int offed = get_sled_leds();
  11040. +
  11041. + offed &= ~leds;
  11042. + atomic_set(&sled_leds, leds);
  11043. +#ifdef CONFIG_COBALT_LED
  11044. + cobalt_led_clear_bits_lazy(offed);
  11045. + cobalt_led_set_bits_lazy(leds);
  11046. +#endif
  11047. + }
  11048. +}
  11049. +
  11050. +/* this must be called with the ruler_lock held for read */
  11051. +static int
  11052. +do_busproc(int idx, ide_drive_t *drive, int arg)
  11053. +{
  11054. + if (cobt_is_monterey()) {
  11055. + /* sed sled LEDs */
  11056. + switch (arg) {
  11057. + case BUSSTATE_ON:
  11058. + set_sled_leds(get_sled_leds() &
  11059. + ~sled_led_map[idx]);
  11060. + break;
  11061. + case BUSSTATE_OFF:
  11062. + case BUSSTATE_TRISTATE:
  11063. + set_sled_leds(get_sled_leds() |
  11064. + sled_led_map[idx]);
  11065. + break;
  11066. + default:
  11067. + WPRINTK("unknown busproc argument (%d)\n", arg);
  11068. + }
  11069. + }
  11070. +
  11071. + /* do the real work */
  11072. + return busprocs[idx](drive, arg);
  11073. +}
  11074. +
  11075. +static void
  11076. +ruler_timer_fn(unsigned long data)
  11077. +{
  11078. + if (cobt_is_monterey()) {
  11079. + u8 state;
  11080. + int i;
  11081. + unsigned int now, expected, bit, swcur;
  11082. +
  11083. + state = read_switches();
  11084. + if ((state & 0xf0) == 0xf0) {
  11085. + return;
  11086. + }
  11087. + swcur = atomic_read(&switches);
  11088. +
  11089. + state &= 0xf;
  11090. + read_lock(&ruler_lock);
  11091. + for (i = 0; i < MAX_COBT_DRIVES; i++) {
  11092. + bit = 1 << i;
  11093. + now = state & bit;
  11094. + expected = swcur & bit;
  11095. + if (now == expected) {
  11096. + /* no changes to worry about */
  11097. + continue;
  11098. + }
  11099. +
  11100. + if (now) {
  11101. + /* a freshly detached drive */
  11102. + atomic_set(&switches, swcur | bit);
  11103. + if (channels[i]) {
  11104. + printk("disabling ide ruler "
  11105. + "channel %d\n", i);
  11106. + do_busproc(i, channels[i],
  11107. + BUSSTATE_TRISTATE);
  11108. + } else {
  11109. + WPRINTK("drive detach on bad "
  11110. + "channel (%d)\n", i);
  11111. + }
  11112. + set_sled_leds(get_sled_leds() |
  11113. + sled_led_map[i]);
  11114. + } else {
  11115. + /*
  11116. + * do we want to do anything when a re-attach
  11117. + * is detected?
  11118. + */
  11119. + }
  11120. + }
  11121. + read_unlock(&ruler_lock);
  11122. + }
  11123. +}
  11124. +
  11125. +#ifdef CONFIG_COBALT_ACPI
  11126. +static int
  11127. +ruler_interrupt(cobalt_acpi_evt *evt, void * data)
  11128. +{
  11129. + if (cobt_is_monterey() && ruler_detect) {
  11130. + u8 state;
  11131. +
  11132. + state = read_switches();
  11133. + if ((state & 0xf0) != 0xf0) {
  11134. + /* this is protected inside mod_timer */
  11135. + mod_timer(&cobalt_ruler_timer, jiffies + RULER_TIMEOUT);
  11136. + }
  11137. +
  11138. + evt->ev_data = state;
  11139. + /* empirical: delay enough to debounce */
  11140. + udelay(10);
  11141. + }
  11142. + return 0;
  11143. +}
  11144. +#endif /* CONFIG_COBALT_ACPI */
  11145. +
  11146. +#if defined(CONFIG_COBALT_LED)
  11147. +/* figure which LEDs to blink */
  11148. +static unsigned int
  11149. +ide_led_handler(void *data)
  11150. +{
  11151. + ide_hwif_t *hwif;
  11152. + unsigned int leds = 0;
  11153. +
  11154. + if (cobt_is_monterey()) {
  11155. + int i;
  11156. + static int ledmap[MAX_COBT_DRIVES] = {
  11157. + LED_DISK0, LED_DISK1, LED_DISK2, LED_DISK3
  11158. + };
  11159. + static unsigned long old[MAX_COBT_DRIVES];
  11160. +
  11161. + read_lock(&ruler_lock);
  11162. +
  11163. + for (i = 0; i < MAX_COBT_DRIVES; i++) {
  11164. + if (channels[i])
  11165. + {
  11166. + hwif = HWIF(channels[i]);
  11167. + if (hwif->drives[0].present &&
  11168. + hwif->drives[0].service_start != old[i]) {
  11169. + leds |= ledmap[i];
  11170. + old[i] = hwif->drives[0].service_start;
  11171. + }
  11172. + }
  11173. + }
  11174. +
  11175. + read_unlock(&ruler_lock);
  11176. + }
  11177. +
  11178. + return leds;
  11179. +}
  11180. +#endif
  11181. +
  11182. +/* this is essentially an exported function - it is in the hwif structs */
  11183. +static int ruler_busproc_fn(ide_drive_t *drive, int arg)
  11184. +{
  11185. + int r = 0;
  11186. + if (cobt_is_monterey()) {
  11187. + int idx;
  11188. +
  11189. + read_lock(&ruler_lock);
  11190. +
  11191. + for (idx = 0; idx < MAX_COBT_DRIVES; idx++) {
  11192. + if (channels[idx] == drive) {
  11193. + break;
  11194. + }
  11195. + }
  11196. +
  11197. + if (idx >= MAX_COBT_DRIVES) {
  11198. + /* not a hwif we manage? */
  11199. + return 0;
  11200. + }
  11201. +
  11202. + r = do_busproc(idx, drive, arg);
  11203. + read_unlock(&ruler_lock);
  11204. + }
  11205. +
  11206. + return r;
  11207. +}
  11208. +
  11209. +/*
  11210. + * We try to be VERY explicit here. Fine for now, may eventually break down.
  11211. + */
  11212. +void
  11213. +cobalt_ruler_register(ide_drive_t *drive)
  11214. +{
  11215. + ide_hwif_t *hwif = HWIF(drive);
  11216. +
  11217. + if (cobt_is_monterey()) {
  11218. + struct pci_dev *dev;
  11219. + int idx;
  11220. + unsigned long flags;
  11221. +
  11222. + if (!hwif) {
  11223. + return;
  11224. + }
  11225. +
  11226. + /* Cobalt rulers only have HPT370 controllers on bus 1 */
  11227. + dev = hwif->pci_dev;
  11228. + if (!dev)
  11229. + return;
  11230. +
  11231. + if (dev->vendor != PCI_VENDOR_ID_TTI
  11232. + || dev->device != PCI_DEVICE_ID_TTI_HPT366
  11233. + || dev->bus->number != 1) {
  11234. + /* ignore it */
  11235. + return;
  11236. + }
  11237. +
  11238. + /* IDE ruler has controllers at dev 3 and 4, ONLY */
  11239. + if (dev->devfn == PCI_DEVFN(3,0)) {
  11240. + idx = hwif->channel;
  11241. + } else if (dev->devfn == PCI_DEVFN(4,0)) {
  11242. + idx = 2 + hwif->channel;
  11243. + } else {
  11244. + return;
  11245. + }
  11246. +
  11247. + if (idx >= MAX_COBT_DRIVES) {
  11248. + return;
  11249. + }
  11250. +
  11251. + write_lock_irqsave(&ruler_lock, flags);
  11252. +
  11253. + /* save a pointer to the hwif, and trap it's busproc() */
  11254. + channels[idx] = drive;
  11255. + if (hwif->busproc) {
  11256. + busprocs[idx] = HWIF(drive)->busproc;
  11257. + hwif->busproc = &ruler_busproc_fn;
  11258. + }
  11259. +
  11260. + write_unlock_irqrestore(&ruler_lock, flags);
  11261. +
  11262. + /* now that we have trapped it, do what we need to initialize
  11263. + * the drive - if we haven't been initialized, we'll call this
  11264. + * later.
  11265. + */
  11266. + if (initialized) {
  11267. + ruler_hwif_added(hwif, idx);
  11268. + }
  11269. + }
  11270. +}
  11271. +
  11272. +static void
  11273. +ruler_hwif_added(ide_hwif_t *hwif, int idx)
  11274. +{
  11275. + /* the associated switch should be closed */
  11276. + if (hwif->drives[0].present) {
  11277. + /* set the sled LED off - not safe to remove */
  11278. + set_sled_leds(get_sled_leds() & ~sled_led_map[idx]);
  11279. + }
  11280. +}
  11281. +
  11282. +void cobalt_ruler_unregister(ide_drive_t *drive)
  11283. +{
  11284. + if (cobt_is_monterey()) {
  11285. + int i;
  11286. + unsigned long flags;
  11287. +
  11288. + write_lock_irqsave(&ruler_lock, flags);
  11289. +
  11290. + for (i = 0; i < MAX_COBT_DRIVES; i++) {
  11291. + if (channels[i] == drive) {
  11292. + channels[i] = NULL;
  11293. + HWIF(drive)->busproc = busprocs[i];
  11294. + busprocs[i] = NULL;
  11295. + }
  11296. + }
  11297. +
  11298. + write_unlock_irqrestore(&ruler_lock, flags);
  11299. + }
  11300. +}
  11301. +
  11302. +int __init
  11303. +cobalt_ruler_init(void)
  11304. +{
  11305. + if (cobt_is_monterey()) {
  11306. + int err;
  11307. + u8 tmp;
  11308. + int i;
  11309. +
  11310. + /* initialize switches */
  11311. + tmp = read_switches();
  11312. + ruler_detect = ((tmp & 0xf0) == 0xf0) ? 0 : 1;
  11313. + tmp &= 0xf;
  11314. + atomic_set(&switches, tmp);
  11315. +
  11316. + /* initialize our timer */
  11317. + init_timer(&cobalt_ruler_timer);
  11318. + cobalt_ruler_timer.function = ruler_timer_fn;
  11319. +
  11320. + printk(KERN_INFO "%s %d.%d (modified by jeff@404ster.com)\n", RULER_DRIVER,RULER_DRIVER_VMAJ,RULER_DRIVER_VMIN);
  11321. +
  11322. +#ifdef CONFIG_COBALT_ACPI
  11323. + err = cobalt_acpi_register_evt_handler(ruler_interrupt,
  11324. + COBALT_ACPI_EVT_SLED, NULL );
  11325. +
  11326. + if (err) {
  11327. + EPRINTK("can't register interrupt handler %p\n",
  11328. + ruler_interrupt);
  11329. + }
  11330. +#endif
  11331. +
  11332. + /* set initial sled LED state */
  11333. + set_sled_leds(LED_SLED0 | LED_SLED1 | LED_SLED2 | LED_SLED3);
  11334. +
  11335. + /* run through any devices that were registered before */
  11336. + for (i = 0; i < MAX_COBT_DRIVES; i++) {
  11337. + if (channels[i]) {
  11338. + ruler_hwif_added(HWIF(channels[i]), i);
  11339. + }
  11340. + }
  11341. +
  11342. +#if defined(CONFIG_COBALT_LED)
  11343. + /* register for a blinky LEDs callback */
  11344. + err = cobalt_fpled_register(ide_led_handler, NULL);
  11345. + if (err) {
  11346. + EPRINTK("can't register LED handler %p\n",
  11347. + ide_led_handler);
  11348. + }
  11349. +#endif
  11350. + }
  11351. +
  11352. + initialized = 1;
  11353. +
  11354. + return 0;
  11355. +}
  11356. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/sensors.c linux-3.2.5-cobalt/drivers/cobalt/sensors.c
  11357. --- linux-3.2.5/drivers/cobalt/sensors.c 1969-12-31 16:00:00.000000000 -0800
  11358. +++ linux-3.2.5-cobalt/drivers/cobalt/sensors.c 2012-02-06 21:34:59.000000000 -0800
  11359. @@ -0,0 +1,525 @@
  11360. +/* $Id: sensors.c,v 1.31 2002/08/29 00:33:01 uzi Exp $
  11361. + * Copyright (c) 2000-2001 Sun Microsystems, Inc
  11362. + *
  11363. + *
  11364. + * This should be SMP safe. There is just one race - the read in /proc.
  11365. + * It now guards against itself with a semaphore. Note that we don't use a
  11366. + * spinlock because any of the methods may (and do!) block.
  11367. + */
  11368. +#ifdef CONFIG_COBALT_SENSORS
  11369. +
  11370. +#include <stdarg.h>
  11371. +#include <stddef.h>
  11372. +
  11373. +#include <linux/init.h>
  11374. +#include <linux/sched.h>
  11375. +#include <linux/timer.h>
  11376. +#include <linux/delay.h>
  11377. +#include <linux/ctype.h>
  11378. +#include <linux/proc_fs.h>
  11379. +
  11380. +#include <asm/io.h>
  11381. +#include <asm/uaccess.h>
  11382. +
  11383. +#include <cobalt/cobalt.h>
  11384. +#include <cobalt/systype.h>
  11385. +#include <cobalt/i2c.h>
  11386. +#include <cobalt/sensors.h>
  11387. +#include <cobalt/acpi.h>
  11388. +
  11389. +#define SENS_DRIVER "Cobalt Networks Sensor driver"
  11390. +#define SENS_DRIVER_VMAJ 1
  11391. +#define SENS_DRIVER_VMIN 0
  11392. +
  11393. +/* externals */
  11394. +unsigned int cobalt_nthermals;
  11395. +unsigned int cobalt_nvoltages;
  11396. +
  11397. +/* data about a sensor for generic handling */
  11398. +/* we could add data about a low/high range, if needed */
  11399. +struct sensor {
  11400. + int sensor; /* sensor #, so maps can be logically ordered */
  11401. + char *desc;
  11402. + int last_val;
  11403. + unsigned long cache;
  11404. + unsigned long cache_timeout;
  11405. + /* pre/post hook - 1 for pre, 0 for post */
  11406. + void (*setup)(struct sensor *s, int pre);
  11407. + /* read as an int, to be passed to format() */
  11408. + int (*read)(struct sensor *s);
  11409. + /* hook for scaling values */
  11410. + int (*scale)(struct sensor *s, int val);
  11411. + /* format the value as a string */
  11412. + char *(*format)(struct sensor *s, int val, char *buf, int len);
  11413. +};
  11414. +
  11415. +/* some stuff for generic formatting */
  11416. +#define DEC_SCALAR 100
  11417. +static char *decimal_format(struct sensor *s, int val, char *buf, int len);
  11418. +
  11419. +static DEFINE_SEMAPHORE(sensor_sem);
  11420. +static struct sensor *therm_map;
  11421. +static struct sensor *volt_map;
  11422. +
  11423. +#define CACHE_DEF 30
  11424. +
  11425. +#ifdef CONFIG_PROC_FS
  11426. +static struct proc_dir_entry *proc_csensors;
  11427. +static struct proc_dir_entry *proc_therm;
  11428. +static struct proc_dir_entry *proc_volt;
  11429. +static int therm_read_proc(char *buf, char **start, off_t pos, int len,
  11430. + int *eof, void *x);
  11431. +static int therm_write_proc(struct file *file, const char *buf,
  11432. + unsigned long len, void *x);
  11433. +static int volt_read_proc(char *buf, char **start, off_t pos, int len,
  11434. + int *eof, void *x);
  11435. +static int volt_write_proc(struct file *file, const char *buf,
  11436. + unsigned long len, void *x);
  11437. +#endif
  11438. +
  11439. +static int lm77_therm_read(struct sensor *s);
  11440. +static int adm1029_init(void);
  11441. +static int adm1029_therm_read(struct sensor *s);
  11442. +static int adm1029_volt_read(struct sensor *s);
  11443. +static int alpine_vcore_scale(struct sensor *s, int val);
  11444. +static void alpine_vbat_switch(struct sensor *s, int pre);
  11445. +static int alpine_vbat_scale(struct sensor *s, int val);
  11446. +
  11447. +/* sensor name mappings */
  11448. +static struct sensor gen3_therm_map[] = {
  11449. + {0, "CPU", 0, 0, CACHE_DEF, NULL, lm77_therm_read, NULL, decimal_format},
  11450. +};
  11451. +static struct sensor monterey_therm_map[] = {
  11452. + {0, "CPU0", 0, 0, CACHE_DEF, NULL, lm77_therm_read, NULL, decimal_format},
  11453. + {1, "CPU1", 0, 0, CACHE_DEF, NULL, lm77_therm_read, NULL, decimal_format},
  11454. + {2, "Case0", 0, 0, CACHE_DEF, NULL, lm77_therm_read, NULL, decimal_format},
  11455. + {3, "Case1", 0, 0, CACHE_DEF, NULL, lm77_therm_read, NULL, decimal_format},
  11456. +};
  11457. +static struct sensor alpine_therm_map[] = {
  11458. + {1, "CPU", 0, 0, CACHE_DEF, NULL, adm1029_therm_read, NULL, decimal_format},
  11459. + {0, "Case", 0, 0, CACHE_DEF, NULL, adm1029_therm_read, NULL, decimal_format},
  11460. +};
  11461. +static struct sensor alpine_volt_map[] = {
  11462. + {0, "Vcore", 0, 0, CACHE_DEF, NULL, adm1029_volt_read,
  11463. + alpine_vcore_scale, decimal_format},
  11464. + {1, "Vtt", 0, 0, CACHE_DEF, NULL, adm1029_volt_read, NULL, decimal_format},
  11465. + {0, "Vbat", 0, 0, CACHE_DEF<<10, alpine_vbat_switch, adm1029_volt_read,
  11466. + alpine_vbat_scale, decimal_format},
  11467. +};
  11468. +
  11469. +int __init
  11470. +cobalt_sensors_init(void)
  11471. +{
  11472. + if (cobt_is_3k()) {
  11473. + cobalt_nthermals = 1;
  11474. + cobalt_nvoltages = 0;
  11475. + therm_map = gen3_therm_map;
  11476. + } else if (cobt_is_monterey()) {
  11477. + cobalt_nthermals = 4;
  11478. + cobalt_nvoltages = 0;
  11479. + therm_map = monterey_therm_map;
  11480. + } else if (cobt_is_alpine()) {
  11481. + cobalt_nthermals = 2;
  11482. + cobalt_nvoltages = 3;
  11483. + therm_map = alpine_therm_map;
  11484. + volt_map = alpine_volt_map;
  11485. + adm1029_init();
  11486. + } else {
  11487. + return -1;
  11488. + }
  11489. +
  11490. + printk(KERN_INFO "%s %d.%d (modified by jeff@404ster.com, further modified by dave.studeman@raqcop.com)\n", SENS_DRIVER,SENS_DRIVER_VMAJ,SENS_DRIVER_VMIN);
  11491. +
  11492. +#ifdef CONFIG_PROC_FS
  11493. + /* make files in /proc */
  11494. + proc_csensors = proc_mkdir("sensors", proc_cobalt);
  11495. + if (!proc_csensors) {
  11496. + EPRINTK("can't create /proc/cobalt/sensors\n");
  11497. + return -1;
  11498. + }
  11499. + if (cobalt_nthermals) {
  11500. + proc_therm = create_proc_entry("thermal",
  11501. + S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH,
  11502. + proc_csensors);
  11503. + if (!proc_therm) {
  11504. + EPRINTK("can't create /proc/cobalt/sensors/thermal\n");
  11505. + }
  11506. + proc_therm->read_proc = therm_read_proc;
  11507. + proc_therm->write_proc = therm_write_proc;
  11508. + }
  11509. + if (cobalt_nvoltages) {
  11510. + proc_volt = create_proc_entry("voltage",
  11511. + S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH,
  11512. + proc_csensors);
  11513. + if (!proc_volt) {
  11514. + EPRINTK("can't create /proc/cobalt/sensors/voltage\n");
  11515. + }
  11516. + proc_volt->read_proc = volt_read_proc;
  11517. + proc_volt->write_proc = volt_write_proc;
  11518. +
  11519. + }
  11520. +#endif
  11521. +
  11522. + return 0;
  11523. +}
  11524. +
  11525. +static char *
  11526. +sensor_read(struct sensor *s, char *buf, int len)
  11527. +{
  11528. + int val;
  11529. +
  11530. + if (s->cache && time_after(s->cache_timeout*HZ + s->cache, jiffies))
  11531. + val = s->last_val;
  11532. + else {
  11533. + if (s->setup) s->setup(s, 1);
  11534. + val = s->read(s);
  11535. + s->last_val = val;
  11536. + s->cache = jiffies;
  11537. + if (s->setup) s->setup(s, 0);
  11538. + }
  11539. +
  11540. + if (s->scale) val = s->scale(s, val);
  11541. + return s->format(s, val, buf, len);
  11542. +}
  11543. +
  11544. +/* exported - nicer inline functions in header */
  11545. +char *
  11546. +__cobalt_thermal_read(unsigned int idx, char *buf, int len)
  11547. +{
  11548. + if (idx >= cobalt_nthermals || !buf) {
  11549. + return NULL;
  11550. + }
  11551. +
  11552. + return sensor_read(&therm_map[idx], buf, len);
  11553. +}
  11554. +
  11555. +/* exported - nicer inline functions in header */
  11556. +char *
  11557. +__cobalt_voltage_read(unsigned int idx, char *buf, int len)
  11558. +{
  11559. + if (idx >= cobalt_nvoltages || !buf) {
  11560. + return NULL;
  11561. + }
  11562. +
  11563. + return sensor_read(&volt_map[idx], buf, len);
  11564. +}
  11565. +
  11566. +/* generic function for formatting decimal scaled data */
  11567. +static char *
  11568. +decimal_format(struct sensor *s, int val, char *buf, int len)
  11569. +{
  11570. + int plen;
  11571. +
  11572. + if (!buf || len <= 0) {
  11573. + return NULL;
  11574. + }
  11575. +
  11576. + plen = snprintf(buf, len, "%d", val/DEC_SCALAR);
  11577. + len -= plen;
  11578. +
  11579. + if (val % DEC_SCALAR && len > 0) {
  11580. + snprintf(buf+plen, len, ".%02d", val%DEC_SCALAR);
  11581. + }
  11582. +
  11583. + return buf;
  11584. +}
  11585. +
  11586. +#define LM77_TEMP 0x0
  11587. +static int
  11588. +lm77_therm_read(struct sensor *s)
  11589. +{
  11590. + int sensor = s->sensor;
  11591. + int tmp;
  11592. + int val = 0;
  11593. + int tries = 2;
  11594. +
  11595. + /* sometimes it reads as zero... try again */
  11596. + while (tries--) {
  11597. + /* LM77 returns the bytes backwards - <shrug> */
  11598. + /* address = base + deviceid + 1 for read */
  11599. + val = cobalt_i2c_read_word(COBALT_I2C_DEV_LM77 +
  11600. + (sensor<<1) + 1, LM77_TEMP);
  11601. + if (val < 0) {
  11602. + /* read failed, return the last known value */
  11603. + return s->last_val;
  11604. + }
  11605. +
  11606. + tmp = (val<<8 & 0xff00) + (val>>8 & 0x00ff);
  11607. + if (tmp) {
  11608. + val = tmp >> 4;
  11609. + val *= DEC_SCALAR;
  11610. + if (tmp & 0x8) {
  11611. + val += DEC_SCALAR/2;
  11612. + }
  11613. + break;
  11614. + }
  11615. + }
  11616. + return val;
  11617. +}
  11618. +
  11619. +#define ADM1029_CTL_CFAULT_OVER 0x01
  11620. +#define ADM1029_CTL_ALARM_OVER 0x02
  11621. +#define ADM1029_CTL_INT_OVER 0x04
  11622. +#define ADM1029_CTL_ALARM_LOW 0x08
  11623. +#define ADM1029_CTL_CFAULT_UNDER 0x10
  11624. +#define ADM1029_CTL_ALARM_UNDER 0x20
  11625. +#define ADM1029_CTL_INT_UNDER 0x40
  11626. +#define ADM1029_CTL_LATCH 0x80
  11627. +
  11628. +#define ADM1029_FAN_CTL(i) (0x18 + i)
  11629. +#define ADM1029_TEMP_CTL(i) (0x40 + i)
  11630. +#define ADM1029_AIN_CTL(i) (0x50 + i)
  11631. +
  11632. +#define ADM1029_TEMP_HIGH(i) (0x90 + i)
  11633. +#define ADM1029_TEMP_LOW(i) (0x98 + i)
  11634. +#define ADM1029_AIN_HIGH(i) (0xa8 + i)
  11635. +#define ADM1029_AIN_LOW(i) (0xb0 + i)
  11636. +
  11637. +#define ADM1029_TEMP_VALUE(i) (0xa0 + i)
  11638. +#define ADM1029_AIN_VALUE(i) (0xb8 + i)
  11639. +
  11640. +#ifdef CONFIG_COBALT_ACPI
  11641. +static int
  11642. +adm1029_handler(cobalt_acpi_evt *evt, void * data)
  11643. +{
  11644. + int j, k;
  11645. +
  11646. + switch (evt->ev_type) {
  11647. + case COBALT_ACPI_EVT_SM_INT:
  11648. + evt->ev_data = 0;
  11649. + evt->ev_type = COBALT_ACPI_EVT_VOLT;
  11650. + for (j=0; j<cobalt_nvoltages; j++) {
  11651. + k = cobalt_i2c_read_byte(COBALT_I2C_DEV_ADM1029,
  11652. + ADM1029_AIN_CTL(volt_map[j].sensor));
  11653. + if (k & ADM1029_CTL_LATCH) {
  11654. + evt->ev_data |= (1 << j);
  11655. + volt_map[j].cache = 0;
  11656. + }
  11657. + }
  11658. + break;
  11659. +
  11660. + case COBALT_ACPI_EVT_THERM:
  11661. + evt->ev_data = 0;
  11662. + for (j=0; j<cobalt_nthermals; j++) {
  11663. + k = cobalt_i2c_read_byte(COBALT_I2C_DEV_ADM1029,
  11664. + ADM1029_TEMP_CTL(therm_map[j].sensor));
  11665. + if (k & ADM1029_CTL_LATCH) {
  11666. + evt->ev_data |= (1 << j);
  11667. + therm_map[j].cache = 0;
  11668. + }
  11669. + }
  11670. + break;
  11671. +
  11672. + default:
  11673. + return -1;
  11674. + }
  11675. + return 0;
  11676. +}
  11677. +#endif /* CONFIG_COBALT_ACPI */
  11678. +
  11679. +static int
  11680. +adm1029_init(void)
  11681. +{
  11682. +
  11683. +#ifdef CONFIG_COBALT_ACPI
  11684. + cobalt_acpi_register_evt_handler(adm1029_handler,
  11685. + COBALT_ACPI_EVT_THERM, NULL);
  11686. + cobalt_acpi_register_evt_handler(adm1029_handler,
  11687. + COBALT_ACPI_EVT_SM_INT, NULL);
  11688. +#endif
  11689. +
  11690. + return 0;
  11691. +}
  11692. +
  11693. +static int
  11694. +adm1029_therm_read(struct sensor *s)
  11695. +{
  11696. + int sensor = s->sensor;
  11697. + int val;
  11698. +
  11699. + val = cobalt_i2c_read_byte(COBALT_I2C_DEV_ADM1029,
  11700. + ADM1029_TEMP_VALUE(sensor));
  11701. +
  11702. + if (val < 0) {
  11703. + /* read failed, return the last known value */
  11704. + return s->last_val;
  11705. + }
  11706. + if (val & 0x80) {
  11707. + val -= 256;
  11708. + }
  11709. + val *= DEC_SCALAR;
  11710. +
  11711. + return val;
  11712. +}
  11713. +
  11714. +static int
  11715. +adm1029_volt_read(struct sensor *s)
  11716. +{
  11717. + int sensor = s->sensor;
  11718. + int val;
  11719. +
  11720. + val = cobalt_i2c_read_byte(COBALT_I2C_DEV_ADM1029,
  11721. + ADM1029_AIN_VALUE(sensor));
  11722. + if (val < 0) {
  11723. + /* read failed, return the last known value */
  11724. + return s->last_val;
  11725. + }
  11726. +
  11727. + /* already scaled by 100 */
  11728. + val *= DEC_SCALAR/100;
  11729. +
  11730. + return val;
  11731. +}
  11732. +
  11733. +static int
  11734. +alpine_vcore_scale(struct sensor *s, int val)
  11735. +{
  11736. + /* the measured Vbat switch cost is negligable
  11737. + * due to very low current through the diode */
  11738. + return val;
  11739. +}
  11740. +
  11741. +#define VBAT_REG 0x608
  11742. +#define VBAT_BIT 0x1
  11743. +static void
  11744. +alpine_vbat_switch(struct sensor *s, int pre)
  11745. +{
  11746. + unsigned char v = inb(VBAT_REG);
  11747. + unsigned long j = jiffies;
  11748. +
  11749. + if (pre) {
  11750. + v |= VBAT_BIT;
  11751. + /*
  11752. + * disable AIN0 INT# assertion before switching to
  11753. + * Vbat because the input is shared with Vcore and
  11754. + * their acceptable ranges are very different.
  11755. + */
  11756. + cobalt_i2c_write_byte(COBALT_I2C_DEV_ADM1029,
  11757. + ADM1029_AIN_CTL(s->sensor), 0x0);
  11758. + } else {
  11759. + v &= ~VBAT_BIT;
  11760. + }
  11761. +
  11762. + outb(v, VBAT_REG);
  11763. +
  11764. + /*
  11765. + * wait for the round-robin monitor to complete a cycle
  11766. + * before _and_ after toggling Vbat switch, otherwise
  11767. + * stale data in AIN0 will trigger INT# assertion.
  11768. + */
  11769. + while ((jiffies - j) < HZ) {
  11770. + /* block for ~ 1sec */
  11771. + set_current_state(TASK_INTERRUPTIBLE);
  11772. + schedule_timeout(HZ);
  11773. + }
  11774. +
  11775. + if (!pre) {
  11776. + /*
  11777. + * now re-enable INT# assertion capability for AIN0
  11778. + * (this also clears the AIN0 fault latch at bit 7)
  11779. + */
  11780. + cobalt_i2c_write_byte(COBALT_I2C_DEV_ADM1029,
  11781. + ADM1029_AIN_CTL(s->sensor),
  11782. + ADM1029_CTL_INT_OVER | ADM1029_CTL_INT_UNDER);
  11783. + }
  11784. +}
  11785. +
  11786. +static int
  11787. +alpine_vbat_scale(struct sensor *s, int val)
  11788. +{
  11789. + /*
  11790. + * The spec says 2.5V max - but empirically, 3.3V works :)
  11791. + * The Vbat switch costs 0.3 volts
  11792. + */
  11793. + if (val) val += (3 * DEC_SCALAR)/10;
  11794. +
  11795. + return val;
  11796. +}
  11797. +
  11798. +#ifdef CONFIG_PROC_FS
  11799. +static int
  11800. +sensor_write_proc(int nsensors, struct sensor *map,
  11801. + struct file *file, const char *buf, unsigned long len, void *x)
  11802. +{
  11803. + char *pg;
  11804. +
  11805. + if (len > PAGE_SIZE) {
  11806. + return -EOVERFLOW;
  11807. + }
  11808. +
  11809. + pg = (char *)__get_free_page(GFP_KERNEL);
  11810. + if (!pg) {
  11811. + return -ENOMEM;
  11812. + }
  11813. +
  11814. + if (copy_from_user(pg, buf, len)) {
  11815. + free_page((unsigned long)pg);
  11816. + return -EFAULT;
  11817. + }
  11818. + pg[len] = '\0';
  11819. +
  11820. + /* format: `cache_timeout #' in seconds */
  11821. + if (len>15 && !strncmp("cache_timeout ", pg, 14) && isdigit(*(pg+14))) {
  11822. + unsigned long i, sec = simple_strtoul(pg+14, NULL, 0);
  11823. + for (i=0; i<nsensors; i++)
  11824. + map[i].cache_timeout = sec;
  11825. + }
  11826. +
  11827. + free_page((unsigned long)pg);
  11828. + return len;
  11829. +}
  11830. +
  11831. +static int
  11832. +sensor_read_proc(int nsensors, struct sensor *map,
  11833. + char *buf, char **start, off_t pos, int len, int *eof, void *x)
  11834. +{
  11835. + int i;
  11836. + static int plen = 0;
  11837. +
  11838. + down(&sensor_sem);
  11839. +
  11840. + /* remember how big our last read was to avoid read() calling twice */
  11841. + if (pos && pos >= plen) {
  11842. + *eof = 1;
  11843. + up(&sensor_sem);
  11844. + return 0;
  11845. + }
  11846. +
  11847. + plen = 0;
  11848. + for (i = 0; i < nsensors; i++) {
  11849. + char sbuf[32];
  11850. + if (sensor_read(&map[i], sbuf, sizeof(sbuf)))
  11851. + plen += sprintf(buf+plen, "%d [%s]: %s\n", i, map[i].desc, sbuf);
  11852. + }
  11853. +
  11854. + up(&sensor_sem);
  11855. +
  11856. + return cobalt_gen_proc_read(buf, plen, start, pos, len, eof);
  11857. +}
  11858. +
  11859. +static int
  11860. +therm_read_proc(char *buf, char **start, off_t pos, int len, int *eof, void *x)
  11861. +{
  11862. + return sensor_read_proc(cobalt_nthermals, therm_map,
  11863. + buf, start, pos, len, eof, x);
  11864. +}
  11865. +static int
  11866. +therm_write_proc(struct file *file, const char *buf, unsigned long len, void *x)
  11867. +{
  11868. + return sensor_write_proc(cobalt_nthermals, therm_map, file, buf, len, x);
  11869. +}
  11870. +
  11871. +static int
  11872. +volt_read_proc(char *buf, char **start, off_t pos, int len, int *eof, void *x)
  11873. +{
  11874. + return sensor_read_proc(cobalt_nvoltages, volt_map,
  11875. + buf, start, pos, len, eof, x);
  11876. +}
  11877. +static int
  11878. +volt_write_proc(struct file *file, const char *buf, unsigned long len, void *x)
  11879. +{
  11880. + return sensor_write_proc(cobalt_nvoltages, volt_map, file, buf, len, x);
  11881. +}
  11882. +#endif /* CONFIG_PROC_FS */
  11883. +
  11884. +#endif /* CONFIG_COBALT_SENSORS */
  11885. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/serialnum.c linux-3.2.5-cobalt/drivers/cobalt/serialnum.c
  11886. --- linux-3.2.5/drivers/cobalt/serialnum.c 1969-12-31 16:00:00.000000000 -0800
  11887. +++ linux-3.2.5-cobalt/drivers/cobalt/serialnum.c 2012-02-06 21:34:59.000000000 -0800
  11888. @@ -0,0 +1,452 @@
  11889. +/* $Id: serialnum.c,v 1.15 2001/10/23 20:15:27 thockin Exp $ */
  11890. +/*
  11891. + *
  11892. + * Author: Philip Gladstone, Axent Technologies
  11893. + * modified for Nat Semi PC[89]7317 by asun@cobalt.com
  11894. + * ported to 2.4.x by thockin@sun.com
  11895. + * alpine serial eeprom by erik.glling@sun.com
  11896. + * Copyright (c) 2000 Axent Technologies, Cobalt Networks
  11897. + * Copyright (c) 2001 Axent Technologies, Sun Microsystems
  11898. + *
  11899. + * This module interrogates the DS2401 Silicon Serial Number chip
  11900. + * that is attached to all x86 Cobalt systems.
  11901. + *
  11902. + * It exports /proc/cobalt/hostid which is four bytes generated from of
  11903. + * the id. It can be linked to /var/adm/hostid or /etc/hostid for the
  11904. + * hostid command to use.
  11905. + *
  11906. + * It exports /proc/cobalt/serialnumber which is the entire 64 bit value
  11907. + * read back (in ascii).
  11908. + *
  11909. + * For the guts of the 1 wire protocol used herein, please see the DS2401
  11910. + * specification.
  11911. + *
  11912. + * This program is free software; you can redistribute it and/or modify
  11913. + * it under the terms of the GNU General Public License as published by
  11914. + * the Free Software Foundation; either version 2 of the License, or
  11915. + * (at your option) any later version.
  11916. + *
  11917. + * This program is distributed in the hope that it will be useful,
  11918. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11919. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11920. + * GNU General Public License for more details.
  11921. + *
  11922. + * You should have received a copy of the GNU General Public License
  11923. + * along with this program; if not, write to the Free Software
  11924. + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  11925. + *
  11926. + * This driver is SMP safe by nature. --TPH
  11927. + */
  11928. +#if defined (CONFIG_COBALT_SERNUM) || defined(CONFIG_COBALT_SERNUM_MODULE)
  11929. +
  11930. +#include <linux/module.h>
  11931. +#include <linux/stddef.h>
  11932. +#include <linux/version.h>
  11933. +#include <linux/types.h>
  11934. +#include <linux/proc_fs.h>
  11935. +#include <linux/delay.h>
  11936. +#include <asm/uaccess.h>
  11937. +#include <linux/pci.h>
  11938. +#include <linux/init.h>
  11939. +#include <asm/io.h>
  11940. +
  11941. +#include <cobalt/cobalt.h>
  11942. +#include <cobalt/systype.h>
  11943. +#include <cobalt/superio.h>
  11944. +#include <cobalt/serialnum.h>
  11945. +#include <cobalt/i2c.h>
  11946. +
  11947. +#include <linux/interrupt.h>
  11948. +
  11949. +#define SN_DRIVER "Cobalt Networks Serial Number driver"
  11950. +#define SN_DRIVER_VMAJ 1
  11951. +#define SN_DRIVER_VMIN 6
  11952. +
  11953. +/* dependent on systype */
  11954. +static unsigned int sn_direction;
  11955. +static unsigned int sn_output;
  11956. +static unsigned int sn_input;
  11957. +static unsigned int sn_mask;
  11958. +
  11959. +/* 3k style systems */
  11960. +#define III_SN_DIRECTION 0x7d
  11961. +#define III_SN_OUTPUT 0x7e
  11962. +#define III_SN_INPUT 0x7f
  11963. +#define III_SN_MASK 0x08
  11964. +static struct pci_dev *id_dev;
  11965. +
  11966. +/* 5k style systems */
  11967. +#define V_SN_DIRECTION (sn_io_base + 0x01)
  11968. +#define V_SN_OUTPUT (sn_io_base + 0x00)
  11969. +#define V_SN_INPUT (sn_io_base + 0x00)
  11970. +#define V_SN_MASK (sn_io_base + 0x01)
  11971. +static unsigned int sn_io_base;
  11972. +
  11973. +#define SSN_SIZE 8 /* bytes */
  11974. +static char ssn_string[SSN_SIZE * 2 + 1];
  11975. +static unsigned long hostid;
  11976. +static int debug;
  11977. +#ifdef CONFIG_PROC_FS
  11978. +#ifdef CONFIG_COBALT_OLDPROC
  11979. +static struct proc_dir_entry *proc_hostid;
  11980. +static struct proc_dir_entry *proc_serialnum;
  11981. +#endif
  11982. +static struct proc_dir_entry *proc_chostid;
  11983. +static struct proc_dir_entry *proc_cserialnum;
  11984. +#endif
  11985. +
  11986. +static int
  11987. +hostid_read(char *buf, char **start, off_t pos, int len, int *eof, void *x)
  11988. +{
  11989. + int plen = sizeof(hostid);
  11990. + memcpy(buf, &hostid, sizeof(hostid));
  11991. + return cobalt_gen_proc_read(buf, plen, start, pos, len, eof);
  11992. +}
  11993. +
  11994. +static int
  11995. +serialnum_read(char *buf, char **start, off_t pos, int len, int *eof, void *x)
  11996. +{
  11997. + int plen = sizeof(ssn_string);
  11998. + sprintf(buf, "%s\n", ssn_string);
  11999. + return cobalt_gen_proc_read(buf, plen, start, pos, len, eof);
  12000. +}
  12001. +
  12002. +/* set up the requisite IO bits */
  12003. +static int __init
  12004. +io_init(void)
  12005. +{
  12006. + unsigned char data;
  12007. +
  12008. + if (cobt_is_3k()) {
  12009. + /* The GPIO tied to the ID chip is on the PMU */
  12010. + id_dev = pci_get_device(PCI_VENDOR_ID_AL,
  12011. + PCI_DEVICE_ID_AL_M7101, NULL);
  12012. + if (!id_dev) {
  12013. + EPRINTK("can't find PMU for serialnumber access\n");
  12014. + return -ENXIO;
  12015. + }
  12016. +
  12017. + /* Set input mode on GPIO3 */
  12018. + pci_read_config_byte(id_dev, sn_direction, &data);
  12019. + if (debug > 1) {
  12020. + WPRINTK("read of register 0x%x = 0x%x\n",
  12021. + sn_direction, data);
  12022. + }
  12023. + if (data & sn_mask) {
  12024. + pci_write_config_byte(id_dev, sn_direction,
  12025. + data & ~sn_mask);
  12026. + }
  12027. +
  12028. + /* Set the output value to be 0 */
  12029. + pci_read_config_byte(id_dev, sn_output, &data);
  12030. + if (debug > 1) {
  12031. + WPRINTK("read of register 0x%x = 0x%x\n",
  12032. + sn_output, data);
  12033. + }
  12034. + if (data & sn_mask) {
  12035. + pci_write_config_byte(id_dev, sn_output,
  12036. + data & ~sn_mask);
  12037. + }
  12038. + } else if (cobt_is_5k()) {
  12039. + u16 addr;
  12040. +
  12041. + addr = superio_ldev_base(PC87317_DEV_GPIO);
  12042. + if (addr) {
  12043. + u8 val;
  12044. +
  12045. + sn_io_base = addr;
  12046. +
  12047. + /* set output value to 0 */
  12048. + val = inb(sn_direction);
  12049. + outb(val | sn_mask, sn_direction);
  12050. + data = inb(sn_output);
  12051. + if (data & sn_mask) {
  12052. + outb(data & ~sn_mask, sn_output);
  12053. + }
  12054. + /* set to input */
  12055. + outb(val & ~sn_mask, sn_direction);
  12056. + }
  12057. + } else {
  12058. + return -ENXIO;
  12059. + }
  12060. +
  12061. + /* pick proper variables */
  12062. + if (cobt_is_3k()) {
  12063. + sn_direction = III_SN_DIRECTION;
  12064. + sn_output = III_SN_OUTPUT;
  12065. + sn_input = III_SN_INPUT;
  12066. + sn_mask = III_SN_MASK;
  12067. + } else if (cobt_is_5k()) {
  12068. + sn_direction = V_SN_DIRECTION;
  12069. + sn_output = V_SN_OUTPUT;
  12070. + sn_input = V_SN_INPUT;
  12071. + sn_mask = V_SN_MASK;
  12072. + } else {
  12073. + return -1;
  12074. + }
  12075. +
  12076. + /* Let things calm down */
  12077. + udelay(500);
  12078. + return 0;
  12079. +}
  12080. +
  12081. +/* write out a bit */
  12082. +static void __init
  12083. +io_write(int delay)
  12084. +{
  12085. + if (cobt_is_3k()) {
  12086. + unsigned char data;
  12087. + /* Set output mode on GPIO3 */
  12088. + pci_read_config_byte(id_dev, sn_direction, &data);
  12089. + pci_write_config_byte(id_dev, sn_direction, data | sn_mask);
  12090. + udelay(delay);
  12091. +
  12092. + /* Set input mode */
  12093. + pci_write_config_byte(id_dev, sn_direction, data & ~sn_mask);
  12094. + } else if (cobt_is_5k()) {
  12095. + unsigned char direction;
  12096. +
  12097. + /* change to output and back */
  12098. + direction = inb(sn_direction);
  12099. + outb(direction | sn_mask, sn_direction);
  12100. + udelay(delay);
  12101. + outb(direction & ~sn_mask, sn_direction);
  12102. + }
  12103. +}
  12104. +
  12105. +/* read in a bit */
  12106. +static int __init
  12107. +io_read(void)
  12108. +{
  12109. + unsigned char data = 0;
  12110. +
  12111. + /* Get the input value */
  12112. + if (cobt_is_3k()) {
  12113. + pci_read_config_byte(id_dev, sn_input, &data);
  12114. + } else if (cobt_is_5k()) {
  12115. + data = inb(sn_input);
  12116. + }
  12117. +
  12118. + return (data & sn_mask) ? 1 : 0;
  12119. +}
  12120. +
  12121. +static void __init
  12122. +io_write_byte(unsigned char c)
  12123. +{
  12124. + int i;
  12125. + unsigned long flags;
  12126. +
  12127. + local_save_flags(flags);
  12128. +
  12129. + for (i = 0; i < 8; i++, c >>= 1) {
  12130. + local_irq_disable();
  12131. + if (c & 1) {
  12132. + /* Transmit a 1 */
  12133. + io_write(5);
  12134. + udelay(80);
  12135. + } else {
  12136. + /* Transmit a 0 */
  12137. + io_write(80);
  12138. + udelay(10);
  12139. + }
  12140. + local_irq_restore(flags);
  12141. + }
  12142. +}
  12143. +
  12144. +static int __init
  12145. +io_read_byte(void)
  12146. +{
  12147. + int i;
  12148. + int c = 0;
  12149. + unsigned long flags;
  12150. +
  12151. + local_save_flags(flags);
  12152. +
  12153. + for (i = 0; i < 8; i++) {
  12154. + local_irq_disable();
  12155. + io_write(1); /* Start the read */
  12156. + udelay(2);
  12157. + if (io_read()) {
  12158. + c |= 1 << i;
  12159. + }
  12160. + udelay(60);
  12161. + local_irq_restore(flags);
  12162. + }
  12163. +
  12164. + return c;
  12165. +}
  12166. +
  12167. +static int __init
  12168. +get_ssn(unsigned char *buf)
  12169. +{
  12170. + int i;
  12171. + unsigned long flags;
  12172. +
  12173. + /*
  12174. + * Alpine does not have a dallas chip. Instead
  12175. + * we read from an eprom.
  12176. + */
  12177. + if (cobt_is_alpine()) {
  12178. + for (i = 0; i < 8; i++) {
  12179. + buf[i] = cobalt_i2c_read_byte(COBALT_I2C_DEV_AT24C02,
  12180. + 12 + i);
  12181. + }
  12182. + return 0;
  12183. + }
  12184. +
  12185. + /*
  12186. + * bit-bang the Dallas 2401
  12187. + */
  12188. +
  12189. + local_save_flags(flags);
  12190. + local_irq_disable();
  12191. +
  12192. + /* Master Reset Pulse */
  12193. + for (i = 0; i < 600; i += 30) {
  12194. + if (io_read()) {
  12195. + break;
  12196. + }
  12197. + }
  12198. +
  12199. + if (i >= 600) {
  12200. + if (debug) {
  12201. + EPRINTK("the data line seems to be held low\n");
  12202. + }
  12203. + local_irq_restore(flags);
  12204. + return -ENXIO;
  12205. + }
  12206. +
  12207. + io_write(600);
  12208. +
  12209. + for (i = 0; i < 300; i += 15) {
  12210. + udelay(15);
  12211. + if (io_read() == 0) {
  12212. + /* We got a presence pulse */
  12213. + udelay(600); /* Wait for things to quiet down */
  12214. + break;
  12215. + }
  12216. + }
  12217. + local_irq_restore(flags);
  12218. +
  12219. + if (i >= 300) {
  12220. + if (debug)
  12221. + EPRINTK("no presence pulse detected\n");
  12222. + return -ENXIO;
  12223. + }
  12224. +
  12225. + io_write_byte(0x33);
  12226. +
  12227. + for (i = 0; i < 8; i++) {
  12228. + int rc;
  12229. +
  12230. + rc = io_read_byte();
  12231. + if (rc < 0) {
  12232. + return rc;
  12233. + }
  12234. +
  12235. + *buf++ = rc;
  12236. + }
  12237. +
  12238. + return 0;
  12239. +}
  12240. +
  12241. +int __init
  12242. +cobalt_serialnum_init(void)
  12243. +{
  12244. + unsigned char ssn[SSN_SIZE];
  12245. + int rc;
  12246. + int i;
  12247. +
  12248. + printk(KERN_INFO "%s %d.%d (modified by jeff@404ster.com)\n", SN_DRIVER,SN_DRIVER_VMAJ,SN_DRIVER_VMIN);
  12249. + /* set up for proper IO */
  12250. + rc = io_init();
  12251. + if (rc) {
  12252. + return rc;
  12253. + }
  12254. +
  12255. + /*
  12256. + * NOTE: the below algorithm CAN NOT be changed. We have many systems
  12257. + * out there registered with the serial number AS DERIVED by this
  12258. + * algorithm.
  12259. + */
  12260. +
  12261. + rc = get_ssn(ssn);
  12262. + if (rc) {
  12263. + return rc;
  12264. + }
  12265. +
  12266. + /* Convert to ssn_string */
  12267. + for (i = 7; i >= 0; i--) {
  12268. + sprintf(ssn_string + (7 - i) * 2, "%02x", ssn[i]);
  12269. + }
  12270. +
  12271. + /* get four bytes for a pretty unique (not guaranteed) hostid */
  12272. + hostid = *(unsigned long *)ssn ^ *(unsigned long *)(ssn+4);
  12273. +
  12274. +#ifdef CONFIG_PROC_FS
  12275. +#ifdef CONFIG_COBALT_OLDPROC
  12276. + proc_hostid = create_proc_read_entry("hostid", 0, NULL,
  12277. + hostid_read, NULL);
  12278. + if (!proc_hostid) {
  12279. + EPRINTK("can't create /proc/hostid\n");
  12280. + }
  12281. + proc_serialnum = create_proc_read_entry("serialnumber", 0, NULL,
  12282. + serialnum_read, NULL);
  12283. + if (!proc_serialnum) {
  12284. + EPRINTK("can't create /proc/serialnumber\n");
  12285. + }
  12286. +#endif
  12287. + proc_chostid = create_proc_read_entry("hostid", 0, proc_cobalt,
  12288. + hostid_read, NULL);
  12289. + if (!proc_chostid) {
  12290. + EPRINTK("can't create /proc/cobalt/hostid\n");
  12291. + }
  12292. + proc_cserialnum = create_proc_read_entry("serialnumber", 0,
  12293. + proc_cobalt, serialnum_read, NULL);
  12294. + if (!proc_cserialnum) {
  12295. + EPRINTK("can't create /proc/cobalt/serialnumber\n");
  12296. + }
  12297. +#endif
  12298. +
  12299. + return 0;
  12300. +}
  12301. +
  12302. +char *
  12303. +cobalt_serialnum_get(void)
  12304. +{
  12305. + return ssn_string;
  12306. +}
  12307. +
  12308. +unsigned long
  12309. +cobalt_hostid_get(void)
  12310. +{
  12311. + return hostid;
  12312. +}
  12313. +
  12314. +#if defined(CONFIG_COBALT_SERNUM_MODULE)
  12315. +MODULE_PARM(debug, "i");
  12316. +
  12317. +int
  12318. +init_module(void)
  12319. +{
  12320. + return cobalt_serialnum_init();
  12321. +}
  12322. +
  12323. +void
  12324. +cleanup_module(void)
  12325. +{
  12326. +#ifdef CONFIG_PROC_FS
  12327. +#ifdef CONFIG_COBALT_OLDPROC
  12328. + remove_proc_entry("hostid", NULL);
  12329. + remove_proc_entry("serialnumber", NULL);
  12330. +#endif
  12331. + remove_proc_entry("hostid", proc_cobalt);
  12332. + remove_proc_entry("serialnumber", proc_cobalt);
  12333. +#endif
  12334. +}
  12335. +
  12336. +module_init(init_module);
  12337. +module_exit(cleanup_module);
  12338. +#endif /* MODULE */
  12339. +
  12340. +#endif /* CONFIG_COBALT_SERNUM */
  12341. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/systype.c linux-3.2.5-cobalt/drivers/cobalt/systype.c
  12342. --- linux-3.2.5/drivers/cobalt/systype.c 1969-12-31 16:00:00.000000000 -0800
  12343. +++ linux-3.2.5-cobalt/drivers/cobalt/systype.c 2012-02-06 21:34:59.000000000 -0800
  12344. @@ -0,0 +1,278 @@
  12345. +/*
  12346. + * $Id: systype.c,v 1.33 2002/11/04 17:54:15 thockin Exp $
  12347. + * systype.c : routines for figuring out which Cobalt system this is
  12348. + *
  12349. + * Copyright 2001-2002 Sun Microsystems, Inc.
  12350. + *
  12351. + * By: Tim Hockin
  12352. + * Adrian Sun
  12353. + * Duncan Laurie
  12354. + *
  12355. + * This driver is SMP safe by nature. --TPH
  12356. + */
  12357. +
  12358. +#include <linux/pci.h>
  12359. +#include <linux/init.h>
  12360. +#include <linux/proc_fs.h>
  12361. +#include <linux/module.h>
  12362. +
  12363. +#include <cobalt/cobalt.h>
  12364. +#include <cobalt/systype.h>
  12365. +#include <cobalt/i2c.h>
  12366. +
  12367. +/* for easy first-pass analysis */
  12368. +#if defined(CONFIG_COBALT_GEN_III)
  12369. +int COBALT_GENERATION_III_DEFINED;
  12370. +#endif
  12371. +#if defined(CONFIG_COBALT_GEN_V)
  12372. +int COBALT_GENERATION_V_DEFINED;
  12373. +#endif
  12374. +
  12375. +cobt_sys_t cobt_type = COBT_UNINITIALIZED;
  12376. +EXPORT_SYMBOL(cobt_type);
  12377. +unsigned long cobt_rev;
  12378. +EXPORT_SYMBOL(cobt_rev);
  12379. +
  12380. +#ifdef CONFIG_PROC_FS
  12381. +static struct proc_dir_entry *proc_systype;
  12382. +#endif
  12383. +static int systype_read_proc(char *buf, char **start, off_t pos, int len,
  12384. + int *eof, void *x);
  12385. +static char *systype_str(cobt_sys_t type);
  12386. +static unsigned long boardrev_read(void);
  12387. +
  12388. +void __init
  12389. +cobalt_boardrev_init(void)
  12390. +{
  12391. + cobt_rev = boardrev_read();
  12392. +}
  12393. +
  12394. +int __init
  12395. +cobalt_systype_init(void)
  12396. +{
  12397. + cobalt_systype_probe();
  12398. +
  12399. +#ifdef CONFIG_PROC_FS
  12400. + proc_systype = create_proc_read_entry("systype", 0,
  12401. + proc_cobalt, systype_read_proc, NULL);
  12402. + if (!proc_systype) {
  12403. + EPRINTK("can't create /proc/cobalt/systype\n");
  12404. + }
  12405. +#endif
  12406. +
  12407. + if (cobt_type == COBT_UNKNOWN) {
  12408. + printk(KERN_INFO "Cobalt system type is unknown, trouble will ensue (I can vouch for this)\n");
  12409. + return -1;
  12410. + } else {
  12411. + printk(KERN_INFO "Cobalt system type is %s\n",systype_str(cobt_type));
  12412. + return 0;
  12413. + }
  12414. +}
  12415. +
  12416. +#if defined(CONFIG_COBALT_GEN_III)
  12417. +static cobt_sys_t
  12418. +systype_probe_3k(void)
  12419. +{
  12420. + struct pci_dev *pdev;
  12421. + cobt_sys_t retval = COBT_UNKNOWN;
  12422. +
  12423. + /* board identifier for RaQ3/4 vs Qube3 is on the PMU @ 0x7f */
  12424. + pdev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, NULL);
  12425. + if (pdev) {
  12426. + /*
  12427. + * check to see what board we are on
  12428. + * ( RaQ 3, RaQ 4, Qube 3 )
  12429. + */
  12430. + unsigned char val;
  12431. +
  12432. + /* momentarily set DOGB# to input */
  12433. + pci_read_config_byte(pdev, 0x7d, &val);
  12434. + pci_write_config_byte(pdev, 0x7d, val & ~0x20);
  12435. +
  12436. + /* read the GPIO register */
  12437. + pci_read_config_byte(pdev, 0x7f, &val);
  12438. + /* RaQ3/4 boards have DOGB (0x20) high,
  12439. + * Qube3 has DOGB low */
  12440. + if (val & 0x20) {
  12441. + retval = COBT_PACIFICA;
  12442. + } else {
  12443. + retval = COBT_CARMEL;
  12444. + }
  12445. +
  12446. + /* change DOGB back to output */
  12447. + pci_read_config_byte(pdev, 0x7d, &val);
  12448. + pci_write_config_byte(pdev, 0x7d, val | 0x20);
  12449. + }
  12450. +
  12451. + /* assign to this, so the compiler shuts up */
  12452. + COBALT_GENERATION_III_DEFINED = 1;
  12453. +
  12454. + return retval;
  12455. +}
  12456. +#else
  12457. +#define systype_probe_3k() (COBT_UNKNOWN)
  12458. +#endif
  12459. +
  12460. +#if defined(CONFIG_COBALT_GEN_V)
  12461. +static cobt_sys_t
  12462. +systype_probe_5k(void)
  12463. +{
  12464. + struct pci_dev *pdev;
  12465. + cobt_sys_t retval = COBT_UNKNOWN;
  12466. +
  12467. + /* is it a gen V ? */
  12468. + pdev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  12469. + PCI_DEVICE_ID_SERVERWORKS_OSB4, NULL);
  12470. + if (pdev) {
  12471. + retval = COBT_MONTEREY;
  12472. + goto out;
  12473. + }
  12474. +
  12475. + pdev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  12476. + PCI_DEVICE_ID_SERVERWORKS_CSB5, NULL);
  12477. + if (pdev) {
  12478. + pdev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  12479. + PCI_DEVICE_ID_SERVERWORKS_LE, NULL);
  12480. + if (pdev) {
  12481. + retval = COBT_ALPINE;
  12482. + goto out;
  12483. + }
  12484. + }
  12485. +
  12486. +out:
  12487. + /* assign to this, so the compiler shuts up */
  12488. + COBALT_GENERATION_V_DEFINED = 1;
  12489. +
  12490. + return retval;
  12491. +}
  12492. +#else
  12493. +#define systype_probe_5k() (COBT_UNKNOWN)
  12494. +#endif
  12495. +
  12496. +static cobt_sys_t
  12497. +systype_probe_gp(void)
  12498. +{
  12499. + struct pci_dev *pdev;
  12500. + cobt_sys_t retval = COBT_UNKNOWN;
  12501. +
  12502. + /* is it a GP system? */
  12503. + pdev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  12504. + PCI_DEVICE_ID_SERVERWORKS_CSB5, NULL);
  12505. + if (pdev) {
  12506. + pdev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
  12507. + PCI_DEVICE_ID_SERVERWORKS_HE, NULL);
  12508. + if (pdev) {
  12509. + retval = COBT_BIGBEAR;
  12510. + }
  12511. + }
  12512. +
  12513. + return retval;
  12514. +}
  12515. +
  12516. +cobt_sys_t
  12517. +cobalt_systype_probe(void)
  12518. +{
  12519. + static int init_done = 0;
  12520. +
  12521. + if (init_done) {
  12522. + return cobt_type;
  12523. + }
  12524. +
  12525. + /* check for 3k family systems */
  12526. +
  12527. + cobt_type = systype_probe_3k();
  12528. + if (cobt_type != COBT_UNKNOWN)
  12529. + goto out;
  12530. +
  12531. + /* check for 5k family systems */
  12532. + cobt_type = systype_probe_5k();
  12533. + if (cobt_type != COBT_UNKNOWN)
  12534. + goto out;
  12535. +
  12536. + /* it's a GP system or unknown */
  12537. + cobt_type = systype_probe_gp();
  12538. +
  12539. +out:
  12540. + if (cobt_type != COBT_UNKNOWN) {
  12541. + init_done = 1;
  12542. + }
  12543. +
  12544. + return cobt_type;
  12545. +}
  12546. +EXPORT_SYMBOL(cobalt_systype_probe);
  12547. +
  12548. +#ifdef CONFIG_PROC_FS
  12549. +static int
  12550. +systype_read_proc(char *buf, char **start, off_t pos, int len,
  12551. + int *eof, void *x)
  12552. +{
  12553. + int plen = sprintf(buf, "%s\n", systype_str(cobt_type));
  12554. + return cobalt_gen_proc_read(buf, plen, start, pos, len, eof);
  12555. +}
  12556. +#endif
  12557. +
  12558. +static char *
  12559. +systype_str(cobt_sys_t type)
  12560. +{
  12561. + switch (type) {
  12562. + case COBT_PACIFICA:
  12563. + return "Pacifica";
  12564. + break;
  12565. + case COBT_CARMEL:
  12566. + return "Carmel";
  12567. + break;
  12568. + case COBT_MONTEREY:
  12569. + return "Monterey";
  12570. + break;
  12571. + case COBT_ALPINE:
  12572. + return "Alpine";
  12573. + break;
  12574. + case COBT_BIGBEAR:
  12575. + return "BigBear";
  12576. + break;
  12577. + case COBT_UNKNOWN:
  12578. + default:
  12579. + return "unknown";
  12580. + break;
  12581. + }
  12582. +}
  12583. +
  12584. +static unsigned long
  12585. +boardrev_read(void)
  12586. +{
  12587. + unsigned long rev;
  12588. +
  12589. + switch (cobt_type) {
  12590. +#ifdef CONFIG_COBALT_RAQ
  12591. + case COBT_PACIFICA:
  12592. + case COBT_CARMEL:
  12593. + /* No usable board rev on these systems */
  12594. + return 0;
  12595. + case COBT_MONTEREY:
  12596. + /*
  12597. + * the boardrev on monterey is strapped off of GPM[3:0]
  12598. + * and is read from port 0xc52
  12599. + */
  12600. + return inb(0xc52);
  12601. + case COBT_ALPINE:
  12602. + /*
  12603. + * the boardrev on alpine in stored in the i2c eeprom
  12604. + * location 4
  12605. + */
  12606. + rev = cobalt_i2c_read_byte(COBALT_I2C_DEV_AT24C02, 0x04);
  12607. + rev |= cobalt_i2c_read_byte(COBALT_I2C_DEV_AT24C02, 0x05) << 8;
  12608. + rev |= cobalt_i2c_read_byte(COBALT_I2C_DEV_AT24C02, 0x06) << 16;
  12609. + rev |= cobalt_i2c_read_byte(COBALT_I2C_DEV_AT24C02, 0x07) << 24;
  12610. + if (rev == 0xffffffff)
  12611. + rev = 0;
  12612. + return rev;
  12613. +#endif
  12614. + case COBT_BIGBEAR:
  12615. + /* No board revs at this time */
  12616. + return 0;
  12617. + case COBT_UNKNOWN:
  12618. + case COBT_UNINITIALIZED:
  12619. + return 0;
  12620. + }
  12621. + return 0;
  12622. +}
  12623. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/cobalt/wdt.c linux-3.2.5-cobalt/drivers/cobalt/wdt.c
  12624. --- linux-3.2.5/drivers/cobalt/wdt.c 1969-12-31 16:00:00.000000000 -0800
  12625. +++ linux-3.2.5-cobalt/drivers/cobalt/wdt.c 2012-02-06 21:34:59.000000000 -0800
  12626. @@ -0,0 +1,421 @@
  12627. +/* $Id: wdt.c,v 1.21 2002/07/02 00:38:17 asun Exp $ */
  12628. +/*
  12629. + * Cobalt kernel WDT timer driver
  12630. + * Tim Hockin <thockin@cobaltnet.com>
  12631. + * Adrian Sun <asun@cobalt.com>
  12632. + * Chris Johnson <cjohnson@cobalt.com>
  12633. + * Copyright (c)1999-2000, Cobalt Networks
  12634. + * Copyright (c)2001, Sun Microsystems
  12635. + *
  12636. + * This should be SMP safe. Every external function (except trigger_reboot)
  12637. + * grabs the wdt lock. No function in this file may call any exported
  12638. + * function (excepting trigger_reboot). The disable counter is an atomic, so
  12639. + * there should be no issues there. --TPH
  12640. + */
  12641. +#include <linux/module.h>
  12642. +#include <stdarg.h>
  12643. +#include <stddef.h>
  12644. +#include <linux/init.h>
  12645. +#include <linux/sched.h>
  12646. +#include <linux/timer.h>
  12647. +#include <linux/pci.h>
  12648. +#include <linux/delay.h>
  12649. +#include <asm/io.h>
  12650. +#include <asm/msr.h>
  12651. +
  12652. +#include <cobalt/cobalt.h>
  12653. +#include <cobalt/systype.h>
  12654. +#include <cobalt/wdt.h>
  12655. +#include <cobalt/superio.h>
  12656. +
  12657. +#define DOGB 0x20
  12658. +#define ALI_7101_WDT 0x92
  12659. +#define ALI_WDT_ARM 0x01
  12660. +#define WDT_3K_TIMEOUT (HZ >> 4) /* 1/16 second */
  12661. +
  12662. +#define WDT_SUPERIO_TIMEOUT (0x01) /* 1 minute */
  12663. +#define WDT_5K_TIMEOUT (HZ << 3) /* 8 seconds */
  12664. +
  12665. +#define WDT_DRIVER "Cobalt Networks Watchdog Timer driver"
  12666. +#define WDT_DRIVER_VMAJ 1
  12667. +#define WDT_DRIVER_VMIN 0
  12668. +
  12669. +static unsigned long wdt_timeout;
  12670. +static unsigned long long tsc_per_wdt;
  12671. +static int initialized;
  12672. +
  12673. +#ifdef CONFIG_COBALT_WDT
  12674. +struct timer_list cobalt_wdt_timer;
  12675. +static atomic_t cobalt_wdt_disable_count = ATOMIC_INIT(0);
  12676. +static DEFINE_SPINLOCK(spinlock_t wdt_lock);
  12677. +#endif
  12678. +
  12679. +/* gen III */
  12680. +static struct pci_dev *cobalt_pmu;
  12681. +static int use_pic;
  12682. +/* gen V */
  12683. +static u16 superio_pm_port;
  12684. +
  12685. +#ifdef CONFIG_COBALT_WDT
  12686. +static void do_refresh(void);
  12687. +static void do_cleardog(void);
  12688. +static void do_disable(void);
  12689. +static void do_reenable(void);
  12690. +#endif
  12691. +
  12692. +static unsigned long __init
  12693. +chipset_setup(void)
  12694. +{
  12695. + unsigned char tmp;
  12696. + if (cobt_is_3k()) {
  12697. + /*
  12698. + * Set up the PMU for 3k boards. It has a max
  12699. + * of a 1 second timeout.
  12700. + */
  12701. + struct pci_dev *south;
  12702. +
  12703. + /* PMU (1543 ver A1-E) has a built-in WDT. Set it to 1 sec */
  12704. + cobalt_pmu = pci_get_device(PCI_VENDOR_ID_AL,
  12705. + PCI_DEVICE_ID_AL_M7101, NULL);
  12706. + if (!cobalt_pmu) {
  12707. + EPRINTK("can't find south bridge for WDT\n");
  12708. + return 0;
  12709. + }
  12710. + pci_write_config_byte(cobalt_pmu, ALI_7101_WDT, 0x02);
  12711. +
  12712. + /* why it is called 1543, but DevId is 1533 I'll never know */
  12713. + south = pci_get_device(PCI_VENDOR_ID_AL,
  12714. + PCI_DEVICE_ID_AL_M1533, NULL);
  12715. + if (!south) {
  12716. + EPRINTK("can't find south bridge for WDT\n");
  12717. + use_pic = 1;
  12718. + } else {
  12719. + /* reversion # is here - must match ???1001?(b)
  12720. + * else use PIC for WDT */
  12721. + pci_read_config_byte(south, 0x5e, &tmp);
  12722. + use_pic = ((tmp & 0x1e) != 0x12);
  12723. + }
  12724. +
  12725. + if (!use_pic) {
  12726. + /* set DOGB GPIO pin to OUTPUT - JIC */
  12727. + pci_read_config_byte(cobalt_pmu, 0x7d, &tmp);
  12728. + pci_write_config_byte(cobalt_pmu, 0x7d, tmp | DOGB);
  12729. + }
  12730. + return WDT_3K_TIMEOUT;
  12731. + } else if (cobt_is_monterey()) {
  12732. + /*
  12733. + * Set up the Nat. Semi SuperI/O for XTR. It has a
  12734. + * minimum of a 1 minute timeout.
  12735. + */
  12736. +
  12737. + /* superi/o -- select pm logical device and get base address */
  12738. + superio_pm_port = superio_ldev_base(PC87317_DEV_PM);
  12739. +#ifdef CONFIG_COBALT_WDT
  12740. + if (!superio_pm_port) {
  12741. + return 0;
  12742. + }
  12743. + outb(PC87317_PMDEV_WDTO, superio_pm_port);
  12744. + outb(WDT_SUPERIO_TIMEOUT, superio_pm_port + 1);
  12745. +#endif
  12746. + return WDT_5K_TIMEOUT;
  12747. + } else if (cobt_is_alpine()) {
  12748. + /*
  12749. + * Set up the Nat. Semi SuperI/O for Alpine. It has a
  12750. + * minimum of a 1 minute timeout.
  12751. + */
  12752. +
  12753. + /* superi/o -- select pm logical device and get base address */
  12754. + superio_pm_port = superio_ldev_base(PC87417_DEV_SWC);
  12755. +#ifdef CONFIG_COBALT_WDT
  12756. + if (!superio_pm_port) {
  12757. + return 0;
  12758. + }
  12759. + /* select the WDT bank of SWC */
  12760. + outb(PC87417_SWCBANK_WDT, superio_pm_port+PC87417_SWC_BANK);
  12761. + /* clear event config... */
  12762. + tmp = inb(superio_pm_port+PC87417_WDT_CONFIG);
  12763. + outb(0, superio_pm_port+PC87417_WDT_CONFIG);
  12764. + /* ...before mucking with timeout */
  12765. + outb(WDT_SUPERIO_TIMEOUT,
  12766. + superio_pm_port+PC87417_WDT_TIMEOUT);
  12767. + /* restore the event config */
  12768. + outb(tmp, superio_pm_port+PC87417_WDT_CONFIG);
  12769. + /* enable the counter */
  12770. + outb(1, superio_pm_port+PC87417_WDT_CONTROL);
  12771. +#endif
  12772. + return WDT_5K_TIMEOUT;
  12773. + }
  12774. +
  12775. + return 0;
  12776. +}
  12777. +
  12778. +void __init
  12779. +cobalt_wdt_init(void)
  12780. +{
  12781. + unsigned long long start, stop;
  12782. +
  12783. + printk(KERN_INFO "%s %d.%d (modified by jeff@404ster.com, further modified by dave.studeman@raqcop.com)\n", WDT_DRIVER,WDT_DRIVER_VMAJ,WDT_DRIVER_VMIN);
  12784. +
  12785. + wdt_timeout = chipset_setup();
  12786. +
  12787. + /* figure out time */
  12788. + rdtscll(start);
  12789. + udelay(100);
  12790. + rdtscll(stop);
  12791. +
  12792. + /*
  12793. + * (int) (stop - start) * 10 == tsc per msec
  12794. + * 1000 / HZ == msec per tick
  12795. + * wdt_timeout == ticks per watchdog rearm
  12796. + */
  12797. + tsc_per_wdt = (int) (stop - start) * 10 * (1000 * wdt_timeout / HZ);
  12798. +
  12799. +#ifdef CONFIG_COBALT_WDT
  12800. + /* set the timer going */
  12801. + init_timer(&cobalt_wdt_timer);
  12802. + cobalt_wdt_timer.function = cobalt_wdt_refresh;
  12803. + cobalt_wdt_timer.data = 1;
  12804. + cobalt_wdt_timer.expires = jiffies + wdt_timeout;
  12805. + add_timer(&cobalt_wdt_timer);
  12806. +
  12807. + /* the first timer tick will set it going */
  12808. +
  12809. + if (cobt_is_3k() && use_pic) {
  12810. + WPRINTK("Cobalt WDT - old board, using PIC controller\n");
  12811. + }
  12812. +#endif /* CONFIG_COBALT_WDT */
  12813. +
  12814. + initialized = 1;
  12815. +}
  12816. +
  12817. +static inline void
  12818. +hw_disable(void)
  12819. +{
  12820. + if (cobt_is_3k()) {
  12821. + char tmp;
  12822. + /* read the value, disable (reset) WDT */
  12823. + pci_read_config_byte(cobalt_pmu, ALI_7101_WDT, &tmp);
  12824. + pci_write_config_byte(cobalt_pmu, ALI_7101_WDT,
  12825. + (tmp & ~ALI_WDT_ARM));
  12826. + } else if (cobt_is_monterey()) {
  12827. + outb(PC87317_PMDEV_WDTO, superio_pm_port);
  12828. + outb(0, superio_pm_port + 1);
  12829. + } else if (cobt_is_alpine()) {
  12830. + unsigned char tmp;
  12831. + /* select the WDT bank of SWC */
  12832. + outb(PC87417_SWCBANK_WDT, superio_pm_port + PC87417_SWC_BANK);
  12833. + /* clear event config before mucking with timeout */
  12834. + tmp = inb(superio_pm_port + PC87417_WDT_CONFIG);
  12835. + outb(0, superio_pm_port + PC87417_WDT_CONFIG);
  12836. + /*
  12837. + * Disable it by setting a 0 time-out.
  12838. + * The spec says 00h is reserved, but NSC confirms this is the
  12839. + * way to disable the device.
  12840. + */
  12841. + outb(0, superio_pm_port + PC87417_WDT_TIMEOUT);
  12842. + /* restore the event config */
  12843. + outb(tmp, superio_pm_port + PC87417_WDT_CONFIG);
  12844. + }
  12845. +}
  12846. +
  12847. +static inline void
  12848. +hw_enable(void)
  12849. +{
  12850. + if (cobt_is_3k()) {
  12851. + unsigned char tmp;
  12852. + /* read the value, disable (reset) WDT, enable WDT */
  12853. + pci_read_config_byte(cobalt_pmu, ALI_7101_WDT, &tmp);
  12854. + pci_write_config_byte(cobalt_pmu, ALI_7101_WDT,
  12855. + (tmp | ALI_WDT_ARM));
  12856. + if (use_pic) {
  12857. + /* transition GPIO 5 (DOGB) to arm/clear timer */
  12858. + pci_read_config_byte(cobalt_pmu, 0x7e, &tmp);
  12859. + pci_write_config_byte(cobalt_pmu, 0x7e, tmp ^ DOGB);
  12860. + }
  12861. + } else if (cobt_is_monterey()) {
  12862. + outb(PC87317_PMDEV_WDTO, superio_pm_port);
  12863. + outb(WDT_SUPERIO_TIMEOUT, superio_pm_port + 1);
  12864. + } else if (cobt_is_alpine()) {
  12865. + unsigned char tmp;
  12866. + /* select the WDT bank of SWC */
  12867. + outb(PC87417_SWCBANK_WDT, superio_pm_port + PC87417_SWC_BANK);
  12868. + /* clear event config before mucking with timeout */
  12869. + tmp = inb(superio_pm_port + PC87417_WDT_CONFIG);
  12870. + outb(0, superio_pm_port + PC87417_WDT_CONFIG);
  12871. + /* enable and refresh the timer */
  12872. + outb(WDT_SUPERIO_TIMEOUT,
  12873. + superio_pm_port + PC87417_WDT_TIMEOUT);
  12874. + outb(0x80, superio_pm_port + PC87417_WDT_CONTROL);
  12875. + /* restore event config */
  12876. + outb(tmp, superio_pm_port + PC87417_WDT_CONFIG);
  12877. + }
  12878. +}
  12879. +
  12880. +#ifdef CONFIG_COBALT_WDT
  12881. +static void
  12882. +do_refresh(void)
  12883. +{
  12884. + if (!initialized) {
  12885. + return;
  12886. + }
  12887. +
  12888. + do_cleardog();
  12889. +
  12890. + /* re-arm the timer - this is locked in mod_timer() */
  12891. + mod_timer(&cobalt_wdt_timer, jiffies + wdt_timeout);
  12892. +}
  12893. +#endif
  12894. +
  12895. +EXPORT_SYMBOL(cobalt_wdt_refresh);
  12896. +void
  12897. +cobalt_wdt_refresh(unsigned long refresh_timer)
  12898. +{
  12899. +#ifdef CONFIG_COBALT_WDT
  12900. + unsigned long flags;
  12901. + spin_lock_irqsave(&wdt_lock, flags);
  12902. + do_refresh();
  12903. + spin_unlock_irqrestore(&wdt_lock, flags);
  12904. +#endif
  12905. +}
  12906. +
  12907. +#ifdef CONFIG_COBALT_WDT
  12908. +static void
  12909. +do_cleardog(void)
  12910. +{
  12911. + static unsigned long long last_tsc = 0;
  12912. + unsigned long long tmp;
  12913. +
  12914. + if (!initialized || (atomic_read(&cobalt_wdt_disable_count) > 0)) {
  12915. + return;
  12916. + }
  12917. +
  12918. + /* only bother if we're due */
  12919. + rdtscll(tmp);
  12920. + if ((int)(tmp - last_tsc) < tsc_per_wdt) {
  12921. + return;
  12922. + }
  12923. +
  12924. + if (cobt_is_3k() || cobt_is_monterey()) {
  12925. + /* this is how we re-start the clock */
  12926. + hw_disable();
  12927. + hw_enable();
  12928. + } else if (cobt_is_alpine()) {
  12929. + /* select the WDT bank of SWC */
  12930. + outb(PC87417_SWCBANK_WDT, superio_pm_port + PC87417_SWC_BANK);
  12931. + /* refresh the timer */
  12932. + outb(0x80, superio_pm_port + PC87417_WDT_CONTROL);
  12933. + }
  12934. +
  12935. + rdtscll(last_tsc);
  12936. +}
  12937. +#endif
  12938. +
  12939. +EXPORT_SYMBOL(cobalt_wdt_cleardog);
  12940. +void
  12941. +cobalt_wdt_cleardog(void)
  12942. +{
  12943. +#ifdef CONFIG_COBALT_WDT
  12944. + unsigned long flags;
  12945. +
  12946. + spin_lock_irqsave(&wdt_lock, flags);
  12947. + do_cleardog();
  12948. + spin_unlock_irqrestore(&wdt_lock, flags);
  12949. +#endif
  12950. +}
  12951. +
  12952. +/*
  12953. + * this is called from machine_restart. it should not be used on
  12954. + * 5k machines.
  12955. + */
  12956. +EXPORT_SYMBOL(cobalt_wdt_trigger_reboot);
  12957. +void
  12958. +cobalt_wdt_trigger_reboot(void)
  12959. +{
  12960. + if (cobt_is_3k()) {
  12961. + if (!cobalt_pmu) {
  12962. + WPRINTK("no PMU found!\n");
  12963. + WPRINTK("reboot not possible!\n");
  12964. + return;
  12965. + }
  12966. +
  12967. +#ifdef CONFIG_COBALT_WDT
  12968. + /* stop feeding it */
  12969. + del_timer_sync(&cobalt_wdt_timer);
  12970. +#endif
  12971. +
  12972. + /* kiss your rear goodbye... */
  12973. + initialized = 0;
  12974. + hw_disable();
  12975. + hw_enable();
  12976. + }
  12977. +}
  12978. +
  12979. +#ifdef CONFIG_COBALT_WDT
  12980. +static void
  12981. +do_disable(void)
  12982. +{
  12983. + if (!initialized) {
  12984. + return;
  12985. + }
  12986. +
  12987. + if (atomic_read(&cobalt_wdt_disable_count) == 0) {
  12988. + atomic_inc(&cobalt_wdt_disable_count);
  12989. + del_timer_sync(&cobalt_wdt_timer);
  12990. + hw_disable();
  12991. + }
  12992. +}
  12993. +#endif
  12994. +
  12995. +EXPORT_SYMBOL(cobalt_wdt_disable);
  12996. +void
  12997. +cobalt_wdt_disable(void)
  12998. +{
  12999. +#ifdef CONFIG_COBALT_WDT
  13000. + unsigned long flags;
  13001. +
  13002. + if (cobt_is_3k() && use_pic) {
  13003. + WPRINTK("in PIC mode - cannot disable\n");
  13004. + return;
  13005. + }
  13006. +
  13007. + spin_lock_irqsave(&wdt_lock, flags);
  13008. + do_disable();
  13009. + spin_unlock_irqrestore(&wdt_lock, flags);
  13010. +#endif
  13011. +}
  13012. +
  13013. +#ifdef CONFIG_COBALT_WDT
  13014. +static void
  13015. +do_reenable(void)
  13016. +{
  13017. + int dcnt;
  13018. +
  13019. + if (!initialized) {
  13020. + return;
  13021. + }
  13022. +
  13023. + atomic_dec(&cobalt_wdt_disable_count);
  13024. + dcnt = atomic_read(&cobalt_wdt_disable_count);
  13025. +
  13026. + if (dcnt == 0) {
  13027. + do_refresh();
  13028. + } else if (dcnt < 0) {
  13029. + WPRINTK("too many enables\n");
  13030. + atomic_set(&cobalt_wdt_disable_count, 0);
  13031. + }
  13032. +}
  13033. +#endif
  13034. +
  13035. +
  13036. +EXPORT_SYMBOL(cobalt_wdt_reenable);
  13037. +void
  13038. +cobalt_wdt_reenable(void)
  13039. +{
  13040. +#ifdef CONFIG_COBALT_WDT
  13041. + unsigned long flags;
  13042. +
  13043. + spin_lock_irqsave(&wdt_lock, flags);
  13044. + do_reenable();
  13045. + spin_unlock_irqrestore(&wdt_lock, flags);
  13046. +#endif
  13047. +}
  13048. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/net/ethernet/intel/Kconfig linux-3.2.5-cobalt/drivers/net/ethernet/intel/Kconfig
  13049. --- linux-3.2.5/drivers/net/ethernet/intel/Kconfig 2012-02-06 09:47:00.000000000 -0800
  13050. +++ linux-3.2.5-cobalt/drivers/net/ethernet/intel/Kconfig 2012-02-06 23:19:54.000000000 -0800
  13051. @@ -49,6 +49,19 @@
  13052. To compile this driver as a module, choose M here. The module
  13053. will be called e100.
  13054.  
  13055. +config E100_IGNORE_CSUM
  13056. + bool "Ignore bad EEPROM checksum"
  13057. + depends on E100 && EXPERIMENTAL && !CLEAN_COMPILE
  13058. + help
  13059. + This option tells the e100 driver to ignore bad EEPROM checksums.
  13060. + Usually this is a bad idea, as an incorrect checksum can indicate a
  13061. + serious issue with the network card.
  13062. +
  13063. + This option allows you to set the default value for this, as
  13064. + normally you must pass this as a module parameter.
  13065. +
  13066. + If unsure, say N.
  13067. +
  13068. config E1000
  13069. tristate "Intel(R) PRO/1000 Gigabit Ethernet support"
  13070. depends on PCI
  13071. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/drivers/net/ethernet/intel/e100.c linux-3.2.5-cobalt/drivers/net/ethernet/intel/e100.c
  13072. --- linux-3.2.5/drivers/net/ethernet/intel/e100.c 2012-02-06 09:47:00.000000000 -0800
  13073. +++ linux-3.2.5-cobalt/drivers/net/ethernet/intel/e100.c 2012-02-06 21:38:46.000000000 -0800
  13074. @@ -177,6 +177,10 @@
  13075. #define DRV_NAME "e100"
  13076. #define DRV_EXT "-NAPI"
  13077. #define DRV_VERSION "3.5.24-k2"DRV_EXT
  13078. +#ifdef CONFIG_E100_IGNORE_CSUM
  13079. +#define DRV_MODIFIED "Modified by <jeff@404ster.com> to ignore bad EEPROM checksums"
  13080. +#define DRV_UPDATED "Updated by <dave.studeman@raqcop.com> to compile with 2.6.35 to 3.x.x"
  13081. +#endif
  13082. #define DRV_DESCRIPTION "Intel(R) PRO/100 Network Driver"
  13083. #define DRV_COPYRIGHT "Copyright(c) 1999-2006 Intel Corporation"
  13084.  
  13085. @@ -196,10 +200,18 @@
  13086. MODULE_FIRMWARE(FIRMWARE_D102E);
  13087.  
  13088. static int debug = 3;
  13089. +#ifdef CONFIG_E100_IGNORE_CSUM
  13090. +static int eeprom_bad_csum_allow = 1;
  13091. +#else
  13092. static int eeprom_bad_csum_allow = 0;
  13093. +#endif
  13094. static int use_io = 0;
  13095. module_param(debug, int, 0);
  13096. +#ifdef CONFIG_E100_IGNORE_CSUM
  13097. module_param(eeprom_bad_csum_allow, int, 0);
  13098. +#else
  13099. +module_param(eeprom_bad_csum_allow, int, 1);
  13100. +#endif
  13101. module_param(use_io, int, 0);
  13102. MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
  13103. MODULE_PARM_DESC(eeprom_bad_csum_allow, "Allow bad eeprom checksums");
  13104. @@ -3096,6 +3108,10 @@
  13105. if (((1 << debug) - 1) & NETIF_MSG_DRV) {
  13106. pr_info("%s, %s\n", DRV_DESCRIPTION, DRV_VERSION);
  13107. pr_info("%s\n", DRV_COPYRIGHT);
  13108. +#if defined(CONFIG_E100_IGNORE_CSUM)
  13109. + pr_info("%s\n", DRV_MODIFIED);
  13110. + pr_info("%s\n", DRV_UPDATED);
  13111. +#endif
  13112. }
  13113. return pci_register_driver(&e100_driver);
  13114. }
  13115. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/acpi.h linux-3.2.5-cobalt/include/cobalt/acpi.h
  13116. --- linux-3.2.5/include/cobalt/acpi.h 1969-12-31 16:00:00.000000000 -0800
  13117. +++ linux-3.2.5-cobalt/include/cobalt/acpi.h 2012-02-06 21:38:46.000000000 -0800
  13118. @@ -0,0 +1,82 @@
  13119. +/*
  13120. + * $Id: cobalt-acpi.h,v 1.7 2001/10/27 07:03:31 erik Exp $
  13121. + * cobalt-acpi.h : support for ACPI interrupts
  13122. + *
  13123. + * Copyright 2000 Cobalt Networks, Inc.
  13124. + * Copyright 2001 Sun Microsystems, Inc.
  13125. + */
  13126. +#ifndef COBALT_ACPI_H
  13127. +#define COBALT_ACPI_H
  13128. +
  13129. +#define SERVERWORKS_ACPI_INDEX_PORT 0x0cd6
  13130. +#define SERVERWORKS_ACPI_DATA_PORT 0x0cd7
  13131. +
  13132. +
  13133. +typedef struct
  13134. +{
  13135. + u16 hw_type;
  13136. + u16 ev_type;
  13137. + u32 ev_data;
  13138. +} cobalt_acpi_evt;
  13139. +
  13140. +enum __cobalt_acpi_hw_types
  13141. +{
  13142. + COBALT_ACPI_HW_ANY = 0x0000,
  13143. + COBALT_ACPI_HW_OSB4 = 0x0001,
  13144. + COBALT_ACPI_HW_CSB5 = 0x0002,
  13145. + COBALT_ACPI_HW_PC8731X = 0x0003,
  13146. + COBALT_ACPI_HW_PC8741X = 0x0004,
  13147. +};
  13148. +
  13149. +enum __cobalt_acpi_event_types
  13150. +{
  13151. + COBALT_ACPI_EVT_NONE = 0x0000,
  13152. + COBALT_ACPI_EVT_TMR = 0x0001, /* Timer Event */
  13153. + COBALT_ACPI_EVT_BM = 0x00002, /* Bus Master Event */
  13154. + COBALT_ACPI_EVT_GBL = 0x0003, /* BIOS Global Lock release */
  13155. + COBALT_ACPI_EVT_PWRBTN = 0x0004, /* Power Button press */
  13156. + COBALT_ACPI_EVT_SLPBTN = 0x0005, /* Sleep Button press */
  13157. + COBALT_ACPI_EVT_RTC = 0x0006, /* RTC Alarm */
  13158. + COBALT_ACPI_EVT_WAK = 0x0007, /* Wake event */
  13159. + COBALT_ACPI_EVT_GPE = 0x0008, /* General Purpose Event (ev_data = gpe number) */
  13160. +
  13161. + /* events greater than 0x7fff are symbolic events */
  13162. + COBALT_ACPI_EVT_SLED = 0x8000, /* Sled removal */
  13163. + COBALT_ACPI_EVT_THERM = 0x8001, /* Thermal trip */
  13164. + COBALT_ACPI_EVT_FAN = 0x8002, /* Fan Down */
  13165. + COBALT_ACPI_EVT_SM_INT = 0x8003, /* System Monitor Interrupt */
  13166. + COBALT_ACPI_EVT_VOLT = 0x8004, /* System Monitor Interrupt */
  13167. +
  13168. +};
  13169. +
  13170. +typedef int (* cobalt_acpi_hw_handler)( int irq, void *dev_id, struct pt_regs *regs, void * data );
  13171. +typedef int (* cobalt_acpi_enable_handler)( u16 ev_type, u16 ev_data, int en, void *data );
  13172. +typedef int (* cobalt_acpi_evt_handler)( cobalt_acpi_evt *evt, void * data );
  13173. +
  13174. +
  13175. +extern int cobalt_acpi_register_hw_handler( u16 hw_type,
  13176. + cobalt_acpi_hw_handler hw_handler,
  13177. + cobalt_acpi_enable_handler en_handler,
  13178. + void *data );
  13179. +extern int cobalt_acpi_unregister_hw_handler( cobalt_acpi_hw_handler handler );
  13180. +
  13181. +extern int cobalt_acpi_register_trans_table( u16 hw_type, u16 table_len, u16 *table );
  13182. +extern int cobalt_acpi_unregister_trans_table( u16 hw_type );
  13183. +
  13184. +extern int cobalt_acpi_register_evt_handler( cobalt_acpi_evt_handler handler,
  13185. + u16 evt_type,
  13186. + void *data );
  13187. +extern int cobalt_acpi_unregister_evt_handler( cobalt_acpi_evt_handler handler );
  13188. +
  13189. +extern int cobalt_acpi_post_event( cobalt_acpi_evt evt );
  13190. +
  13191. +#ifdef CONFIG_COBALT_EMU_ACPI
  13192. +int cobalt_acpi_generate_proc_evt( cobalt_acpi_evt * evt );
  13193. +#else
  13194. +#define cobalt_acpi_generate_proc_evt( a )
  13195. +#endif
  13196. +
  13197. +
  13198. +
  13199. +
  13200. +#endif /* COBALT_ACPI_H */
  13201. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/cobalt.h linux-3.2.5-cobalt/include/cobalt/cobalt.h
  13202. --- linux-3.2.5/include/cobalt/cobalt.h 1969-12-31 16:00:00.000000000 -0800
  13203. +++ linux-3.2.5-cobalt/include/cobalt/cobalt.h 2012-02-06 21:38:46.000000000 -0800
  13204. @@ -0,0 +1,57 @@
  13205. +/* $Id: cobalt.h,v 1.16 2002/11/04 17:54:15 thockin Exp $ */
  13206. +/* Copyright 2001 Sun Microsystems, Inc. */
  13207. +#if !defined(COBALT_H) && defined(CONFIG_COBALT_RAQ)
  13208. +#define COBALT_H
  13209. +
  13210. +/* generational support - for easy checking */
  13211. +#ifdef CONFIG_COBALT_GEN_III
  13212. +# define COBT_SUPPORT_GEN_III 1
  13213. +#else
  13214. +# define COBT_SUPPORT_GEN_III 0
  13215. +#endif
  13216. +
  13217. +#ifdef CONFIG_COBALT_GEN_V
  13218. +# define COBT_SUPPORT_GEN_V 1
  13219. +#else
  13220. +# define COBT_SUPPORT_GEN_V 0
  13221. +#endif
  13222. +
  13223. +/* macros for consistent errors/warnings */
  13224. +#define EPRINTK(fmt, args...) \
  13225. + printk(KERN_ERR "%s:%s: " fmt , __FILE__ , __FUNCTION__ , ##args)
  13226. +
  13227. +#define WPRINTK(fmt, args...) \
  13228. + printk(KERN_WARNING "%s:%s: " fmt , __FILE__ , __FUNCTION__ , ##args)
  13229. +
  13230. +/* the root of /proc/cobalt */
  13231. +extern struct proc_dir_entry *proc_cobalt;
  13232. +int cobalt_gen_proc_read(char *buf, int plen, char **start, off_t pos,
  13233. + int len, int *eof);
  13234. +
  13235. +//#ifdef CONFIG_COBALT_RAQ
  13236. +/* keep this test up to date with new generation defines */
  13237. +#if !defined(CONFIG_COBALT_GEN_III) && !defined(CONFIG_COBALT_GEN_V)
  13238. +/* barf if no generation has been selected */
  13239. +#error You asked for CONFIG_COBALT_RAQ, but no CONFIG_COBALT_GEN_* !
  13240. +#endif
  13241. +
  13242. +/* accesses for CMOS */
  13243. +#include <linux/mc146818rtc.h>
  13244. +#include <cobalt/nvram.h>
  13245. +
  13246. +static inline int
  13247. +cobalt_cmos_read_flag(const unsigned int flag)
  13248. +{
  13249. + unsigned long flags;
  13250. + u16 cmosfl;
  13251. +
  13252. + spin_lock_irqsave(&rtc_lock, flags);
  13253. + cmosfl = CMOS_READ(COBT_CMOS_FLAG_BYTE_0) << 8;
  13254. + cmosfl |= CMOS_READ(COBT_CMOS_FLAG_BYTE_1);
  13255. + spin_unlock_irqrestore(&rtc_lock, flags);
  13256. +
  13257. + return (cmosfl & flag) ? 1 : 0;
  13258. +}
  13259. +//#endif /* CONFIG_COBALT_RAQ */
  13260. +
  13261. +#endif /* !defined(COBALT_H) && defined(CONFIG_COBALT_RAQ) */
  13262. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/i2c.h linux-3.2.5-cobalt/include/cobalt/i2c.h
  13263. --- linux-3.2.5/include/cobalt/i2c.h 1969-12-31 16:00:00.000000000 -0800
  13264. +++ linux-3.2.5-cobalt/include/cobalt/i2c.h 2012-02-06 21:38:46.000000000 -0800
  13265. @@ -0,0 +1,40 @@
  13266. +/*
  13267. + * $Id: cobalt-i2c.h,v 1.3 2001/08/22 05:48:04 asun Exp $
  13268. + * cobalt-i2c.h : I2C support for LCD/Front Panel
  13269. + *
  13270. + * Copyright 2000 Cobalt Networks, Inc.
  13271. + * Copyright 2001 Sun Microsystems, Inc.
  13272. + */
  13273. +#ifndef COBALT_I2C_H
  13274. +#define COBALT_I2C_H
  13275. +
  13276. +#include <linux/types.h>
  13277. +#include <cobalt/cobalt.h>
  13278. +
  13279. +#define COBALT_I2C_DEV_LED_I 0x40
  13280. +#define COBALT_I2C_DEV_LED_II 0x42
  13281. +#define COBALT_I2C_DEV_LCD_DATA 0x4a
  13282. +#define COBALT_I2C_DEV_LCD_INST 0x48
  13283. +#define COBALT_I2C_DEV_FP_BUTTONS 0x41
  13284. +#define COBALT_I2C_DEV_DRV_SWITCH 0x45
  13285. +#define COBALT_I2C_DEV_RULER 0x46
  13286. +#define COBALT_I2C_DEV_LM77 0x90
  13287. +#define COBALT_I2C_DEV_ADM1029 0x5e
  13288. +#define COBALT_I2C_DEV_AT24C02 0xae
  13289. +
  13290. +#define COBALT_I2C_READ 0x01
  13291. +#define COBALT_I2C_WRITE 0x00
  13292. +
  13293. +extern int cobalt_i2c_reset(void);
  13294. +extern int cobalt_i2c_read_byte(const int dev, const int index);
  13295. +extern int cobalt_i2c_read_word(const int dev, const int index);
  13296. +extern int cobalt_i2c_read_block(const int dev, const int index,
  13297. + unsigned char *data, int count);
  13298. +extern int cobalt_i2c_write_byte(const int dev, const int index,
  13299. + const u8 val);
  13300. +extern int cobalt_i2c_write_word(const int dev, const int index,
  13301. + const u16 val);
  13302. +extern int cobalt_i2c_write_block(const int dev, const int index,
  13303. + unsigned char *data, int count);
  13304. +
  13305. +#endif /* COBALT_I2C_H */
  13306. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/lcd.h linux-3.2.5-cobalt/include/cobalt/lcd.h
  13307. --- linux-3.2.5/include/cobalt/lcd.h 1969-12-31 16:00:00.000000000 -0800
  13308. +++ linux-3.2.5-cobalt/include/cobalt/lcd.h 2012-02-06 21:38:46.000000000 -0800
  13309. @@ -0,0 +1,96 @@
  13310. +/*
  13311. + * $Id: cobalt-lcd.h,v 1.12 2001/11/30 05:38:46 asun Exp $
  13312. + * cobalt-lcd.h : some useful defines for the Cobalt LCD driver
  13313. + * (must be useable from both kernel and user space)
  13314. + *
  13315. + * Copyright 1996-2000 Cobalt Networks, Inc.
  13316. + * Copyright 2001 Sun Microsystems, Inc.
  13317. + *
  13318. + * By: Andrew Bose
  13319. + * Timothy Stonis (x86 version)
  13320. + * Tim Hockin
  13321. + * Adrian Sun
  13322. + * Erik Gilling
  13323. + * Duncan Laurie
  13324. + */
  13325. +#ifndef COBALT_LCD_H
  13326. +#define COBALT_LCD_H
  13327. +
  13328. +#ifdef __KERNEL__
  13329. +#include <cobalt/cobalt.h>
  13330. +#endif
  13331. +#include <cobalt/led.h>
  13332. +
  13333. +#define COBALT_LCD_LINELEN 40
  13334. +struct lcd_display {
  13335. + unsigned long buttons;
  13336. + int size1;
  13337. + int size2;
  13338. + unsigned char line1[COBALT_LCD_LINELEN];
  13339. + unsigned char line2[COBALT_LCD_LINELEN];
  13340. + unsigned char cursor_address;
  13341. + unsigned char character;
  13342. + unsigned char leds;
  13343. + unsigned char *RomImage;
  13344. +};
  13345. +
  13346. +/* different lcd types */
  13347. +#define LCD_TYPE_UNKNOWN 0
  13348. +#define LCD_TYPE_PARALLEL 1
  13349. +#define LCD_TYPE_PARALLEL_B 2
  13350. +#define LCD_TYPE_I2C 3
  13351. +
  13352. +/* Function command codes for ioctl */
  13353. +#define LCD_On 1
  13354. +#define LCD_Off 2
  13355. +#define LCD_Clear 3
  13356. +#define LCD_Reset 4
  13357. +#define LCD_Cursor_Left 5
  13358. +#define LCD_Cursor_Right 6
  13359. +#define LCD_Disp_Left 7
  13360. +#define LCD_Disp_Right 8
  13361. +#define LCD_Get_Cursor 9
  13362. +#define LCD_Set_Cursor 10
  13363. +#define LCD_Home 11
  13364. +#define LCD_Read 12
  13365. +#define LCD_Write 13
  13366. +#define LCD_Cursor_Off 14
  13367. +#define LCD_Cursor_On 15
  13368. +#define LCD_Get_Cursor_Pos 16
  13369. +#define LCD_Set_Cursor_Pos 17
  13370. +#define LCD_Blink_Off 18
  13371. +#define LCD_Raw_Inst 19
  13372. +#define LCD_Raw_Data 20
  13373. +#define LCD_Type 21
  13374. +
  13375. +/* LED controls */
  13376. +#define LED_Set 40
  13377. +#define LED_Bit_Set 41
  13378. +#define LED_Bit_Clear 42
  13379. +#define LED32_Set 43
  13380. +#define LED32_Bit_Set 44
  13381. +#define LED32_Bit_Clear 45
  13382. +#define LED32_Get 46
  13383. +
  13384. +/* button ioctls */
  13385. +#define BUTTON_Read 50
  13386. +
  13387. +/* Button defs */
  13388. +#define BUTTON_Next 0x3D
  13389. +#define BUTTON_Next_B 0x7E
  13390. +#define BUTTON_Reset_B 0xFC
  13391. +#define BUTTON_NONE_B 0xFE
  13392. +#define BUTTON_Left_B 0xFA
  13393. +#define BUTTON_Right_B 0xDE
  13394. +#define BUTTON_Up_B 0xF6
  13395. +#define BUTTON_Down_B 0xEE
  13396. +#define BUTTON_Enter_B 0xBE
  13397. +
  13398. +#define BUTTON_MASK 0xFE
  13399. +
  13400. +void cobalt_lcd_start_twiddle(void);
  13401. +void cobalt_lcd_stop_twiddle(void);
  13402. +void cobalt_lcd_off(void);
  13403. +void cobalt_lcd_print(char * line1, char * line2);
  13404. +
  13405. +#endif /* COBALT_LCD_H */
  13406. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/led.h linux-3.2.5-cobalt/include/cobalt/led.h
  13407. --- linux-3.2.5/include/cobalt/led.h 1969-12-31 16:00:00.000000000 -0800
  13408. +++ linux-3.2.5-cobalt/include/cobalt/led.h 2012-02-06 21:38:46.000000000 -0800
  13409. @@ -0,0 +1,59 @@
  13410. +/*
  13411. + * $Id: cobalt-led.h,v 1.7 2001/11/08 01:15:33 thockin Exp $
  13412. + * cobalt-led.c
  13413. + *
  13414. + * Copyright 1996-2000 Cobalt Networks, Inc.
  13415. + * Copyright 2001 Sun Microsystems, Inc.
  13416. + *
  13417. + * By: Andrew Bose
  13418. + * Timothy Stonis (x86 version)
  13419. + * Tim Hockin
  13420. + * Adrian Sun
  13421. + * Erik Gilling
  13422. + * Duncan Laurie
  13423. + */
  13424. +#ifndef COBALT_LED_H
  13425. +#define COBALT_LED_H
  13426. +
  13427. +/* the set of all leds available on Cobalt systems */
  13428. +#define LED_SHUTDOWN (1 << 0)
  13429. +#define LED_WEBLIGHT (1 << 1)
  13430. +#define LED_COBALTLOGO (1 << 2)
  13431. +#define LED_ETH0_TXRX (1 << 3)
  13432. +#define LED_ETH0_LINK (1 << 4)
  13433. +#define LED_ETH1_TXRX (1 << 5)
  13434. +#define LED_ETH1_LINK (1 << 6)
  13435. +#define LED_DISK0 (1 << 7)
  13436. +#define LED_DISK1 (1 << 8)
  13437. +#define LED_DISK2 (1 << 9)
  13438. +#define LED_DISK3 (1 << 10)
  13439. +#define LED_SYSFAULT (1 << 11)
  13440. +#define LED_MONTEREY_UNUSED0 (1 << 12)
  13441. +#define LED_MONTEREY_UNUSED1 (1 << 13)
  13442. +/* LED_MONTEREY_UNUSED2 is below */
  13443. +#define LED_HEART LED_MONTEREY_UNUSED0
  13444. +#define LED_SPARE LED_MONTEREY_UNUSED1
  13445. +#define LED_SLED0 (1 << 14)
  13446. +#define LED_SLED1 (1 << 15)
  13447. +#define LED_SLED2 (1 << 16)
  13448. +#define LED_SLED3 (1 << 17)
  13449. +#define LED_MONTEREY_UNUSED2 (1 << 18)
  13450. +#define LED_SPARE2 LED_MONTEREY_UNUSED2
  13451. +
  13452. +#ifdef __KERNEL__
  13453. +
  13454. +extern void cobalt_led_set(const unsigned int leds);
  13455. +extern void cobalt_led_set_bits(const unsigned int leds);
  13456. +extern void cobalt_led_clear_bits(const unsigned int leds);
  13457. +extern void cobalt_led_set_lazy(const unsigned int leds);
  13458. +extern void cobalt_led_set_bits_lazy(const unsigned int leds);
  13459. +extern void cobalt_led_clear_bits_lazy(const unsigned int leds);
  13460. +extern unsigned int cobalt_led_get(void);
  13461. +
  13462. +extern int cobalt_fpled_register(unsigned int (*fn)(void *), void *data);
  13463. +extern int cobalt_fpled_unregister(unsigned int (*fn)(void *), void *data);
  13464. +
  13465. +#endif /* __KERNEL__ */
  13466. +
  13467. +#endif /* COBALT_LED_H */
  13468. +
  13469. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/misc.h linux-3.2.5-cobalt/include/cobalt/misc.h
  13470. --- linux-3.2.5/include/cobalt/misc.h 1969-12-31 16:00:00.000000000 -0800
  13471. +++ linux-3.2.5-cobalt/include/cobalt/misc.h 2012-02-06 21:38:46.000000000 -0800
  13472. @@ -0,0 +1,12 @@
  13473. +/* $Id: cobalt-misc.h,v 1.1 2001/04/04 03:36:43 thockin Exp $ */
  13474. +/* Copyright 2001 Sun Microsystems, Inc. */
  13475. +#ifndef COBALT_MISC_H
  13476. +#define COBALT_MISC_H
  13477. +
  13478. +void cobalt_nmi(unsigned char reason, struct pt_regs *regs);
  13479. +void cobalt_restart(void);
  13480. +void cobalt_halt(void);
  13481. +void cobalt_power_off(void);
  13482. +void wait_for_flush(void);
  13483. +
  13484. +#endif
  13485. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/net.h linux-3.2.5-cobalt/include/cobalt/net.h
  13486. --- linux-3.2.5/include/cobalt/net.h 1969-12-31 16:00:00.000000000 -0800
  13487. +++ linux-3.2.5-cobalt/include/cobalt/net.h 2012-02-06 21:38:46.000000000 -0800
  13488. @@ -0,0 +1,11 @@
  13489. +/* $Id: cobalt-net.h,v 1.3 2002/10/25 01:02:42 thockin Exp $ */
  13490. +/* Copyright 2001 Sun Microsystems, Inc. */
  13491. +#ifndef COBALT_NET_H
  13492. +#define COBALT_NET_H
  13493. +
  13494. +#include <linux/netdevice.h>
  13495. +
  13496. +void cobalt_net_register(struct net_device *ndev);
  13497. +void cobalt_net_unregister(struct net_device *ndev);
  13498. +
  13499. +#endif
  13500. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/nvram.h linux-3.2.5-cobalt/include/cobalt/nvram.h
  13501. --- linux-3.2.5/include/cobalt/nvram.h 1969-12-31 16:00:00.000000000 -0800
  13502. +++ linux-3.2.5-cobalt/include/cobalt/nvram.h 2012-02-06 21:38:46.000000000 -0800
  13503. @@ -0,0 +1,125 @@
  13504. +/*
  13505. + * $Id: cobalt-nvram.h,v 1.21 2002/11/02 00:57:06 thockin Exp $
  13506. + * cobalt-nvram.h : defines for the various fields in the cobalt NVRAM
  13507. + *
  13508. + * Copyright 2001 Sun Microsystems, Inc.
  13509. + */
  13510. +
  13511. +#ifndef COBALT_NVRAM_H
  13512. +#define COBALT_NVRAM_H
  13513. +
  13514. +#include <linux/nvram.h>
  13515. +
  13516. +#define COBT_CMOS_INFO_MAX 0x7f /* top address allowed */
  13517. +#define COBT_CMOS_BIOS_DRIVE_INFO 0x12 /* drive info would go here */
  13518. +
  13519. +#define COBT_CMOS_CKS_START NVRAM_OFFSET(0x0e)
  13520. +#define COBT_CMOS_CKS_END NVRAM_OFFSET(0x7f)
  13521. +
  13522. +/* flag bytes - 16 flags for now, leave room for more */
  13523. +#define COBT_CMOS_FLAG_BYTE_0 NVRAM_OFFSET(0x10)
  13524. +#define COBT_CMOS_FLAG_BYTE_1 NVRAM_OFFSET(0x11)
  13525. +
  13526. +/* flags in flag bytes - up to 16 */
  13527. +#define COBT_CMOS_FLAG_MIN 0x0001
  13528. +#define COBT_CMOS_CONSOLE_FLAG 0x0001 /* console on/off */
  13529. +#define COBT_CMOS_DEBUG_FLAG 0x0002 /* ROM debug messages */
  13530. +#define COBT_CMOS_AUTO_PROMPT_FLAG 0x0004 /* boot to ROM prompt? */
  13531. +#define COBT_CMOS_CLEAN_BOOT_FLAG 0x0008 /* set by a clean shutdown */
  13532. +#define COBT_CMOS_HW_NOPROBE_FLAG 0x0010 /* go easy on the probing */
  13533. +#define COBT_CMOS_SYSFAULT_FLAG 0x0020 /* system fault detected */
  13534. +#define COBT_CMOS_OOPSPANIC_FLAG 0x0040 /* panic on oops */
  13535. +#define COBT_CMOS_DELAY_CACHE_FLAG 0x0080 /* delay cache initialization */
  13536. +#define COBT_CMOS_NOLOGO_FLAG 0x0100 /* hide "C" logo @ boot */
  13537. +#define COBT_CMOS_VERSION_FLAG 0x0200 /* the version field is valid */
  13538. +#define COBT_CMOS_FLAG_MAX 0x0200
  13539. +
  13540. +/* leave byte 0x12 blank - Linux looks for drive info here */
  13541. +
  13542. +/* CMOS structure version, valid if COBT_CMOS_VERSION_FLAG is true */
  13543. +#define COBT_CMOS_VERSION NVRAM_OFFSET(0x13)
  13544. +#define COBT_CMOS_VER_BTOCODE 1 /* min. version needed for btocode */
  13545. +
  13546. +/* index of default boot method */
  13547. +#define COBT_CMOS_BOOT_METHOD NVRAM_OFFSET(0x20)
  13548. +#define COBT_CMOS_BOOT_METHOD_DISK 0
  13549. +#define COBT_CMOS_BOOT_METHOD_ROM 1
  13550. +#define COBT_CMOS_BOOT_METHOD_NET 2
  13551. +#define COBT_CMOS_BOOT_METHOD_NNET 3
  13552. +#define COBT_CMOS_BOOT_METHOD_OTHER 4
  13553. +
  13554. +#define COBT_CMOS_BOOT_DEV_MIN NVRAM_OFFSET(0x21)
  13555. +/* major #, minor # of first through fourth boot device */
  13556. +#define COBT_CMOS_BOOT_DEV0_MAJ NVRAM_OFFSET(0x21)
  13557. +#define COBT_CMOS_BOOT_DEV0_MIN NVRAM_OFFSET(0x22)
  13558. +#define COBT_CMOS_BOOT_DEV1_MAJ NVRAM_OFFSET(0x23)
  13559. +#define COBT_CMOS_BOOT_DEV1_MIN NVRAM_OFFSET(0x24)
  13560. +#define COBT_CMOS_BOOT_DEV2_MAJ NVRAM_OFFSET(0x25)
  13561. +#define COBT_CMOS_BOOT_DEV2_MIN NVRAM_OFFSET(0x26)
  13562. +#define COBT_CMOS_BOOT_DEV3_MAJ NVRAM_OFFSET(0x27)
  13563. +#define COBT_CMOS_BOOT_DEV3_MIN NVRAM_OFFSET(0x28)
  13564. +#define COBT_CMOS_BOOT_DEV_MAX NVRAM_OFFSET(0x28)
  13565. +
  13566. +/* checksum of bytes 0xe-0x7f */
  13567. +#define COBT_CMOS_CHECKSUM NVRAM_OFFSET(0x2e)
  13568. +
  13569. +/* running uptime counter, units of 5 minutes (32 bits =~ 41000 years) */
  13570. +#define COBT_CMOS_UPTIME_0 NVRAM_OFFSET(0x30)
  13571. +#define COBT_CMOS_UPTIME_1 NVRAM_OFFSET(0x31)
  13572. +#define COBT_CMOS_UPTIME_2 NVRAM_OFFSET(0x32)
  13573. +#define COBT_CMOS_UPTIME_3 NVRAM_OFFSET(0x33)
  13574. +
  13575. +/* count of successful boots (32 bits) */
  13576. +#define COBT_CMOS_BOOTCOUNT_0 NVRAM_OFFSET(0x38)
  13577. +#define COBT_CMOS_BOOTCOUNT_1 NVRAM_OFFSET(0x39)
  13578. +#define COBT_CMOS_BOOTCOUNT_2 NVRAM_OFFSET(0x3a)
  13579. +#define COBT_CMOS_BOOTCOUNT_3 NVRAM_OFFSET(0x3b)
  13580. +
  13581. +/* 13 bytes: system serial number, same as on the back of the system */
  13582. +#define COBT_CMOS_SYS_SERNUM_LEN 13
  13583. +#define COBT_CMOS_SYS_SERNUM_0 NVRAM_OFFSET(0x40)
  13584. +#define COBT_CMOS_SYS_SERNUM_1 NVRAM_OFFSET(0x41)
  13585. +#define COBT_CMOS_SYS_SERNUM_2 NVRAM_OFFSET(0x42)
  13586. +#define COBT_CMOS_SYS_SERNUM_3 NVRAM_OFFSET(0x43)
  13587. +#define COBT_CMOS_SYS_SERNUM_4 NVRAM_OFFSET(0x44)
  13588. +#define COBT_CMOS_SYS_SERNUM_5 NVRAM_OFFSET(0x45)
  13589. +#define COBT_CMOS_SYS_SERNUM_6 NVRAM_OFFSET(0x46)
  13590. +#define COBT_CMOS_SYS_SERNUM_7 NVRAM_OFFSET(0x47)
  13591. +#define COBT_CMOS_SYS_SERNUM_8 NVRAM_OFFSET(0x48)
  13592. +#define COBT_CMOS_SYS_SERNUM_9 NVRAM_OFFSET(0x49)
  13593. +#define COBT_CMOS_SYS_SERNUM_10 NVRAM_OFFSET(0x4a)
  13594. +#define COBT_CMOS_SYS_SERNUM_11 NVRAM_OFFSET(0x4b)
  13595. +#define COBT_CMOS_SYS_SERNUM_12 NVRAM_OFFSET(0x4c)
  13596. +/* checksum for serial num - 1 byte */
  13597. +#define COBT_CMOS_SYS_SERNUM_CSUM NVRAM_OFFSET(0x4f)
  13598. +
  13599. +#define COBT_CMOS_ROM_REV_MAJ NVRAM_OFFSET(0x50)
  13600. +#define COBT_CMOS_ROM_REV_MIN NVRAM_OFFSET(0x51)
  13601. +#define COBT_CMOS_ROM_REV_REV NVRAM_OFFSET(0x52)
  13602. +
  13603. +#define COBT_CMOS_BTO_CODE_0 NVRAM_OFFSET(0x53)
  13604. +#define COBT_CMOS_BTO_CODE_1 NVRAM_OFFSET(0x54)
  13605. +#define COBT_CMOS_BTO_CODE_2 NVRAM_OFFSET(0x55)
  13606. +#define COBT_CMOS_BTO_CODE_3 NVRAM_OFFSET(0x56)
  13607. +
  13608. +#define COBT_CMOS_BTO_IP_CSUM NVRAM_OFFSET(0x57)
  13609. +#define COBT_CMOS_BTO_IP_0 NVRAM_OFFSET(0x58)
  13610. +#define COBT_CMOS_BTO_IP_1 NVRAM_OFFSET(0x59)
  13611. +#define COBT_CMOS_BTO_IP_2 NVRAM_OFFSET(0x5a)
  13612. +#define COBT_CMOS_BTO_IP_3 NVRAM_OFFSET(0x5b)
  13613. +
  13614. +/* byte for load/run methods */
  13615. +#define COBT_CMOS_BOOT_TYPE NVRAM_OFFSET(0x5c)
  13616. +#define COBT_CMOS_BOOT_KERN_DEV 0x01 /* use kernel on major/minor */
  13617. +#define COBT_CMOS_BOOT_KERN_ROM 0x02 /* use rom kernel */
  13618. +#define COBT_CMOS_BOOT_KERN_NET 0x03 /* use net kernel */
  13619. +#define COBT_CMOS_BOOT_KERN_MASK 0x0f /* mask for above */
  13620. +
  13621. +#define COBT_CMOS_BOOT_FS_DEV 0x10 /* use major/minor number dev */
  13622. +#define COBT_CMOS_BOOT_FS_NET 0x30 /* use net fs */
  13623. +#define COBT_CMOS_BOOT_FS_MASK 0xf0 /* mask for above */
  13624. +
  13625. +/* HA mode we're in (Twin Peaks) */
  13626. +#define COBT_CMOS_HA_MODE NVRAM_OFFSET(0x62)
  13627. +
  13628. +#endif /* COBALT_NVRAM_H */
  13629. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/powermode.h linux-3.2.5-cobalt/include/cobalt/powermode.h
  13630. --- linux-3.2.5/include/cobalt/powermode.h 1969-12-31 16:00:00.000000000 -0800
  13631. +++ linux-3.2.5-cobalt/include/cobalt/powermode.h 2012-02-06 21:38:46.000000000 -0800
  13632. @@ -0,0 +1,22 @@
  13633. +/*
  13634. + * $Id: powermode.h,v 1.17 2007/02/20 23:14:23 illogical Exp $
  13635. + * powermode.h : blah blah blah Powermode NVRAM foo
  13636. + *
  13637. + * Copyright 2001 Sun Microsystems, Inc.
  13638. + */
  13639. +
  13640. +#ifndef COBALT_POWERMODE_H
  13641. +#define COBALT_POWERMODE_H
  13642. +
  13643. +enum cobalt_powermode {
  13644. + COBALT_POWER_ON=1,
  13645. + COBALT_POWER_OFF=2,
  13646. + COBALT_POWER_SAME=3,
  13647. +};
  13648. +
  13649. +int __init cobalt_powermode_init (void);
  13650. +void __exit cobalt_powermode_exit (void);
  13651. +int cobalt_powermode_read_proc (char *buf, char **st, off_t off, int len, int *eof, void *x);
  13652. +int cobalt_powermode_write_proc (struct file *file, const char *buffer, unsigned long count, void *data);
  13653. +
  13654. +#endif
  13655. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/ruler.h linux-3.2.5-cobalt/include/cobalt/ruler.h
  13656. --- linux-3.2.5/include/cobalt/ruler.h 1969-12-31 16:00:00.000000000 -0800
  13657. +++ linux-3.2.5-cobalt/include/cobalt/ruler.h 2012-02-06 21:38:46.000000000 -0800
  13658. @@ -0,0 +1,15 @@
  13659. +/* $Id: cobalt-ruler.h,v 1.4 2001/06/08 20:46:44 thockin Exp $ */
  13660. +/* Copyright 2001 Sun Microsystems, Inc. */
  13661. +#ifndef COBALT_RULER_H
  13662. +#define COBALT_RULER_H
  13663. +
  13664. +#include <linux/ide.h>
  13665. +
  13666. +void cobalt_ruler_register(ide_drive_t *hwif);
  13667. +void cobalt_ruler_unregister(ide_drive_t *hwif);
  13668. +
  13669. +//typedef int (*cob_busproc_t) (struct hwif_s *, int);
  13670. +
  13671. +//int *cob_busproc_t (ide_drive_t *, int);
  13672. +
  13673. +#endif
  13674. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/sensors.h linux-3.2.5-cobalt/include/cobalt/sensors.h
  13675. --- linux-3.2.5/include/cobalt/sensors.h 1969-12-31 16:00:00.000000000 -0800
  13676. +++ linux-3.2.5-cobalt/include/cobalt/sensors.h 2012-02-06 21:38:46.000000000 -0800
  13677. @@ -0,0 +1,29 @@
  13678. +/* $Id: cobalt-sensors.h,v 1.2 2001/09/25 18:10:29 thockin Exp $ */
  13679. +/* Copyright 2001 Sun Microsystems, Inc. */
  13680. +#ifndef COBALT_SENSORS_H
  13681. +#define COBALT_SENSORS_H
  13682. +
  13683. +#include <cobalt/cobalt.h>
  13684. +
  13685. +extern unsigned int cobalt_nthermals;
  13686. +extern unsigned int cobalt_nvoltages;
  13687. +
  13688. +/* return NULL if the sensor doesn't exist, fill buf if it does */
  13689. +char *__cobalt_thermal_read(unsigned int sensor, char *buf, int len);
  13690. +char *__cobalt_voltage_read(unsigned int sensor, char *buf, int len);
  13691. +
  13692. +static inline char *
  13693. +cobalt_thermal_read(unsigned int sensor)
  13694. +{
  13695. + char buf[32];
  13696. + return __cobalt_thermal_read(sensor, buf, sizeof(buf)-1);
  13697. +}
  13698. +
  13699. +static inline char *
  13700. +cobalt_voltage_read(unsigned int sensor)
  13701. +{
  13702. + char buf[32];
  13703. + return __cobalt_voltage_read(sensor, buf, sizeof(buf)-1);
  13704. +}
  13705. +
  13706. +#endif
  13707. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/serialnum.h linux-3.2.5-cobalt/include/cobalt/serialnum.h
  13708. --- linux-3.2.5/include/cobalt/serialnum.h 1969-12-31 16:00:00.000000000 -0800
  13709. +++ linux-3.2.5-cobalt/include/cobalt/serialnum.h 2012-02-06 21:38:46.000000000 -0800
  13710. @@ -0,0 +1,16 @@
  13711. +/*
  13712. + * $Id: cobalt-serialnum.h,v 1.1 2001/03/07 01:58:24 thockin Exp $
  13713. + * cobalt-serialnum.h : access to the DS2401 serial number
  13714. + *
  13715. + * Copyright 2000 Cobalt Networks, Inc.
  13716. + * Copyright 2001 Sun Microsystems, Inc.
  13717. + */
  13718. +#ifndef COBALT_SERIALNUM_H
  13719. +#define COBALT_SERIALNUM_H
  13720. +
  13721. +#include <cobalt/cobalt.h>
  13722. +
  13723. +char *cobalt_serialnum_get(void);
  13724. +unsigned long cobalt_hostid_get(void);
  13725. +
  13726. +#endif /* COBALT_SERIALNUM_H */
  13727. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/superio.h linux-3.2.5-cobalt/include/cobalt/superio.h
  13728. --- linux-3.2.5/include/cobalt/superio.h 1969-12-31 16:00:00.000000000 -0800
  13729. +++ linux-3.2.5-cobalt/include/cobalt/superio.h 2012-02-06 21:38:46.000000000 -0800
  13730. @@ -0,0 +1,225 @@
  13731. +/*
  13732. + * $Id: cobalt-superio.h,v 1.11 2001/11/02 12:00:03 duncan Exp $
  13733. + * cobalt-superio.h : SuperIO support for Sun/Cobalt servers
  13734. + *
  13735. + * Copyright 2000 Cobalt Networks, Inc.
  13736. + * Copyright 2001 Sun Microsystems, Inc.
  13737. + */
  13738. +#ifndef COBALT_SUPERIO_H
  13739. +#define COBALT_SUPERIO_H
  13740. +
  13741. +#include <cobalt/cobalt.h>
  13742. +#include <cobalt/systype.h>
  13743. +
  13744. +/* the lock that protects superio accesses */
  13745. +extern spinlock_t cobalt_superio_lock;
  13746. +
  13747. +/*
  13748. + * The main functions of the SuperIO are accessed via index/data registers
  13749. + * These are the same for both SuperIO chip families
  13750. + */
  13751. +#define SUPERIO_INDEX_PORT 0x2e
  13752. +#define SUPERIO_DATA_PORT 0x2f
  13753. +
  13754. +/*
  13755. + * This index allows you to select a logical device
  13756. + */
  13757. +#define SUPERIO_LOGICAL_DEV 0x07
  13758. +
  13759. +/*
  13760. + * Type of SUPERIO
  13761. + */
  13762. +#define SUPERIO_SID 0x20
  13763. +
  13764. +/*
  13765. + * Some indices that are common to all logical devices
  13766. + */
  13767. +#define SUPERIO_ACTIVATE 0x30
  13768. +#define SUPERIO_ADDR_HIGH 0x60
  13769. +#define SUPERIO_ADDR_LOW 0x61
  13770. +#define SUPERIO_INTR_PIN 0x70
  13771. +#define SUPERIO_INTR_TYPE 0x71
  13772. +
  13773. +
  13774. +/*
  13775. + * PC87317 SuperIO is found on XTR
  13776. + */
  13777. +
  13778. +/*
  13779. + * logical devices - write to LOGICAL_DEV index
  13780. + */
  13781. +#define PC87317_DEV_RTC 0x02
  13782. +#define PC87317_DEV_GPIO 0x07
  13783. +#define PC87317_DEV_PM 0x08
  13784. +
  13785. +/* withing the PM dev, are the following indices */
  13786. +#define PC87317_PMDEV_WDTO 0x05
  13787. +#define PC87317_PMDEV_GPELO 0x0e
  13788. +#define PC87317_PMDEV_GPEHI 0x0f
  13789. +
  13790. +/* within the APC bank of RTC */
  13791. +#define PC87317_APCR1 0x40
  13792. +#define PC87317_APCR2 0x41
  13793. +#define PC87317_APCR3 0x49
  13794. +#define PC87317_APCR4 0x4a
  13795. +#define PC87317_APCR5 0x4b
  13796. +#define PC87317_APCR6 0x4c
  13797. +#define PC87317_APCR7 0x4d
  13798. +
  13799. +#define PC87317_RTC_BANK_MAIN 0
  13800. +#define PC87317_RTC_BANK_RTC 1
  13801. +#define PC87317_RTC_BANK_APC 2
  13802. +#define PC87317_RTC_CRA 0x0a
  13803. +#define PC87317_RTC_BANK_0 0x20
  13804. +#define PC87317_RTC_BANK_1 0x30
  13805. +#define PC87317_RTC_BANK_2 0x40
  13806. +
  13807. +#define PC87317_PWRBUTTON 0x01
  13808. +#define PC87317_PM1_STATUS 0x01
  13809. +
  13810. +/* offsets from GPEHI/GPELO */
  13811. +#define PC87317_GPE_GP1_STS0 0x00
  13812. +#define PC87317_GPE_GP1_STS1 0x01
  13813. +#define PC87317_GPE_GP1_STS2 0x02
  13814. +#define PC87317_GPE_GP1_STS3 0x03
  13815. +#define PC87317_GPE_GP1_EN0 0x04
  13816. +#define PC87317_GPE_GP1_EN1 0x05
  13817. +#define PC87317_GPE_GP1_EN2 0x06
  13818. +#define PC87317_GPE_GP1_EN3 0x07
  13819. +#define PC87317_GPE_GP2_EN0 0x08
  13820. +#define PC87317_GPE_SMI_CMD 0x0c
  13821. +
  13822. +/*
  13823. + * PC87417 family is found on alpine
  13824. + */
  13825. +
  13826. +#define PC87417_DEV_SWC 0x4
  13827. +#define PC87417_DEV_GPIO 0x7
  13828. +#define PC87417_DEV_RTC 0x10
  13829. +
  13830. +/* registers in the SWC dev */
  13831. +#define PC87417_SWC_PWONCTL 0x9
  13832. +/*
  13833. + * within the System Wake Control device, there are banks, write the bank you
  13834. + * want to SWC_BANK
  13835. + */
  13836. +#define PC87417_SWC_BANK 0xf
  13837. +#define PC87417_SWCBANK_ACPI 0x2
  13838. +#define PC87417_SWCBANK_WDT 0x3
  13839. +
  13840. +/*
  13841. + * the SWC WDT bank has 3 main registers
  13842. + */
  13843. +#define PC87417_WDT_CONTROL 0x10
  13844. +#define PC87417_WDT_TIMEOUT 0x11
  13845. +#define PC87417_WDT_CONFIG 0x12
  13846. +
  13847. +/*
  13848. + * within the SWC, two regs serve as index/data for wake-event enabling
  13849. + */
  13850. +#define PC87417_SWC_WKEVENT 0x0
  13851. +#define PC87417_SWC_WKSTATE 0x1
  13852. +#define PC87417_SWCWKEVENT_GPIOE42 0xa
  13853. +#define PC87417_SWCWKEVENT_RTC 0x18
  13854. +
  13855. +
  13856. +/*
  13857. + * types of superIOs
  13858. + */
  13859. +enum superio_type_t
  13860. +{
  13861. + SIO_TYPE_UNKNOWN,
  13862. + SIO_TYPE_PC8731X,
  13863. + SIO_TYPE_PC8741X,
  13864. +};
  13865. +
  13866. +
  13867. +
  13868. +#define PC8731X_SID 0xd0
  13869. +#define PC9731X_SID 0xdf
  13870. +#define PC8741X_SID 0xee
  13871. +
  13872. +static inline int superio_type( void )
  13873. +{
  13874. + u8 reg;
  13875. + unsigned long flags;
  13876. + enum superio_type_t type;
  13877. +
  13878. + spin_lock_irqsave(&cobalt_superio_lock, flags);
  13879. +
  13880. + outb(SUPERIO_SID, SUPERIO_INDEX_PORT);
  13881. + reg = inb( SUPERIO_DATA_PORT );
  13882. + switch( reg )
  13883. + {
  13884. + case PC8731X_SID:
  13885. + case PC9731X_SID:
  13886. + type = SIO_TYPE_PC8731X;
  13887. + break;
  13888. +
  13889. + case PC8741X_SID:
  13890. + type = SIO_TYPE_PC8741X;
  13891. + break;
  13892. +
  13893. + default:
  13894. + type = SIO_TYPE_UNKNOWN;
  13895. + break;
  13896. + }
  13897. +
  13898. + spin_unlock_irqrestore(&cobalt_superio_lock, flags);
  13899. +
  13900. + return type;
  13901. +}
  13902. +
  13903. +/*
  13904. + * stuff to make life easier
  13905. + */
  13906. +
  13907. +/* read the base address of a particular superio logical device */
  13908. +#define superio_ldev_base(ldev) superio_ldev_base_n(ldev, 0)
  13909. +static inline unsigned short
  13910. +superio_ldev_base_n(int ldev, int n)
  13911. +{
  13912. + unsigned long flags;
  13913. + unsigned short addr;
  13914. +
  13915. + spin_lock_irqsave(&cobalt_superio_lock, flags);
  13916. +
  13917. + /* select the logical device */
  13918. + outb(SUPERIO_LOGICAL_DEV, SUPERIO_INDEX_PORT);
  13919. + outb(ldev, SUPERIO_DATA_PORT);
  13920. +
  13921. + /* read the 2-byte base address */
  13922. + outb(SUPERIO_ADDR_HIGH+(n*2), SUPERIO_INDEX_PORT);
  13923. + addr = inb(SUPERIO_DATA_PORT) << 8;
  13924. + outb(SUPERIO_ADDR_LOW+(n*2), SUPERIO_INDEX_PORT);
  13925. + addr |= inb(SUPERIO_DATA_PORT);
  13926. +
  13927. + spin_unlock_irqrestore(&cobalt_superio_lock, flags);
  13928. +
  13929. + return addr;
  13930. +}
  13931. +
  13932. +static inline void
  13933. +superio_set_rtc_bank(const unsigned int page)
  13934. +{
  13935. + if (cobt_is_monterey()) {
  13936. + unsigned char val;
  13937. +
  13938. + val = CMOS_READ(0xa);
  13939. + val &= ~0x70;
  13940. + switch (page) {
  13941. + case PC87317_RTC_BANK_MAIN:
  13942. + val |= 0x20;
  13943. + break;
  13944. + case PC87317_RTC_BANK_RTC:
  13945. + val |= 0x30;
  13946. + break;
  13947. + case PC87317_RTC_BANK_APC:
  13948. + val |= 0x40;
  13949. + break;
  13950. + }
  13951. + CMOS_WRITE(val, 0xa);
  13952. + }
  13953. +}
  13954. +
  13955. +#endif /* COBALT_SUPERIO_H */
  13956. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/systype.h linux-3.2.5-cobalt/include/cobalt/systype.h
  13957. --- linux-3.2.5/include/cobalt/systype.h 1969-12-31 16:00:00.000000000 -0800
  13958. +++ linux-3.2.5-cobalt/include/cobalt/systype.h 2012-02-06 21:38:46.000000000 -0800
  13959. @@ -0,0 +1,99 @@
  13960. +/*
  13961. + * $Id: cobalt-systype.h,v 1.8 2002/08/08 22:46:50 carls Exp $
  13962. + * cobalt-systype.h : figure out what Cobalt system we are on
  13963. + *
  13964. + * Copyright 2000 Cobalt Networks, Inc.
  13965. + * Copyright 2001-2002 Sun Microsystems, Inc.
  13966. + */
  13967. +#ifndef COBALT_SYSTYPE_H
  13968. +#define COBALT_SYSTYPE_H
  13969. +
  13970. +#include <cobalt/cobalt.h>
  13971. +
  13972. +typedef enum {
  13973. + COBT_UNINITIALIZED,
  13974. + COBT_UNKNOWN,
  13975. + COBT_PACIFICA,
  13976. + COBT_CARMEL,
  13977. + COBT_MONTEREY,
  13978. + COBT_ALPINE,
  13979. + COBT_BIGBEAR,
  13980. +} cobt_sys_t;
  13981. +
  13982. +extern cobt_sys_t cobt_type;
  13983. +extern cobt_sys_t cobalt_systype_probe(void);
  13984. +extern unsigned long cobt_rev;
  13985. +
  13986. +/*
  13987. + * one test for each major board-type
  13988. + * COBT_SUPPORT_* from cobalt.h
  13989. + */
  13990. +
  13991. +/* pacifica is the RaQ 3 and RaQ 4 platform */
  13992. +static inline int
  13993. +cobt_is_pacifica(void)
  13994. +{
  13995. + if (!COBT_SUPPORT_GEN_III) {
  13996. + return 0;
  13997. + }
  13998. + if (cobt_type == COBT_UNINITIALIZED) {
  13999. + cobalt_systype_probe();
  14000. + }
  14001. + return (cobt_type == COBT_PACIFICA);
  14002. +}
  14003. +
  14004. +/* carmel is the Qube 3 platform */
  14005. +static inline int
  14006. +cobt_is_carmel(void)
  14007. +{
  14008. + if (!COBT_SUPPORT_GEN_III) {
  14009. + return 0;
  14010. + }
  14011. + if (cobt_type == COBT_UNINITIALIZED) {
  14012. + cobalt_systype_probe();
  14013. + }
  14014. + return (cobt_type == COBT_CARMEL);
  14015. +}
  14016. +
  14017. +/* monterey is the RaQ XTR platform */
  14018. +static inline int
  14019. +cobt_is_monterey(void)
  14020. +{
  14021. + if (!COBT_SUPPORT_GEN_V) {
  14022. + return 0;
  14023. + }
  14024. + if (cobt_type == COBT_UNINITIALIZED) {
  14025. + cobalt_systype_probe();
  14026. + }
  14027. + return (cobt_type == COBT_MONTEREY);
  14028. +}
  14029. +
  14030. +static inline int
  14031. +cobt_is_alpine(void)
  14032. +{
  14033. + if (!COBT_SUPPORT_GEN_V) {
  14034. + return 0;
  14035. + }
  14036. + if (cobt_type == COBT_UNINITIALIZED) {
  14037. + cobalt_systype_probe();
  14038. + }
  14039. + return (cobt_type == COBT_ALPINE);
  14040. +}
  14041. +
  14042. +static inline int
  14043. +cobt_is_bigbear(void)
  14044. +{
  14045. + if (!COBT_SUPPORT_GEN_V) {
  14046. + return 0;
  14047. + }
  14048. + if (cobt_type == COBT_UNINITIALIZED) {
  14049. + cobalt_systype_probe();
  14050. + }
  14051. + return (cobt_type == COBT_BIGBEAR);
  14052. +}
  14053. +
  14054. +/* one for each major generation */
  14055. +#define cobt_is_3k() (cobt_is_pacifica() || cobt_is_carmel())
  14056. +#define cobt_is_5k() (cobt_is_monterey() || cobt_is_alpine() || cobt_is_bigbear())
  14057. +
  14058. +#endif
  14059. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/cobalt/wdt.h linux-3.2.5-cobalt/include/cobalt/wdt.h
  14060. --- linux-3.2.5/include/cobalt/wdt.h 1969-12-31 16:00:00.000000000 -0800
  14061. +++ linux-3.2.5-cobalt/include/cobalt/wdt.h 2012-02-06 21:38:46.000000000 -0800
  14062. @@ -0,0 +1,16 @@
  14063. +/* $Id: cobalt-wdt.h,v 1.1 2001/03/07 01:58:24 thockin Exp $ */
  14064. +/* Copyright 2001 Sun Microsystems, Inc. */
  14065. +#ifndef COBALT_WDT_H
  14066. +#define COBALT_WDT_H
  14067. +
  14068. +#include <cobalt/cobalt.h>
  14069. +
  14070. +void cobalt_wdt_refresh(unsigned long refresh_timer);
  14071. +void cobalt_wdt_trigger_reboot(void);
  14072. +
  14073. +void cobalt_wdt_disable(void);
  14074. +void cobalt_wdt_reenable(void);
  14075. +
  14076. +void cobalt_wdt_cleardog(void);
  14077. +
  14078. +#endif
  14079. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/include/linux/reboot.h linux-3.2.5-cobalt/include/linux/reboot.h
  14080. --- linux-3.2.5/include/linux/reboot.h 2012-02-06 09:47:00.000000000 -0800
  14081. +++ linux-3.2.5-cobalt/include/linux/reboot.h 2012-02-06 21:38:46.000000000 -0800
  14082. @@ -55,6 +55,7 @@
  14083. extern void machine_restart(char *cmd);
  14084. extern void machine_halt(void);
  14085. extern void machine_power_off(void);
  14086. +extern void wait_for_flush(void);
  14087.  
  14088. extern void machine_shutdown(void);
  14089. struct pt_regs;
  14090. diff -U 3 -H -d -r -N -x distcc -x files_i486 -x .directory -x log_i486 -x doc -x .svn -x build_i486 -x .tgz -x .iso -- linux-3.2.5/init/main.c linux-3.2.5-cobalt/init/main.c
  14091. --- linux-3.2.5/init/main.c 2012-02-06 09:47:00.000000000 -0800
  14092. +++ linux-3.2.5-cobalt/init/main.c 2012-02-06 21:38:46.000000000 -0800
  14093. @@ -727,6 +727,10 @@
  14094. *
  14095. * Now we can finally start doing some real work..
  14096. */
  14097. +#ifdef CONFIG_COBALT_RAQ
  14098. +extern int cobalt_init(void);
  14099. +#endif
  14100. +
  14101. static void __init do_basic_setup(void)
  14102. {
  14103. cpuset_init_smp();
  14104. @@ -737,6 +741,10 @@
  14105. do_ctors();
  14106. usermodehelper_enable();
  14107. do_initcalls();
  14108. +
  14109. +#ifdef CONFIG_COBALT_RAQ
  14110. + cobalt_init();
  14111. +#endif
  14112. random_int_secret_init();
  14113. }
Add Comment
Please, Sign In to add comment