daily pastebin goal
74%
SHARE
TWEET

linux-cobalt-3.2.65.patch

a guest Feb 11th, 2017 218 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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      0