Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci

* 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci: (69 commits)
davinci: Initial support for Neuros OSD2 platform.
davinci: remove unused variable in arch/arm/mach-davinci/board-sffsdr.c
davinci: fix section mismatch warning in arch/arm/mach-davinci/board-dm646x-evm.c
DaVinci: DM365: Enable DaVinci RTC support for DM365 EVM
DA8xx/OMAP-L1xx: Add high speed SD/MMC capabilities
davinci: DA8XX/OMAP-L1XX: enable cpuidle and regulator in defconfig
davinci: DA850/OMAP-L138: avoid using separate initcall for initializing regulator
davinci: DA850/OMAP-L138 EVM: register for cpuidle support
davinci: DA8XX/OMAP-L1XX: add support for cpuidle driver register
davinci: add CPU idle driver
davinci: DA8XX/OMAP-L1XX: fix compiler warning
davinci: DA850/OMAP-L138: eliminate static function declaration
davinci: DA850/OMAP-L138 EVM: simplify configuration of emac in MII/RMII mode
davinci: DA850/OMAP-L138 EVM: get rid of DA850_UI_EXP config option
davinci: DA850/OMAP-L138 EVM: implement autodetect of RMII PHY
davinci: DA830/OMAP-L137 EVM: do not configure NAND on UI card when MMC/SD is selected
davinci: DA830/OMAP-L137 EVM: use runtime detection for UI card
davinci: DA830/OMAP-L137 EVM: remove ifdefs inside da830_evm_init()
davinci: DA830/OMAP-L137 EVM: fix warning with default config
davinci: Add NAND support for DA830/OMAP-L137 EVM platform
...

+3058 -1769
+182 -104
arch/arm/configs/da830_omapl137_defconfig arch/arm/configs/da8xx_omapl_defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.30-rc2-davinci1 4 - # Wed May 13 15:33:29 2009 3 + # Linux kernel version: 2.6.32-rc5 4 + # Thu Oct 22 12:19:19 2009 5 5 # 6 6 CONFIG_ARM=y 7 7 CONFIG_SYS_SUPPORTS_APM_EMULATION=y 8 8 CONFIG_GENERIC_GPIO=y 9 9 CONFIG_GENERIC_TIME=y 10 10 CONFIG_GENERIC_CLOCKEVENTS=y 11 - CONFIG_MMU=y 12 - # CONFIG_NO_IOPORT is not set 13 11 CONFIG_GENERIC_HARDIRQS=y 14 12 CONFIG_STACKTRACE_SUPPORT=y 15 13 CONFIG_HAVE_LATENCYTOP_SUPPORT=y ··· 16 18 CONFIG_HARDIRQS_SW_RESEND=y 17 19 CONFIG_GENERIC_IRQ_PROBE=y 18 20 CONFIG_RWSEM_GENERIC_SPINLOCK=y 19 - # CONFIG_ARCH_HAS_ILOG2_U32 is not set 20 - # CONFIG_ARCH_HAS_ILOG2_U64 is not set 21 + CONFIG_ARCH_HAS_CPUFREQ=y 21 22 CONFIG_GENERIC_HWEIGHT=y 22 23 CONFIG_GENERIC_CALIBRATE_DELAY=y 23 24 CONFIG_ZONE_DMA=y 24 25 CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 25 26 CONFIG_VECTORS_BASE=0xffff0000 26 27 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 28 + CONFIG_CONSTRUCTORS=y 27 29 28 30 # 29 31 # General setup ··· 46 48 # 47 49 # RCU Subsystem 48 50 # 49 - CONFIG_CLASSIC_RCU=y 50 - # CONFIG_TREE_RCU is not set 51 - # CONFIG_PREEMPT_RCU is not set 51 + CONFIG_TREE_RCU=y 52 + # CONFIG_TREE_PREEMPT_RCU is not set 53 + # CONFIG_RCU_TRACE is not set 54 + CONFIG_RCU_FANOUT=32 55 + # CONFIG_RCU_FANOUT_EXACT is not set 52 56 # CONFIG_TREE_RCU_TRACE is not set 53 - # CONFIG_PREEMPT_RCU_TRACE is not set 54 57 CONFIG_IKCONFIG=y 55 58 CONFIG_IKCONFIG_PROC=y 56 59 CONFIG_LOG_BUF_SHIFT=14 ··· 61 62 CONFIG_USER_SCHED=y 62 63 # CONFIG_CGROUP_SCHED is not set 63 64 # CONFIG_CGROUPS is not set 64 - CONFIG_SYSFS_DEPRECATED=y 65 - CONFIG_SYSFS_DEPRECATED_V2=y 65 + # CONFIG_SYSFS_DEPRECATED_V2 is not set 66 66 # CONFIG_RELAY is not set 67 67 # CONFIG_NAMESPACES is not set 68 68 CONFIG_BLK_DEV_INITRD=y ··· 78 80 CONFIG_KALLSYMS=y 79 81 # CONFIG_KALLSYMS_ALL is not set 80 82 # CONFIG_KALLSYMS_EXTRA_PASS is not set 81 - # CONFIG_STRIP_ASM_SYMS is not set 82 83 CONFIG_HOTPLUG=y 83 84 CONFIG_PRINTK=y 84 85 CONFIG_BUG=y ··· 90 93 CONFIG_EVENTFD=y 91 94 CONFIG_SHMEM=y 92 95 CONFIG_AIO=y 96 + 97 + # 98 + # Kernel Performance Events And Counters 99 + # 93 100 CONFIG_VM_EVENT_COUNTERS=y 94 101 CONFIG_SLUB_DEBUG=y 95 102 CONFIG_COMPAT_BRK=y ··· 101 100 CONFIG_SLUB=y 102 101 # CONFIG_SLOB is not set 103 102 # CONFIG_PROFILING is not set 104 - # CONFIG_MARKERS is not set 105 103 CONFIG_HAVE_OPROFILE=y 106 104 # CONFIG_KPROBES is not set 107 105 CONFIG_HAVE_KPROBES=y 108 106 CONFIG_HAVE_KRETPROBES=y 109 107 CONFIG_HAVE_CLK=y 108 + 109 + # 110 + # GCOV-based kernel profiling 111 + # 112 + # CONFIG_GCOV_KERNEL is not set 110 113 # CONFIG_SLOW_WORK is not set 111 114 CONFIG_HAVE_GENERIC_DMA_COHERENT=y 112 115 CONFIG_SLABINFO=y ··· 123 118 CONFIG_MODVERSIONS=y 124 119 # CONFIG_MODULE_SRCVERSION_ALL is not set 125 120 CONFIG_BLOCK=y 126 - # CONFIG_LBD is not set 121 + CONFIG_LBDAF=y 127 122 # CONFIG_BLK_DEV_BSG is not set 128 123 # CONFIG_BLK_DEV_INTEGRITY is not set 129 124 ··· 144 139 # 145 140 # System Type 146 141 # 142 + CONFIG_MMU=y 147 143 # CONFIG_ARCH_AAEC2000 is not set 148 144 # CONFIG_ARCH_INTEGRATOR is not set 149 145 # CONFIG_ARCH_REALVIEW is not set 150 146 # CONFIG_ARCH_VERSATILE is not set 151 147 # CONFIG_ARCH_AT91 is not set 152 148 # CONFIG_ARCH_CLPS711X is not set 149 + # CONFIG_ARCH_GEMINI is not set 153 150 # CONFIG_ARCH_EBSA110 is not set 154 151 # CONFIG_ARCH_EP93XX is not set 155 - # CONFIG_ARCH_GEMINI is not set 156 152 # CONFIG_ARCH_FOOTBRIDGE is not set 153 + # CONFIG_ARCH_MXC is not set 154 + # CONFIG_ARCH_STMP3XXX is not set 157 155 # CONFIG_ARCH_NETX is not set 158 156 # CONFIG_ARCH_H720X is not set 159 - # CONFIG_ARCH_IMX is not set 157 + # CONFIG_ARCH_NOMADIK is not set 160 158 # CONFIG_ARCH_IOP13XX is not set 161 159 # CONFIG_ARCH_IOP32X is not set 162 160 # CONFIG_ARCH_IOP33X is not set ··· 168 160 # CONFIG_ARCH_IXP4XX is not set 169 161 # CONFIG_ARCH_L7200 is not set 170 162 # CONFIG_ARCH_KIRKWOOD is not set 171 - # CONFIG_ARCH_KS8695 is not set 172 - # CONFIG_ARCH_NS9XXX is not set 173 163 # CONFIG_ARCH_LOKI is not set 174 164 # CONFIG_ARCH_MV78XX0 is not set 175 - # CONFIG_ARCH_MXC is not set 176 165 # CONFIG_ARCH_ORION5X is not set 166 + # CONFIG_ARCH_MMP is not set 167 + # CONFIG_ARCH_KS8695 is not set 168 + # CONFIG_ARCH_NS9XXX is not set 169 + # CONFIG_ARCH_W90X900 is not set 177 170 # CONFIG_ARCH_PNX4008 is not set 178 171 # CONFIG_ARCH_PXA is not set 179 - # CONFIG_ARCH_MMP is not set 172 + # CONFIG_ARCH_MSM is not set 180 173 # CONFIG_ARCH_RPC is not set 181 174 # CONFIG_ARCH_SA1100 is not set 182 175 # CONFIG_ARCH_S3C2410 is not set 183 176 # CONFIG_ARCH_S3C64XX is not set 177 + # CONFIG_ARCH_S5PC1XX is not set 184 178 # CONFIG_ARCH_SHARK is not set 185 179 # CONFIG_ARCH_LH7A40X is not set 180 + # CONFIG_ARCH_U300 is not set 186 181 CONFIG_ARCH_DAVINCI=y 187 182 # CONFIG_ARCH_OMAP is not set 188 - # CONFIG_ARCH_MSM is not set 189 - # CONFIG_ARCH_W90X900 is not set 183 + # CONFIG_ARCH_BCMRING is not set 190 184 CONFIG_CP_INTC=y 191 185 192 186 # ··· 199 189 # DaVinci Core Type 200 190 # 201 191 # CONFIG_ARCH_DAVINCI_DM644x is not set 202 - # CONFIG_ARCH_DAVINCI_DM646x is not set 203 192 # CONFIG_ARCH_DAVINCI_DM355 is not set 193 + # CONFIG_ARCH_DAVINCI_DM646x is not set 204 194 CONFIG_ARCH_DAVINCI_DA830=y 195 + CONFIG_ARCH_DAVINCI_DA850=y 196 + CONFIG_ARCH_DAVINCI_DA8XX=y 197 + # CONFIG_ARCH_DAVINCI_DM365 is not set 205 198 206 199 # 207 200 # DaVinci Board Type 208 201 # 209 202 CONFIG_MACH_DAVINCI_DA830_EVM=y 203 + CONFIG_DA830_UI=y 204 + CONFIG_DA830_UI_LCD=y 205 + # CONFIG_DA830_UI_NAND is not set 206 + CONFIG_MACH_DAVINCI_DA850_EVM=y 207 + CONFIG_DA850_UI_EXP=y 208 + CONFIG_DA850_UI_NONE=y 209 + # CONFIG_DA850_UI_RMII is not set 210 210 CONFIG_DAVINCI_MUX=y 211 211 # CONFIG_DAVINCI_MUX_DEBUG is not set 212 212 # CONFIG_DAVINCI_MUX_WARNINGS is not set ··· 229 209 CONFIG_CPU_ARM926T=y 230 210 CONFIG_CPU_32v5=y 231 211 CONFIG_CPU_ABRT_EV5TJ=y 232 - CONFIG_CPU_PABRT_NOIFAR=y 212 + CONFIG_CPU_PABRT_LEGACY=y 233 213 CONFIG_CPU_CACHE_VIVT=y 234 214 CONFIG_CPU_COPY_V4WB=y 235 215 CONFIG_CPU_TLB_V4WBI=y ··· 244 224 # CONFIG_CPU_DCACHE_DISABLE is not set 245 225 CONFIG_CPU_DCACHE_WRITETHROUGH=y 246 226 # CONFIG_CPU_CACHE_ROUND_ROBIN is not set 247 - # CONFIG_OUTER_CACHE is not set 227 + CONFIG_ARM_L1_CACHE_SHIFT=5 248 228 CONFIG_COMMON_CLKDEV=y 249 229 250 230 # ··· 265 245 # CONFIG_VMSPLIT_2G is not set 266 246 # CONFIG_VMSPLIT_1G is not set 267 247 CONFIG_PAGE_OFFSET=0xC0000000 248 + # CONFIG_PREEMPT_NONE is not set 249 + # CONFIG_PREEMPT_VOLUNTARY is not set 268 250 CONFIG_PREEMPT=y 269 251 CONFIG_HZ=100 270 252 CONFIG_AEABI=y 271 253 # CONFIG_OABI_COMPAT is not set 272 - CONFIG_ARCH_FLATMEM_HAS_HOLES=y 273 254 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set 274 255 # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set 275 256 # CONFIG_HIGHMEM is not set ··· 286 265 CONFIG_ZONE_DMA_FLAG=1 287 266 CONFIG_BOUNCE=y 288 267 CONFIG_VIRT_TO_BUS=y 289 - CONFIG_UNEVICTABLE_LRU=y 290 268 CONFIG_HAVE_MLOCK=y 291 269 CONFIG_HAVE_MLOCKED_PAGE_BIT=y 270 + # CONFIG_KSM is not set 271 + CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 292 272 CONFIG_LEDS=y 293 273 # CONFIG_LEDS_CPU is not set 294 274 CONFIG_ALIGNMENT_TRAP=y 275 + # CONFIG_UACCESS_WITH_MEMCPY is not set 295 276 296 277 # 297 278 # Boot options ··· 307 284 # 308 285 # CPU Power Management 309 286 # 310 - # CONFIG_CPU_IDLE is not set 287 + CONFIG_CPU_FREQ=y 288 + CONFIG_CPU_FREQ_TABLE=y 289 + # CONFIG_CPU_FREQ_DEBUG is not set 290 + CONFIG_CPU_FREQ_STAT=y 291 + # CONFIG_CPU_FREQ_STAT_DETAILS is not set 292 + # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set 293 + # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set 294 + CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y 295 + # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set 296 + # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set 297 + CONFIG_CPU_FREQ_GOV_PERFORMANCE=m 298 + CONFIG_CPU_FREQ_GOV_POWERSAVE=m 299 + CONFIG_CPU_FREQ_GOV_USERSPACE=y 300 + CONFIG_CPU_FREQ_GOV_ONDEMAND=m 301 + # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set 302 + CONFIG_CPU_IDLE=y 303 + CONFIG_CPU_IDLE_GOV_LADDER=y 304 + CONFIG_CPU_IDLE_GOV_MENU=y 311 305 312 306 # 313 307 # Floating point emulation ··· 438 398 # CONFIG_IP6_NF_IPTABLES is not set 439 399 # CONFIG_IP_DCCP is not set 440 400 # CONFIG_IP_SCTP is not set 401 + # CONFIG_RDS is not set 441 402 # CONFIG_TIPC is not set 442 403 # CONFIG_ATM is not set 443 404 # CONFIG_BRIDGE is not set ··· 453 412 # CONFIG_ECONET is not set 454 413 # CONFIG_WAN_ROUTER is not set 455 414 # CONFIG_PHONET is not set 415 + # CONFIG_IEEE802154 is not set 456 416 # CONFIG_NET_SCHED is not set 457 417 # CONFIG_DCB is not set 458 418 ··· 479 437 # Generic Driver Options 480 438 # 481 439 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 440 + # CONFIG_DEVTMPFS is not set 482 441 CONFIG_STANDALONE=y 483 442 CONFIG_PREVENT_FIRMWARE_BUILD=y 484 443 # CONFIG_FW_LOADER is not set ··· 500 457 # CONFIG_BLK_DEV_XIP is not set 501 458 # CONFIG_CDROM_PKTCDVD is not set 502 459 # CONFIG_ATA_OVER_ETH is not set 460 + # CONFIG_MG_DISK is not set 503 461 CONFIG_MISC_DEVICES=y 504 462 # CONFIG_ICS932S401 is not set 505 463 # CONFIG_ENCLOSURE_SERVICES is not set ··· 512 468 # 513 469 CONFIG_EEPROM_AT24=y 514 470 # CONFIG_EEPROM_LEGACY is not set 471 + # CONFIG_EEPROM_MAX6875 is not set 515 472 # CONFIG_EEPROM_93CX6 is not set 516 473 CONFIG_HAVE_IDE=y 517 474 # CONFIG_IDE is not set ··· 536 491 # CONFIG_BLK_DEV_SR is not set 537 492 # CONFIG_CHR_DEV_SG is not set 538 493 # CONFIG_CHR_DEV_SCH is not set 539 - 540 - # 541 - # Some SCSI devices (e.g. CD jukebox) support multiple LUNs 542 - # 543 494 # CONFIG_SCSI_MULTI_LUN is not set 544 495 # CONFIG_SCSI_CONSTANTS is not set 545 496 # CONFIG_SCSI_LOGGING is not set ··· 560 519 # CONFIG_ATA is not set 561 520 # CONFIG_MD is not set 562 521 CONFIG_NETDEVICES=y 563 - CONFIG_COMPAT_NET_DEV_OPS=y 564 522 # CONFIG_DUMMY is not set 565 523 # CONFIG_BONDING is not set 566 524 # CONFIG_MACVLAN is not set ··· 604 564 # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 605 565 # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 606 566 # CONFIG_B44 is not set 567 + # CONFIG_KS8842 is not set 568 + # CONFIG_KS8851_MLL is not set 607 569 # CONFIG_NETDEV_1000 is not set 608 570 # CONFIG_NETDEV_10000 is not set 609 - 610 - # 611 - # Wireless LAN 612 - # 571 + CONFIG_WLAN=y 613 572 # CONFIG_WLAN_PRE80211 is not set 614 573 # CONFIG_WLAN_80211 is not set 615 574 ··· 624 585 CONFIG_NETPOLL_TRAP=y 625 586 CONFIG_NET_POLL_CONTROLLER=y 626 587 # CONFIG_ISDN is not set 588 + # CONFIG_PHONE is not set 627 589 628 590 # 629 591 # Input device support ··· 648 608 # Input Device Drivers 649 609 # 650 610 CONFIG_INPUT_KEYBOARD=y 611 + # CONFIG_KEYBOARD_ADP5588 is not set 651 612 CONFIG_KEYBOARD_ATKBD=m 652 - # CONFIG_KEYBOARD_SUNKBD is not set 613 + # CONFIG_QT2160 is not set 653 614 # CONFIG_KEYBOARD_LKKBD is not set 654 - CONFIG_KEYBOARD_XTKBD=m 655 - # CONFIG_KEYBOARD_NEWTON is not set 656 - # CONFIG_KEYBOARD_STOWAWAY is not set 657 615 CONFIG_KEYBOARD_GPIO=y 616 + # CONFIG_KEYBOARD_MATRIX is not set 617 + # CONFIG_KEYBOARD_MAX7359 is not set 618 + # CONFIG_KEYBOARD_NEWTON is not set 619 + # CONFIG_KEYBOARD_OPENCORES is not set 620 + # CONFIG_KEYBOARD_STOWAWAY is not set 621 + # CONFIG_KEYBOARD_SUNKBD is not set 622 + CONFIG_KEYBOARD_XTKBD=m 658 623 # CONFIG_INPUT_MOUSE is not set 659 624 # CONFIG_INPUT_JOYSTICK is not set 660 625 # CONFIG_INPUT_TABLET is not set 661 626 CONFIG_INPUT_TOUCHSCREEN=y 662 627 # CONFIG_TOUCHSCREEN_AD7879_I2C is not set 663 628 # CONFIG_TOUCHSCREEN_AD7879 is not set 629 + # CONFIG_TOUCHSCREEN_EETI is not set 664 630 # CONFIG_TOUCHSCREEN_FUJITSU is not set 665 631 # CONFIG_TOUCHSCREEN_GUNZE is not set 666 632 # CONFIG_TOUCHSCREEN_ELO is not set 667 633 # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set 634 + # CONFIG_TOUCHSCREEN_MCS5000 is not set 668 635 # CONFIG_TOUCHSCREEN_MTOUCH is not set 669 636 # CONFIG_TOUCHSCREEN_INEXIO is not set 670 637 # CONFIG_TOUCHSCREEN_MK712 is not set ··· 680 633 # CONFIG_TOUCHSCREEN_TOUCHWIN is not set 681 634 # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set 682 635 # CONFIG_TOUCHSCREEN_TSC2007 is not set 636 + # CONFIG_TOUCHSCREEN_W90X900 is not set 683 637 # CONFIG_INPUT_MISC is not set 684 638 685 639 # ··· 729 681 # CONFIG_TCG_TPM is not set 730 682 CONFIG_I2C=y 731 683 CONFIG_I2C_BOARDINFO=y 684 + CONFIG_I2C_COMPAT=y 732 685 CONFIG_I2C_CHARDEV=y 733 686 CONFIG_I2C_HELPER_AUTO=y 734 687 ··· 741 692 # I2C system bus drivers (mostly embedded / system-on-chip) 742 693 # 743 694 CONFIG_I2C_DAVINCI=y 695 + # CONFIG_I2C_DESIGNWARE is not set 744 696 # CONFIG_I2C_GPIO is not set 745 697 # CONFIG_I2C_OCORES is not set 746 698 # CONFIG_I2C_SIMTEC is not set ··· 762 712 # Miscellaneous I2C Chip support 763 713 # 764 714 # CONFIG_DS1682 is not set 765 - # CONFIG_SENSORS_PCA9539 is not set 766 - # CONFIG_SENSORS_MAX6875 is not set 767 715 # CONFIG_SENSORS_TSL2550 is not set 768 716 # CONFIG_I2C_DEBUG_CORE is not set 769 717 # CONFIG_I2C_DEBUG_ALGO is not set 770 718 # CONFIG_I2C_DEBUG_BUS is not set 771 719 # CONFIG_I2C_DEBUG_CHIP is not set 772 720 # CONFIG_SPI is not set 721 + 722 + # 723 + # PPS support 724 + # 725 + # CONFIG_PPS is not set 773 726 CONFIG_ARCH_REQUIRE_GPIOLIB=y 774 727 CONFIG_GPIOLIB=y 775 728 # CONFIG_DEBUG_GPIO is not set ··· 786 733 # I2C GPIO expanders: 787 734 # 788 735 # CONFIG_GPIO_MAX732X is not set 789 - # CONFIG_GPIO_PCA953X is not set 790 - CONFIG_GPIO_PCF857X=m 736 + CONFIG_GPIO_PCA953X=y 737 + CONFIG_GPIO_PCF857X=y 791 738 792 739 # 793 740 # PCI GPIO expanders: ··· 796 743 # 797 744 # SPI GPIO expanders: 798 745 # 746 + 747 + # 748 + # AC97 GPIO expanders: 749 + # 799 750 # CONFIG_W1 is not set 800 751 # CONFIG_POWER_SUPPLY is not set 801 752 # CONFIG_HWMON is not set 802 753 # CONFIG_THERMAL is not set 803 - # CONFIG_THERMAL_HWMON is not set 804 754 CONFIG_WATCHDOG=y 805 755 # CONFIG_WATCHDOG_NOWAYOUT is not set 806 756 ··· 835 779 # CONFIG_MFD_TC6393XB is not set 836 780 # CONFIG_PMIC_DA903X is not set 837 781 # CONFIG_MFD_WM8400 is not set 782 + # CONFIG_MFD_WM831X is not set 838 783 # CONFIG_MFD_WM8350_I2C is not set 839 784 # CONFIG_MFD_PCF50633 is not set 840 - 841 - # 842 - # Multimedia devices 843 - # 844 - 845 - # 846 - # Multimedia core support 847 - # 848 - # CONFIG_VIDEO_DEV is not set 849 - # CONFIG_DVB_CORE is not set 850 - # CONFIG_VIDEO_MEDIA is not set 851 - 852 - # 853 - # Multimedia drivers 854 - # 855 - # CONFIG_DAB is not set 785 + # CONFIG_AB3100_CORE is not set 786 + CONFIG_REGULATOR=y 787 + # CONFIG_REGULATOR_DEBUG is not set 788 + # CONFIG_REGULATOR_FIXED_VOLTAGE is not set 789 + # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set 790 + # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set 791 + # CONFIG_REGULATOR_BQ24022 is not set 792 + # CONFIG_REGULATOR_MAX1586 is not set 793 + # CONFIG_REGULATOR_LP3971 is not set 794 + # CONFIG_REGULATOR_TPS65023 is not set 795 + CONFIG_REGULATOR_TPS6507X=y 796 + # CONFIG_MEDIA_SUPPORT is not set 856 797 857 798 # 858 799 # Graphics support 859 800 # 860 801 # CONFIG_VGASTATE is not set 861 802 # CONFIG_VIDEO_OUTPUT_CONTROL is not set 862 - # CONFIG_FB is not set 803 + CONFIG_FB=y 804 + # CONFIG_FIRMWARE_EDID is not set 805 + # CONFIG_FB_DDC is not set 806 + # CONFIG_FB_BOOT_VESA_SUPPORT is not set 807 + CONFIG_FB_CFB_FILLRECT=y 808 + CONFIG_FB_CFB_COPYAREA=y 809 + CONFIG_FB_CFB_IMAGEBLIT=y 810 + # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 811 + # CONFIG_FB_SYS_FILLRECT is not set 812 + # CONFIG_FB_SYS_COPYAREA is not set 813 + # CONFIG_FB_SYS_IMAGEBLIT is not set 814 + # CONFIG_FB_FOREIGN_ENDIAN is not set 815 + # CONFIG_FB_SYS_FOPS is not set 816 + # CONFIG_FB_SVGALIB is not set 817 + # CONFIG_FB_MACMODES is not set 818 + # CONFIG_FB_BACKLIGHT is not set 819 + # CONFIG_FB_MODE_HELPERS is not set 820 + # CONFIG_FB_TILEBLITTING is not set 821 + 822 + # 823 + # Frame buffer hardware drivers 824 + # 825 + # CONFIG_FB_S1D13XXX is not set 826 + # CONFIG_FB_DAVINCI is not set 827 + # CONFIG_FB_VIRTUAL is not set 828 + CONFIG_FB_DA8XX=y 829 + # CONFIG_FB_METRONOME is not set 830 + # CONFIG_FB_MB862XX is not set 831 + # CONFIG_FB_BROADSHEET is not set 863 832 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set 864 833 865 834 # ··· 897 816 # 898 817 # CONFIG_VGA_CONSOLE is not set 899 818 CONFIG_DUMMY_CONSOLE=y 819 + CONFIG_FRAMEBUFFER_CONSOLE=y 820 + # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set 821 + # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 822 + # CONFIG_FONTS is not set 823 + CONFIG_FONT_8x8=y 824 + CONFIG_FONT_8x16=y 825 + CONFIG_LOGO=y 826 + CONFIG_LOGO_LINUX_MONO=y 827 + CONFIG_LOGO_LINUX_VGA16=y 828 + CONFIG_LOGO_LINUX_CLUT224=y 900 829 CONFIG_SOUND=m 901 830 # CONFIG_SOUND_OSS_CORE is not set 902 831 CONFIG_SND=m ··· 922 831 CONFIG_SND_VERBOSE_PROCFS=y 923 832 # CONFIG_SND_VERBOSE_PRINTK is not set 924 833 # CONFIG_SND_DEBUG is not set 834 + # CONFIG_SND_RAWMIDI_SEQ is not set 835 + # CONFIG_SND_OPL3_LIB_SEQ is not set 836 + # CONFIG_SND_OPL4_LIB_SEQ is not set 837 + # CONFIG_SND_SBAWE_SEQ is not set 838 + # CONFIG_SND_EMU10K1_SEQ is not set 925 839 CONFIG_SND_DRIVERS=y 926 840 # CONFIG_SND_DUMMY is not set 927 841 # CONFIG_SND_MTPAV is not set ··· 935 839 CONFIG_SND_ARM=y 936 840 CONFIG_SND_SOC=m 937 841 CONFIG_SND_DAVINCI_SOC=m 842 + # CONFIG_SND_DA830_SOC_EVM is not set 843 + # CONFIG_SND_DA850_SOC_EVM is not set 938 844 CONFIG_SND_SOC_I2C_AND_SPI=m 939 845 # CONFIG_SND_SOC_ALL_CODECS is not set 940 846 # CONFIG_SOUND_PRIME is not set 941 847 # CONFIG_HID_SUPPORT is not set 942 848 # CONFIG_USB_SUPPORT is not set 943 - # CONFIG_USB_MUSB_HOST is not set 944 - # CONFIG_USB_MUSB_PERIPHERAL is not set 945 - # CONFIG_USB_MUSB_OTG is not set 946 - # CONFIG_USB_GADGET_MUSB_HDRC is not set 947 - # CONFIG_USB_GADGET_AT91 is not set 948 - # CONFIG_USB_GADGET_ATMEL_USBA is not set 949 - # CONFIG_USB_GADGET_FSL_USB2 is not set 950 - # CONFIG_USB_GADGET_LH7A40X is not set 951 - # CONFIG_USB_GADGET_OMAP is not set 952 - # CONFIG_USB_GADGET_PXA25X is not set 953 - # CONFIG_USB_GADGET_PXA27X is not set 954 - # CONFIG_USB_GADGET_S3C2410 is not set 955 - # CONFIG_USB_GADGET_IMX is not set 956 - # CONFIG_USB_GADGET_M66592 is not set 957 - # CONFIG_USB_GADGET_AMD5536UDC is not set 958 - # CONFIG_USB_GADGET_FSL_QE is not set 959 - # CONFIG_USB_GADGET_CI13XXX is not set 960 - # CONFIG_USB_GADGET_NET2280 is not set 961 - # CONFIG_USB_GADGET_GOKU is not set 962 - # CONFIG_USB_GADGET_DUMMY_HCD is not set 963 - # CONFIG_USB_ZERO is not set 964 - # CONFIG_USB_ETH is not set 965 - # CONFIG_USB_GADGETFS is not set 966 - # CONFIG_USB_FILE_STORAGE is not set 967 - # CONFIG_USB_G_SERIAL is not set 968 - # CONFIG_USB_MIDI_GADGET is not set 969 - # CONFIG_USB_G_PRINTER is not set 970 - # CONFIG_USB_CDC_COMPOSITE is not set 971 849 # CONFIG_MMC is not set 972 850 # CONFIG_MEMSTICK is not set 973 - # CONFIG_ACCESSIBILITY is not set 974 851 # CONFIG_NEW_LEDS is not set 852 + # CONFIG_ACCESSIBILITY is not set 975 853 CONFIG_RTC_LIB=y 976 854 # CONFIG_RTC_CLASS is not set 977 855 # CONFIG_DMADEVICES is not set 978 856 # CONFIG_AUXDISPLAY is not set 979 - # CONFIG_REGULATOR is not set 980 857 # CONFIG_UIO is not set 858 + 859 + # 860 + # TI VLYNQ 861 + # 981 862 # CONFIG_STAGING is not set 982 863 983 864 # ··· 975 902 # CONFIG_REISERFS_FS is not set 976 903 # CONFIG_JFS_FS is not set 977 904 # CONFIG_FS_POSIX_ACL is not set 978 - CONFIG_FILE_LOCKING=y 979 905 CONFIG_XFS_FS=m 980 906 # CONFIG_XFS_QUOTA is not set 981 907 # CONFIG_XFS_POSIX_ACL is not set 982 908 # CONFIG_XFS_RT is not set 983 909 # CONFIG_XFS_DEBUG is not set 910 + # CONFIG_GFS2_FS is not set 984 911 # CONFIG_OCFS2_FS is not set 985 912 # CONFIG_BTRFS_FS is not set 913 + # CONFIG_NILFS2_FS is not set 914 + CONFIG_FILE_LOCKING=y 915 + CONFIG_FSNOTIFY=y 986 916 CONFIG_DNOTIFY=y 987 917 CONFIG_INOTIFY=y 988 918 CONFIG_INOTIFY_USER=y ··· 1044 968 # CONFIG_ROMFS_FS is not set 1045 969 # CONFIG_SYSV_FS is not set 1046 970 # CONFIG_UFS_FS is not set 1047 - # CONFIG_NILFS2_FS is not set 1048 971 CONFIG_NETWORK_FILESYSTEMS=y 1049 972 CONFIG_NFS_FS=y 1050 973 CONFIG_NFS_V3=y ··· 1139 1064 CONFIG_ENABLE_MUST_CHECK=y 1140 1065 CONFIG_FRAME_WARN=1024 1141 1066 # CONFIG_MAGIC_SYSRQ is not set 1067 + # CONFIG_STRIP_ASM_SYMS is not set 1142 1068 # CONFIG_UNUSED_SYMBOLS is not set 1143 1069 CONFIG_DEBUG_FS=y 1144 1070 # CONFIG_HEADERS_CHECK is not set ··· 1157 1081 # CONFIG_DEBUG_OBJECTS is not set 1158 1082 # CONFIG_SLUB_DEBUG_ON is not set 1159 1083 # CONFIG_SLUB_STATS is not set 1084 + # CONFIG_DEBUG_KMEMLEAK is not set 1160 1085 CONFIG_DEBUG_PREEMPT=y 1161 1086 CONFIG_DEBUG_RT_MUTEXES=y 1162 1087 CONFIG_DEBUG_PI_LIST=y ··· 1178 1101 # CONFIG_DEBUG_LIST is not set 1179 1102 # CONFIG_DEBUG_SG is not set 1180 1103 # CONFIG_DEBUG_NOTIFIERS is not set 1104 + # CONFIG_DEBUG_CREDENTIALS is not set 1181 1105 # CONFIG_BOOT_PRINTK_DELAY is not set 1182 1106 # CONFIG_RCU_TORTURE_TEST is not set 1183 1107 # CONFIG_RCU_CPU_STALL_DETECTOR is not set 1184 1108 # CONFIG_BACKTRACE_SELF_TEST is not set 1185 1109 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1110 + # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 1186 1111 # CONFIG_FAULT_INJECTION is not set 1187 1112 # CONFIG_LATENCYTOP is not set 1188 1113 # CONFIG_SYSCTL_SYSCALL_CHECK is not set 1189 1114 # CONFIG_PAGE_POISONING is not set 1190 1115 CONFIG_HAVE_FUNCTION_TRACER=y 1191 1116 CONFIG_TRACING_SUPPORT=y 1192 - 1193 - # 1194 - # Tracers 1195 - # 1117 + CONFIG_FTRACE=y 1196 1118 # CONFIG_FUNCTION_TRACER is not set 1197 1119 # CONFIG_IRQSOFF_TRACER is not set 1198 1120 # CONFIG_PREEMPT_TRACER is not set 1199 1121 # CONFIG_SCHED_TRACER is not set 1200 - # CONFIG_CONTEXT_SWITCH_TRACER is not set 1201 - # CONFIG_EVENT_TRACER is not set 1122 + # CONFIG_ENABLE_DEFAULT_TRACERS is not set 1202 1123 # CONFIG_BOOT_TRACER is not set 1203 - # CONFIG_TRACE_BRANCH_PROFILING is not set 1124 + CONFIG_BRANCH_PROFILE_NONE=y 1125 + # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set 1126 + # CONFIG_PROFILE_ALL_BRANCHES is not set 1204 1127 # CONFIG_STACK_TRACER is not set 1205 1128 # CONFIG_KMEMTRACE is not set 1206 1129 # CONFIG_WORKQUEUE_TRACER is not set ··· 1227 1150 # 1228 1151 # Crypto core or helper 1229 1152 # 1230 - # CONFIG_CRYPTO_FIPS is not set 1231 1153 # CONFIG_CRYPTO_MANAGER is not set 1232 1154 # CONFIG_CRYPTO_MANAGER2 is not set 1233 1155 # CONFIG_CRYPTO_GF128MUL is not set ··· 1258 1182 # 1259 1183 # CONFIG_CRYPTO_HMAC is not set 1260 1184 # CONFIG_CRYPTO_XCBC is not set 1185 + # CONFIG_CRYPTO_VMAC is not set 1261 1186 1262 1187 # 1263 1188 # Digest 1264 1189 # 1265 1190 # CONFIG_CRYPTO_CRC32C is not set 1191 + # CONFIG_CRYPTO_GHASH is not set 1266 1192 # CONFIG_CRYPTO_MD4 is not set 1267 1193 # CONFIG_CRYPTO_MD5 is not set 1268 1194 # CONFIG_CRYPTO_MICHAEL_MIC is not set
-1229
arch/arm/configs/da850_omapl138_defconfig
··· 1 - # 2 - # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.30-davinci1 4 - # Mon Jun 29 07:54:15 2009 5 - # 6 - CONFIG_ARM=y 7 - CONFIG_SYS_SUPPORTS_APM_EMULATION=y 8 - CONFIG_GENERIC_GPIO=y 9 - CONFIG_GENERIC_TIME=y 10 - CONFIG_GENERIC_CLOCKEVENTS=y 11 - CONFIG_MMU=y 12 - # CONFIG_NO_IOPORT is not set 13 - CONFIG_GENERIC_HARDIRQS=y 14 - CONFIG_STACKTRACE_SUPPORT=y 15 - CONFIG_HAVE_LATENCYTOP_SUPPORT=y 16 - CONFIG_LOCKDEP_SUPPORT=y 17 - CONFIG_TRACE_IRQFLAGS_SUPPORT=y 18 - CONFIG_HARDIRQS_SW_RESEND=y 19 - CONFIG_GENERIC_IRQ_PROBE=y 20 - CONFIG_RWSEM_GENERIC_SPINLOCK=y 21 - # CONFIG_ARCH_HAS_ILOG2_U32 is not set 22 - # CONFIG_ARCH_HAS_ILOG2_U64 is not set 23 - CONFIG_GENERIC_HWEIGHT=y 24 - CONFIG_GENERIC_CALIBRATE_DELAY=y 25 - CONFIG_ZONE_DMA=y 26 - CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 27 - CONFIG_VECTORS_BASE=0xffff0000 28 - CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 29 - 30 - # 31 - # General setup 32 - # 33 - CONFIG_EXPERIMENTAL=y 34 - CONFIG_BROKEN_ON_SMP=y 35 - CONFIG_LOCK_KERNEL=y 36 - CONFIG_INIT_ENV_ARG_LIMIT=32 37 - CONFIG_LOCALVERSION="" 38 - CONFIG_LOCALVERSION_AUTO=y 39 - # CONFIG_SWAP is not set 40 - CONFIG_SYSVIPC=y 41 - CONFIG_SYSVIPC_SYSCTL=y 42 - CONFIG_POSIX_MQUEUE=y 43 - CONFIG_POSIX_MQUEUE_SYSCTL=y 44 - # CONFIG_BSD_PROCESS_ACCT is not set 45 - # CONFIG_TASKSTATS is not set 46 - # CONFIG_AUDIT is not set 47 - 48 - # 49 - # RCU Subsystem 50 - # 51 - CONFIG_CLASSIC_RCU=y 52 - # CONFIG_TREE_RCU is not set 53 - # CONFIG_PREEMPT_RCU is not set 54 - # CONFIG_TREE_RCU_TRACE is not set 55 - # CONFIG_PREEMPT_RCU_TRACE is not set 56 - CONFIG_IKCONFIG=y 57 - CONFIG_IKCONFIG_PROC=y 58 - CONFIG_LOG_BUF_SHIFT=14 59 - CONFIG_GROUP_SCHED=y 60 - CONFIG_FAIR_GROUP_SCHED=y 61 - # CONFIG_RT_GROUP_SCHED is not set 62 - CONFIG_USER_SCHED=y 63 - # CONFIG_CGROUP_SCHED is not set 64 - # CONFIG_CGROUPS is not set 65 - CONFIG_SYSFS_DEPRECATED=y 66 - CONFIG_SYSFS_DEPRECATED_V2=y 67 - # CONFIG_RELAY is not set 68 - # CONFIG_NAMESPACES is not set 69 - CONFIG_BLK_DEV_INITRD=y 70 - CONFIG_INITRAMFS_SOURCE="" 71 - CONFIG_RD_GZIP=y 72 - # CONFIG_RD_BZIP2 is not set 73 - # CONFIG_RD_LZMA is not set 74 - CONFIG_CC_OPTIMIZE_FOR_SIZE=y 75 - CONFIG_SYSCTL=y 76 - CONFIG_ANON_INODES=y 77 - CONFIG_EMBEDDED=y 78 - CONFIG_UID16=y 79 - CONFIG_SYSCTL_SYSCALL=y 80 - CONFIG_KALLSYMS=y 81 - # CONFIG_KALLSYMS_ALL is not set 82 - # CONFIG_KALLSYMS_EXTRA_PASS is not set 83 - # CONFIG_STRIP_ASM_SYMS is not set 84 - CONFIG_HOTPLUG=y 85 - CONFIG_PRINTK=y 86 - CONFIG_BUG=y 87 - CONFIG_ELF_CORE=y 88 - CONFIG_BASE_FULL=y 89 - CONFIG_FUTEX=y 90 - CONFIG_EPOLL=y 91 - CONFIG_SIGNALFD=y 92 - CONFIG_TIMERFD=y 93 - CONFIG_EVENTFD=y 94 - CONFIG_SHMEM=y 95 - CONFIG_AIO=y 96 - CONFIG_VM_EVENT_COUNTERS=y 97 - CONFIG_SLUB_DEBUG=y 98 - CONFIG_COMPAT_BRK=y 99 - # CONFIG_SLAB is not set 100 - CONFIG_SLUB=y 101 - # CONFIG_SLOB is not set 102 - # CONFIG_PROFILING is not set 103 - # CONFIG_MARKERS is not set 104 - CONFIG_HAVE_OPROFILE=y 105 - # CONFIG_KPROBES is not set 106 - CONFIG_HAVE_KPROBES=y 107 - CONFIG_HAVE_KRETPROBES=y 108 - CONFIG_HAVE_CLK=y 109 - # CONFIG_SLOW_WORK is not set 110 - CONFIG_HAVE_GENERIC_DMA_COHERENT=y 111 - CONFIG_SLABINFO=y 112 - CONFIG_RT_MUTEXES=y 113 - CONFIG_BASE_SMALL=0 114 - CONFIG_MODULES=y 115 - # CONFIG_MODULE_FORCE_LOAD is not set 116 - CONFIG_MODULE_UNLOAD=y 117 - CONFIG_MODULE_FORCE_UNLOAD=y 118 - CONFIG_MODVERSIONS=y 119 - # CONFIG_MODULE_SRCVERSION_ALL is not set 120 - CONFIG_BLOCK=y 121 - # CONFIG_LBD is not set 122 - # CONFIG_BLK_DEV_BSG is not set 123 - # CONFIG_BLK_DEV_INTEGRITY is not set 124 - 125 - # 126 - # IO Schedulers 127 - # 128 - CONFIG_IOSCHED_NOOP=y 129 - CONFIG_IOSCHED_AS=y 130 - # CONFIG_IOSCHED_DEADLINE is not set 131 - # CONFIG_IOSCHED_CFQ is not set 132 - CONFIG_DEFAULT_AS=y 133 - # CONFIG_DEFAULT_DEADLINE is not set 134 - # CONFIG_DEFAULT_CFQ is not set 135 - # CONFIG_DEFAULT_NOOP is not set 136 - CONFIG_DEFAULT_IOSCHED="anticipatory" 137 - # CONFIG_FREEZER is not set 138 - 139 - # 140 - # System Type 141 - # 142 - # CONFIG_ARCH_AAEC2000 is not set 143 - # CONFIG_ARCH_INTEGRATOR is not set 144 - # CONFIG_ARCH_REALVIEW is not set 145 - # CONFIG_ARCH_VERSATILE is not set 146 - # CONFIG_ARCH_AT91 is not set 147 - # CONFIG_ARCH_CLPS711X is not set 148 - # CONFIG_ARCH_EBSA110 is not set 149 - # CONFIG_ARCH_EP93XX is not set 150 - # CONFIG_ARCH_GEMINI is not set 151 - # CONFIG_ARCH_FOOTBRIDGE is not set 152 - # CONFIG_ARCH_NETX is not set 153 - # CONFIG_ARCH_H720X is not set 154 - # CONFIG_ARCH_IMX is not set 155 - # CONFIG_ARCH_IOP13XX is not set 156 - # CONFIG_ARCH_IOP32X is not set 157 - # CONFIG_ARCH_IOP33X is not set 158 - # CONFIG_ARCH_IXP23XX is not set 159 - # CONFIG_ARCH_IXP2000 is not set 160 - # CONFIG_ARCH_IXP4XX is not set 161 - # CONFIG_ARCH_L7200 is not set 162 - # CONFIG_ARCH_KIRKWOOD is not set 163 - # CONFIG_ARCH_KS8695 is not set 164 - # CONFIG_ARCH_NS9XXX is not set 165 - # CONFIG_ARCH_LOKI is not set 166 - # CONFIG_ARCH_MV78XX0 is not set 167 - # CONFIG_ARCH_MXC is not set 168 - # CONFIG_ARCH_ORION5X is not set 169 - # CONFIG_ARCH_PNX4008 is not set 170 - # CONFIG_ARCH_PXA is not set 171 - # CONFIG_ARCH_MMP is not set 172 - # CONFIG_ARCH_RPC is not set 173 - # CONFIG_ARCH_SA1100 is not set 174 - # CONFIG_ARCH_S3C2410 is not set 175 - # CONFIG_ARCH_S3C64XX is not set 176 - # CONFIG_ARCH_SHARK is not set 177 - # CONFIG_ARCH_LH7A40X is not set 178 - CONFIG_ARCH_DAVINCI=y 179 - # CONFIG_ARCH_OMAP is not set 180 - # CONFIG_ARCH_MSM is not set 181 - # CONFIG_ARCH_W90X900 is not set 182 - CONFIG_CP_INTC=y 183 - 184 - # 185 - # TI DaVinci Implementations 186 - # 187 - 188 - # 189 - # DaVinci Core Type 190 - # 191 - # CONFIG_ARCH_DAVINCI_DM644x is not set 192 - # CONFIG_ARCH_DAVINCI_DM355 is not set 193 - # CONFIG_ARCH_DAVINCI_DM646x is not set 194 - # CONFIG_ARCH_DAVINCI_DA830 is not set 195 - CONFIG_ARCH_DAVINCI_DA850=y 196 - CONFIG_ARCH_DAVINCI_DA8XX=y 197 - # CONFIG_ARCH_DAVINCI_DM365 is not set 198 - 199 - # 200 - # DaVinci Board Type 201 - # 202 - CONFIG_MACH_DAVINCI_DA850_EVM=y 203 - CONFIG_DAVINCI_MUX=y 204 - # CONFIG_DAVINCI_MUX_DEBUG is not set 205 - # CONFIG_DAVINCI_MUX_WARNINGS is not set 206 - CONFIG_DAVINCI_RESET_CLOCKS=y 207 - 208 - # 209 - # Processor Type 210 - # 211 - CONFIG_CPU_32=y 212 - CONFIG_CPU_ARM926T=y 213 - CONFIG_CPU_32v5=y 214 - CONFIG_CPU_ABRT_EV5TJ=y 215 - CONFIG_CPU_PABRT_NOIFAR=y 216 - CONFIG_CPU_CACHE_VIVT=y 217 - CONFIG_CPU_COPY_V4WB=y 218 - CONFIG_CPU_TLB_V4WBI=y 219 - CONFIG_CPU_CP15=y 220 - CONFIG_CPU_CP15_MMU=y 221 - 222 - # 223 - # Processor Features 224 - # 225 - CONFIG_ARM_THUMB=y 226 - # CONFIG_CPU_ICACHE_DISABLE is not set 227 - # CONFIG_CPU_DCACHE_DISABLE is not set 228 - # CONFIG_CPU_DCACHE_WRITETHROUGH is not set 229 - # CONFIG_CPU_CACHE_ROUND_ROBIN is not set 230 - # CONFIG_OUTER_CACHE is not set 231 - CONFIG_COMMON_CLKDEV=y 232 - 233 - # 234 - # Bus support 235 - # 236 - # CONFIG_PCI_SYSCALL is not set 237 - # CONFIG_ARCH_SUPPORTS_MSI is not set 238 - # CONFIG_PCCARD is not set 239 - 240 - # 241 - # Kernel Features 242 - # 243 - CONFIG_TICK_ONESHOT=y 244 - CONFIG_NO_HZ=y 245 - CONFIG_HIGH_RES_TIMERS=y 246 - CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 247 - CONFIG_VMSPLIT_3G=y 248 - # CONFIG_VMSPLIT_2G is not set 249 - # CONFIG_VMSPLIT_1G is not set 250 - CONFIG_PAGE_OFFSET=0xC0000000 251 - CONFIG_PREEMPT=y 252 - CONFIG_HZ=100 253 - CONFIG_AEABI=y 254 - # CONFIG_OABI_COMPAT is not set 255 - # CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set 256 - # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set 257 - # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set 258 - # CONFIG_HIGHMEM is not set 259 - CONFIG_SELECT_MEMORY_MODEL=y 260 - CONFIG_FLATMEM_MANUAL=y 261 - # CONFIG_DISCONTIGMEM_MANUAL is not set 262 - # CONFIG_SPARSEMEM_MANUAL is not set 263 - CONFIG_FLATMEM=y 264 - CONFIG_FLAT_NODE_MEM_MAP=y 265 - CONFIG_PAGEFLAGS_EXTENDED=y 266 - CONFIG_SPLIT_PTLOCK_CPUS=4096 267 - # CONFIG_PHYS_ADDR_T_64BIT is not set 268 - CONFIG_ZONE_DMA_FLAG=1 269 - CONFIG_BOUNCE=y 270 - CONFIG_VIRT_TO_BUS=y 271 - CONFIG_UNEVICTABLE_LRU=y 272 - CONFIG_HAVE_MLOCK=y 273 - CONFIG_HAVE_MLOCKED_PAGE_BIT=y 274 - CONFIG_LEDS=y 275 - # CONFIG_LEDS_CPU is not set 276 - CONFIG_ALIGNMENT_TRAP=y 277 - 278 - # 279 - # Boot options 280 - # 281 - CONFIG_ZBOOT_ROM_TEXT=0x0 282 - CONFIG_ZBOOT_ROM_BSS=0x0 283 - CONFIG_CMDLINE="" 284 - # CONFIG_XIP_KERNEL is not set 285 - # CONFIG_KEXEC is not set 286 - 287 - # 288 - # CPU Power Management 289 - # 290 - # CONFIG_CPU_IDLE is not set 291 - 292 - # 293 - # Floating point emulation 294 - # 295 - 296 - # 297 - # At least one emulation must be selected 298 - # 299 - # CONFIG_VFP is not set 300 - 301 - # 302 - # Userspace binary formats 303 - # 304 - CONFIG_BINFMT_ELF=y 305 - # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 306 - CONFIG_HAVE_AOUT=y 307 - # CONFIG_BINFMT_AOUT is not set 308 - # CONFIG_BINFMT_MISC is not set 309 - 310 - # 311 - # Power management options 312 - # 313 - # CONFIG_PM is not set 314 - CONFIG_ARCH_SUSPEND_POSSIBLE=y 315 - CONFIG_NET=y 316 - 317 - # 318 - # Networking options 319 - # 320 - CONFIG_PACKET=y 321 - # CONFIG_PACKET_MMAP is not set 322 - CONFIG_UNIX=y 323 - CONFIG_XFRM=y 324 - # CONFIG_XFRM_USER is not set 325 - # CONFIG_XFRM_SUB_POLICY is not set 326 - # CONFIG_XFRM_MIGRATE is not set 327 - # CONFIG_XFRM_STATISTICS is not set 328 - # CONFIG_NET_KEY is not set 329 - CONFIG_INET=y 330 - # CONFIG_IP_MULTICAST is not set 331 - # CONFIG_IP_ADVANCED_ROUTER is not set 332 - CONFIG_IP_FIB_HASH=y 333 - CONFIG_IP_PNP=y 334 - CONFIG_IP_PNP_DHCP=y 335 - # CONFIG_IP_PNP_BOOTP is not set 336 - # CONFIG_IP_PNP_RARP is not set 337 - # CONFIG_NET_IPIP is not set 338 - # CONFIG_NET_IPGRE is not set 339 - # CONFIG_ARPD is not set 340 - # CONFIG_SYN_COOKIES is not set 341 - # CONFIG_INET_AH is not set 342 - # CONFIG_INET_ESP is not set 343 - # CONFIG_INET_IPCOMP is not set 344 - # CONFIG_INET_XFRM_TUNNEL is not set 345 - CONFIG_INET_TUNNEL=m 346 - CONFIG_INET_XFRM_MODE_TRANSPORT=y 347 - CONFIG_INET_XFRM_MODE_TUNNEL=y 348 - CONFIG_INET_XFRM_MODE_BEET=y 349 - # CONFIG_INET_LRO is not set 350 - CONFIG_INET_DIAG=y 351 - CONFIG_INET_TCP_DIAG=y 352 - # CONFIG_TCP_CONG_ADVANCED is not set 353 - CONFIG_TCP_CONG_CUBIC=y 354 - CONFIG_DEFAULT_TCP_CONG="cubic" 355 - # CONFIG_TCP_MD5SIG is not set 356 - CONFIG_IPV6=m 357 - # CONFIG_IPV6_PRIVACY is not set 358 - # CONFIG_IPV6_ROUTER_PREF is not set 359 - # CONFIG_IPV6_OPTIMISTIC_DAD is not set 360 - # CONFIG_INET6_AH is not set 361 - # CONFIG_INET6_ESP is not set 362 - # CONFIG_INET6_IPCOMP is not set 363 - # CONFIG_IPV6_MIP6 is not set 364 - # CONFIG_INET6_XFRM_TUNNEL is not set 365 - # CONFIG_INET6_TUNNEL is not set 366 - CONFIG_INET6_XFRM_MODE_TRANSPORT=m 367 - CONFIG_INET6_XFRM_MODE_TUNNEL=m 368 - CONFIG_INET6_XFRM_MODE_BEET=m 369 - # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 370 - CONFIG_IPV6_SIT=m 371 - CONFIG_IPV6_NDISC_NODETYPE=y 372 - # CONFIG_IPV6_TUNNEL is not set 373 - # CONFIG_IPV6_MULTIPLE_TABLES is not set 374 - # CONFIG_IPV6_MROUTE is not set 375 - # CONFIG_NETWORK_SECMARK is not set 376 - CONFIG_NETFILTER=y 377 - # CONFIG_NETFILTER_DEBUG is not set 378 - CONFIG_NETFILTER_ADVANCED=y 379 - 380 - # 381 - # Core Netfilter Configuration 382 - # 383 - # CONFIG_NETFILTER_NETLINK_QUEUE is not set 384 - # CONFIG_NETFILTER_NETLINK_LOG is not set 385 - # CONFIG_NF_CONNTRACK is not set 386 - # CONFIG_NETFILTER_XTABLES is not set 387 - # CONFIG_IP_VS is not set 388 - 389 - # 390 - # IP: Netfilter Configuration 391 - # 392 - # CONFIG_NF_DEFRAG_IPV4 is not set 393 - # CONFIG_IP_NF_QUEUE is not set 394 - # CONFIG_IP_NF_IPTABLES is not set 395 - # CONFIG_IP_NF_ARPTABLES is not set 396 - 397 - # 398 - # IPv6: Netfilter Configuration 399 - # 400 - # CONFIG_IP6_NF_QUEUE is not set 401 - # CONFIG_IP6_NF_IPTABLES is not set 402 - # CONFIG_IP_DCCP is not set 403 - # CONFIG_IP_SCTP is not set 404 - # CONFIG_TIPC is not set 405 - # CONFIG_ATM is not set 406 - # CONFIG_BRIDGE is not set 407 - # CONFIG_NET_DSA is not set 408 - # CONFIG_VLAN_8021Q is not set 409 - # CONFIG_DECNET is not set 410 - # CONFIG_LLC2 is not set 411 - # CONFIG_IPX is not set 412 - # CONFIG_ATALK is not set 413 - # CONFIG_X25 is not set 414 - # CONFIG_LAPB is not set 415 - # CONFIG_ECONET is not set 416 - # CONFIG_WAN_ROUTER is not set 417 - # CONFIG_PHONET is not set 418 - # CONFIG_NET_SCHED is not set 419 - # CONFIG_DCB is not set 420 - 421 - # 422 - # Network testing 423 - # 424 - # CONFIG_NET_PKTGEN is not set 425 - # CONFIG_HAMRADIO is not set 426 - # CONFIG_CAN is not set 427 - # CONFIG_IRDA is not set 428 - # CONFIG_BT is not set 429 - # CONFIG_AF_RXRPC is not set 430 - # CONFIG_WIRELESS is not set 431 - # CONFIG_WIMAX is not set 432 - # CONFIG_RFKILL is not set 433 - # CONFIG_NET_9P is not set 434 - 435 - # 436 - # Device Drivers 437 - # 438 - 439 - # 440 - # Generic Driver Options 441 - # 442 - CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 443 - CONFIG_STANDALONE=y 444 - CONFIG_PREVENT_FIRMWARE_BUILD=y 445 - # CONFIG_FW_LOADER is not set 446 - # CONFIG_DEBUG_DRIVER is not set 447 - # CONFIG_DEBUG_DEVRES is not set 448 - # CONFIG_SYS_HYPERVISOR is not set 449 - # CONFIG_CONNECTOR is not set 450 - # CONFIG_MTD is not set 451 - # CONFIG_PARPORT is not set 452 - CONFIG_BLK_DEV=y 453 - # CONFIG_BLK_DEV_COW_COMMON is not set 454 - CONFIG_BLK_DEV_LOOP=m 455 - # CONFIG_BLK_DEV_CRYPTOLOOP is not set 456 - # CONFIG_BLK_DEV_NBD is not set 457 - CONFIG_BLK_DEV_RAM=y 458 - CONFIG_BLK_DEV_RAM_COUNT=1 459 - CONFIG_BLK_DEV_RAM_SIZE=32768 460 - # CONFIG_BLK_DEV_XIP is not set 461 - # CONFIG_CDROM_PKTCDVD is not set 462 - # CONFIG_ATA_OVER_ETH is not set 463 - CONFIG_MISC_DEVICES=y 464 - # CONFIG_ICS932S401 is not set 465 - # CONFIG_ENCLOSURE_SERVICES is not set 466 - # CONFIG_ISL29003 is not set 467 - # CONFIG_C2PORT is not set 468 - 469 - # 470 - # EEPROM support 471 - # 472 - CONFIG_EEPROM_AT24=y 473 - # CONFIG_EEPROM_LEGACY is not set 474 - # CONFIG_EEPROM_93CX6 is not set 475 - CONFIG_HAVE_IDE=y 476 - # CONFIG_IDE is not set 477 - 478 - # 479 - # SCSI device support 480 - # 481 - # CONFIG_RAID_ATTRS is not set 482 - CONFIG_SCSI=m 483 - CONFIG_SCSI_DMA=y 484 - # CONFIG_SCSI_TGT is not set 485 - # CONFIG_SCSI_NETLINK is not set 486 - CONFIG_SCSI_PROC_FS=y 487 - 488 - # 489 - # SCSI support type (disk, tape, CD-ROM) 490 - # 491 - CONFIG_BLK_DEV_SD=m 492 - # CONFIG_CHR_DEV_ST is not set 493 - # CONFIG_CHR_DEV_OSST is not set 494 - # CONFIG_BLK_DEV_SR is not set 495 - # CONFIG_CHR_DEV_SG is not set 496 - # CONFIG_CHR_DEV_SCH is not set 497 - 498 - # 499 - # Some SCSI devices (e.g. CD jukebox) support multiple LUNs 500 - # 501 - # CONFIG_SCSI_MULTI_LUN is not set 502 - # CONFIG_SCSI_CONSTANTS is not set 503 - # CONFIG_SCSI_LOGGING is not set 504 - # CONFIG_SCSI_SCAN_ASYNC is not set 505 - CONFIG_SCSI_WAIT_SCAN=m 506 - 507 - # 508 - # SCSI Transports 509 - # 510 - # CONFIG_SCSI_SPI_ATTRS is not set 511 - # CONFIG_SCSI_FC_ATTRS is not set 512 - # CONFIG_SCSI_ISCSI_ATTRS is not set 513 - # CONFIG_SCSI_SAS_LIBSAS is not set 514 - # CONFIG_SCSI_SRP_ATTRS is not set 515 - CONFIG_SCSI_LOWLEVEL=y 516 - # CONFIG_ISCSI_TCP is not set 517 - # CONFIG_LIBFC is not set 518 - # CONFIG_LIBFCOE is not set 519 - # CONFIG_SCSI_DEBUG is not set 520 - # CONFIG_SCSI_DH is not set 521 - # CONFIG_SCSI_OSD_INITIATOR is not set 522 - # CONFIG_ATA is not set 523 - # CONFIG_MD is not set 524 - CONFIG_NETDEVICES=y 525 - CONFIG_COMPAT_NET_DEV_OPS=y 526 - # CONFIG_DUMMY is not set 527 - # CONFIG_BONDING is not set 528 - # CONFIG_MACVLAN is not set 529 - # CONFIG_EQUALIZER is not set 530 - CONFIG_TUN=m 531 - # CONFIG_VETH is not set 532 - CONFIG_PHYLIB=y 533 - 534 - # 535 - # MII PHY device drivers 536 - # 537 - # CONFIG_MARVELL_PHY is not set 538 - # CONFIG_DAVICOM_PHY is not set 539 - # CONFIG_QSEMI_PHY is not set 540 - CONFIG_LXT_PHY=y 541 - # CONFIG_CICADA_PHY is not set 542 - # CONFIG_VITESSE_PHY is not set 543 - # CONFIG_SMSC_PHY is not set 544 - # CONFIG_BROADCOM_PHY is not set 545 - # CONFIG_ICPLUS_PHY is not set 546 - # CONFIG_REALTEK_PHY is not set 547 - # CONFIG_NATIONAL_PHY is not set 548 - # CONFIG_STE10XP is not set 549 - CONFIG_LSI_ET1011C_PHY=y 550 - # CONFIG_FIXED_PHY is not set 551 - # CONFIG_MDIO_BITBANG is not set 552 - CONFIG_NET_ETHERNET=y 553 - CONFIG_MII=y 554 - # CONFIG_AX88796 is not set 555 - # CONFIG_SMC91X is not set 556 - # CONFIG_TI_DAVINCI_EMAC is not set 557 - # CONFIG_DM9000 is not set 558 - # CONFIG_ETHOC is not set 559 - # CONFIG_SMC911X is not set 560 - # CONFIG_SMSC911X is not set 561 - # CONFIG_DNET is not set 562 - # CONFIG_IBM_NEW_EMAC_ZMII is not set 563 - # CONFIG_IBM_NEW_EMAC_RGMII is not set 564 - # CONFIG_IBM_NEW_EMAC_TAH is not set 565 - # CONFIG_IBM_NEW_EMAC_EMAC4 is not set 566 - # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set 567 - # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 568 - # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 569 - # CONFIG_B44 is not set 570 - # CONFIG_NETDEV_1000 is not set 571 - # CONFIG_NETDEV_10000 is not set 572 - 573 - # 574 - # Wireless LAN 575 - # 576 - # CONFIG_WLAN_PRE80211 is not set 577 - # CONFIG_WLAN_80211 is not set 578 - 579 - # 580 - # Enable WiMAX (Networking options) to see the WiMAX drivers 581 - # 582 - # CONFIG_WAN is not set 583 - # CONFIG_PPP is not set 584 - # CONFIG_SLIP is not set 585 - CONFIG_NETCONSOLE=y 586 - # CONFIG_NETCONSOLE_DYNAMIC is not set 587 - CONFIG_NETPOLL=y 588 - CONFIG_NETPOLL_TRAP=y 589 - CONFIG_NET_POLL_CONTROLLER=y 590 - # CONFIG_ISDN is not set 591 - 592 - # 593 - # Input device support 594 - # 595 - CONFIG_INPUT=y 596 - # CONFIG_INPUT_FF_MEMLESS is not set 597 - # CONFIG_INPUT_POLLDEV is not set 598 - 599 - # 600 - # Userland interfaces 601 - # 602 - CONFIG_INPUT_MOUSEDEV=m 603 - CONFIG_INPUT_MOUSEDEV_PSAUX=y 604 - CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 605 - CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 606 - # CONFIG_INPUT_JOYDEV is not set 607 - CONFIG_INPUT_EVDEV=m 608 - CONFIG_INPUT_EVBUG=m 609 - 610 - # 611 - # Input Device Drivers 612 - # 613 - CONFIG_INPUT_KEYBOARD=y 614 - CONFIG_KEYBOARD_ATKBD=m 615 - # CONFIG_KEYBOARD_SUNKBD is not set 616 - # CONFIG_KEYBOARD_LKKBD is not set 617 - CONFIG_KEYBOARD_XTKBD=m 618 - # CONFIG_KEYBOARD_NEWTON is not set 619 - # CONFIG_KEYBOARD_STOWAWAY is not set 620 - CONFIG_KEYBOARD_GPIO=y 621 - # CONFIG_INPUT_MOUSE is not set 622 - # CONFIG_INPUT_JOYSTICK is not set 623 - # CONFIG_INPUT_TABLET is not set 624 - CONFIG_INPUT_TOUCHSCREEN=y 625 - # CONFIG_TOUCHSCREEN_AD7879_I2C is not set 626 - # CONFIG_TOUCHSCREEN_AD7879 is not set 627 - # CONFIG_TOUCHSCREEN_FUJITSU is not set 628 - # CONFIG_TOUCHSCREEN_GUNZE is not set 629 - # CONFIG_TOUCHSCREEN_ELO is not set 630 - # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set 631 - # CONFIG_TOUCHSCREEN_MTOUCH is not set 632 - # CONFIG_TOUCHSCREEN_INEXIO is not set 633 - # CONFIG_TOUCHSCREEN_MK712 is not set 634 - # CONFIG_TOUCHSCREEN_PENMOUNT is not set 635 - # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set 636 - # CONFIG_TOUCHSCREEN_TOUCHWIN is not set 637 - # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set 638 - # CONFIG_TOUCHSCREEN_TSC2007 is not set 639 - # CONFIG_INPUT_MISC is not set 640 - 641 - # 642 - # Hardware I/O ports 643 - # 644 - CONFIG_SERIO=y 645 - CONFIG_SERIO_SERPORT=y 646 - CONFIG_SERIO_LIBPS2=y 647 - # CONFIG_SERIO_RAW is not set 648 - # CONFIG_GAMEPORT is not set 649 - 650 - # 651 - # Character devices 652 - # 653 - CONFIG_VT=y 654 - CONFIG_CONSOLE_TRANSLATIONS=y 655 - # CONFIG_VT_CONSOLE is not set 656 - CONFIG_HW_CONSOLE=y 657 - # CONFIG_VT_HW_CONSOLE_BINDING is not set 658 - CONFIG_DEVKMEM=y 659 - # CONFIG_SERIAL_NONSTANDARD is not set 660 - 661 - # 662 - # Serial drivers 663 - # 664 - CONFIG_SERIAL_8250=y 665 - CONFIG_SERIAL_8250_CONSOLE=y 666 - CONFIG_SERIAL_8250_NR_UARTS=3 667 - CONFIG_SERIAL_8250_RUNTIME_UARTS=3 668 - # CONFIG_SERIAL_8250_EXTENDED is not set 669 - 670 - # 671 - # Non-8250 serial port support 672 - # 673 - CONFIG_SERIAL_CORE=y 674 - CONFIG_SERIAL_CORE_CONSOLE=y 675 - CONFIG_UNIX98_PTYS=y 676 - # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 677 - CONFIG_LEGACY_PTYS=y 678 - CONFIG_LEGACY_PTY_COUNT=256 679 - # CONFIG_IPMI_HANDLER is not set 680 - CONFIG_HW_RANDOM=m 681 - # CONFIG_HW_RANDOM_TIMERIOMEM is not set 682 - # CONFIG_R3964 is not set 683 - # CONFIG_RAW_DRIVER is not set 684 - # CONFIG_TCG_TPM is not set 685 - CONFIG_I2C=y 686 - CONFIG_I2C_BOARDINFO=y 687 - CONFIG_I2C_CHARDEV=y 688 - CONFIG_I2C_HELPER_AUTO=y 689 - 690 - # 691 - # I2C Hardware Bus support 692 - # 693 - 694 - # 695 - # I2C system bus drivers (mostly embedded / system-on-chip) 696 - # 697 - CONFIG_I2C_DAVINCI=y 698 - # CONFIG_I2C_GPIO is not set 699 - # CONFIG_I2C_OCORES is not set 700 - # CONFIG_I2C_SIMTEC is not set 701 - 702 - # 703 - # External I2C/SMBus adapter drivers 704 - # 705 - # CONFIG_I2C_PARPORT_LIGHT is not set 706 - # CONFIG_I2C_TAOS_EVM is not set 707 - 708 - # 709 - # Other I2C/SMBus bus drivers 710 - # 711 - # CONFIG_I2C_PCA_PLATFORM is not set 712 - # CONFIG_I2C_STUB is not set 713 - 714 - # 715 - # Miscellaneous I2C Chip support 716 - # 717 - # CONFIG_DS1682 is not set 718 - # CONFIG_SENSORS_PCA9539 is not set 719 - # CONFIG_SENSORS_MAX6875 is not set 720 - # CONFIG_SENSORS_TSL2550 is not set 721 - # CONFIG_I2C_DEBUG_CORE is not set 722 - # CONFIG_I2C_DEBUG_ALGO is not set 723 - # CONFIG_I2C_DEBUG_BUS is not set 724 - # CONFIG_I2C_DEBUG_CHIP is not set 725 - # CONFIG_SPI is not set 726 - CONFIG_ARCH_REQUIRE_GPIOLIB=y 727 - CONFIG_GPIOLIB=y 728 - # CONFIG_DEBUG_GPIO is not set 729 - # CONFIG_GPIO_SYSFS is not set 730 - 731 - # 732 - # Memory mapped GPIO expanders: 733 - # 734 - 735 - # 736 - # I2C GPIO expanders: 737 - # 738 - # CONFIG_GPIO_MAX732X is not set 739 - # CONFIG_GPIO_PCA953X is not set 740 - CONFIG_GPIO_PCF857X=m 741 - 742 - # 743 - # PCI GPIO expanders: 744 - # 745 - 746 - # 747 - # SPI GPIO expanders: 748 - # 749 - # CONFIG_W1 is not set 750 - # CONFIG_POWER_SUPPLY is not set 751 - # CONFIG_HWMON is not set 752 - # CONFIG_THERMAL is not set 753 - # CONFIG_THERMAL_HWMON is not set 754 - CONFIG_WATCHDOG=y 755 - # CONFIG_WATCHDOG_NOWAYOUT is not set 756 - 757 - # 758 - # Watchdog Device Drivers 759 - # 760 - # CONFIG_SOFT_WATCHDOG is not set 761 - # CONFIG_DAVINCI_WATCHDOG is not set 762 - CONFIG_SSB_POSSIBLE=y 763 - 764 - # 765 - # Sonics Silicon Backplane 766 - # 767 - # CONFIG_SSB is not set 768 - 769 - # 770 - # Multifunction device drivers 771 - # 772 - # CONFIG_MFD_CORE is not set 773 - # CONFIG_MFD_SM501 is not set 774 - # CONFIG_MFD_ASIC3 is not set 775 - # CONFIG_HTC_EGPIO is not set 776 - # CONFIG_HTC_PASIC3 is not set 777 - # CONFIG_TPS65010 is not set 778 - # CONFIG_TWL4030_CORE is not set 779 - # CONFIG_MFD_TMIO is not set 780 - # CONFIG_MFD_T7L66XB is not set 781 - # CONFIG_MFD_TC6387XB is not set 782 - # CONFIG_MFD_TC6393XB is not set 783 - # CONFIG_PMIC_DA903X is not set 784 - # CONFIG_MFD_WM8400 is not set 785 - # CONFIG_MFD_WM8350_I2C is not set 786 - # CONFIG_MFD_PCF50633 is not set 787 - 788 - # 789 - # Multimedia devices 790 - # 791 - 792 - # 793 - # Multimedia core support 794 - # 795 - # CONFIG_VIDEO_DEV is not set 796 - # CONFIG_DVB_CORE is not set 797 - # CONFIG_VIDEO_MEDIA is not set 798 - 799 - # 800 - # Multimedia drivers 801 - # 802 - # CONFIG_DAB is not set 803 - 804 - # 805 - # Graphics support 806 - # 807 - # CONFIG_VGASTATE is not set 808 - # CONFIG_VIDEO_OUTPUT_CONTROL is not set 809 - # CONFIG_FB is not set 810 - # CONFIG_BACKLIGHT_LCD_SUPPORT is not set 811 - 812 - # 813 - # Display device support 814 - # 815 - # CONFIG_DISPLAY_SUPPORT is not set 816 - 817 - # 818 - # Console display driver support 819 - # 820 - # CONFIG_VGA_CONSOLE is not set 821 - CONFIG_DUMMY_CONSOLE=y 822 - CONFIG_SOUND=m 823 - # CONFIG_SOUND_OSS_CORE is not set 824 - CONFIG_SND=m 825 - CONFIG_SND_TIMER=m 826 - CONFIG_SND_PCM=m 827 - CONFIG_SND_JACK=y 828 - # CONFIG_SND_SEQUENCER is not set 829 - # CONFIG_SND_MIXER_OSS is not set 830 - # CONFIG_SND_PCM_OSS is not set 831 - # CONFIG_SND_HRTIMER is not set 832 - # CONFIG_SND_DYNAMIC_MINORS is not set 833 - CONFIG_SND_SUPPORT_OLD_API=y 834 - CONFIG_SND_VERBOSE_PROCFS=y 835 - # CONFIG_SND_VERBOSE_PRINTK is not set 836 - # CONFIG_SND_DEBUG is not set 837 - CONFIG_SND_DRIVERS=y 838 - # CONFIG_SND_DUMMY is not set 839 - # CONFIG_SND_MTPAV is not set 840 - # CONFIG_SND_SERIAL_U16550 is not set 841 - # CONFIG_SND_MPU401 is not set 842 - CONFIG_SND_ARM=y 843 - CONFIG_SND_SOC=m 844 - CONFIG_SND_DAVINCI_SOC=m 845 - CONFIG_SND_SOC_I2C_AND_SPI=m 846 - # CONFIG_SND_SOC_ALL_CODECS is not set 847 - # CONFIG_SOUND_PRIME is not set 848 - # CONFIG_HID_SUPPORT is not set 849 - # CONFIG_USB_SUPPORT is not set 850 - # CONFIG_MMC is not set 851 - # CONFIG_MEMSTICK is not set 852 - # CONFIG_ACCESSIBILITY is not set 853 - # CONFIG_NEW_LEDS is not set 854 - CONFIG_RTC_LIB=y 855 - # CONFIG_RTC_CLASS is not set 856 - # CONFIG_DMADEVICES is not set 857 - # CONFIG_AUXDISPLAY is not set 858 - # CONFIG_REGULATOR is not set 859 - # CONFIG_UIO is not set 860 - # CONFIG_STAGING is not set 861 - 862 - # 863 - # File systems 864 - # 865 - CONFIG_EXT2_FS=y 866 - # CONFIG_EXT2_FS_XATTR is not set 867 - # CONFIG_EXT2_FS_XIP is not set 868 - CONFIG_EXT3_FS=y 869 - # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 870 - CONFIG_EXT3_FS_XATTR=y 871 - # CONFIG_EXT3_FS_POSIX_ACL is not set 872 - # CONFIG_EXT3_FS_SECURITY is not set 873 - # CONFIG_EXT4_FS is not set 874 - CONFIG_JBD=y 875 - # CONFIG_JBD_DEBUG is not set 876 - CONFIG_FS_MBCACHE=y 877 - # CONFIG_REISERFS_FS is not set 878 - # CONFIG_JFS_FS is not set 879 - # CONFIG_FS_POSIX_ACL is not set 880 - CONFIG_FILE_LOCKING=y 881 - CONFIG_XFS_FS=m 882 - # CONFIG_XFS_QUOTA is not set 883 - # CONFIG_XFS_POSIX_ACL is not set 884 - # CONFIG_XFS_RT is not set 885 - # CONFIG_XFS_DEBUG is not set 886 - # CONFIG_OCFS2_FS is not set 887 - # CONFIG_BTRFS_FS is not set 888 - CONFIG_DNOTIFY=y 889 - CONFIG_INOTIFY=y 890 - CONFIG_INOTIFY_USER=y 891 - # CONFIG_QUOTA is not set 892 - # CONFIG_AUTOFS_FS is not set 893 - CONFIG_AUTOFS4_FS=m 894 - # CONFIG_FUSE_FS is not set 895 - 896 - # 897 - # Caches 898 - # 899 - # CONFIG_FSCACHE is not set 900 - 901 - # 902 - # CD-ROM/DVD Filesystems 903 - # 904 - # CONFIG_ISO9660_FS is not set 905 - # CONFIG_UDF_FS is not set 906 - 907 - # 908 - # DOS/FAT/NT Filesystems 909 - # 910 - CONFIG_FAT_FS=y 911 - CONFIG_MSDOS_FS=y 912 - CONFIG_VFAT_FS=y 913 - CONFIG_FAT_DEFAULT_CODEPAGE=437 914 - CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 915 - # CONFIG_NTFS_FS is not set 916 - 917 - # 918 - # Pseudo filesystems 919 - # 920 - CONFIG_PROC_FS=y 921 - CONFIG_PROC_SYSCTL=y 922 - CONFIG_PROC_PAGE_MONITOR=y 923 - CONFIG_SYSFS=y 924 - CONFIG_TMPFS=y 925 - # CONFIG_TMPFS_POSIX_ACL is not set 926 - # CONFIG_HUGETLB_PAGE is not set 927 - # CONFIG_CONFIGFS_FS is not set 928 - CONFIG_MISC_FILESYSTEMS=y 929 - # CONFIG_ADFS_FS is not set 930 - # CONFIG_AFFS_FS is not set 931 - # CONFIG_HFS_FS is not set 932 - # CONFIG_HFSPLUS_FS is not set 933 - # CONFIG_BEFS_FS is not set 934 - # CONFIG_BFS_FS is not set 935 - # CONFIG_EFS_FS is not set 936 - CONFIG_CRAMFS=y 937 - # CONFIG_SQUASHFS is not set 938 - # CONFIG_VXFS_FS is not set 939 - CONFIG_MINIX_FS=m 940 - # CONFIG_OMFS_FS is not set 941 - # CONFIG_HPFS_FS is not set 942 - # CONFIG_QNX4FS_FS is not set 943 - # CONFIG_ROMFS_FS is not set 944 - # CONFIG_SYSV_FS is not set 945 - # CONFIG_UFS_FS is not set 946 - # CONFIG_NILFS2_FS is not set 947 - CONFIG_NETWORK_FILESYSTEMS=y 948 - CONFIG_NFS_FS=y 949 - CONFIG_NFS_V3=y 950 - # CONFIG_NFS_V3_ACL is not set 951 - # CONFIG_NFS_V4 is not set 952 - CONFIG_ROOT_NFS=y 953 - CONFIG_NFSD=m 954 - CONFIG_NFSD_V3=y 955 - # CONFIG_NFSD_V3_ACL is not set 956 - # CONFIG_NFSD_V4 is not set 957 - CONFIG_LOCKD=y 958 - CONFIG_LOCKD_V4=y 959 - CONFIG_EXPORTFS=m 960 - CONFIG_NFS_COMMON=y 961 - CONFIG_SUNRPC=y 962 - # CONFIG_RPCSEC_GSS_KRB5 is not set 963 - # CONFIG_RPCSEC_GSS_SPKM3 is not set 964 - CONFIG_SMB_FS=m 965 - # CONFIG_SMB_NLS_DEFAULT is not set 966 - # CONFIG_CIFS is not set 967 - # CONFIG_NCP_FS is not set 968 - # CONFIG_CODA_FS is not set 969 - # CONFIG_AFS_FS is not set 970 - 971 - # 972 - # Partition Types 973 - # 974 - CONFIG_PARTITION_ADVANCED=y 975 - # CONFIG_ACORN_PARTITION is not set 976 - # CONFIG_OSF_PARTITION is not set 977 - # CONFIG_AMIGA_PARTITION is not set 978 - # CONFIG_ATARI_PARTITION is not set 979 - # CONFIG_MAC_PARTITION is not set 980 - CONFIG_MSDOS_PARTITION=y 981 - # CONFIG_BSD_DISKLABEL is not set 982 - # CONFIG_MINIX_SUBPARTITION is not set 983 - # CONFIG_SOLARIS_X86_PARTITION is not set 984 - # CONFIG_UNIXWARE_DISKLABEL is not set 985 - # CONFIG_LDM_PARTITION is not set 986 - # CONFIG_SGI_PARTITION is not set 987 - # CONFIG_ULTRIX_PARTITION is not set 988 - # CONFIG_SUN_PARTITION is not set 989 - # CONFIG_KARMA_PARTITION is not set 990 - # CONFIG_EFI_PARTITION is not set 991 - # CONFIG_SYSV68_PARTITION is not set 992 - CONFIG_NLS=y 993 - CONFIG_NLS_DEFAULT="iso8859-1" 994 - CONFIG_NLS_CODEPAGE_437=y 995 - # CONFIG_NLS_CODEPAGE_737 is not set 996 - # CONFIG_NLS_CODEPAGE_775 is not set 997 - # CONFIG_NLS_CODEPAGE_850 is not set 998 - # CONFIG_NLS_CODEPAGE_852 is not set 999 - # CONFIG_NLS_CODEPAGE_855 is not set 1000 - # CONFIG_NLS_CODEPAGE_857 is not set 1001 - # CONFIG_NLS_CODEPAGE_860 is not set 1002 - # CONFIG_NLS_CODEPAGE_861 is not set 1003 - # CONFIG_NLS_CODEPAGE_862 is not set 1004 - # CONFIG_NLS_CODEPAGE_863 is not set 1005 - # CONFIG_NLS_CODEPAGE_864 is not set 1006 - # CONFIG_NLS_CODEPAGE_865 is not set 1007 - # CONFIG_NLS_CODEPAGE_866 is not set 1008 - # CONFIG_NLS_CODEPAGE_869 is not set 1009 - # CONFIG_NLS_CODEPAGE_936 is not set 1010 - # CONFIG_NLS_CODEPAGE_950 is not set 1011 - # CONFIG_NLS_CODEPAGE_932 is not set 1012 - # CONFIG_NLS_CODEPAGE_949 is not set 1013 - # CONFIG_NLS_CODEPAGE_874 is not set 1014 - # CONFIG_NLS_ISO8859_8 is not set 1015 - # CONFIG_NLS_CODEPAGE_1250 is not set 1016 - # CONFIG_NLS_CODEPAGE_1251 is not set 1017 - CONFIG_NLS_ASCII=m 1018 - CONFIG_NLS_ISO8859_1=y 1019 - # CONFIG_NLS_ISO8859_2 is not set 1020 - # CONFIG_NLS_ISO8859_3 is not set 1021 - # CONFIG_NLS_ISO8859_4 is not set 1022 - # CONFIG_NLS_ISO8859_5 is not set 1023 - # CONFIG_NLS_ISO8859_6 is not set 1024 - # CONFIG_NLS_ISO8859_7 is not set 1025 - # CONFIG_NLS_ISO8859_9 is not set 1026 - # CONFIG_NLS_ISO8859_13 is not set 1027 - # CONFIG_NLS_ISO8859_14 is not set 1028 - # CONFIG_NLS_ISO8859_15 is not set 1029 - # CONFIG_NLS_KOI8_R is not set 1030 - # CONFIG_NLS_KOI8_U is not set 1031 - CONFIG_NLS_UTF8=m 1032 - # CONFIG_DLM is not set 1033 - 1034 - # 1035 - # Kernel hacking 1036 - # 1037 - # CONFIG_PRINTK_TIME is not set 1038 - CONFIG_ENABLE_WARN_DEPRECATED=y 1039 - CONFIG_ENABLE_MUST_CHECK=y 1040 - CONFIG_FRAME_WARN=1024 1041 - # CONFIG_MAGIC_SYSRQ is not set 1042 - # CONFIG_UNUSED_SYMBOLS is not set 1043 - CONFIG_DEBUG_FS=y 1044 - # CONFIG_HEADERS_CHECK is not set 1045 - CONFIG_DEBUG_KERNEL=y 1046 - # CONFIG_DEBUG_SHIRQ is not set 1047 - CONFIG_DETECT_SOFTLOCKUP=y 1048 - # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1049 - CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1050 - CONFIG_DETECT_HUNG_TASK=y 1051 - # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set 1052 - CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 1053 - CONFIG_SCHED_DEBUG=y 1054 - # CONFIG_SCHEDSTATS is not set 1055 - CONFIG_TIMER_STATS=y 1056 - # CONFIG_DEBUG_OBJECTS is not set 1057 - # CONFIG_SLUB_DEBUG_ON is not set 1058 - # CONFIG_SLUB_STATS is not set 1059 - CONFIG_DEBUG_PREEMPT=y 1060 - CONFIG_DEBUG_RT_MUTEXES=y 1061 - CONFIG_DEBUG_PI_LIST=y 1062 - # CONFIG_RT_MUTEX_TESTER is not set 1063 - # CONFIG_DEBUG_SPINLOCK is not set 1064 - CONFIG_DEBUG_MUTEXES=y 1065 - # CONFIG_DEBUG_LOCK_ALLOC is not set 1066 - # CONFIG_PROVE_LOCKING is not set 1067 - # CONFIG_LOCK_STAT is not set 1068 - # CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1069 - # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1070 - # CONFIG_DEBUG_KOBJECT is not set 1071 - CONFIG_DEBUG_BUGVERBOSE=y 1072 - # CONFIG_DEBUG_INFO is not set 1073 - # CONFIG_DEBUG_VM is not set 1074 - # CONFIG_DEBUG_WRITECOUNT is not set 1075 - # CONFIG_DEBUG_MEMORY_INIT is not set 1076 - # CONFIG_DEBUG_LIST is not set 1077 - # CONFIG_DEBUG_SG is not set 1078 - # CONFIG_DEBUG_NOTIFIERS is not set 1079 - # CONFIG_BOOT_PRINTK_DELAY is not set 1080 - # CONFIG_RCU_TORTURE_TEST is not set 1081 - # CONFIG_RCU_CPU_STALL_DETECTOR is not set 1082 - # CONFIG_BACKTRACE_SELF_TEST is not set 1083 - # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1084 - # CONFIG_FAULT_INJECTION is not set 1085 - # CONFIG_LATENCYTOP is not set 1086 - # CONFIG_SYSCTL_SYSCALL_CHECK is not set 1087 - # CONFIG_PAGE_POISONING is not set 1088 - CONFIG_HAVE_FUNCTION_TRACER=y 1089 - CONFIG_TRACING_SUPPORT=y 1090 - 1091 - # 1092 - # Tracers 1093 - # 1094 - # CONFIG_FUNCTION_TRACER is not set 1095 - # CONFIG_IRQSOFF_TRACER is not set 1096 - # CONFIG_PREEMPT_TRACER is not set 1097 - # CONFIG_SCHED_TRACER is not set 1098 - # CONFIG_CONTEXT_SWITCH_TRACER is not set 1099 - # CONFIG_EVENT_TRACER is not set 1100 - # CONFIG_BOOT_TRACER is not set 1101 - # CONFIG_TRACE_BRANCH_PROFILING is not set 1102 - # CONFIG_STACK_TRACER is not set 1103 - # CONFIG_KMEMTRACE is not set 1104 - # CONFIG_WORKQUEUE_TRACER is not set 1105 - # CONFIG_BLK_DEV_IO_TRACE is not set 1106 - # CONFIG_DYNAMIC_DEBUG is not set 1107 - # CONFIG_SAMPLES is not set 1108 - CONFIG_HAVE_ARCH_KGDB=y 1109 - # CONFIG_KGDB is not set 1110 - CONFIG_ARM_UNWIND=y 1111 - CONFIG_DEBUG_USER=y 1112 - CONFIG_DEBUG_ERRORS=y 1113 - # CONFIG_DEBUG_STACK_USAGE is not set 1114 - # CONFIG_DEBUG_LL is not set 1115 - 1116 - # 1117 - # Security options 1118 - # 1119 - # CONFIG_KEYS is not set 1120 - # CONFIG_SECURITY is not set 1121 - # CONFIG_SECURITYFS is not set 1122 - # CONFIG_SECURITY_FILE_CAPABILITIES is not set 1123 - CONFIG_CRYPTO=y 1124 - 1125 - # 1126 - # Crypto core or helper 1127 - # 1128 - # CONFIG_CRYPTO_FIPS is not set 1129 - # CONFIG_CRYPTO_MANAGER is not set 1130 - # CONFIG_CRYPTO_MANAGER2 is not set 1131 - # CONFIG_CRYPTO_GF128MUL is not set 1132 - # CONFIG_CRYPTO_NULL is not set 1133 - # CONFIG_CRYPTO_CRYPTD is not set 1134 - # CONFIG_CRYPTO_AUTHENC is not set 1135 - # CONFIG_CRYPTO_TEST is not set 1136 - 1137 - # 1138 - # Authenticated Encryption with Associated Data 1139 - # 1140 - # CONFIG_CRYPTO_CCM is not set 1141 - # CONFIG_CRYPTO_GCM is not set 1142 - # CONFIG_CRYPTO_SEQIV is not set 1143 - 1144 - # 1145 - # Block modes 1146 - # 1147 - # CONFIG_CRYPTO_CBC is not set 1148 - # CONFIG_CRYPTO_CTR is not set 1149 - # CONFIG_CRYPTO_CTS is not set 1150 - # CONFIG_CRYPTO_ECB is not set 1151 - # CONFIG_CRYPTO_LRW is not set 1152 - # CONFIG_CRYPTO_PCBC is not set 1153 - # CONFIG_CRYPTO_XTS is not set 1154 - 1155 - # 1156 - # Hash modes 1157 - # 1158 - # CONFIG_CRYPTO_HMAC is not set 1159 - # CONFIG_CRYPTO_XCBC is not set 1160 - 1161 - # 1162 - # Digest 1163 - # 1164 - # CONFIG_CRYPTO_CRC32C is not set 1165 - # CONFIG_CRYPTO_MD4 is not set 1166 - # CONFIG_CRYPTO_MD5 is not set 1167 - # CONFIG_CRYPTO_MICHAEL_MIC is not set 1168 - # CONFIG_CRYPTO_RMD128 is not set 1169 - # CONFIG_CRYPTO_RMD160 is not set 1170 - # CONFIG_CRYPTO_RMD256 is not set 1171 - # CONFIG_CRYPTO_RMD320 is not set 1172 - # CONFIG_CRYPTO_SHA1 is not set 1173 - # CONFIG_CRYPTO_SHA256 is not set 1174 - # CONFIG_CRYPTO_SHA512 is not set 1175 - # CONFIG_CRYPTO_TGR192 is not set 1176 - # CONFIG_CRYPTO_WP512 is not set 1177 - 1178 - # 1179 - # Ciphers 1180 - # 1181 - # CONFIG_CRYPTO_AES is not set 1182 - # CONFIG_CRYPTO_ANUBIS is not set 1183 - # CONFIG_CRYPTO_ARC4 is not set 1184 - # CONFIG_CRYPTO_BLOWFISH is not set 1185 - # CONFIG_CRYPTO_CAMELLIA is not set 1186 - # CONFIG_CRYPTO_CAST5 is not set 1187 - # CONFIG_CRYPTO_CAST6 is not set 1188 - # CONFIG_CRYPTO_DES is not set 1189 - # CONFIG_CRYPTO_FCRYPT is not set 1190 - # CONFIG_CRYPTO_KHAZAD is not set 1191 - # CONFIG_CRYPTO_SALSA20 is not set 1192 - # CONFIG_CRYPTO_SEED is not set 1193 - # CONFIG_CRYPTO_SERPENT is not set 1194 - # CONFIG_CRYPTO_TEA is not set 1195 - # CONFIG_CRYPTO_TWOFISH is not set 1196 - 1197 - # 1198 - # Compression 1199 - # 1200 - # CONFIG_CRYPTO_DEFLATE is not set 1201 - # CONFIG_CRYPTO_ZLIB is not set 1202 - # CONFIG_CRYPTO_LZO is not set 1203 - 1204 - # 1205 - # Random Number Generation 1206 - # 1207 - # CONFIG_CRYPTO_ANSI_CPRNG is not set 1208 - # CONFIG_CRYPTO_HW is not set 1209 - # CONFIG_BINARY_PRINTF is not set 1210 - 1211 - # 1212 - # Library routines 1213 - # 1214 - CONFIG_BITREVERSE=y 1215 - CONFIG_GENERIC_FIND_LAST_BIT=y 1216 - CONFIG_CRC_CCITT=m 1217 - # CONFIG_CRC16 is not set 1218 - CONFIG_CRC_T10DIF=m 1219 - # CONFIG_CRC_ITU_T is not set 1220 - CONFIG_CRC32=y 1221 - # CONFIG_CRC7 is not set 1222 - # CONFIG_LIBCRC32C is not set 1223 - CONFIG_ZLIB_INFLATE=y 1224 - CONFIG_DECOMPRESS_GZIP=y 1225 - CONFIG_GENERIC_ALLOCATOR=y 1226 - CONFIG_HAS_IOMEM=y 1227 - CONFIG_HAS_IOPORT=y 1228 - CONFIG_HAS_DMA=y 1229 - CONFIG_NLATTR=y
+88 -38
arch/arm/configs/davinci_all_defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.31-rc3-davinci1 4 - # Fri Jul 17 08:26:52 2009 3 + # Linux kernel version: 2.6.32-rc4 4 + # Mon Oct 12 14:13:12 2009 5 5 # 6 6 CONFIG_ARM=y 7 7 CONFIG_SYS_SUPPORTS_APM_EMULATION=y 8 8 CONFIG_GENERIC_GPIO=y 9 9 CONFIG_GENERIC_TIME=y 10 10 CONFIG_GENERIC_CLOCKEVENTS=y 11 - CONFIG_MMU=y 12 11 CONFIG_GENERIC_HARDIRQS=y 13 12 CONFIG_STACKTRACE_SUPPORT=y 14 13 CONFIG_HAVE_LATENCYTOP_SUPPORT=y ··· 45 46 # 46 47 # RCU Subsystem 47 48 # 48 - CONFIG_CLASSIC_RCU=y 49 - # CONFIG_TREE_RCU is not set 50 - # CONFIG_PREEMPT_RCU is not set 49 + CONFIG_TREE_RCU=y 50 + # CONFIG_TREE_PREEMPT_RCU is not set 51 + # CONFIG_RCU_TRACE is not set 52 + CONFIG_RCU_FANOUT=32 53 + # CONFIG_RCU_FANOUT_EXACT is not set 51 54 # CONFIG_TREE_RCU_TRACE is not set 52 - # CONFIG_PREEMPT_RCU_TRACE is not set 53 55 CONFIG_IKCONFIG=y 54 56 CONFIG_IKCONFIG_PROC=y 55 57 CONFIG_LOG_BUF_SHIFT=14 ··· 91 91 CONFIG_AIO=y 92 92 93 93 # 94 - # Performance Counters 94 + # Kernel Performance Events And Counters 95 95 # 96 96 CONFIG_VM_EVENT_COUNTERS=y 97 97 CONFIG_SLUB_DEBUG=y 98 - # CONFIG_STRIP_ASM_SYMS is not set 99 98 CONFIG_COMPAT_BRK=y 100 99 # CONFIG_SLAB is not set 101 100 CONFIG_SLUB=y 102 101 # CONFIG_SLOB is not set 103 102 # CONFIG_PROFILING is not set 104 - # CONFIG_MARKERS is not set 105 103 CONFIG_HAVE_OPROFILE=y 106 104 # CONFIG_KPROBES is not set 107 105 CONFIG_HAVE_KPROBES=y ··· 143 145 # 144 146 # System Type 145 147 # 148 + CONFIG_MMU=y 146 149 # CONFIG_ARCH_AAEC2000 is not set 147 150 # CONFIG_ARCH_INTEGRATOR is not set 148 151 # CONFIG_ARCH_REALVIEW is not set ··· 158 159 # CONFIG_ARCH_STMP3XXX is not set 159 160 # CONFIG_ARCH_NETX is not set 160 161 # CONFIG_ARCH_H720X is not set 162 + # CONFIG_ARCH_NOMADIK is not set 161 163 # CONFIG_ARCH_IOP13XX is not set 162 164 # CONFIG_ARCH_IOP32X is not set 163 165 # CONFIG_ARCH_IOP33X is not set ··· 181 181 # CONFIG_ARCH_SA1100 is not set 182 182 # CONFIG_ARCH_S3C2410 is not set 183 183 # CONFIG_ARCH_S3C64XX is not set 184 + # CONFIG_ARCH_S5PC1XX is not set 184 185 # CONFIG_ARCH_SHARK is not set 185 186 # CONFIG_ARCH_LH7A40X is not set 186 187 # CONFIG_ARCH_U300 is not set 187 188 CONFIG_ARCH_DAVINCI=y 188 189 # CONFIG_ARCH_OMAP is not set 190 + # CONFIG_ARCH_BCMRING is not set 189 191 CONFIG_AINTC=y 190 192 CONFIG_ARCH_DAVINCI_DMx=y 191 193 ··· 210 208 # 211 209 CONFIG_MACH_DAVINCI_EVM=y 212 210 CONFIG_MACH_SFFSDR=y 211 + CONFIG_MACH_NEUROS_OSD2=y 213 212 CONFIG_MACH_DAVINCI_DM355_EVM=y 214 213 CONFIG_MACH_DM355_LEOPARD=y 215 214 CONFIG_MACH_DAVINCI_DM6467_EVM=y ··· 227 224 CONFIG_CPU_ARM926T=y 228 225 CONFIG_CPU_32v5=y 229 226 CONFIG_CPU_ABRT_EV5TJ=y 230 - CONFIG_CPU_PABRT_NOIFAR=y 227 + CONFIG_CPU_PABRT_LEGACY=y 231 228 CONFIG_CPU_CACHE_VIVT=y 232 229 CONFIG_CPU_COPY_V4WB=y 233 230 CONFIG_CPU_TLB_V4WBI=y ··· 242 239 # CONFIG_CPU_DCACHE_DISABLE is not set 243 240 # CONFIG_CPU_DCACHE_WRITETHROUGH is not set 244 241 # CONFIG_CPU_CACHE_ROUND_ROBIN is not set 242 + CONFIG_ARM_L1_CACHE_SHIFT=5 245 243 CONFIG_COMMON_CLKDEV=y 246 244 247 245 # ··· 263 259 # CONFIG_VMSPLIT_2G is not set 264 260 # CONFIG_VMSPLIT_1G is not set 265 261 CONFIG_PAGE_OFFSET=0xC0000000 262 + # CONFIG_PREEMPT_NONE is not set 263 + # CONFIG_PREEMPT_VOLUNTARY is not set 266 264 CONFIG_PREEMPT=y 267 265 CONFIG_HZ=100 268 266 CONFIG_AEABI=y ··· 286 280 CONFIG_VIRT_TO_BUS=y 287 281 CONFIG_HAVE_MLOCK=y 288 282 CONFIG_HAVE_MLOCKED_PAGE_BIT=y 283 + # CONFIG_KSM is not set 289 284 CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 290 285 CONFIG_LEDS=y 291 286 # CONFIG_LEDS_CPU is not set ··· 419 412 # CONFIG_IP6_NF_IPTABLES is not set 420 413 # CONFIG_IP_DCCP is not set 421 414 # CONFIG_IP_SCTP is not set 415 + # CONFIG_RDS is not set 422 416 # CONFIG_TIPC is not set 423 417 # CONFIG_ATM is not set 424 418 # CONFIG_BRIDGE is not set ··· 460 452 # Generic Driver Options 461 453 # 462 454 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 455 + # CONFIG_DEVTMPFS is not set 463 456 CONFIG_STANDALONE=y 464 457 CONFIG_PREVENT_FIRMWARE_BUILD=y 465 458 # CONFIG_FW_LOADER is not set ··· 470 461 # CONFIG_CONNECTOR is not set 471 462 CONFIG_MTD=m 472 463 # CONFIG_MTD_DEBUG is not set 464 + # CONFIG_MTD_TESTS is not set 473 465 # CONFIG_MTD_CONCAT is not set 474 466 CONFIG_MTD_PARTITIONS=y 475 - # CONFIG_MTD_TESTS is not set 476 467 # CONFIG_MTD_REDBOOT_PARTS is not set 477 468 # CONFIG_MTD_AFS_PARTS is not set 478 469 # CONFIG_MTD_AR7_PARTS is not set ··· 508 499 CONFIG_MTD_CFI_I2=y 509 500 # CONFIG_MTD_CFI_I4 is not set 510 501 # CONFIG_MTD_CFI_I8 is not set 511 - # CONFIG_MTD_CFI_INTELEXT is not set 502 + CONFIG_MTD_CFI_INTELEXT=m 512 503 CONFIG_MTD_CFI_AMDSTD=m 513 504 # CONFIG_MTD_CFI_STAA is not set 514 505 CONFIG_MTD_CFI_UTIL=m ··· 703 694 # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 704 695 # CONFIG_B44 is not set 705 696 # CONFIG_KS8842 is not set 697 + # CONFIG_KS8851_MLL is not set 706 698 # CONFIG_NETDEV_1000 is not set 707 699 # CONFIG_NETDEV_10000 is not set 708 - 709 - # 710 - # Wireless LAN 711 - # 700 + CONFIG_WLAN=y 712 701 # CONFIG_WLAN_PRE80211 is not set 713 702 # CONFIG_WLAN_80211 is not set 714 703 ··· 741 734 CONFIG_NETPOLL_TRAP=y 742 735 CONFIG_NET_POLL_CONTROLLER=y 743 736 # CONFIG_ISDN is not set 737 + # CONFIG_PHONE is not set 744 738 745 739 # 746 740 # Input device support ··· 753 745 # 754 746 # Userland interfaces 755 747 # 756 - CONFIG_INPUT_MOUSEDEV=m 757 - CONFIG_INPUT_MOUSEDEV_PSAUX=y 758 - CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 759 - CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 748 + # CONFIG_INPUT_MOUSEDEV is not set 760 749 # CONFIG_INPUT_JOYDEV is not set 761 750 CONFIG_INPUT_EVDEV=m 762 751 CONFIG_INPUT_EVBUG=m ··· 762 757 # Input Device Drivers 763 758 # 764 759 CONFIG_INPUT_KEYBOARD=y 760 + # CONFIG_KEYBOARD_ADP5588 is not set 765 761 CONFIG_KEYBOARD_ATKBD=m 762 + # CONFIG_QT2160 is not set 766 763 # CONFIG_KEYBOARD_LKKBD is not set 767 764 CONFIG_KEYBOARD_GPIO=y 768 765 # CONFIG_KEYBOARD_MATRIX is not set 769 766 # CONFIG_KEYBOARD_LM8323 is not set 767 + # CONFIG_KEYBOARD_MAX7359 is not set 770 768 # CONFIG_KEYBOARD_NEWTON is not set 769 + # CONFIG_KEYBOARD_OPENCORES is not set 771 770 # CONFIG_KEYBOARD_STOWAWAY is not set 772 771 # CONFIG_KEYBOARD_SUNKBD is not set 773 772 CONFIG_KEYBOARD_XTKBD=m ··· 786 777 # CONFIG_TOUCHSCREEN_GUNZE is not set 787 778 # CONFIG_TOUCHSCREEN_ELO is not set 788 779 # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set 780 + # CONFIG_TOUCHSCREEN_MCS5000 is not set 789 781 # CONFIG_TOUCHSCREEN_MTOUCH is not set 790 782 # CONFIG_TOUCHSCREEN_INEXIO is not set 791 783 # CONFIG_TOUCHSCREEN_MK712 is not set ··· 797 787 # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set 798 788 # CONFIG_TOUCHSCREEN_TSC2007 is not set 799 789 # CONFIG_TOUCHSCREEN_W90X900 is not set 800 - # CONFIG_INPUT_MISC is not set 790 + CONFIG_INPUT_MISC=y 791 + # CONFIG_INPUT_ATI_REMOTE is not set 792 + # CONFIG_INPUT_ATI_REMOTE2 is not set 793 + # CONFIG_INPUT_KEYSPAN_REMOTE is not set 794 + # CONFIG_INPUT_POWERMATE is not set 795 + # CONFIG_INPUT_YEALINK is not set 796 + # CONFIG_INPUT_CM109 is not set 797 + # CONFIG_INPUT_UINPUT is not set 798 + # CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set 799 + CONFIG_INPUT_DM355EVM=m 800 + CONFIG_INPUT_DM365EVM=m 801 801 802 802 # 803 803 # Hardware I/O ports ··· 848 828 CONFIG_LEGACY_PTYS=y 849 829 CONFIG_LEGACY_PTY_COUNT=256 850 830 # CONFIG_IPMI_HANDLER is not set 851 - CONFIG_HW_RANDOM=m 852 - # CONFIG_HW_RANDOM_TIMERIOMEM is not set 831 + # CONFIG_HW_RANDOM is not set 853 832 # CONFIG_R3964 is not set 854 833 # CONFIG_RAW_DRIVER is not set 855 834 # CONFIG_TCG_TPM is not set 856 835 CONFIG_I2C=y 857 836 CONFIG_I2C_BOARDINFO=y 837 + CONFIG_I2C_COMPAT=y 858 838 CONFIG_I2C_CHARDEV=y 859 839 CONFIG_I2C_HELPER_AUTO=y 860 840 ··· 888 868 # Miscellaneous I2C Chip support 889 869 # 890 870 # CONFIG_DS1682 is not set 891 - # CONFIG_SENSORS_PCA9539 is not set 892 871 # CONFIG_SENSORS_TSL2550 is not set 893 872 # CONFIG_I2C_DEBUG_CORE is not set 894 873 # CONFIG_I2C_DEBUG_ALGO is not set 895 874 # CONFIG_I2C_DEBUG_BUS is not set 896 875 # CONFIG_I2C_DEBUG_CHIP is not set 897 876 # CONFIG_SPI is not set 877 + 878 + # 879 + # PPS support 880 + # 881 + # CONFIG_PPS is not set 898 882 CONFIG_ARCH_REQUIRE_GPIOLIB=y 899 883 CONFIG_GPIOLIB=y 900 884 # CONFIG_DEBUG_GPIO is not set ··· 913 889 # 914 890 # CONFIG_GPIO_MAX732X is not set 915 891 # CONFIG_GPIO_PCA953X is not set 916 - CONFIG_GPIO_PCF857X=m 892 + CONFIG_GPIO_PCF857X=y 917 893 918 894 # 919 895 # PCI GPIO expanders: ··· 922 898 # 923 899 # SPI GPIO expanders: 924 900 # 901 + 902 + # 903 + # AC97 GPIO expanders: 904 + # 925 905 # CONFIG_W1 is not set 926 906 # CONFIG_POWER_SUPPLY is not set 927 907 CONFIG_HWMON=y 928 908 # CONFIG_HWMON_VID is not set 909 + # CONFIG_HWMON_DEBUG_CHIP is not set 910 + 911 + # 912 + # Native drivers 913 + # 929 914 # CONFIG_SENSORS_AD7414 is not set 930 915 # CONFIG_SENSORS_AD7418 is not set 931 916 # CONFIG_SENSORS_ADM1021 is not set ··· 983 950 # CONFIG_SENSORS_ADS7828 is not set 984 951 # CONFIG_SENSORS_THMC50 is not set 985 952 # CONFIG_SENSORS_TMP401 is not set 953 + # CONFIG_SENSORS_TMP421 is not set 986 954 # CONFIG_SENSORS_VT1211 is not set 987 955 # CONFIG_SENSORS_W83781D is not set 988 956 # CONFIG_SENSORS_W83791D is not set ··· 993 959 # CONFIG_SENSORS_W83L786NG is not set 994 960 # CONFIG_SENSORS_W83627HF is not set 995 961 # CONFIG_SENSORS_W83627EHF is not set 996 - # CONFIG_HWMON_DEBUG_CHIP is not set 997 962 # CONFIG_THERMAL is not set 998 - # CONFIG_THERMAL_HWMON is not set 999 963 CONFIG_WATCHDOG=y 1000 964 # CONFIG_WATCHDOG_NOWAYOUT is not set 1001 965 ··· 1020 988 # CONFIG_MFD_CORE is not set 1021 989 # CONFIG_MFD_SM501 is not set 1022 990 # CONFIG_MFD_ASIC3 is not set 1023 - # CONFIG_MFD_DM355EVM_MSP is not set 991 + CONFIG_MFD_DM355EVM_MSP=y 1024 992 # CONFIG_HTC_EGPIO is not set 1025 993 # CONFIG_HTC_PASIC3 is not set 1026 994 # CONFIG_TPS65010 is not set ··· 1031 999 # CONFIG_MFD_TC6393XB is not set 1032 1000 # CONFIG_PMIC_DA903X is not set 1033 1001 # CONFIG_MFD_WM8400 is not set 1002 + # CONFIG_MFD_WM831X is not set 1034 1003 # CONFIG_MFD_WM8350_I2C is not set 1035 1004 # CONFIG_MFD_PCF50633 is not set 1036 1005 # CONFIG_AB3100_CORE is not set 1006 + # CONFIG_REGULATOR is not set 1037 1007 # CONFIG_MEDIA_SUPPORT is not set 1038 1008 1039 1009 # ··· 1047 1013 CONFIG_FIRMWARE_EDID=y 1048 1014 # CONFIG_FB_DDC is not set 1049 1015 # CONFIG_FB_BOOT_VESA_SUPPORT is not set 1050 - # CONFIG_FB_CFB_FILLRECT is not set 1051 - # CONFIG_FB_CFB_COPYAREA is not set 1052 - # CONFIG_FB_CFB_IMAGEBLIT is not set 1016 + CONFIG_FB_CFB_FILLRECT=y 1017 + CONFIG_FB_CFB_COPYAREA=y 1018 + CONFIG_FB_CFB_IMAGEBLIT=y 1053 1019 # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 1054 1020 # CONFIG_FB_SYS_FILLRECT is not set 1055 1021 # CONFIG_FB_SYS_COPYAREA is not set ··· 1066 1032 # Frame buffer hardware drivers 1067 1033 # 1068 1034 # CONFIG_FB_S1D13XXX is not set 1035 + CONFIG_FB_DAVINCI=y 1069 1036 # CONFIG_FB_VIRTUAL is not set 1070 1037 # CONFIG_FB_METRONOME is not set 1071 1038 # CONFIG_FB_MB862XX is not set ··· 1136 1101 # CONFIG_SOUND_PRIME is not set 1137 1102 CONFIG_HID_SUPPORT=y 1138 1103 CONFIG_HID=m 1139 - # CONFIG_HID_DEBUG is not set 1140 1104 # CONFIG_HIDRAW is not set 1141 1105 1142 1106 # ··· 1164 1130 CONFIG_HID_EZKEY=m 1165 1131 # CONFIG_HID_KYE is not set 1166 1132 CONFIG_HID_GYRATION=m 1133 + # CONFIG_HID_TWINHAN is not set 1167 1134 # CONFIG_HID_KENSINGTON is not set 1168 1135 CONFIG_HID_LOGITECH=m 1169 1136 # CONFIG_LOGITECH_FF is not set ··· 1211 1176 # CONFIG_USB_OXU210HP_HCD is not set 1212 1177 # CONFIG_USB_ISP116X_HCD is not set 1213 1178 # CONFIG_USB_ISP1760_HCD is not set 1179 + # CONFIG_USB_ISP1362_HCD is not set 1214 1180 # CONFIG_USB_SL811_HCD is not set 1215 1181 # CONFIG_USB_R8A66597_HCD is not set 1216 1182 # CONFIG_USB_HWA_HCD is not set ··· 1305 1269 # CONFIG_USB_GADGET_LH7A40X is not set 1306 1270 # CONFIG_USB_GADGET_OMAP is not set 1307 1271 # CONFIG_USB_GADGET_PXA25X is not set 1272 + # CONFIG_USB_GADGET_R8A66597 is not set 1308 1273 # CONFIG_USB_GADGET_PXA27X is not set 1309 1274 # CONFIG_USB_GADGET_S3C_HSOTG is not set 1310 1275 # CONFIG_USB_GADGET_IMX is not set ··· 1323 1286 # CONFIG_USB_AUDIO is not set 1324 1287 CONFIG_USB_ETH=m 1325 1288 CONFIG_USB_ETH_RNDIS=y 1289 + # CONFIG_USB_ETH_EEM is not set 1326 1290 CONFIG_USB_GADGETFS=m 1327 1291 CONFIG_USB_FILE_STORAGE=m 1328 1292 # CONFIG_USB_FILE_STORAGE_TEST is not set ··· 1354 1316 # MMC/SD/SDIO Host Controller Drivers 1355 1317 # 1356 1318 # CONFIG_MMC_SDHCI is not set 1319 + # CONFIG_MMC_AT91 is not set 1320 + # CONFIG_MMC_ATMELMCI is not set 1321 + CONFIG_MMC_DAVINCI=m 1357 1322 # CONFIG_MEMSTICK is not set 1358 - # CONFIG_ACCESSIBILITY is not set 1359 1323 CONFIG_NEW_LEDS=y 1360 1324 CONFIG_LEDS_CLASS=m 1361 1325 ··· 1385 1345 # 1386 1346 # iptables trigger is under Netfilter config (LED target) 1387 1347 # 1348 + # CONFIG_ACCESSIBILITY is not set 1388 1349 CONFIG_RTC_LIB=y 1389 1350 CONFIG_RTC_CLASS=m 1390 1351 ··· 1411 1370 # CONFIG_RTC_DRV_PCF8563 is not set 1412 1371 # CONFIG_RTC_DRV_PCF8583 is not set 1413 1372 # CONFIG_RTC_DRV_M41T80 is not set 1373 + # CONFIG_RTC_DRV_DM355EVM is not set 1414 1374 # CONFIG_RTC_DRV_S35390A is not set 1415 1375 # CONFIG_RTC_DRV_FM3130 is not set 1416 1376 # CONFIG_RTC_DRV_RX8581 is not set ··· 1441 1399 # 1442 1400 # CONFIG_DMADEVICES is not set 1443 1401 # CONFIG_AUXDISPLAY is not set 1444 - # CONFIG_REGULATOR is not set 1445 1402 # CONFIG_UIO is not set 1403 + 1404 + # 1405 + # TI VLYNQ 1406 + # 1446 1407 # CONFIG_STAGING is not set 1447 1408 1448 1409 # ··· 1474 1429 # CONFIG_GFS2_FS is not set 1475 1430 # CONFIG_OCFS2_FS is not set 1476 1431 # CONFIG_BTRFS_FS is not set 1432 + # CONFIG_NILFS2_FS is not set 1477 1433 CONFIG_FILE_LOCKING=y 1478 1434 CONFIG_FSNOTIFY=y 1479 1435 CONFIG_DNOTIFY=y ··· 1546 1500 # CONFIG_ROMFS_FS is not set 1547 1501 # CONFIG_SYSV_FS is not set 1548 1502 # CONFIG_UFS_FS is not set 1549 - # CONFIG_NILFS2_FS is not set 1550 1503 CONFIG_NETWORK_FILESYSTEMS=y 1551 1504 CONFIG_NFS_FS=y 1552 1505 CONFIG_NFS_V3=y ··· 1641 1596 CONFIG_ENABLE_MUST_CHECK=y 1642 1597 CONFIG_FRAME_WARN=1024 1643 1598 # CONFIG_MAGIC_SYSRQ is not set 1599 + # CONFIG_STRIP_ASM_SYMS is not set 1644 1600 # CONFIG_UNUSED_SYMBOLS is not set 1645 1601 CONFIG_DEBUG_FS=y 1646 1602 # CONFIG_HEADERS_CHECK is not set ··· 1680 1634 # CONFIG_DEBUG_LIST is not set 1681 1635 # CONFIG_DEBUG_SG is not set 1682 1636 # CONFIG_DEBUG_NOTIFIERS is not set 1637 + # CONFIG_DEBUG_CREDENTIALS is not set 1638 + CONFIG_FRAME_POINTER=y 1683 1639 # CONFIG_BOOT_PRINTK_DELAY is not set 1684 1640 # CONFIG_RCU_TORTURE_TEST is not set 1685 1641 # CONFIG_RCU_CPU_STALL_DETECTOR is not set 1686 1642 # CONFIG_BACKTRACE_SELF_TEST is not set 1687 1643 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1644 + # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 1688 1645 # CONFIG_FAULT_INJECTION is not set 1689 1646 # CONFIG_LATENCYTOP is not set 1690 1647 # CONFIG_SYSCTL_SYSCALL_CHECK is not set ··· 1712 1663 # CONFIG_SAMPLES is not set 1713 1664 CONFIG_HAVE_ARCH_KGDB=y 1714 1665 # CONFIG_KGDB is not set 1715 - CONFIG_ARM_UNWIND=y 1666 + # CONFIG_ARM_UNWIND is not set 1716 1667 CONFIG_DEBUG_USER=y 1717 1668 CONFIG_DEBUG_ERRORS=y 1718 1669 # CONFIG_DEBUG_STACK_USAGE is not set ··· 1730 1681 # 1731 1682 # Crypto core or helper 1732 1683 # 1733 - # CONFIG_CRYPTO_FIPS is not set 1734 1684 # CONFIG_CRYPTO_MANAGER is not set 1735 1685 # CONFIG_CRYPTO_MANAGER2 is not set 1736 1686 # CONFIG_CRYPTO_GF128MUL is not set ··· 1761 1713 # 1762 1714 # CONFIG_CRYPTO_HMAC is not set 1763 1715 # CONFIG_CRYPTO_XCBC is not set 1716 + # CONFIG_CRYPTO_VMAC is not set 1764 1717 1765 1718 # 1766 1719 # Digest 1767 1720 # 1768 1721 # CONFIG_CRYPTO_CRC32C is not set 1722 + # CONFIG_CRYPTO_GHASH is not set 1769 1723 # CONFIG_CRYPTO_MD4 is not set 1770 1724 # CONFIG_CRYPTO_MD5 is not set 1771 1725 # CONFIG_CRYPTO_MICHAEL_MIC is not set
+59
arch/arm/mach-davinci/Kconfig
··· 32 32 bool "DA830/OMAP-L137 based system" 33 33 select CP_INTC 34 34 select ARCH_DAVINCI_DA8XX 35 + select CPU_DCACHE_WRITETHROUGH # needed on silicon revs 1.0, 1.1 35 36 36 37 config ARCH_DAVINCI_DA850 37 38 bool "DA850/OMAP-L138 based system" 38 39 select CP_INTC 39 40 select ARCH_DAVINCI_DA8XX 41 + select ARCH_HAS_CPUFREQ 40 42 41 43 config ARCH_DAVINCI_DA8XX 42 44 bool ··· 64 62 help 65 63 Say Y here to select the Lyrtech Small Form Factor 66 64 Software Defined Radio (SFFSDR) board. 65 + 66 + config MACH_NEUROS_OSD2 67 + bool "Neuros OSD2 Open Television Set Top Box" 68 + depends on ARCH_DAVINCI_DM644x 69 + help 70 + Configure this option to specify the whether the board used 71 + for development is a Neuros OSD2 Open Set Top Box. 67 72 68 73 config MACH_DAVINCI_DM355_EVM 69 74 bool "TI DM355 EVM" ··· 107 98 bool "TI DA830/OMAP-L137 Reference Platform" 108 99 default ARCH_DAVINCI_DA830 109 100 depends on ARCH_DAVINCI_DA830 101 + select GPIO_PCF857X 110 102 help 111 103 Say Y here to select the TI DA830/OMAP-L137 Evaluation Module. 104 + 105 + choice 106 + prompt "Select DA830/OMAP-L137 UI board peripheral" 107 + depends on MACH_DAVINCI_DA830_EVM 108 + help 109 + The presence of UI card on the DA830/OMAP-L137 EVM is detected 110 + automatically based on successful probe of the I2C based GPIO 111 + expander on that board. This option selected in this menu has 112 + an effect only in case of a successful UI card detection. 113 + 114 + config DA830_UI_LCD 115 + bool "LCD" 116 + help 117 + Say Y here to use the LCD as a framebuffer or simple character 118 + display. 119 + 120 + config DA830_UI_NAND 121 + bool "NAND flash" 122 + help 123 + Say Y here to use the NAND flash. Do not forget to setup 124 + the switch correctly. 125 + endchoice 112 126 113 127 config MACH_DAVINCI_DA850_EVM 114 128 bool "TI DA850/OMAP-L138 Reference Platform" 115 129 default ARCH_DAVINCI_DA850 116 130 depends on ARCH_DAVINCI_DA850 131 + select GPIO_PCA953X 117 132 help 118 133 Say Y here to select the TI DA850/OMAP-L138 Evaluation Module. 134 + 135 + choice 136 + prompt "Select peripherals connected to expander on UI board" 137 + depends on MACH_DAVINCI_DA850_EVM 138 + help 139 + The presence of User Interface (UI) card on the DA850/OMAP-L138 140 + EVM is detected automatically based on successful probe of the I2C 141 + based GPIO expander on that card. This option selected in this 142 + menu has an effect only in case of a successful UI card detection. 143 + 144 + config DA850_UI_NONE 145 + bool "No peripheral is enabled" 146 + help 147 + Say Y if you do not want to enable any of the peripherals connected 148 + to TCA6416 expander on DA850/OMAP-L138 EVM UI card 149 + 150 + config DA850_UI_RMII 151 + bool "RMII Ethernet PHY" 152 + help 153 + Say Y if you want to use the RMII PHY on the DA850/OMAP-L138 EVM. 154 + This PHY is found on the UI daughter card that is supplied with 155 + the EVM. 156 + NOTE: Please take care while choosing this option, MII PHY will 157 + not be functional if RMII mode is selected. 158 + 159 + endchoice 119 160 120 161 config DAVINCI_MUX 121 162 bool "DAVINCI multiplexing support"
+5
arch/arm/mach-davinci/Makefile
··· 23 23 # Board specific 24 24 obj-$(CONFIG_MACH_DAVINCI_EVM) += board-dm644x-evm.o 25 25 obj-$(CONFIG_MACH_SFFSDR) += board-sffsdr.o 26 + obj-$(CONFIG_MACH_NEUROS_OSD2) += board-neuros-osd2.o 26 27 obj-$(CONFIG_MACH_DAVINCI_DM355_EVM) += board-dm355-evm.o 27 28 obj-$(CONFIG_MACH_DM355_LEOPARD) += board-dm355-leopard.o 28 29 obj-$(CONFIG_MACH_DAVINCI_DM6467_EVM) += board-dm646x-evm.o 29 30 obj-$(CONFIG_MACH_DAVINCI_DM365_EVM) += board-dm365-evm.o 30 31 obj-$(CONFIG_MACH_DAVINCI_DA830_EVM) += board-da830-evm.o 31 32 obj-$(CONFIG_MACH_DAVINCI_DA850_EVM) += board-da850-evm.o 33 + 34 + # Power Management 35 + obj-$(CONFIG_CPU_FREQ) += cpufreq.o 36 + obj-$(CONFIG_CPU_IDLE) += cpuidle.o
+441 -25
arch/arm/mach-davinci/board-da830-evm.c
··· 10 10 * or implied. 11 11 */ 12 12 #include <linux/kernel.h> 13 - #include <linux/module.h> 14 13 #include <linux/init.h> 15 14 #include <linux/console.h> 15 + #include <linux/interrupt.h> 16 + #include <linux/gpio.h> 17 + #include <linux/platform_device.h> 16 18 #include <linux/i2c.h> 19 + #include <linux/i2c/pcf857x.h> 17 20 #include <linux/i2c/at24.h> 21 + #include <linux/mtd/mtd.h> 22 + #include <linux/mtd/partitions.h> 18 23 19 24 #include <asm/mach-types.h> 20 25 #include <asm/mach/arch.h> 21 26 22 - #include <mach/common.h> 23 - #include <mach/irqs.h> 24 27 #include <mach/cp_intc.h> 28 + #include <mach/mux.h> 29 + #include <mach/nand.h> 25 30 #include <mach/da8xx.h> 26 - #include <mach/asp.h> 31 + #include <mach/usb.h> 27 32 28 33 #define DA830_EVM_PHY_MASK 0x0 29 34 #define DA830_EVM_MDIO_FREQUENCY 2200000 /* PHY bus frequency */ 30 35 31 - static struct at24_platform_data da830_evm_i2c_eeprom_info = { 32 - .byte_len = SZ_256K / 8, 33 - .page_size = 64, 34 - .flags = AT24_FLAG_ADDR16, 35 - .setup = davinci_get_mac_addr, 36 - .context = (void *)0x7f00, 36 + #define DA830_EMIF25_ASYNC_DATA_CE3_BASE 0x62000000 37 + #define DA830_EMIF25_CONTROL_BASE 0x68000000 38 + 39 + /* 40 + * USB1 VBUS is controlled by GPIO1[15], over-current is reported on GPIO2[4]. 41 + */ 42 + #define ON_BD_USB_DRV GPIO_TO_PIN(1, 15) 43 + #define ON_BD_USB_OVC GPIO_TO_PIN(2, 4) 44 + 45 + static const short da830_evm_usb11_pins[] = { 46 + DA830_GPIO1_15, DA830_GPIO2_4, 47 + -1 37 48 }; 38 49 39 - static struct i2c_board_info __initdata da830_evm_i2c_devices[] = { 40 - { 41 - I2C_BOARD_INFO("24c256", 0x50), 42 - .platform_data = &da830_evm_i2c_eeprom_info, 43 - }, 44 - { 45 - I2C_BOARD_INFO("tlv320aic3x", 0x18), 50 + static da8xx_ocic_handler_t da830_evm_usb_ocic_handler; 51 + 52 + static int da830_evm_usb_set_power(unsigned port, int on) 53 + { 54 + gpio_set_value(ON_BD_USB_DRV, on); 55 + return 0; 56 + } 57 + 58 + static int da830_evm_usb_get_power(unsigned port) 59 + { 60 + return gpio_get_value(ON_BD_USB_DRV); 61 + } 62 + 63 + static int da830_evm_usb_get_oci(unsigned port) 64 + { 65 + return !gpio_get_value(ON_BD_USB_OVC); 66 + } 67 + 68 + static irqreturn_t da830_evm_usb_ocic_irq(int, void *); 69 + 70 + static int da830_evm_usb_ocic_notify(da8xx_ocic_handler_t handler) 71 + { 72 + int irq = gpio_to_irq(ON_BD_USB_OVC); 73 + int error = 0; 74 + 75 + if (handler != NULL) { 76 + da830_evm_usb_ocic_handler = handler; 77 + 78 + error = request_irq(irq, da830_evm_usb_ocic_irq, IRQF_DISABLED | 79 + IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, 80 + "OHCI over-current indicator", NULL); 81 + if (error) 82 + printk(KERN_ERR "%s: could not request IRQ to watch " 83 + "over-current indicator changes\n", __func__); 84 + } else 85 + free_irq(irq, NULL); 86 + 87 + return error; 88 + } 89 + 90 + static struct da8xx_ohci_root_hub da830_evm_usb11_pdata = { 91 + .set_power = da830_evm_usb_set_power, 92 + .get_power = da830_evm_usb_get_power, 93 + .get_oci = da830_evm_usb_get_oci, 94 + .ocic_notify = da830_evm_usb_ocic_notify, 95 + 96 + /* TPS2065 switch @ 5V */ 97 + .potpgt = (3 + 1) / 2, /* 3 ms max */ 98 + }; 99 + 100 + static irqreturn_t da830_evm_usb_ocic_irq(int irq, void *dev_id) 101 + { 102 + da830_evm_usb_ocic_handler(&da830_evm_usb11_pdata, 1); 103 + return IRQ_HANDLED; 104 + } 105 + 106 + static __init void da830_evm_usb_init(void) 107 + { 108 + u32 cfgchip2; 109 + int ret; 110 + 111 + /* 112 + * Set up USB clock/mode in the CFGCHIP2 register. 113 + * FYI: CFGCHIP2 is 0x0000ef00 initially. 114 + */ 115 + cfgchip2 = __raw_readl(DA8XX_SYSCFG_VIRT(DA8XX_CFGCHIP2_REG)); 116 + 117 + /* USB2.0 PHY reference clock is 24 MHz */ 118 + cfgchip2 &= ~CFGCHIP2_REFFREQ; 119 + cfgchip2 |= CFGCHIP2_REFFREQ_24MHZ; 120 + 121 + /* 122 + * Select internal reference clock for USB 2.0 PHY 123 + * and use it as a clock source for USB 1.1 PHY 124 + * (this is the default setting anyway). 125 + */ 126 + cfgchip2 &= ~CFGCHIP2_USB1PHYCLKMUX; 127 + cfgchip2 |= CFGCHIP2_USB2PHYCLKMUX; 128 + 129 + /* 130 + * We have to override VBUS/ID signals when MUSB is configured into the 131 + * host-only mode -- ID pin will float if no cable is connected, so the 132 + * controller won't be able to drive VBUS thinking that it's a B-device. 133 + * Otherwise, we want to use the OTG mode and enable VBUS comparators. 134 + */ 135 + cfgchip2 &= ~CFGCHIP2_OTGMODE; 136 + #ifdef CONFIG_USB_MUSB_HOST 137 + cfgchip2 |= CFGCHIP2_FORCE_HOST; 138 + #else 139 + cfgchip2 |= CFGCHIP2_SESENDEN | CFGCHIP2_VBDTCTEN; 140 + #endif 141 + 142 + __raw_writel(cfgchip2, DA8XX_SYSCFG_VIRT(DA8XX_CFGCHIP2_REG)); 143 + 144 + /* USB_REFCLKIN is not used. */ 145 + ret = davinci_cfg_reg(DA830_USB0_DRVVBUS); 146 + if (ret) 147 + pr_warning("%s: USB 2.0 PinMux setup failed: %d\n", 148 + __func__, ret); 149 + else { 150 + /* 151 + * TPS2065 switch @ 5V supplies 1 A (sustains 1.5 A), 152 + * with the power on to power good time of 3 ms. 153 + */ 154 + ret = da8xx_register_usb20(1000, 3); 155 + if (ret) 156 + pr_warning("%s: USB 2.0 registration failed: %d\n", 157 + __func__, ret); 46 158 } 47 - }; 48 159 49 - static struct davinci_i2c_platform_data da830_evm_i2c_0_pdata = { 50 - .bus_freq = 100, /* kHz */ 51 - .bus_delay = 0, /* usec */ 52 - }; 160 + ret = da8xx_pinmux_setup(da830_evm_usb11_pins); 161 + if (ret) { 162 + pr_warning("%s: USB 1.1 PinMux setup failed: %d\n", 163 + __func__, ret); 164 + return; 165 + } 166 + 167 + ret = gpio_request(ON_BD_USB_DRV, "ON_BD_USB_DRV"); 168 + if (ret) { 169 + printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port " 170 + "power control: %d\n", __func__, ret); 171 + return; 172 + } 173 + gpio_direction_output(ON_BD_USB_DRV, 0); 174 + 175 + ret = gpio_request(ON_BD_USB_OVC, "ON_BD_USB_OVC"); 176 + if (ret) { 177 + printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port " 178 + "over-current indicator: %d\n", __func__, ret); 179 + return; 180 + } 181 + gpio_direction_input(ON_BD_USB_OVC); 182 + 183 + ret = da8xx_register_usb11(&da830_evm_usb11_pdata); 184 + if (ret) 185 + pr_warning("%s: USB 1.1 registration failed: %d\n", 186 + __func__, ret); 187 + } 53 188 54 189 static struct davinci_uart_config da830_evm_uart_config __initdata = { 55 190 .enabled_uarts = 0x7, 191 + }; 192 + 193 + static const short da830_evm_mcasp1_pins[] = { 194 + DA830_AHCLKX1, DA830_ACLKX1, DA830_AFSX1, DA830_AHCLKR1, DA830_AFSR1, 195 + DA830_AMUTE1, DA830_AXR1_0, DA830_AXR1_1, DA830_AXR1_2, DA830_AXR1_5, 196 + DA830_ACLKR1, DA830_AXR1_6, DA830_AXR1_7, DA830_AXR1_8, DA830_AXR1_10, 197 + DA830_AXR1_11, 198 + -1 56 199 }; 57 200 58 201 static u8 da830_iis_serializer_direction[] = { ··· 217 74 .rxnumevt = 1, 218 75 }; 219 76 77 + /* 78 + * GPIO2[1] is used as MMC_SD_WP and GPIO2[2] as MMC_SD_INS. 79 + */ 80 + static const short da830_evm_mmc_sd_pins[] = { 81 + DA830_MMCSD_DAT_0, DA830_MMCSD_DAT_1, DA830_MMCSD_DAT_2, 82 + DA830_MMCSD_DAT_3, DA830_MMCSD_DAT_4, DA830_MMCSD_DAT_5, 83 + DA830_MMCSD_DAT_6, DA830_MMCSD_DAT_7, DA830_MMCSD_CLK, 84 + DA830_MMCSD_CMD, DA830_GPIO2_1, DA830_GPIO2_2, 85 + -1 86 + }; 87 + 88 + #define DA830_MMCSD_WP_PIN GPIO_TO_PIN(2, 1) 89 + 90 + static int da830_evm_mmc_get_ro(int index) 91 + { 92 + return gpio_get_value(DA830_MMCSD_WP_PIN); 93 + } 94 + 95 + static struct davinci_mmc_config da830_evm_mmc_config = { 96 + .get_ro = da830_evm_mmc_get_ro, 97 + .wires = 4, 98 + .max_freq = 50000000, 99 + .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, 100 + .version = MMC_CTLR_VERSION_2, 101 + }; 102 + 103 + static inline void da830_evm_init_mmc(void) 104 + { 105 + int ret; 106 + 107 + ret = da8xx_pinmux_setup(da830_evm_mmc_sd_pins); 108 + if (ret) { 109 + pr_warning("da830_evm_init: mmc/sd mux setup failed: %d\n", 110 + ret); 111 + return; 112 + } 113 + 114 + ret = gpio_request(DA830_MMCSD_WP_PIN, "MMC WP"); 115 + if (ret) { 116 + pr_warning("da830_evm_init: can not open GPIO %d\n", 117 + DA830_MMCSD_WP_PIN); 118 + return; 119 + } 120 + gpio_direction_input(DA830_MMCSD_WP_PIN); 121 + 122 + ret = da8xx_register_mmcsd0(&da830_evm_mmc_config); 123 + if (ret) { 124 + pr_warning("da830_evm_init: mmc/sd registration failed: %d\n", 125 + ret); 126 + gpio_free(DA830_MMCSD_WP_PIN); 127 + } 128 + } 129 + 130 + /* 131 + * UI board NAND/NOR flashes only use 8-bit data bus. 132 + */ 133 + static const short da830_evm_emif25_pins[] = { 134 + DA830_EMA_D_0, DA830_EMA_D_1, DA830_EMA_D_2, DA830_EMA_D_3, 135 + DA830_EMA_D_4, DA830_EMA_D_5, DA830_EMA_D_6, DA830_EMA_D_7, 136 + DA830_EMA_A_0, DA830_EMA_A_1, DA830_EMA_A_2, DA830_EMA_A_3, 137 + DA830_EMA_A_4, DA830_EMA_A_5, DA830_EMA_A_6, DA830_EMA_A_7, 138 + DA830_EMA_A_8, DA830_EMA_A_9, DA830_EMA_A_10, DA830_EMA_A_11, 139 + DA830_EMA_A_12, DA830_EMA_BA_0, DA830_EMA_BA_1, DA830_NEMA_WE, 140 + DA830_NEMA_CS_2, DA830_NEMA_CS_3, DA830_NEMA_OE, DA830_EMA_WAIT_0, 141 + -1 142 + }; 143 + 144 + #if defined(CONFIG_MMC_DAVINCI) || defined(CONFIG_MMC_DAVINCI_MODULE) 145 + #define HAS_MMC 1 146 + #else 147 + #define HAS_MMC 0 148 + #endif 149 + 150 + #ifdef CONFIG_DA830_UI_NAND 151 + static struct mtd_partition da830_evm_nand_partitions[] = { 152 + /* bootloader (U-Boot, etc) in first sector */ 153 + [0] = { 154 + .name = "bootloader", 155 + .offset = 0, 156 + .size = SZ_128K, 157 + .mask_flags = MTD_WRITEABLE, /* force read-only */ 158 + }, 159 + /* bootloader params in the next sector */ 160 + [1] = { 161 + .name = "params", 162 + .offset = MTDPART_OFS_APPEND, 163 + .size = SZ_128K, 164 + .mask_flags = MTD_WRITEABLE, /* force read-only */ 165 + }, 166 + /* kernel */ 167 + [2] = { 168 + .name = "kernel", 169 + .offset = MTDPART_OFS_APPEND, 170 + .size = SZ_2M, 171 + .mask_flags = 0, 172 + }, 173 + /* file system */ 174 + [3] = { 175 + .name = "filesystem", 176 + .offset = MTDPART_OFS_APPEND, 177 + .size = MTDPART_SIZ_FULL, 178 + .mask_flags = 0, 179 + } 180 + }; 181 + 182 + /* flash bbt decriptors */ 183 + static uint8_t da830_evm_nand_bbt_pattern[] = { 'B', 'b', 't', '0' }; 184 + static uint8_t da830_evm_nand_mirror_pattern[] = { '1', 't', 'b', 'B' }; 185 + 186 + static struct nand_bbt_descr da830_evm_nand_bbt_main_descr = { 187 + .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | 188 + NAND_BBT_WRITE | NAND_BBT_2BIT | 189 + NAND_BBT_VERSION | NAND_BBT_PERCHIP, 190 + .offs = 2, 191 + .len = 4, 192 + .veroffs = 16, 193 + .maxblocks = 4, 194 + .pattern = da830_evm_nand_bbt_pattern 195 + }; 196 + 197 + static struct nand_bbt_descr da830_evm_nand_bbt_mirror_descr = { 198 + .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | 199 + NAND_BBT_WRITE | NAND_BBT_2BIT | 200 + NAND_BBT_VERSION | NAND_BBT_PERCHIP, 201 + .offs = 2, 202 + .len = 4, 203 + .veroffs = 16, 204 + .maxblocks = 4, 205 + .pattern = da830_evm_nand_mirror_pattern 206 + }; 207 + 208 + static struct davinci_nand_pdata da830_evm_nand_pdata = { 209 + .parts = da830_evm_nand_partitions, 210 + .nr_parts = ARRAY_SIZE(da830_evm_nand_partitions), 211 + .ecc_mode = NAND_ECC_HW, 212 + .ecc_bits = 4, 213 + .options = NAND_USE_FLASH_BBT, 214 + .bbt_td = &da830_evm_nand_bbt_main_descr, 215 + .bbt_md = &da830_evm_nand_bbt_mirror_descr, 216 + }; 217 + 218 + static struct resource da830_evm_nand_resources[] = { 219 + [0] = { /* First memory resource is NAND I/O window */ 220 + .start = DA830_EMIF25_ASYNC_DATA_CE3_BASE, 221 + .end = DA830_EMIF25_ASYNC_DATA_CE3_BASE + PAGE_SIZE - 1, 222 + .flags = IORESOURCE_MEM, 223 + }, 224 + [1] = { /* Second memory resource is AEMIF control registers */ 225 + .start = DA830_EMIF25_CONTROL_BASE, 226 + .end = DA830_EMIF25_CONTROL_BASE + SZ_32K - 1, 227 + .flags = IORESOURCE_MEM, 228 + }, 229 + }; 230 + 231 + static struct platform_device da830_evm_nand_device = { 232 + .name = "davinci_nand", 233 + .id = 1, 234 + .dev = { 235 + .platform_data = &da830_evm_nand_pdata, 236 + }, 237 + .num_resources = ARRAY_SIZE(da830_evm_nand_resources), 238 + .resource = da830_evm_nand_resources, 239 + }; 240 + 241 + static inline void da830_evm_init_nand(int mux_mode) 242 + { 243 + int ret; 244 + 245 + if (HAS_MMC) { 246 + pr_warning("WARNING: both MMC/SD and NAND are " 247 + "enabled, but they share AEMIF pins.\n" 248 + "\tDisable MMC/SD for NAND support.\n"); 249 + return; 250 + } 251 + 252 + ret = da8xx_pinmux_setup(da830_evm_emif25_pins); 253 + if (ret) 254 + pr_warning("da830_evm_init: emif25 mux setup failed: %d\n", 255 + ret); 256 + 257 + ret = platform_device_register(&da830_evm_nand_device); 258 + if (ret) 259 + pr_warning("da830_evm_init: NAND device not registered.\n"); 260 + 261 + gpio_direction_output(mux_mode, 1); 262 + } 263 + #else 264 + static inline void da830_evm_init_nand(int mux_mode) { } 265 + #endif 266 + 267 + #ifdef CONFIG_DA830_UI_LCD 268 + static inline void da830_evm_init_lcdc(int mux_mode) 269 + { 270 + int ret; 271 + 272 + ret = da8xx_pinmux_setup(da830_lcdcntl_pins); 273 + if (ret) 274 + pr_warning("da830_evm_init: lcdcntl mux setup failed: %d\n", 275 + ret); 276 + 277 + ret = da8xx_register_lcdc(&sharp_lcd035q3dg01_pdata); 278 + if (ret) 279 + pr_warning("da830_evm_init: lcd setup failed: %d\n", ret); 280 + 281 + gpio_direction_output(mux_mode, 0); 282 + } 283 + #else 284 + static inline void da830_evm_init_lcdc(int mux_mode) { } 285 + #endif 286 + 287 + static struct at24_platform_data da830_evm_i2c_eeprom_info = { 288 + .byte_len = SZ_256K / 8, 289 + .page_size = 64, 290 + .flags = AT24_FLAG_ADDR16, 291 + .setup = davinci_get_mac_addr, 292 + .context = (void *)0x7f00, 293 + }; 294 + 295 + static int __init da830_evm_ui_expander_setup(struct i2c_client *client, 296 + int gpio, unsigned ngpio, void *context) 297 + { 298 + gpio_request(gpio + 6, "UI MUX_MODE"); 299 + 300 + /* Drive mux mode low to match the default without UI card */ 301 + gpio_direction_output(gpio + 6, 0); 302 + 303 + da830_evm_init_lcdc(gpio + 6); 304 + 305 + da830_evm_init_nand(gpio + 6); 306 + 307 + return 0; 308 + } 309 + 310 + static int da830_evm_ui_expander_teardown(struct i2c_client *client, int gpio, 311 + unsigned ngpio, void *context) 312 + { 313 + gpio_free(gpio + 6); 314 + return 0; 315 + } 316 + 317 + static struct pcf857x_platform_data __initdata da830_evm_ui_expander_info = { 318 + .gpio_base = DAVINCI_N_GPIO, 319 + .setup = da830_evm_ui_expander_setup, 320 + .teardown = da830_evm_ui_expander_teardown, 321 + }; 322 + 323 + static struct i2c_board_info __initdata da830_evm_i2c_devices[] = { 324 + { 325 + I2C_BOARD_INFO("24c256", 0x50), 326 + .platform_data = &da830_evm_i2c_eeprom_info, 327 + }, 328 + { 329 + I2C_BOARD_INFO("tlv320aic3x", 0x18), 330 + }, 331 + { 332 + I2C_BOARD_INFO("pcf8574", 0x3f), 333 + .platform_data = &da830_evm_ui_expander_info, 334 + }, 335 + }; 336 + 337 + static struct davinci_i2c_platform_data da830_evm_i2c_0_pdata = { 338 + .bus_freq = 100, /* kHz */ 339 + .bus_delay = 0, /* usec */ 340 + }; 341 + 220 342 static __init void da830_evm_init(void) 221 343 { 222 344 struct davinci_soc_info *soc_info = &davinci_soc_info; ··· 501 93 if (ret) 502 94 pr_warning("da830_evm_init: i2c0 registration failed: %d\n", 503 95 ret); 96 + 97 + da830_evm_usb_init(); 504 98 505 99 soc_info->emac_pdata->phy_mask = DA830_EVM_PHY_MASK; 506 100 soc_info->emac_pdata->mdio_max_freq = DA830_EVM_MDIO_FREQUENCY; ··· 527 117 i2c_register_board_info(1, da830_evm_i2c_devices, 528 118 ARRAY_SIZE(da830_evm_i2c_devices)); 529 119 530 - ret = da8xx_pinmux_setup(da830_mcasp1_pins); 120 + ret = da8xx_pinmux_setup(da830_evm_mcasp1_pins); 531 121 if (ret) 532 122 pr_warning("da830_evm_init: mcasp1 mux setup failed: %d\n", 533 123 ret); 534 124 535 - da8xx_init_mcasp(1, &da830_evm_snd_data); 125 + da8xx_register_mcasp(1, &da830_evm_snd_data); 126 + 127 + da830_evm_init_mmc(); 128 + 129 + ret = da8xx_register_rtc(); 130 + if (ret) 131 + pr_warning("da830_evm_init: rtc setup failed: %d\n", ret); 536 132 } 537 133 538 134 #ifdef CONFIG_SERIAL_8250_CONSOLE ··· 562 146 da830_init(); 563 147 } 564 148 565 - MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP L137 EVM") 149 + MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137 EVM") 566 150 .phys_io = IO_PHYS, 567 151 .io_pg_offst = (__IO_ADDRESS(IO_PHYS) >> 18) & 0xfffc, 568 152 .boot_params = (DA8XX_DDR_BASE + 0x100),
+379 -68
arch/arm/mach-davinci/board-da850-evm.c
··· 12 12 * or implied. 13 13 */ 14 14 #include <linux/kernel.h> 15 - #include <linux/module.h> 16 15 #include <linux/init.h> 17 16 #include <linux/console.h> 18 17 #include <linux/i2c.h> 19 18 #include <linux/i2c/at24.h> 19 + #include <linux/i2c/pca953x.h> 20 20 #include <linux/gpio.h> 21 21 #include <linux/platform_device.h> 22 22 #include <linux/mtd/mtd.h> 23 23 #include <linux/mtd/nand.h> 24 24 #include <linux/mtd/partitions.h> 25 25 #include <linux/mtd/physmap.h> 26 + #include <linux/regulator/machine.h> 26 27 27 28 #include <asm/mach-types.h> 28 29 #include <asm/mach/arch.h> 29 30 30 - #include <mach/common.h> 31 - #include <mach/irqs.h> 32 31 #include <mach/cp_intc.h> 33 32 #include <mach/da8xx.h> 34 33 #include <mach/nand.h> 34 + #include <mach/mux.h> 35 35 36 36 #define DA850_EVM_PHY_MASK 0x1 37 37 #define DA850_EVM_MDIO_FREQUENCY 2200000 /* PHY bus frequency */ 38 38 39 + #define DA850_LCD_PWR_PIN GPIO_TO_PIN(2, 8) 39 40 #define DA850_LCD_BL_PIN GPIO_TO_PIN(2, 15) 40 - #define DA850_LCD_PWR_PIN GPIO_TO_PIN(8, 10) 41 41 42 42 #define DA850_MMCSD_CD_PIN GPIO_TO_PIN(4, 0) 43 43 #define DA850_MMCSD_WP_PIN GPIO_TO_PIN(4, 1) 44 + 45 + #define DA850_MII_MDIO_CLKEN_PIN GPIO_TO_PIN(2, 6) 44 46 45 47 static struct mtd_partition da850_evm_norflash_partition[] = { 46 48 { ··· 145 143 .resource = da850_evm_nandflash_resource, 146 144 }; 147 145 146 + static struct platform_device *da850_evm_devices[] __initdata = { 147 + &da850_evm_nandflash_device, 148 + &da850_evm_norflash_device, 149 + }; 150 + 151 + #define DA8XX_AEMIF_CE2CFG_OFFSET 0x10 152 + #define DA8XX_AEMIF_ASIZE_16BIT 0x1 153 + 154 + static void __init da850_evm_init_nor(void) 155 + { 156 + void __iomem *aemif_addr; 157 + 158 + aemif_addr = ioremap(DA8XX_AEMIF_CTL_BASE, SZ_32K); 159 + 160 + /* Configure data bus width of CS2 to 16 bit */ 161 + writel(readl(aemif_addr + DA8XX_AEMIF_CE2CFG_OFFSET) | 162 + DA8XX_AEMIF_ASIZE_16BIT, 163 + aemif_addr + DA8XX_AEMIF_CE2CFG_OFFSET); 164 + 165 + iounmap(aemif_addr); 166 + } 167 + 168 + static u32 ui_card_detected; 169 + 170 + #if defined(CONFIG_MMC_DAVINCI) || \ 171 + defined(CONFIG_MMC_DAVINCI_MODULE) 172 + #define HAS_MMC 1 173 + #else 174 + #define HAS_MMC 0 175 + #endif 176 + 177 + static __init void da850_evm_setup_nor_nand(void) 178 + { 179 + int ret = 0; 180 + 181 + if (ui_card_detected & !HAS_MMC) { 182 + ret = da8xx_pinmux_setup(da850_nand_pins); 183 + if (ret) 184 + pr_warning("da850_evm_init: nand mux setup failed: " 185 + "%d\n", ret); 186 + 187 + ret = da8xx_pinmux_setup(da850_nor_pins); 188 + if (ret) 189 + pr_warning("da850_evm_init: nor mux setup failed: %d\n", 190 + ret); 191 + 192 + da850_evm_init_nor(); 193 + 194 + platform_add_devices(da850_evm_devices, 195 + ARRAY_SIZE(da850_evm_devices)); 196 + } 197 + } 198 + 199 + #ifdef CONFIG_DA850_UI_RMII 200 + static inline void da850_evm_setup_emac_rmii(int rmii_sel) 201 + { 202 + struct davinci_soc_info *soc_info = &davinci_soc_info; 203 + 204 + soc_info->emac_pdata->rmii_en = 1; 205 + gpio_set_value(rmii_sel, 0); 206 + } 207 + #else 208 + static inline void da850_evm_setup_emac_rmii(int rmii_sel) { } 209 + #endif 210 + 211 + static int da850_evm_ui_expander_setup(struct i2c_client *client, unsigned gpio, 212 + unsigned ngpio, void *c) 213 + { 214 + int sel_a, sel_b, sel_c, ret; 215 + 216 + sel_a = gpio + 7; 217 + sel_b = gpio + 6; 218 + sel_c = gpio + 5; 219 + 220 + ret = gpio_request(sel_a, "sel_a"); 221 + if (ret) { 222 + pr_warning("Cannot open UI expander pin %d\n", sel_a); 223 + goto exp_setup_sela_fail; 224 + } 225 + 226 + ret = gpio_request(sel_b, "sel_b"); 227 + if (ret) { 228 + pr_warning("Cannot open UI expander pin %d\n", sel_b); 229 + goto exp_setup_selb_fail; 230 + } 231 + 232 + ret = gpio_request(sel_c, "sel_c"); 233 + if (ret) { 234 + pr_warning("Cannot open UI expander pin %d\n", sel_c); 235 + goto exp_setup_selc_fail; 236 + } 237 + 238 + /* deselect all functionalities */ 239 + gpio_direction_output(sel_a, 1); 240 + gpio_direction_output(sel_b, 1); 241 + gpio_direction_output(sel_c, 1); 242 + 243 + ui_card_detected = 1; 244 + pr_info("DA850/OMAP-L138 EVM UI card detected\n"); 245 + 246 + da850_evm_setup_nor_nand(); 247 + 248 + da850_evm_setup_emac_rmii(sel_a); 249 + 250 + return 0; 251 + 252 + exp_setup_selc_fail: 253 + gpio_free(sel_b); 254 + exp_setup_selb_fail: 255 + gpio_free(sel_a); 256 + exp_setup_sela_fail: 257 + return ret; 258 + } 259 + 260 + static int da850_evm_ui_expander_teardown(struct i2c_client *client, 261 + unsigned gpio, unsigned ngpio, void *c) 262 + { 263 + /* deselect all functionalities */ 264 + gpio_set_value(gpio + 5, 1); 265 + gpio_set_value(gpio + 6, 1); 266 + gpio_set_value(gpio + 7, 1); 267 + 268 + gpio_free(gpio + 5); 269 + gpio_free(gpio + 6); 270 + gpio_free(gpio + 7); 271 + 272 + return 0; 273 + } 274 + 275 + static struct pca953x_platform_data da850_evm_ui_expander_info = { 276 + .gpio_base = DAVINCI_N_GPIO, 277 + .setup = da850_evm_ui_expander_setup, 278 + .teardown = da850_evm_ui_expander_teardown, 279 + }; 280 + 148 281 static struct i2c_board_info __initdata da850_evm_i2c_devices[] = { 149 282 { 150 283 I2C_BOARD_INFO("tlv320aic3x", 0x18), 151 - } 284 + }, 285 + { 286 + I2C_BOARD_INFO("tca6416", 0x20), 287 + .platform_data = &da850_evm_ui_expander_info, 288 + }, 152 289 }; 153 290 154 291 static struct davinci_i2c_platform_data da850_evm_i2c_0_pdata = { ··· 297 156 298 157 static struct davinci_uart_config da850_evm_uart_config __initdata = { 299 158 .enabled_uarts = 0x7, 300 - }; 301 - 302 - static struct platform_device *da850_evm_devices[] __initdata = { 303 - &da850_evm_nandflash_device, 304 - &da850_evm_norflash_device, 305 159 }; 306 160 307 161 /* davinci da850 evm audio machine driver */ ··· 334 198 .get_ro = da850_evm_mmc_get_ro, 335 199 .get_cd = da850_evm_mmc_get_cd, 336 200 .wires = 4, 201 + .max_freq = 50000000, 202 + .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, 337 203 .version = MMC_CTLR_VERSION_2, 338 204 }; 339 205 ··· 371 233 return 0; 372 234 } 373 235 374 - #define DA8XX_AEMIF_CE2CFG_OFFSET 0x10 375 - #define DA8XX_AEMIF_ASIZE_16BIT 0x1 236 + /* TPS65070 voltage regulator support */ 376 237 377 - static void __init da850_evm_init_nor(void) 238 + /* 3.3V */ 239 + struct regulator_consumer_supply tps65070_dcdc1_consumers[] = { 240 + { 241 + .supply = "usb0_vdda33", 242 + }, 243 + { 244 + .supply = "usb1_vdda33", 245 + }, 246 + }; 247 + 248 + /* 3.3V or 1.8V */ 249 + struct regulator_consumer_supply tps65070_dcdc2_consumers[] = { 250 + { 251 + .supply = "dvdd3318_a", 252 + }, 253 + { 254 + .supply = "dvdd3318_b", 255 + }, 256 + { 257 + .supply = "dvdd3318_c", 258 + }, 259 + }; 260 + 261 + /* 1.2V */ 262 + struct regulator_consumer_supply tps65070_dcdc3_consumers[] = { 263 + { 264 + .supply = "cvdd", 265 + }, 266 + }; 267 + 268 + /* 1.8V LDO */ 269 + struct regulator_consumer_supply tps65070_ldo1_consumers[] = { 270 + { 271 + .supply = "sata_vddr", 272 + }, 273 + { 274 + .supply = "usb0_vdda18", 275 + }, 276 + { 277 + .supply = "usb1_vdda18", 278 + }, 279 + { 280 + .supply = "ddr_dvdd18", 281 + }, 282 + }; 283 + 284 + /* 1.2V LDO */ 285 + struct regulator_consumer_supply tps65070_ldo2_consumers[] = { 286 + { 287 + .supply = "sata_vdd", 288 + }, 289 + { 290 + .supply = "pll0_vdda", 291 + }, 292 + { 293 + .supply = "pll1_vdda", 294 + }, 295 + { 296 + .supply = "usbs_cvdd", 297 + }, 298 + { 299 + .supply = "vddarnwa1", 300 + }, 301 + }; 302 + 303 + struct regulator_init_data tps65070_regulator_data[] = { 304 + /* dcdc1 */ 305 + { 306 + .constraints = { 307 + .min_uV = 3150000, 308 + .max_uV = 3450000, 309 + .valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE | 310 + REGULATOR_CHANGE_STATUS), 311 + .boot_on = 1, 312 + }, 313 + .num_consumer_supplies = ARRAY_SIZE(tps65070_dcdc1_consumers), 314 + .consumer_supplies = tps65070_dcdc1_consumers, 315 + }, 316 + 317 + /* dcdc2 */ 318 + { 319 + .constraints = { 320 + .min_uV = 1710000, 321 + .max_uV = 3450000, 322 + .valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE | 323 + REGULATOR_CHANGE_STATUS), 324 + .boot_on = 1, 325 + }, 326 + .num_consumer_supplies = ARRAY_SIZE(tps65070_dcdc2_consumers), 327 + .consumer_supplies = tps65070_dcdc2_consumers, 328 + }, 329 + 330 + /* dcdc3 */ 331 + { 332 + .constraints = { 333 + .min_uV = 950000, 334 + .max_uV = 1320000, 335 + .valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE | 336 + REGULATOR_CHANGE_STATUS), 337 + .boot_on = 1, 338 + }, 339 + .num_consumer_supplies = ARRAY_SIZE(tps65070_dcdc3_consumers), 340 + .consumer_supplies = tps65070_dcdc3_consumers, 341 + }, 342 + 343 + /* ldo1 */ 344 + { 345 + .constraints = { 346 + .min_uV = 1710000, 347 + .max_uV = 1890000, 348 + .valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE | 349 + REGULATOR_CHANGE_STATUS), 350 + .boot_on = 1, 351 + }, 352 + .num_consumer_supplies = ARRAY_SIZE(tps65070_ldo1_consumers), 353 + .consumer_supplies = tps65070_ldo1_consumers, 354 + }, 355 + 356 + /* ldo2 */ 357 + { 358 + .constraints = { 359 + .min_uV = 1140000, 360 + .max_uV = 1320000, 361 + .valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE | 362 + REGULATOR_CHANGE_STATUS), 363 + .boot_on = 1, 364 + }, 365 + .num_consumer_supplies = ARRAY_SIZE(tps65070_ldo2_consumers), 366 + .consumer_supplies = tps65070_ldo2_consumers, 367 + }, 368 + }; 369 + 370 + static struct i2c_board_info __initdata da850evm_tps65070_info[] = { 371 + { 372 + I2C_BOARD_INFO("tps6507x", 0x48), 373 + .platform_data = &tps65070_regulator_data[0], 374 + }, 375 + }; 376 + 377 + static int __init pmic_tps65070_init(void) 378 378 { 379 - void __iomem *aemif_addr; 380 - 381 - aemif_addr = ioremap(DA8XX_AEMIF_CTL_BASE, SZ_32K); 382 - 383 - /* Configure data bus width of CS2 to 16 bit */ 384 - writel(readl(aemif_addr + DA8XX_AEMIF_CE2CFG_OFFSET) | 385 - DA8XX_AEMIF_ASIZE_16BIT, 386 - aemif_addr + DA8XX_AEMIF_CE2CFG_OFFSET); 387 - 388 - iounmap(aemif_addr); 379 + return i2c_register_board_info(1, da850evm_tps65070_info, 380 + ARRAY_SIZE(da850evm_tps65070_info)); 389 381 } 390 382 391 - #if defined(CONFIG_MTD_PHYSMAP) || \ 392 - defined(CONFIG_MTD_PHYSMAP_MODULE) 393 - #define HAS_NOR 1 394 - #else 395 - #define HAS_NOR 0 396 - #endif 383 + static const short da850_evm_lcdc_pins[] = { 384 + DA850_GPIO2_8, DA850_GPIO2_15, 385 + -1 386 + }; 397 387 398 - #if defined(CONFIG_MMC_DAVINCI) || \ 399 - defined(CONFIG_MMC_DAVINCI_MODULE) 400 - #define HAS_MMC 1 401 - #else 402 - #define HAS_MMC 0 403 - #endif 388 + static int __init da850_evm_config_emac(void) 389 + { 390 + void __iomem *cfg_chip3_base; 391 + int ret; 392 + u32 val; 393 + struct davinci_soc_info *soc_info = &davinci_soc_info; 394 + u8 rmii_en = soc_info->emac_pdata->rmii_en; 395 + 396 + if (!machine_is_davinci_da850_evm()) 397 + return 0; 398 + 399 + cfg_chip3_base = DA8XX_SYSCFG_VIRT(DA8XX_CFGCHIP3_REG); 400 + 401 + val = __raw_readl(cfg_chip3_base); 402 + 403 + if (rmii_en) { 404 + val |= BIT(8); 405 + ret = da8xx_pinmux_setup(da850_rmii_pins); 406 + pr_info("EMAC: RMII PHY configured, MII PHY will not be" 407 + " functional\n"); 408 + } else { 409 + val &= ~BIT(8); 410 + ret = da8xx_pinmux_setup(da850_cpgmac_pins); 411 + pr_info("EMAC: MII PHY configured, RMII PHY will not be" 412 + " functional\n"); 413 + } 414 + 415 + if (ret) 416 + pr_warning("da850_evm_init: cpgmac/rmii mux setup failed: %d\n", 417 + ret); 418 + 419 + /* configure the CFGCHIP3 register for RMII or MII */ 420 + __raw_writel(val, cfg_chip3_base); 421 + 422 + ret = davinci_cfg_reg(DA850_GPIO2_6); 423 + if (ret) 424 + pr_warning("da850_evm_init:GPIO(2,6) mux setup " 425 + "failed\n"); 426 + 427 + ret = gpio_request(DA850_MII_MDIO_CLKEN_PIN, "mdio_clk_en"); 428 + if (ret) { 429 + pr_warning("Cannot open GPIO %d\n", 430 + DA850_MII_MDIO_CLKEN_PIN); 431 + return ret; 432 + } 433 + 434 + /* Enable/Disable MII MDIO clock */ 435 + gpio_direction_output(DA850_MII_MDIO_CLKEN_PIN, rmii_en); 436 + 437 + soc_info->emac_pdata->phy_mask = DA850_EVM_PHY_MASK; 438 + soc_info->emac_pdata->mdio_max_freq = DA850_EVM_MDIO_FREQUENCY; 439 + 440 + ret = da8xx_register_emac(); 441 + if (ret) 442 + pr_warning("da850_evm_init: emac registration failed: %d\n", 443 + ret); 444 + 445 + return 0; 446 + } 447 + device_initcall(da850_evm_config_emac); 404 448 405 449 static __init void da850_evm_init(void) 406 450 { 407 - struct davinci_soc_info *soc_info = &davinci_soc_info; 408 451 int ret; 409 452 410 - ret = da8xx_pinmux_setup(da850_nand_pins); 453 + ret = pmic_tps65070_init(); 411 454 if (ret) 412 - pr_warning("da850_evm_init: nand mux setup failed: %d\n", 455 + pr_warning("da850_evm_init: TPS65070 PMIC init failed: %d\n", 413 456 ret); 414 - 415 - ret = da8xx_pinmux_setup(da850_nor_pins); 416 - if (ret) 417 - pr_warning("da850_evm_init: nor mux setup failed: %d\n", 418 - ret); 419 - 420 - da850_evm_init_nor(); 421 - 422 - platform_add_devices(da850_evm_devices, 423 - ARRAY_SIZE(da850_evm_devices)); 424 457 425 458 ret = da8xx_register_edma(); 426 459 if (ret) ··· 608 299 pr_warning("da850_evm_init: i2c0 registration failed: %d\n", 609 300 ret); 610 301 611 - soc_info->emac_pdata->phy_mask = DA850_EVM_PHY_MASK; 612 - soc_info->emac_pdata->mdio_max_freq = DA850_EVM_MDIO_FREQUENCY; 613 - soc_info->emac_pdata->rmii_en = 0; 614 - 615 - ret = da8xx_pinmux_setup(da850_cpgmac_pins); 616 - if (ret) 617 - pr_warning("da850_evm_init: cpgmac mux setup failed: %d\n", 618 - ret); 619 - 620 - ret = da8xx_register_emac(); 621 - if (ret) 622 - pr_warning("da850_evm_init: emac registration failed: %d\n", 623 - ret); 624 302 625 303 ret = da8xx_register_watchdog(); 626 304 if (ret) ··· 615 319 ret); 616 320 617 321 if (HAS_MMC) { 618 - if (HAS_NOR) 619 - pr_warning("WARNING: both NOR Flash and MMC/SD are " 620 - "enabled, but they share AEMIF pins.\n" 621 - "\tDisable one of them.\n"); 622 - 623 322 ret = da8xx_pinmux_setup(da850_mmcsd0_pins); 624 323 if (ret) 625 324 pr_warning("da850_evm_init: mmcsd0 mux setup failed:" ··· 656 365 pr_warning("da850_evm_init: mcasp mux setup failed: %d\n", 657 366 ret); 658 367 659 - da8xx_init_mcasp(0, &da850_evm_snd_data); 368 + da8xx_register_mcasp(0, &da850_evm_snd_data); 660 369 661 370 ret = da8xx_pinmux_setup(da850_lcdcntl_pins); 662 371 if (ret) 663 372 pr_warning("da850_evm_init: lcdcntl mux setup failed: %d\n", 664 373 ret); 665 374 375 + /* Handle board specific muxing for LCD here */ 376 + ret = da8xx_pinmux_setup(da850_evm_lcdc_pins); 377 + if (ret) 378 + pr_warning("da850_evm_init: evm specific lcd mux setup " 379 + "failed: %d\n", ret); 380 + 666 381 ret = da850_lcd_hw_init(); 667 382 if (ret) 668 383 pr_warning("da850_evm_init: lcd initialization failed: %d\n", 669 384 ret); 670 385 671 - ret = da8xx_register_lcdc(); 386 + ret = da8xx_register_lcdc(&sharp_lk043t1dg01_pdata); 672 387 if (ret) 673 388 pr_warning("da850_evm_init: lcdc registration failed: %d\n", 389 + ret); 390 + 391 + ret = da8xx_register_rtc(); 392 + if (ret) 393 + pr_warning("da850_evm_init: rtc setup failed: %d\n", ret); 394 + 395 + ret = da850_register_cpufreq(); 396 + if (ret) 397 + pr_warning("da850_evm_init: cpufreq registration failed: %d\n", 398 + ret); 399 + 400 + ret = da8xx_register_cpuidle(); 401 + if (ret) 402 + pr_warning("da850_evm_init: cpuidle registration failed: %d\n", 674 403 ret); 675 404 } 676 405
+5 -11
arch/arm/mach-davinci/board-dm355-evm.c
··· 9 9 * or implied. 10 10 */ 11 11 #include <linux/kernel.h> 12 - #include <linux/module.h> 13 12 #include <linux/init.h> 14 - #include <linux/dma-mapping.h> 13 + #include <linux/err.h> 15 14 #include <linux/platform_device.h> 16 15 #include <linux/mtd/mtd.h> 17 16 #include <linux/mtd/partitions.h> 18 17 #include <linux/mtd/nand.h> 19 18 #include <linux/i2c.h> 20 - #include <linux/io.h> 21 19 #include <linux/gpio.h> 22 20 #include <linux/clk.h> 23 21 #include <linux/videodev2.h> ··· 23 25 #include <linux/spi/spi.h> 24 26 #include <linux/spi/eeprom.h> 25 27 26 - #include <asm/setup.h> 27 28 #include <asm/mach-types.h> 28 29 #include <asm/mach/arch.h> 29 - #include <asm/mach/map.h> 30 - #include <asm/mach/flash.h> 31 30 32 - #include <mach/hardware.h> 33 31 #include <mach/dm355.h> 34 - #include <mach/psc.h> 35 - #include <mach/common.h> 36 32 #include <mach/i2c.h> 37 33 #include <mach/serial.h> 38 34 #include <mach/nand.h> 39 35 #include <mach/mmc.h> 36 + #include <mach/usb.h> 40 37 41 38 #define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e10000 42 39 #define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000 ··· 79 86 .mask_chipsel = BIT(14), 80 87 .parts = davinci_nand_partitions, 81 88 .nr_parts = ARRAY_SIZE(davinci_nand_partitions), 82 - .ecc_mode = NAND_ECC_HW_SYNDROME, 89 + .ecc_mode = NAND_ECC_HW, 83 90 .options = NAND_USE_FLASH_BBT, 91 + .ecc_bits = 4, 84 92 }; 85 93 86 94 static struct resource davinci_nand_resources[] = { ··· 338 344 gpio_request(2, "usb_id_toggle"); 339 345 gpio_direction_output(2, USB_ID_VALUE); 340 346 /* irlml6401 switches over 1A in under 8 msec */ 341 - setup_usb(500, 8); 347 + davinci_setup_usb(1000, 8); 342 348 343 349 davinci_setup_mmc(0, &dm355evm_mmc_config); 344 350 davinci_setup_mmc(1, &dm355evm_mmc_config);
+3 -10
arch/arm/mach-davinci/board-dm355-leopard.c
··· 8 8 * warranty of any kind, whether express or implied. 9 9 */ 10 10 #include <linux/kernel.h> 11 - #include <linux/module.h> 12 11 #include <linux/init.h> 13 - #include <linux/dma-mapping.h> 12 + #include <linux/err.h> 14 13 #include <linux/platform_device.h> 15 14 #include <linux/mtd/mtd.h> 16 15 #include <linux/mtd/partitions.h> 17 16 #include <linux/mtd/nand.h> 18 17 #include <linux/i2c.h> 19 - #include <linux/io.h> 20 18 #include <linux/gpio.h> 21 19 #include <linux/clk.h> 22 20 #include <linux/spi/spi.h> 23 21 #include <linux/spi/eeprom.h> 24 22 25 - #include <asm/setup.h> 26 23 #include <asm/mach-types.h> 27 24 #include <asm/mach/arch.h> 28 - #include <asm/mach/map.h> 29 - #include <asm/mach/flash.h> 30 25 31 - #include <mach/hardware.h> 32 26 #include <mach/dm355.h> 33 - #include <mach/psc.h> 34 - #include <mach/common.h> 35 27 #include <mach/i2c.h> 36 28 #include <mach/serial.h> 37 29 #include <mach/nand.h> 38 30 #include <mach/mmc.h> 31 + #include <mach/usb.h> 39 32 40 33 #define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e10000 41 34 #define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000 ··· 263 270 gpio_request(2, "usb_id_toggle"); 264 271 gpio_direction_output(2, USB_ID_VALUE); 265 272 /* irlml6401 switches over 1A in under 8 msec */ 266 - setup_usb(500, 8); 273 + davinci_setup_usb(1000, 8); 267 274 268 275 davinci_setup_mmc(0, &dm355leopard_mmc_config); 269 276 davinci_setup_mmc(1, &dm355leopard_mmc_config);
+50 -7
arch/arm/mach-davinci/board-dm365-evm.c
··· 13 13 * GNU General Public License for more details. 14 14 */ 15 15 #include <linux/kernel.h> 16 - #include <linux/module.h> 17 16 #include <linux/init.h> 18 - #include <linux/dma-mapping.h> 17 + #include <linux/err.h> 19 18 #include <linux/i2c.h> 20 19 #include <linux/io.h> 21 20 #include <linux/clk.h> ··· 23 24 #include <linux/mtd/mtd.h> 24 25 #include <linux/mtd/partitions.h> 25 26 #include <linux/mtd/nand.h> 26 - #include <asm/setup.h> 27 + #include <linux/input.h> 28 + 27 29 #include <asm/mach-types.h> 28 30 #include <asm/mach/arch.h> 29 - #include <asm/mach/map.h> 31 + 30 32 #include <mach/mux.h> 31 - #include <mach/hardware.h> 32 33 #include <mach/dm365.h> 33 - #include <mach/psc.h> 34 34 #include <mach/common.h> 35 35 #include <mach/i2c.h> 36 36 #include <mach/serial.h> 37 37 #include <mach/mmc.h> 38 38 #include <mach/nand.h> 39 - 39 + #include <mach/keyscan.h> 40 40 41 41 static inline int have_imager(void) 42 42 { ··· 142 144 .nr_parts = ARRAY_SIZE(davinci_nand_partitions), 143 145 .ecc_mode = NAND_ECC_HW, 144 146 .options = NAND_USE_FLASH_BBT, 147 + .ecc_bits = 4, 145 148 }; 146 149 147 150 static struct resource davinci_nand_resources[] = { ··· 175 176 .context = (void *)0x7f00, 176 177 }; 177 178 179 + static struct snd_platform_data dm365_evm_snd_data; 180 + 178 181 static struct i2c_board_info i2c_info[] = { 179 182 { 180 183 I2C_BOARD_INFO("24c256", 0x50), 181 184 .platform_data = &eeprom_info, 185 + }, 186 + { 187 + I2C_BOARD_INFO("tlv320aic3x", 0x18), 182 188 }, 183 189 }; 184 190 ··· 191 187 .bus_freq = 400 /* kHz */, 192 188 .bus_delay = 0 /* usec */, 193 189 }; 190 + 191 + #ifdef CONFIG_KEYBOARD_DAVINCI 192 + static unsigned short dm365evm_keymap[] = { 193 + KEY_KP2, 194 + KEY_LEFT, 195 + KEY_EXIT, 196 + KEY_DOWN, 197 + KEY_ENTER, 198 + KEY_UP, 199 + KEY_KP1, 200 + KEY_RIGHT, 201 + KEY_MENU, 202 + KEY_RECORD, 203 + KEY_REWIND, 204 + KEY_KPMINUS, 205 + KEY_STOP, 206 + KEY_FASTFORWARD, 207 + KEY_KPPLUS, 208 + KEY_PLAYPAUSE, 209 + 0 210 + }; 211 + 212 + static struct davinci_ks_platform_data dm365evm_ks_data = { 213 + .keymap = dm365evm_keymap, 214 + .keymapsize = ARRAY_SIZE(dm365evm_keymap), 215 + .rep = 1, 216 + /* Scan period = strobe + interval */ 217 + .strobe = 0x5, 218 + .interval = 0x2, 219 + .matrix_type = DAVINCI_KEYSCAN_MATRIX_4X4, 220 + }; 221 + #endif 194 222 195 223 static int cpld_mmc_get_cd(int module) 196 224 { ··· 508 472 509 473 /* maybe setup mmc1/etc ... _after_ mmc0 */ 510 474 evm_init_cpld(); 475 + 476 + dm365_init_asp(&dm365_evm_snd_data); 477 + dm365_init_rtc(); 478 + 479 + #ifdef CONFIG_KEYBOARD_DAVINCI 480 + dm365_init_ks(&dm365evm_ks_data); 481 + #endif 511 482 } 512 483 513 484 static __init void dm365_evm_irq_init(void)
+2 -13
arch/arm/mach-davinci/board-dm644x-evm.c
··· 9 9 * or implied. 10 10 */ 11 11 #include <linux/kernel.h> 12 - #include <linux/module.h> 13 12 #include <linux/init.h> 14 13 #include <linux/dma-mapping.h> 15 14 #include <linux/platform_device.h> 16 15 #include <linux/gpio.h> 17 - #include <linux/leds.h> 18 - #include <linux/memory.h> 19 - 20 16 #include <linux/i2c.h> 21 17 #include <linux/i2c/pcf857x.h> 22 18 #include <linux/i2c/at24.h> 23 - #include <linux/etherdevice.h> 24 19 #include <linux/mtd/mtd.h> 25 20 #include <linux/mtd/nand.h> 26 21 #include <linux/mtd/partitions.h> 27 22 #include <linux/mtd/physmap.h> 28 - #include <linux/io.h> 29 23 #include <linux/phy.h> 30 24 #include <linux/clk.h> 31 25 #include <linux/videodev2.h> 32 26 33 27 #include <media/tvp514x.h> 34 28 35 - #include <asm/setup.h> 36 29 #include <asm/mach-types.h> 37 - 38 30 #include <asm/mach/arch.h> 39 - #include <asm/mach/map.h> 40 - #include <asm/mach/flash.h> 41 31 42 32 #include <mach/dm644x.h> 43 33 #include <mach/common.h> 44 34 #include <mach/i2c.h> 45 35 #include <mach/serial.h> 46 36 #include <mach/mux.h> 47 - #include <mach/psc.h> 48 37 #include <mach/nand.h> 49 38 #include <mach/mmc.h> 50 - #include <mach/emac.h> 39 + #include <mach/usb.h> 51 40 52 41 #define DM644X_EVM_PHY_MASK (0x2) 53 42 #define DM644X_EVM_MDIO_FREQUENCY (2200000) /* PHY bus frequency */ ··· 466 477 /* irlml6401 switches over 1A, in under 8 msec; 467 478 * now it can be managed by nDRV_VBUS ... 468 479 */ 469 - setup_usb(500, 8); 480 + davinci_setup_usb(1000, 8); 470 481 471 482 return 0; 472 483 }
+70 -16
arch/arm/mach-davinci/board-dm646x-evm.c
··· 17 17 **************************************************************************/ 18 18 19 19 #include <linux/kernel.h> 20 - #include <linux/module.h> 21 20 #include <linux/init.h> 22 - #include <linux/fs.h> 23 - #include <linux/major.h> 24 - #include <linux/root_dev.h> 25 - #include <linux/dma-mapping.h> 26 - #include <linux/serial.h> 27 - #include <linux/serial_8250.h> 28 21 #include <linux/leds.h> 29 22 #include <linux/gpio.h> 30 - #include <linux/io.h> 31 23 #include <linux/platform_device.h> 32 24 #include <linux/i2c.h> 33 25 #include <linux/i2c/at24.h> 34 26 #include <linux/i2c/pcf857x.h> 35 - #include <linux/etherdevice.h> 36 27 37 28 #include <media/tvp514x.h> 38 29 39 - #include <asm/setup.h> 30 + #include <linux/mtd/mtd.h> 31 + #include <linux/mtd/nand.h> 32 + #include <linux/mtd/partitions.h> 33 + 40 34 #include <asm/mach-types.h> 41 35 #include <asm/mach/arch.h> 42 - #include <asm/mach/map.h> 43 - #include <asm/mach/flash.h> 44 36 45 37 #include <mach/dm646x.h> 46 38 #include <mach/common.h> 47 - #include <mach/psc.h> 48 39 #include <mach/serial.h> 49 40 #include <mach/i2c.h> 50 - #include <mach/mmc.h> 51 - #include <mach/emac.h> 41 + #include <mach/nand.h> 52 42 53 43 #if defined(CONFIG_BLK_DEV_PALMCHIP_BK3710) || \ 54 44 defined(CONFIG_BLK_DEV_PALMCHIP_BK3710_MODULE) ··· 46 56 #else 47 57 #define HAS_ATA 0 48 58 #endif 59 + 60 + #define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x20008000 61 + #define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x42000000 62 + 63 + #define NAND_BLOCK_SIZE SZ_128K 49 64 50 65 /* CPLD Register 0 bits to control ATA */ 51 66 #define DM646X_EVM_ATA_RST BIT(0) ··· 85 90 86 91 static struct davinci_uart_config uart_config __initdata = { 87 92 .enabled_uarts = (1 << 0), 93 + }; 94 + 95 + /* Note: We are setting first partition as 'bootloader' constituting UBL, U-Boot 96 + * and U-Boot environment this avoids dependency on any particular combination 97 + * of UBL, U-Boot or flashing tools etc. 98 + */ 99 + static struct mtd_partition davinci_nand_partitions[] = { 100 + { 101 + /* UBL, U-Boot with environment */ 102 + .name = "bootloader", 103 + .offset = MTDPART_OFS_APPEND, 104 + .size = 16 * NAND_BLOCK_SIZE, 105 + .mask_flags = MTD_WRITEABLE, /* force read-only */ 106 + }, { 107 + .name = "kernel", 108 + .offset = MTDPART_OFS_APPEND, 109 + .size = SZ_4M, 110 + .mask_flags = 0, 111 + }, { 112 + .name = "filesystem", 113 + .offset = MTDPART_OFS_APPEND, 114 + .size = MTDPART_SIZ_FULL, 115 + .mask_flags = 0, 116 + } 117 + }; 118 + 119 + static struct davinci_nand_pdata davinci_nand_data = { 120 + .mask_cle = 0x80000, 121 + .mask_ale = 0x40000, 122 + .parts = davinci_nand_partitions, 123 + .nr_parts = ARRAY_SIZE(davinci_nand_partitions), 124 + .ecc_mode = NAND_ECC_HW, 125 + .options = 0, 126 + }; 127 + 128 + static struct resource davinci_nand_resources[] = { 129 + { 130 + .start = DAVINCI_ASYNC_EMIF_DATA_CE0_BASE, 131 + .end = DAVINCI_ASYNC_EMIF_DATA_CE0_BASE + SZ_32M - 1, 132 + .flags = IORESOURCE_MEM, 133 + }, { 134 + .start = DAVINCI_ASYNC_EMIF_CONTROL_BASE, 135 + .end = DAVINCI_ASYNC_EMIF_CONTROL_BASE + SZ_4K - 1, 136 + .flags = IORESOURCE_MEM, 137 + }, 138 + }; 139 + 140 + static struct platform_device davinci_nand_device = { 141 + .name = "davinci_nand", 142 + .id = 0, 143 + 144 + .num_resources = ARRAY_SIZE(davinci_nand_resources), 145 + .resource = davinci_nand_resources, 146 + 147 + .dev = { 148 + .platform_data = &davinci_nand_data, 149 + }, 88 150 }; 89 151 90 152 /* CPLD Register 0 Client: used for I/O Control */ ··· 194 142 { .name = "DS4", .active_low = 1, }, 195 143 }; 196 144 197 - static __initconst struct gpio_led_platform_data evm_led_data = { 145 + static const struct gpio_led_platform_data evm_led_data = { 198 146 .num_leds = ARRAY_SIZE(evm_leds), 199 147 .leds = evm_leds, 200 148 }; ··· 698 646 davinci_serial_init(&uart_config); 699 647 dm646x_init_mcasp0(&dm646x_evm_snd_data[0]); 700 648 dm646x_init_mcasp1(&dm646x_evm_snd_data[1]); 649 + 650 + platform_device_register(&davinci_nand_device); 701 651 702 652 if (HAS_ATA) 703 653 dm646x_init_ide();
+323
arch/arm/mach-davinci/board-neuros-osd2.c
··· 1 + /* 2 + * Neuros Technologies OSD2 board support 3 + * 4 + * Modified from original 644X-EVM board support. 5 + * 2008 (c) Neuros Technology, LLC. 6 + * 2009 (c) Jorge Luis Zapata Muga <jorgeluis.zapata@gmail.com> 7 + * 2009 (c) Andrey A. Porodko <Andrey.Porodko@gmail.com> 8 + * 9 + * The Neuros OSD 2.0 is the hardware component of the Neuros Open 10 + * Internet Television Platform. Hardware is very close to TI 11 + * DM644X-EVM board. It has: 12 + * DM6446M02 module with 256MB NAND, 256MB RAM, TLV320AIC32 AIC, 13 + * USB, Ethernet, SD/MMC, UART, THS8200, TVP7000 for video. 14 + * Additionaly realtime clock, IR remote control receiver, 15 + * IR Blaster based on MSP430 (firmware although is different 16 + * from used in DM644X-EVM), internal ATA-6 3.5” HDD drive 17 + * with PATA interface, two muxed red-green leds. 18 + * 19 + * For more information please refer to 20 + * http://wiki.neurostechnology.com/index.php/OSD_2.0_HD 21 + * 22 + * This file is licensed under the terms of the GNU General Public 23 + * License version 2. This program is licensed "as is" without any 24 + * warranty of any kind, whether express or implied. 25 + */ 26 + #include <linux/platform_device.h> 27 + #include <linux/gpio.h> 28 + #include <linux/mtd/partitions.h> 29 + 30 + #include <asm/mach-types.h> 31 + #include <asm/mach/arch.h> 32 + 33 + #include <mach/dm644x.h> 34 + #include <mach/i2c.h> 35 + #include <mach/serial.h> 36 + #include <mach/mux.h> 37 + #include <mach/nand.h> 38 + #include <mach/mmc.h> 39 + #include <mach/usb.h> 40 + 41 + #define NEUROS_OSD2_PHY_MASK 0x2 42 + #define NEUROS_OSD2_MDIO_FREQUENCY 2200000 /* PHY bus frequency */ 43 + 44 + #define DAVINCI_CFC_ATA_BASE 0x01C66000 45 + 46 + #define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e00000 47 + #define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000 48 + 49 + #define LXT971_PHY_ID 0x001378e2 50 + #define LXT971_PHY_MASK 0xfffffff0 51 + 52 + #define NTOSD2_AUDIOSOC_I2C_ADDR 0x18 53 + #define NTOSD2_MSP430_I2C_ADDR 0x59 54 + #define NTOSD2_MSP430_IRQ 2 55 + 56 + /* Neuros OSD2 has a Samsung 256 MByte NAND flash (Dev ID of 0xAA, 57 + * 2048 blocks in the device, 64 pages per block, 2048 bytes per 58 + * page. 59 + */ 60 + 61 + #define NAND_BLOCK_SIZE SZ_128K 62 + 63 + struct mtd_partition davinci_ntosd2_nandflash_partition[] = { 64 + { 65 + /* UBL (a few copies) plus U-Boot */ 66 + .name = "bootloader", 67 + .offset = 0, 68 + .size = 15 * NAND_BLOCK_SIZE, 69 + .mask_flags = MTD_WRITEABLE, /* force read-only */ 70 + }, { 71 + /* U-Boot environment */ 72 + .name = "params", 73 + .offset = MTDPART_OFS_APPEND, 74 + .size = 1 * NAND_BLOCK_SIZE, 75 + .mask_flags = 0, 76 + }, { 77 + /* Kernel */ 78 + .name = "kernel", 79 + .offset = MTDPART_OFS_APPEND, 80 + .size = SZ_4M, 81 + .mask_flags = 0, 82 + }, { 83 + /* File System */ 84 + .name = "filesystem", 85 + .offset = MTDPART_OFS_APPEND, 86 + .size = MTDPART_SIZ_FULL, 87 + .mask_flags = 0, 88 + } 89 + /* A few blocks at end hold a flash Bad Block Table. */ 90 + }; 91 + 92 + static struct davinci_nand_pdata davinci_ntosd2_nandflash_data = { 93 + .parts = davinci_ntosd2_nandflash_partition, 94 + .nr_parts = ARRAY_SIZE(davinci_ntosd2_nandflash_partition), 95 + .ecc_mode = NAND_ECC_HW, 96 + .options = NAND_USE_FLASH_BBT, 97 + }; 98 + 99 + static struct resource davinci_ntosd2_nandflash_resource[] = { 100 + { 101 + .start = DAVINCI_ASYNC_EMIF_DATA_CE0_BASE, 102 + .end = DAVINCI_ASYNC_EMIF_DATA_CE0_BASE + SZ_16M - 1, 103 + .flags = IORESOURCE_MEM, 104 + }, { 105 + .start = DAVINCI_ASYNC_EMIF_CONTROL_BASE, 106 + .end = DAVINCI_ASYNC_EMIF_CONTROL_BASE + SZ_4K - 1, 107 + .flags = IORESOURCE_MEM, 108 + }, 109 + }; 110 + 111 + static struct platform_device davinci_ntosd2_nandflash_device = { 112 + .name = "davinci_nand", 113 + .id = 0, 114 + .dev = { 115 + .platform_data = &davinci_ntosd2_nandflash_data, 116 + }, 117 + .num_resources = ARRAY_SIZE(davinci_ntosd2_nandflash_resource), 118 + .resource = davinci_ntosd2_nandflash_resource, 119 + }; 120 + 121 + static u64 davinci_fb_dma_mask = DMA_BIT_MASK(32); 122 + 123 + static struct platform_device davinci_fb_device = { 124 + .name = "davincifb", 125 + .id = -1, 126 + .dev = { 127 + .dma_mask = &davinci_fb_dma_mask, 128 + .coherent_dma_mask = DMA_BIT_MASK(32), 129 + }, 130 + .num_resources = 0, 131 + }; 132 + 133 + static struct resource ide_resources[] = { 134 + { 135 + .start = DAVINCI_CFC_ATA_BASE, 136 + .end = DAVINCI_CFC_ATA_BASE + 0x7ff, 137 + .flags = IORESOURCE_MEM, 138 + }, 139 + { 140 + .start = IRQ_IDE, 141 + .end = IRQ_IDE, 142 + .flags = IORESOURCE_IRQ, 143 + }, 144 + }; 145 + 146 + static u64 ide_dma_mask = DMA_BIT_MASK(32); 147 + 148 + static struct platform_device ide_dev = { 149 + .name = "palm_bk3710", 150 + .id = -1, 151 + .resource = ide_resources, 152 + .num_resources = ARRAY_SIZE(ide_resources), 153 + .dev = { 154 + .dma_mask = &ide_dma_mask, 155 + .coherent_dma_mask = DMA_BIT_MASK(32), 156 + }, 157 + }; 158 + 159 + static struct snd_platform_data dm644x_ntosd2_snd_data; 160 + 161 + static struct gpio_led ntosd2_leds[] = { 162 + { .name = "led1_green", .gpio = GPIO(10), }, 163 + { .name = "led1_red", .gpio = GPIO(11), }, 164 + { .name = "led2_green", .gpio = GPIO(12), }, 165 + { .name = "led2_red", .gpio = GPIO(13), }, 166 + }; 167 + 168 + static struct gpio_led_platform_data ntosd2_leds_data = { 169 + .num_leds = ARRAY_SIZE(ntosd2_leds), 170 + .leds = ntosd2_leds, 171 + }; 172 + 173 + static struct platform_device ntosd2_leds_dev = { 174 + .name = "leds-gpio", 175 + .id = -1, 176 + .dev = { 177 + .platform_data = &ntosd2_leds_data, 178 + }, 179 + }; 180 + 181 + 182 + static struct platform_device *davinci_ntosd2_devices[] __initdata = { 183 + &davinci_fb_device, 184 + &ntosd2_leds_dev, 185 + }; 186 + 187 + static struct davinci_uart_config uart_config __initdata = { 188 + .enabled_uarts = (1 << 0), 189 + }; 190 + 191 + static void __init davinci_ntosd2_map_io(void) 192 + { 193 + dm644x_init(); 194 + } 195 + 196 + /* 197 + I2C initialization 198 + */ 199 + static struct davinci_i2c_platform_data ntosd2_i2c_pdata = { 200 + .bus_freq = 20 /* kHz */, 201 + .bus_delay = 100 /* usec */, 202 + }; 203 + 204 + static struct i2c_board_info __initdata ntosd2_i2c_info[] = { 205 + }; 206 + 207 + static int ntosd2_init_i2c(void) 208 + { 209 + int status; 210 + 211 + davinci_init_i2c(&ntosd2_i2c_pdata); 212 + status = gpio_request(NTOSD2_MSP430_IRQ, ntosd2_i2c_info[0].type); 213 + if (status == 0) { 214 + status = gpio_direction_input(NTOSD2_MSP430_IRQ); 215 + if (status == 0) { 216 + status = gpio_to_irq(NTOSD2_MSP430_IRQ); 217 + if (status > 0) { 218 + ntosd2_i2c_info[0].irq = status; 219 + i2c_register_board_info(1, 220 + ntosd2_i2c_info, 221 + ARRAY_SIZE(ntosd2_i2c_info)); 222 + } 223 + } 224 + } 225 + return status; 226 + } 227 + 228 + static struct davinci_mmc_config davinci_ntosd2_mmc_config = { 229 + .wires = 4, 230 + .version = MMC_CTLR_VERSION_1 231 + }; 232 + 233 + 234 + #if defined(CONFIG_BLK_DEV_PALMCHIP_BK3710) || \ 235 + defined(CONFIG_BLK_DEV_PALMCHIP_BK3710_MODULE) 236 + #define HAS_ATA 1 237 + #else 238 + #define HAS_ATA 0 239 + #endif 240 + 241 + #if defined(CONFIG_MTD_NAND_DAVINCI) || \ 242 + defined(CONFIG_MTD_NAND_DAVINCI_MODULE) 243 + #define HAS_NAND 1 244 + #else 245 + #define HAS_NAND 0 246 + #endif 247 + 248 + static __init void davinci_ntosd2_init(void) 249 + { 250 + struct clk *aemif_clk; 251 + struct davinci_soc_info *soc_info = &davinci_soc_info; 252 + int status; 253 + 254 + aemif_clk = clk_get(NULL, "aemif"); 255 + clk_enable(aemif_clk); 256 + 257 + if (HAS_ATA) { 258 + if (HAS_NAND) 259 + pr_warning("WARNING: both IDE and Flash are " 260 + "enabled, but they share AEMIF pins.\n" 261 + "\tDisable IDE for NAND/NOR support.\n"); 262 + davinci_cfg_reg(DM644X_HPIEN_DISABLE); 263 + davinci_cfg_reg(DM644X_ATAEN); 264 + davinci_cfg_reg(DM644X_HDIREN); 265 + platform_device_register(&ide_dev); 266 + } else if (HAS_NAND) { 267 + davinci_cfg_reg(DM644X_HPIEN_DISABLE); 268 + davinci_cfg_reg(DM644X_ATAEN_DISABLE); 269 + 270 + /* only one device will be jumpered and detected */ 271 + if (HAS_NAND) 272 + platform_device_register( 273 + &davinci_ntosd2_nandflash_device); 274 + } 275 + 276 + platform_add_devices(davinci_ntosd2_devices, 277 + ARRAY_SIZE(davinci_ntosd2_devices)); 278 + 279 + /* Initialize I2C interface specific for this board */ 280 + status = ntosd2_init_i2c(); 281 + if (status < 0) 282 + pr_warning("davinci_ntosd2_init: msp430 irq setup failed:" 283 + " %d\n", status); 284 + 285 + davinci_serial_init(&uart_config); 286 + dm644x_init_asp(&dm644x_ntosd2_snd_data); 287 + 288 + soc_info->emac_pdata->phy_mask = NEUROS_OSD2_PHY_MASK; 289 + soc_info->emac_pdata->mdio_max_freq = NEUROS_OSD2_MDIO_FREQUENCY; 290 + 291 + davinci_setup_usb(1000, 8); 292 + /* 293 + * Mux the pins to be GPIOs, VLYNQEN is already done at startup. 294 + * The AEAWx are five new AEAW pins that can be muxed by separately. 295 + * They are a bitmask for GPIO management. According TI 296 + * documentation (http://www.ti.com/lit/gpn/tms320dm6446) to employ 297 + * gpio(10,11,12,13) for leds any combination of bits works except 298 + * four last. So we are to reset all five. 299 + */ 300 + davinci_cfg_reg(DM644X_AEAW0); 301 + davinci_cfg_reg(DM644X_AEAW1); 302 + davinci_cfg_reg(DM644X_AEAW2); 303 + davinci_cfg_reg(DM644X_AEAW3); 304 + davinci_cfg_reg(DM644X_AEAW4); 305 + 306 + davinci_setup_mmc(0, &davinci_ntosd2_mmc_config); 307 + } 308 + 309 + static __init void davinci_ntosd2_irq_init(void) 310 + { 311 + davinci_irq_init(); 312 + } 313 + 314 + MACHINE_START(NEUROS_OSD2, "Neuros OSD2") 315 + /* Maintainer: Neuros Technologies <neuros@groups.google.com> */ 316 + .phys_io = IO_PHYS, 317 + .io_pg_offst = (__IO_ADDRESS(IO_PHYS) >> 18) & 0xfffc, 318 + .boot_params = (DAVINCI_DDR_BASE + 0x100), 319 + .map_io = davinci_ntosd2_map_io, 320 + .init_irq = davinci_ntosd2_irq_init, 321 + .timer = &davinci_timer, 322 + .init_machine = davinci_ntosd2_init, 323 + MACHINE_END
+2 -18
arch/arm/mach-davinci/board-sffsdr.c
··· 23 23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 24 24 */ 25 25 26 - #include <linux/kernel.h> 27 - #include <linux/module.h> 28 26 #include <linux/init.h> 29 - #include <linux/dma-mapping.h> 30 27 #include <linux/platform_device.h> 31 - #include <linux/gpio.h> 32 - 33 28 #include <linux/i2c.h> 34 29 #include <linux/i2c/at24.h> 35 - #include <linux/etherdevice.h> 36 30 #include <linux/mtd/mtd.h> 37 31 #include <linux/mtd/nand.h> 38 32 #include <linux/mtd/partitions.h> 39 - #include <linux/mtd/physmap.h> 40 - #include <linux/io.h> 41 33 42 - #include <asm/setup.h> 43 34 #include <asm/mach-types.h> 44 - 45 35 #include <asm/mach/arch.h> 46 - #include <asm/mach/map.h> 47 36 #include <asm/mach/flash.h> 48 37 49 38 #include <mach/dm644x.h> 50 39 #include <mach/common.h> 51 40 #include <mach/i2c.h> 52 41 #include <mach/serial.h> 53 - #include <mach/psc.h> 54 42 #include <mach/mux.h> 43 + #include <mach/usb.h> 55 44 56 45 #define SFFSDR_PHY_MASK (0x2) 57 46 #define SFFSDR_MDIO_FREQUENCY (2200000) /* PHY bus frequency */ ··· 96 107 .resource = davinci_sffsdr_nandflash_resource, 97 108 }; 98 109 99 - static struct emac_platform_data sffsdr_emac_pdata = { 100 - .phy_mask = SFFSDR_PHY_MASK, 101 - .mdio_max_freq = SFFSDR_MDIO_FREQUENCY, 102 - }; 103 - 104 110 static struct at24_platform_data eeprom_info = { 105 111 .byte_len = (64*1024) / 8, 106 112 .page_size = 32, ··· 148 164 davinci_serial_init(&uart_config); 149 165 soc_info->emac_pdata->phy_mask = SFFSDR_PHY_MASK; 150 166 soc_info->emac_pdata->mdio_max_freq = SFFSDR_MDIO_FREQUENCY; 151 - setup_usb(0, 0); /* We support only peripheral mode. */ 167 + davinci_setup_usb(0, 0); /* We support only peripheral mode. */ 152 168 153 169 /* mux VLYNQ pins */ 154 170 davinci_cfg_reg(DM644X_VLYNQEN);
+198 -33
arch/arm/mach-davinci/clock.c
··· 17 17 #include <linux/clk.h> 18 18 #include <linux/err.h> 19 19 #include <linux/mutex.h> 20 - #include <linux/platform_device.h> 21 20 #include <linux/io.h> 21 + #include <linux/delay.h> 22 22 23 23 #include <mach/hardware.h> 24 24 ··· 42 42 if (clk->parent) 43 43 __clk_enable(clk->parent); 44 44 if (clk->usecount++ == 0 && (clk->flags & CLK_PSC)) 45 - davinci_psc_config(psc_domain(clk), clk->psc_ctlr, 46 - clk->lpsc, 1); 45 + davinci_psc_config(psc_domain(clk), clk->gpsc, clk->lpsc, 1); 47 46 } 48 47 49 48 static void __clk_disable(struct clk *clk) ··· 50 51 if (WARN_ON(clk->usecount == 0)) 51 52 return; 52 53 if (--clk->usecount == 0 && !(clk->flags & CLK_PLL)) 53 - davinci_psc_config(psc_domain(clk), clk->psc_ctlr, 54 - clk->lpsc, 0); 54 + davinci_psc_config(psc_domain(clk), clk->gpsc, clk->lpsc, 0); 55 55 if (clk->parent) 56 56 __clk_disable(clk->parent); 57 57 } ··· 97 99 if (clk == NULL || IS_ERR(clk)) 98 100 return -EINVAL; 99 101 102 + if (clk->round_rate) 103 + return clk->round_rate(clk, rate); 104 + 100 105 return clk->rate; 101 106 } 102 107 EXPORT_SYMBOL(clk_round_rate); 103 108 109 + /* Propagate rate to children */ 110 + static void propagate_rate(struct clk *root) 111 + { 112 + struct clk *clk; 113 + 114 + list_for_each_entry(clk, &root->children, childnode) { 115 + if (clk->recalc) 116 + clk->rate = clk->recalc(clk); 117 + propagate_rate(clk); 118 + } 119 + } 120 + 104 121 int clk_set_rate(struct clk *clk, unsigned long rate) 105 122 { 123 + unsigned long flags; 124 + int ret = -EINVAL; 125 + 126 + if (clk == NULL || IS_ERR(clk)) 127 + return ret; 128 + 129 + spin_lock_irqsave(&clockfw_lock, flags); 130 + if (clk->set_rate) 131 + ret = clk->set_rate(clk, rate); 132 + if (ret == 0) { 133 + if (clk->recalc) 134 + clk->rate = clk->recalc(clk); 135 + propagate_rate(clk); 136 + } 137 + spin_unlock_irqrestore(&clockfw_lock, flags); 138 + 139 + return ret; 140 + } 141 + EXPORT_SYMBOL(clk_set_rate); 142 + 143 + int clk_set_parent(struct clk *clk, struct clk *parent) 144 + { 145 + unsigned long flags; 146 + 106 147 if (clk == NULL || IS_ERR(clk)) 107 148 return -EINVAL; 108 149 109 - /* changing the clk rate is not supported */ 110 - return -EINVAL; 150 + /* Cannot change parent on enabled clock */ 151 + if (WARN_ON(clk->usecount)) 152 + return -EINVAL; 153 + 154 + mutex_lock(&clocks_mutex); 155 + clk->parent = parent; 156 + list_del_init(&clk->childnode); 157 + list_add(&clk->childnode, &clk->parent->children); 158 + mutex_unlock(&clocks_mutex); 159 + 160 + spin_lock_irqsave(&clockfw_lock, flags); 161 + if (clk->recalc) 162 + clk->rate = clk->recalc(clk); 163 + propagate_rate(clk); 164 + spin_unlock_irqrestore(&clockfw_lock, flags); 165 + 166 + return 0; 111 167 } 112 - EXPORT_SYMBOL(clk_set_rate); 168 + EXPORT_SYMBOL(clk_set_parent); 113 169 114 170 int clk_register(struct clk *clk) 115 171 { ··· 175 123 clk->name, clk->parent->name)) 176 124 return -EINVAL; 177 125 126 + INIT_LIST_HEAD(&clk->children); 127 + 178 128 mutex_lock(&clocks_mutex); 179 129 list_add_tail(&clk->node, &clocks); 130 + if (clk->parent) 131 + list_add_tail(&clk->childnode, &clk->parent->children); 180 132 mutex_unlock(&clocks_mutex); 181 133 182 134 /* If rate is already set, use it */ 183 135 if (clk->rate) 184 136 return 0; 185 137 138 + /* Else, see if there is a way to calculate it */ 139 + if (clk->recalc) 140 + clk->rate = clk->recalc(clk); 141 + 186 142 /* Otherwise, default to parent rate */ 187 - if (clk->parent) 143 + else if (clk->parent) 188 144 clk->rate = clk->parent->rate; 189 145 190 146 return 0; ··· 206 146 207 147 mutex_lock(&clocks_mutex); 208 148 list_del(&clk->node); 149 + list_del(&clk->childnode); 209 150 mutex_unlock(&clocks_mutex); 210 151 } 211 152 EXPORT_SYMBOL(clk_unregister); ··· 227 166 continue; 228 167 229 168 /* ignore if in Disabled or SwRstDisable states */ 230 - if (!davinci_psc_is_clk_active(ck->psc_ctlr, ck->lpsc)) 169 + if (!davinci_psc_is_clk_active(ck->gpsc, ck->lpsc)) 231 170 continue; 232 171 233 172 pr_info("Clocks: disable unused %s\n", ck->name); 234 - davinci_psc_config(psc_domain(ck), ck->psc_ctlr, ck->lpsc, 0); 173 + davinci_psc_config(psc_domain(ck), ck->gpsc, ck->lpsc, 0); 235 174 } 236 175 spin_unlock_irq(&clockfw_lock); 237 176 ··· 240 179 late_initcall(clk_disable_unused); 241 180 #endif 242 181 243 - static void clk_sysclk_recalc(struct clk *clk) 182 + static unsigned long clk_sysclk_recalc(struct clk *clk) 244 183 { 245 184 u32 v, plldiv; 246 185 struct pll_data *pll; 186 + unsigned long rate = clk->rate; 247 187 248 188 /* If this is the PLL base clock, no more calculations needed */ 249 189 if (clk->pll_data) 250 - return; 190 + return rate; 251 191 252 192 if (WARN_ON(!clk->parent)) 253 - return; 193 + return rate; 254 194 255 - clk->rate = clk->parent->rate; 195 + rate = clk->parent->rate; 256 196 257 197 /* Otherwise, the parent must be a PLL */ 258 198 if (WARN_ON(!clk->parent->pll_data)) 259 - return; 199 + return rate; 260 200 261 201 pll = clk->parent->pll_data; 262 202 263 203 /* If pre-PLL, source clock is before the multiplier and divider(s) */ 264 204 if (clk->flags & PRE_PLL) 265 - clk->rate = pll->input_rate; 205 + rate = pll->input_rate; 266 206 267 207 if (!clk->div_reg) 268 - return; 208 + return rate; 269 209 270 210 v = __raw_readl(pll->base + clk->div_reg); 271 211 if (v & PLLDIV_EN) { 272 212 plldiv = (v & PLLDIV_RATIO_MASK) + 1; 273 213 if (plldiv) 274 - clk->rate /= plldiv; 214 + rate /= plldiv; 275 215 } 216 + 217 + return rate; 276 218 } 277 219 278 - static void __init clk_pll_init(struct clk *clk) 220 + static unsigned long clk_leafclk_recalc(struct clk *clk) 221 + { 222 + if (WARN_ON(!clk->parent)) 223 + return clk->rate; 224 + 225 + return clk->parent->rate; 226 + } 227 + 228 + static unsigned long clk_pllclk_recalc(struct clk *clk) 279 229 { 280 230 u32 ctrl, mult = 1, prediv = 1, postdiv = 1; 281 231 u8 bypass; 282 232 struct pll_data *pll = clk->pll_data; 233 + unsigned long rate = clk->rate; 283 234 284 235 pll->base = IO_ADDRESS(pll->phys_base); 285 236 ctrl = __raw_readl(pll->base + PLLCTL); 286 - clk->rate = pll->input_rate = clk->parent->rate; 237 + rate = pll->input_rate = clk->parent->rate; 287 238 288 239 if (ctrl & PLLCTL_PLLEN) { 289 240 bypass = 0; ··· 328 255 } 329 256 330 257 if (!bypass) { 331 - clk->rate /= prediv; 332 - clk->rate *= mult; 333 - clk->rate /= postdiv; 258 + rate /= prediv; 259 + rate *= mult; 260 + rate /= postdiv; 334 261 } 335 262 336 263 pr_debug("PLL%d: input = %lu MHz [ ", ··· 343 270 pr_debug("* %d ", mult); 344 271 if (postdiv > 1) 345 272 pr_debug("/ %d ", postdiv); 346 - pr_debug("] --> %lu MHz output.\n", clk->rate / 1000000); 273 + pr_debug("] --> %lu MHz output.\n", rate / 1000000); 274 + 275 + return rate; 347 276 } 277 + 278 + /** 279 + * davinci_set_pllrate - set the output rate of a given PLL. 280 + * 281 + * Note: Currently tested to work with OMAP-L138 only. 282 + * 283 + * @pll: pll whose rate needs to be changed. 284 + * @prediv: The pre divider value. Passing 0 disables the pre-divider. 285 + * @pllm: The multiplier value. Passing 0 leads to multiply-by-one. 286 + * @postdiv: The post divider value. Passing 0 disables the post-divider. 287 + */ 288 + int davinci_set_pllrate(struct pll_data *pll, unsigned int prediv, 289 + unsigned int mult, unsigned int postdiv) 290 + { 291 + u32 ctrl; 292 + unsigned int locktime; 293 + 294 + if (pll->base == NULL) 295 + return -EINVAL; 296 + 297 + /* 298 + * PLL lock time required per OMAP-L138 datasheet is 299 + * (2000 * prediv)/sqrt(pllm) OSCIN cycles. We approximate sqrt(pllm) 300 + * as 4 and OSCIN cycle as 25 MHz. 301 + */ 302 + if (prediv) { 303 + locktime = ((2000 * prediv) / 100); 304 + prediv = (prediv - 1) | PLLDIV_EN; 305 + } else { 306 + locktime = 20; 307 + } 308 + if (postdiv) 309 + postdiv = (postdiv - 1) | PLLDIV_EN; 310 + if (mult) 311 + mult = mult - 1; 312 + 313 + ctrl = __raw_readl(pll->base + PLLCTL); 314 + 315 + /* Switch the PLL to bypass mode */ 316 + ctrl &= ~(PLLCTL_PLLENSRC | PLLCTL_PLLEN); 317 + __raw_writel(ctrl, pll->base + PLLCTL); 318 + 319 + /* 320 + * Wait for 4 OSCIN/CLKIN cycles to ensure that the PLLC has switched 321 + * to bypass mode. Delay of 1us ensures we are good for all > 4MHz 322 + * OSCIN/CLKIN inputs. Typically the input is ~25MHz. 323 + */ 324 + udelay(1); 325 + 326 + /* Reset and enable PLL */ 327 + ctrl &= ~(PLLCTL_PLLRST | PLLCTL_PLLDIS); 328 + __raw_writel(ctrl, pll->base + PLLCTL); 329 + 330 + if (pll->flags & PLL_HAS_PREDIV) 331 + __raw_writel(prediv, pll->base + PREDIV); 332 + 333 + __raw_writel(mult, pll->base + PLLM); 334 + 335 + if (pll->flags & PLL_HAS_POSTDIV) 336 + __raw_writel(postdiv, pll->base + POSTDIV); 337 + 338 + /* 339 + * Wait for PLL to reset properly, OMAP-L138 datasheet says 340 + * 'min' time = 125ns 341 + */ 342 + udelay(1); 343 + 344 + /* Bring PLL out of reset */ 345 + ctrl |= PLLCTL_PLLRST; 346 + __raw_writel(ctrl, pll->base + PLLCTL); 347 + 348 + udelay(locktime); 349 + 350 + /* Remove PLL from bypass mode */ 351 + ctrl |= PLLCTL_PLLEN; 352 + __raw_writel(ctrl, pll->base + PLLCTL); 353 + 354 + return 0; 355 + } 356 + EXPORT_SYMBOL(davinci_set_pllrate); 348 357 349 358 int __init davinci_clk_init(struct davinci_clk *clocks) 350 359 { ··· 436 281 for (c = clocks; c->lk.clk; c++) { 437 282 clk = c->lk.clk; 438 283 439 - if (clk->pll_data) 440 - clk_pll_init(clk); 284 + if (!clk->recalc) { 441 285 442 - /* Calculate rates for PLL-derived clocks */ 443 - else if (clk->flags & CLK_PLL) 444 - clk_sysclk_recalc(clk); 286 + /* Check if clock is a PLL */ 287 + if (clk->pll_data) 288 + clk->recalc = clk_pllclk_recalc; 289 + 290 + /* Else, if it is a PLL-derived clock */ 291 + else if (clk->flags & CLK_PLL) 292 + clk->recalc = clk_sysclk_recalc; 293 + 294 + /* Otherwise, it is a leaf clock (PSC clock) */ 295 + else if (clk->parent) 296 + clk->recalc = clk_leafclk_recalc; 297 + } 298 + 299 + if (clk->recalc) 300 + clk->rate = clk->recalc(clk); 445 301 446 302 if (clk->lpsc) 447 303 clk->flags |= CLK_PSC; ··· 518 352 /* REVISIT show device associations too */ 519 353 520 354 /* cost is now small, but not linear... */ 521 - list_for_each_entry(clk, &clocks, node) { 522 - if (clk->parent == parent) 523 - dump_clock(s, nest + NEST_DELTA, clk); 355 + list_for_each_entry(clk, &parent->children, childnode) { 356 + dump_clock(s, nest + NEST_DELTA, clk); 524 357 } 525 358 } 526 359
+14 -3
arch/arm/mach-davinci/clock.h
··· 22 22 /* PLL/Reset register offsets */ 23 23 #define PLLCTL 0x100 24 24 #define PLLCTL_PLLEN BIT(0) 25 + #define PLLCTL_PLLPWRDN BIT(1) 26 + #define PLLCTL_PLLRST BIT(3) 27 + #define PLLCTL_PLLDIS BIT(4) 28 + #define PLLCTL_PLLENSRC BIT(5) 25 29 #define PLLCTL_CLKMODE BIT(8) 26 30 27 31 #define PLLM 0x110 ··· 69 65 const char *name; 70 66 unsigned long rate; 71 67 u8 usecount; 72 - u8 flags; 73 68 u8 lpsc; 74 - u8 psc_ctlr; 69 + u8 gpsc; 70 + u32 flags; 75 71 struct clk *parent; 72 + struct list_head children; /* list of children */ 73 + struct list_head childnode; /* parent's child list node */ 76 74 struct pll_data *pll_data; 77 75 u32 div_reg; 76 + unsigned long (*recalc) (struct clk *); 77 + int (*set_rate) (struct clk *clk, unsigned long rate); 78 + int (*round_rate) (struct clk *clk, unsigned long rate); 78 79 }; 79 80 80 - /* Clock flags */ 81 + /* Clock flags: SoC-specific flags start at BIT(16) */ 81 82 #define ALWAYS_ENABLED BIT(1) 82 83 #define CLK_PSC BIT(2) 83 84 #define PSC_DSP BIT(3) /* PSC uses DSP domain, not ARM */ ··· 103 94 } 104 95 105 96 int davinci_clk_init(struct davinci_clk *clocks); 97 + int davinci_set_pllrate(struct pll_data *pll, unsigned int prediv, 98 + unsigned int mult, unsigned int postdiv); 106 99 107 100 extern struct platform_device davinci_wdt_device; 108 101
+3 -1
arch/arm/mach-davinci/common.c
··· 86 86 dip = davinci_get_id(davinci_soc_info.jtag_id); 87 87 if (!dip) { 88 88 ret = -EINVAL; 89 + pr_err("Unknown DaVinci JTAG ID 0x%x\n", 90 + davinci_soc_info.jtag_id); 89 91 goto err; 90 92 } 91 93 ··· 106 104 return; 107 105 108 106 err: 109 - pr_err("davinci_common_init: SoC Initialization failed\n"); 107 + panic("davinci_common_init: SoC Initialization failed\n"); 110 108 }
-3
arch/arm/mach-davinci/cp_intc.c
··· 10 10 */ 11 11 12 12 #include <linux/init.h> 13 - #include <linux/sched.h> 14 - #include <linux/interrupt.h> 15 - #include <linux/kernel.h> 16 13 #include <linux/irq.h> 17 14 #include <linux/io.h> 18 15
+226
arch/arm/mach-davinci/cpufreq.c
··· 1 + /* 2 + * CPU frequency scaling for DaVinci 3 + * 4 + * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ 5 + * 6 + * Based on linux/arch/arm/plat-omap/cpu-omap.c. Original Copyright follows: 7 + * 8 + * Copyright (C) 2005 Nokia Corporation 9 + * Written by Tony Lindgren <tony@atomide.com> 10 + * 11 + * Based on cpu-sa1110.c, Copyright (C) 2001 Russell King 12 + * 13 + * Copyright (C) 2007-2008 Texas Instruments, Inc. 14 + * Updated to support OMAP3 15 + * Rajendra Nayak <rnayak@ti.com> 16 + * 17 + * This program is free software; you can redistribute it and/or modify 18 + * it under the terms of the GNU General Public License version 2 as 19 + * published by the Free Software Foundation. 20 + */ 21 + #include <linux/types.h> 22 + #include <linux/cpufreq.h> 23 + #include <linux/init.h> 24 + #include <linux/err.h> 25 + #include <linux/clk.h> 26 + #include <linux/platform_device.h> 27 + 28 + #include <mach/hardware.h> 29 + #include <mach/cpufreq.h> 30 + #include <mach/common.h> 31 + 32 + #include "clock.h" 33 + 34 + struct davinci_cpufreq { 35 + struct device *dev; 36 + struct clk *armclk; 37 + }; 38 + static struct davinci_cpufreq cpufreq; 39 + 40 + static int davinci_verify_speed(struct cpufreq_policy *policy) 41 + { 42 + struct davinci_cpufreq_config *pdata = cpufreq.dev->platform_data; 43 + struct cpufreq_frequency_table *freq_table = pdata->freq_table; 44 + struct clk *armclk = cpufreq.armclk; 45 + 46 + if (freq_table) 47 + return cpufreq_frequency_table_verify(policy, freq_table); 48 + 49 + if (policy->cpu) 50 + return -EINVAL; 51 + 52 + cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, 53 + policy->cpuinfo.max_freq); 54 + 55 + policy->min = clk_round_rate(armclk, policy->min * 1000) / 1000; 56 + policy->max = clk_round_rate(armclk, policy->max * 1000) / 1000; 57 + cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, 58 + policy->cpuinfo.max_freq); 59 + return 0; 60 + } 61 + 62 + static unsigned int davinci_getspeed(unsigned int cpu) 63 + { 64 + if (cpu) 65 + return 0; 66 + 67 + return clk_get_rate(cpufreq.armclk) / 1000; 68 + } 69 + 70 + static int davinci_target(struct cpufreq_policy *policy, 71 + unsigned int target_freq, unsigned int relation) 72 + { 73 + int ret = 0; 74 + unsigned int idx; 75 + struct cpufreq_freqs freqs; 76 + struct davinci_cpufreq_config *pdata = cpufreq.dev->platform_data; 77 + struct clk *armclk = cpufreq.armclk; 78 + 79 + /* 80 + * Ensure desired rate is within allowed range. Some govenors 81 + * (ondemand) will just pass target_freq=0 to get the minimum. 82 + */ 83 + if (target_freq < policy->cpuinfo.min_freq) 84 + target_freq = policy->cpuinfo.min_freq; 85 + if (target_freq > policy->cpuinfo.max_freq) 86 + target_freq = policy->cpuinfo.max_freq; 87 + 88 + freqs.old = davinci_getspeed(0); 89 + freqs.new = clk_round_rate(armclk, target_freq * 1000) / 1000; 90 + freqs.cpu = 0; 91 + 92 + if (freqs.old == freqs.new) 93 + return ret; 94 + 95 + cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, 96 + dev_driver_string(cpufreq.dev), 97 + "transition: %u --> %u\n", freqs.old, freqs.new); 98 + 99 + ret = cpufreq_frequency_table_target(policy, pdata->freq_table, 100 + freqs.new, relation, &idx); 101 + if (ret) 102 + return -EINVAL; 103 + 104 + cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 105 + 106 + /* if moving to higher frequency, up the voltage beforehand */ 107 + if (pdata->set_voltage && freqs.new > freqs.old) 108 + pdata->set_voltage(idx); 109 + 110 + ret = clk_set_rate(armclk, idx); 111 + 112 + /* if moving to lower freq, lower the voltage after lowering freq */ 113 + if (pdata->set_voltage && freqs.new < freqs.old) 114 + pdata->set_voltage(idx); 115 + 116 + cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 117 + 118 + return ret; 119 + } 120 + 121 + static int __init davinci_cpu_init(struct cpufreq_policy *policy) 122 + { 123 + int result = 0; 124 + struct davinci_cpufreq_config *pdata = cpufreq.dev->platform_data; 125 + struct cpufreq_frequency_table *freq_table = pdata->freq_table; 126 + 127 + if (policy->cpu != 0) 128 + return -EINVAL; 129 + 130 + /* Finish platform specific initialization */ 131 + if (pdata->init) { 132 + result = pdata->init(); 133 + if (result) 134 + return result; 135 + } 136 + 137 + policy->cur = policy->min = policy->max = davinci_getspeed(0); 138 + 139 + if (freq_table) { 140 + result = cpufreq_frequency_table_cpuinfo(policy, freq_table); 141 + if (!result) 142 + cpufreq_frequency_table_get_attr(freq_table, 143 + policy->cpu); 144 + } else { 145 + policy->cpuinfo.min_freq = policy->min; 146 + policy->cpuinfo.max_freq = policy->max; 147 + } 148 + 149 + policy->min = policy->cpuinfo.min_freq; 150 + policy->max = policy->cpuinfo.max_freq; 151 + policy->cur = davinci_getspeed(0); 152 + 153 + /* 154 + * Time measurement across the target() function yields ~1500-1800us 155 + * time taken with no drivers on notification list. 156 + * Setting the latency to 2000 us to accomodate addition of drivers 157 + * to pre/post change notification list. 158 + */ 159 + policy->cpuinfo.transition_latency = 2000 * 1000; 160 + return 0; 161 + } 162 + 163 + static int davinci_cpu_exit(struct cpufreq_policy *policy) 164 + { 165 + cpufreq_frequency_table_put_attr(policy->cpu); 166 + return 0; 167 + } 168 + 169 + static struct freq_attr *davinci_cpufreq_attr[] = { 170 + &cpufreq_freq_attr_scaling_available_freqs, 171 + NULL, 172 + }; 173 + 174 + static struct cpufreq_driver davinci_driver = { 175 + .flags = CPUFREQ_STICKY, 176 + .verify = davinci_verify_speed, 177 + .target = davinci_target, 178 + .get = davinci_getspeed, 179 + .init = davinci_cpu_init, 180 + .exit = davinci_cpu_exit, 181 + .name = "davinci", 182 + .attr = davinci_cpufreq_attr, 183 + }; 184 + 185 + static int __init davinci_cpufreq_probe(struct platform_device *pdev) 186 + { 187 + struct davinci_cpufreq_config *pdata = pdev->dev.platform_data; 188 + 189 + if (!pdata) 190 + return -EINVAL; 191 + if (!pdata->freq_table) 192 + return -EINVAL; 193 + 194 + cpufreq.dev = &pdev->dev; 195 + 196 + cpufreq.armclk = clk_get(NULL, "arm"); 197 + if (IS_ERR(cpufreq.armclk)) { 198 + dev_err(cpufreq.dev, "Unable to get ARM clock\n"); 199 + return PTR_ERR(cpufreq.armclk); 200 + } 201 + 202 + return cpufreq_register_driver(&davinci_driver); 203 + } 204 + 205 + static int __exit davinci_cpufreq_remove(struct platform_device *pdev) 206 + { 207 + clk_put(cpufreq.armclk); 208 + 209 + return cpufreq_unregister_driver(&davinci_driver); 210 + } 211 + 212 + static struct platform_driver davinci_cpufreq_driver = { 213 + .driver = { 214 + .name = "cpufreq-davinci", 215 + .owner = THIS_MODULE, 216 + }, 217 + .remove = __exit_p(davinci_cpufreq_remove), 218 + }; 219 + 220 + static int __init davinci_cpufreq_init(void) 221 + { 222 + return platform_driver_probe(&davinci_cpufreq_driver, 223 + davinci_cpufreq_probe); 224 + } 225 + late_initcall(davinci_cpufreq_init); 226 +
+197
arch/arm/mach-davinci/cpuidle.c
··· 1 + /* 2 + * CPU idle for DaVinci SoCs 3 + * 4 + * Copyright (C) 2009 Texas Instruments Incorporated. http://www.ti.com/ 5 + * 6 + * Derived from Marvell Kirkwood CPU idle code 7 + * (arch/arm/mach-kirkwood/cpuidle.c) 8 + * 9 + * This program is free software; you can redistribute it and/or modify 10 + * it under the terms of the GNU General Public License version 2 as 11 + * published by the Free Software Foundation. 12 + */ 13 + 14 + #include <linux/kernel.h> 15 + #include <linux/init.h> 16 + #include <linux/platform_device.h> 17 + #include <linux/cpuidle.h> 18 + #include <linux/io.h> 19 + #include <asm/proc-fns.h> 20 + 21 + #include <mach/cpuidle.h> 22 + 23 + #define DAVINCI_CPUIDLE_MAX_STATES 2 24 + 25 + struct davinci_ops { 26 + void (*enter) (u32 flags); 27 + void (*exit) (u32 flags); 28 + u32 flags; 29 + }; 30 + 31 + /* fields in davinci_ops.flags */ 32 + #define DAVINCI_CPUIDLE_FLAGS_DDR2_PWDN BIT(0) 33 + 34 + static struct cpuidle_driver davinci_idle_driver = { 35 + .name = "cpuidle-davinci", 36 + .owner = THIS_MODULE, 37 + }; 38 + 39 + static DEFINE_PER_CPU(struct cpuidle_device, davinci_cpuidle_device); 40 + static void __iomem *ddr2_reg_base; 41 + 42 + #define DDR2_SDRCR_OFFSET 0xc 43 + #define DDR2_SRPD_BIT BIT(23) 44 + #define DDR2_LPMODEN_BIT BIT(31) 45 + 46 + static void davinci_save_ddr_power(int enter, bool pdown) 47 + { 48 + u32 val; 49 + 50 + val = __raw_readl(ddr2_reg_base + DDR2_SDRCR_OFFSET); 51 + 52 + if (enter) { 53 + if (pdown) 54 + val |= DDR2_SRPD_BIT; 55 + else 56 + val &= ~DDR2_SRPD_BIT; 57 + val |= DDR2_LPMODEN_BIT; 58 + } else { 59 + val &= ~(DDR2_SRPD_BIT | DDR2_LPMODEN_BIT); 60 + } 61 + 62 + __raw_writel(val, ddr2_reg_base + DDR2_SDRCR_OFFSET); 63 + } 64 + 65 + static void davinci_c2state_enter(u32 flags) 66 + { 67 + davinci_save_ddr_power(1, !!(flags & DAVINCI_CPUIDLE_FLAGS_DDR2_PWDN)); 68 + } 69 + 70 + static void davinci_c2state_exit(u32 flags) 71 + { 72 + davinci_save_ddr_power(0, !!(flags & DAVINCI_CPUIDLE_FLAGS_DDR2_PWDN)); 73 + } 74 + 75 + static struct davinci_ops davinci_states[DAVINCI_CPUIDLE_MAX_STATES] = { 76 + [1] = { 77 + .enter = davinci_c2state_enter, 78 + .exit = davinci_c2state_exit, 79 + }, 80 + }; 81 + 82 + /* Actual code that puts the SoC in different idle states */ 83 + static int davinci_enter_idle(struct cpuidle_device *dev, 84 + struct cpuidle_state *state) 85 + { 86 + struct davinci_ops *ops = cpuidle_get_statedata(state); 87 + struct timeval before, after; 88 + int idle_time; 89 + 90 + local_irq_disable(); 91 + do_gettimeofday(&before); 92 + 93 + if (ops && ops->enter) 94 + ops->enter(ops->flags); 95 + /* Wait for interrupt state */ 96 + cpu_do_idle(); 97 + if (ops && ops->exit) 98 + ops->exit(ops->flags); 99 + 100 + do_gettimeofday(&after); 101 + local_irq_enable(); 102 + idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC + 103 + (after.tv_usec - before.tv_usec); 104 + return idle_time; 105 + } 106 + 107 + static int __init davinci_cpuidle_probe(struct platform_device *pdev) 108 + { 109 + int ret; 110 + struct cpuidle_device *device; 111 + struct davinci_cpuidle_config *pdata = pdev->dev.platform_data; 112 + struct resource *ddr2_regs; 113 + resource_size_t len; 114 + 115 + device = &per_cpu(davinci_cpuidle_device, smp_processor_id()); 116 + 117 + if (!pdata) { 118 + dev_err(&pdev->dev, "cannot get platform data\n"); 119 + return -ENOENT; 120 + } 121 + 122 + ddr2_regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); 123 + if (!ddr2_regs) { 124 + dev_err(&pdev->dev, "cannot get DDR2 controller register base"); 125 + return -ENODEV; 126 + } 127 + 128 + len = resource_size(ddr2_regs); 129 + 130 + ddr2_regs = request_mem_region(ddr2_regs->start, len, ddr2_regs->name); 131 + if (!ddr2_regs) 132 + return -EBUSY; 133 + 134 + ddr2_reg_base = ioremap(ddr2_regs->start, len); 135 + if (!ddr2_reg_base) { 136 + ret = -ENOMEM; 137 + goto ioremap_fail; 138 + } 139 + 140 + ret = cpuidle_register_driver(&davinci_idle_driver); 141 + if (ret) { 142 + dev_err(&pdev->dev, "failed to register driver\n"); 143 + goto driver_register_fail; 144 + } 145 + 146 + /* Wait for interrupt state */ 147 + device->states[0].enter = davinci_enter_idle; 148 + device->states[0].exit_latency = 1; 149 + device->states[0].target_residency = 10000; 150 + device->states[0].flags = CPUIDLE_FLAG_TIME_VALID; 151 + strcpy(device->states[0].name, "WFI"); 152 + strcpy(device->states[0].desc, "Wait for interrupt"); 153 + 154 + /* Wait for interrupt and DDR self refresh state */ 155 + device->states[1].enter = davinci_enter_idle; 156 + device->states[1].exit_latency = 10; 157 + device->states[1].target_residency = 10000; 158 + device->states[1].flags = CPUIDLE_FLAG_TIME_VALID; 159 + strcpy(device->states[1].name, "DDR SR"); 160 + strcpy(device->states[1].desc, "WFI and DDR Self Refresh"); 161 + if (pdata->ddr2_pdown) 162 + davinci_states[1].flags |= DAVINCI_CPUIDLE_FLAGS_DDR2_PWDN; 163 + cpuidle_set_statedata(&device->states[1], &davinci_states[1]); 164 + 165 + device->state_count = DAVINCI_CPUIDLE_MAX_STATES; 166 + 167 + ret = cpuidle_register_device(device); 168 + if (ret) { 169 + dev_err(&pdev->dev, "failed to register device\n"); 170 + goto device_register_fail; 171 + } 172 + 173 + return 0; 174 + 175 + device_register_fail: 176 + cpuidle_unregister_driver(&davinci_idle_driver); 177 + driver_register_fail: 178 + iounmap(ddr2_reg_base); 179 + ioremap_fail: 180 + release_mem_region(ddr2_regs->start, len); 181 + return ret; 182 + } 183 + 184 + static struct platform_driver davinci_cpuidle_driver = { 185 + .driver = { 186 + .name = "cpuidle-davinci", 187 + .owner = THIS_MODULE, 188 + }, 189 + }; 190 + 191 + static int __init davinci_cpuidle_init(void) 192 + { 193 + return platform_driver_probe(&davinci_cpuidle_driver, 194 + davinci_cpuidle_probe); 195 + } 196 + device_initcall(davinci_cpuidle_init); 197 +
+45 -30
arch/arm/mach-davinci/da830.c
··· 8 8 * is licensed "as is" without any warranty of any kind, whether express 9 9 * or implied. 10 10 */ 11 - #include <linux/kernel.h> 12 11 #include <linux/init.h> 13 12 #include <linux/clk.h> 14 - #include <linux/platform_device.h> 15 13 16 14 #include <asm/mach/map.h> 17 15 18 - #include <mach/clock.h> 19 16 #include <mach/psc.h> 20 - #include <mach/mux.h> 21 17 #include <mach/irqs.h> 22 18 #include <mach/cputype.h> 23 19 #include <mach/common.h> 24 20 #include <mach/time.h> 25 21 #include <mach/da8xx.h> 26 - #include <mach/asp.h> 27 22 28 23 #include "clock.h" 29 24 #include "mux.h" ··· 188 193 .name = "uart1", 189 194 .parent = &pll0_sysclk2, 190 195 .lpsc = DA8XX_LPSC1_UART1, 191 - .psc_ctlr = 1, 196 + .gpsc = 1, 192 197 }; 193 198 194 199 static struct clk uart2_clk = { 195 200 .name = "uart2", 196 201 .parent = &pll0_sysclk2, 197 202 .lpsc = DA8XX_LPSC1_UART2, 198 - .psc_ctlr = 1, 203 + .gpsc = 1, 199 204 }; 200 205 201 206 static struct clk spi0_clk = { ··· 208 213 .name = "spi1", 209 214 .parent = &pll0_sysclk2, 210 215 .lpsc = DA8XX_LPSC1_SPI1, 211 - .psc_ctlr = 1, 216 + .gpsc = 1, 212 217 }; 213 218 214 219 static struct clk ecap0_clk = { 215 220 .name = "ecap0", 216 221 .parent = &pll0_sysclk2, 217 222 .lpsc = DA8XX_LPSC1_ECAP, 218 - .psc_ctlr = 1, 223 + .gpsc = 1, 219 224 }; 220 225 221 226 static struct clk ecap1_clk = { 222 227 .name = "ecap1", 223 228 .parent = &pll0_sysclk2, 224 229 .lpsc = DA8XX_LPSC1_ECAP, 225 - .psc_ctlr = 1, 230 + .gpsc = 1, 226 231 }; 227 232 228 233 static struct clk ecap2_clk = { 229 234 .name = "ecap2", 230 235 .parent = &pll0_sysclk2, 231 236 .lpsc = DA8XX_LPSC1_ECAP, 232 - .psc_ctlr = 1, 237 + .gpsc = 1, 233 238 }; 234 239 235 240 static struct clk pwm0_clk = { 236 241 .name = "pwm0", 237 242 .parent = &pll0_sysclk2, 238 243 .lpsc = DA8XX_LPSC1_PWM, 239 - .psc_ctlr = 1, 244 + .gpsc = 1, 240 245 }; 241 246 242 247 static struct clk pwm1_clk = { 243 248 .name = "pwm1", 244 249 .parent = &pll0_sysclk2, 245 250 .lpsc = DA8XX_LPSC1_PWM, 246 - .psc_ctlr = 1, 251 + .gpsc = 1, 247 252 }; 248 253 249 254 static struct clk pwm2_clk = { 250 255 .name = "pwm2", 251 256 .parent = &pll0_sysclk2, 252 257 .lpsc = DA8XX_LPSC1_PWM, 253 - .psc_ctlr = 1, 258 + .gpsc = 1, 254 259 }; 255 260 256 261 static struct clk eqep0_clk = { 257 262 .name = "eqep0", 258 263 .parent = &pll0_sysclk2, 259 264 .lpsc = DA830_LPSC1_EQEP, 260 - .psc_ctlr = 1, 265 + .gpsc = 1, 261 266 }; 262 267 263 268 static struct clk eqep1_clk = { 264 269 .name = "eqep1", 265 270 .parent = &pll0_sysclk2, 266 271 .lpsc = DA830_LPSC1_EQEP, 267 - .psc_ctlr = 1, 272 + .gpsc = 1, 268 273 }; 269 274 270 275 static struct clk lcdc_clk = { 271 276 .name = "lcdc", 272 277 .parent = &pll0_sysclk2, 273 278 .lpsc = DA8XX_LPSC1_LCDC, 274 - .psc_ctlr = 1, 279 + .gpsc = 1, 275 280 }; 276 281 277 282 static struct clk mcasp0_clk = { 278 283 .name = "mcasp0", 279 284 .parent = &pll0_sysclk2, 280 285 .lpsc = DA8XX_LPSC1_McASP0, 281 - .psc_ctlr = 1, 286 + .gpsc = 1, 282 287 }; 283 288 284 289 static struct clk mcasp1_clk = { 285 290 .name = "mcasp1", 286 291 .parent = &pll0_sysclk2, 287 292 .lpsc = DA830_LPSC1_McASP1, 288 - .psc_ctlr = 1, 293 + .gpsc = 1, 289 294 }; 290 295 291 296 static struct clk mcasp2_clk = { 292 297 .name = "mcasp2", 293 298 .parent = &pll0_sysclk2, 294 299 .lpsc = DA830_LPSC1_McASP2, 295 - .psc_ctlr = 1, 300 + .gpsc = 1, 296 301 }; 297 302 298 303 static struct clk usb20_clk = { 299 304 .name = "usb20", 300 305 .parent = &pll0_sysclk2, 301 306 .lpsc = DA8XX_LPSC1_USB20, 302 - .psc_ctlr = 1, 307 + .gpsc = 1, 303 308 }; 304 309 305 310 static struct clk aemif_clk = { ··· 327 332 .name = "emac", 328 333 .parent = &pll0_sysclk4, 329 334 .lpsc = DA8XX_LPSC1_CPGMAC, 330 - .psc_ctlr = 1, 335 + .gpsc = 1, 331 336 }; 332 337 333 338 static struct clk gpio_clk = { 334 339 .name = "gpio", 335 340 .parent = &pll0_sysclk4, 336 341 .lpsc = DA8XX_LPSC1_GPIO, 337 - .psc_ctlr = 1, 342 + .gpsc = 1, 338 343 }; 339 344 340 345 static struct clk i2c1_clk = { 341 346 .name = "i2c1", 342 347 .parent = &pll0_sysclk4, 343 348 .lpsc = DA8XX_LPSC1_I2C, 344 - .psc_ctlr = 1, 349 + .gpsc = 1, 345 350 }; 346 351 347 352 static struct clk usb11_clk = { 348 353 .name = "usb11", 349 354 .parent = &pll0_sysclk4, 350 355 .lpsc = DA8XX_LPSC1_USB11, 351 - .psc_ctlr = 1, 356 + .gpsc = 1, 352 357 }; 353 358 354 359 static struct clk emif3_clk = { 355 360 .name = "emif3", 356 361 .parent = &pll0_sysclk5, 357 362 .lpsc = DA8XX_LPSC1_EMIF3C, 363 + .gpsc = 1, 358 364 .flags = ALWAYS_ENABLED, 359 - .psc_ctlr = 1, 360 365 }; 361 366 362 367 static struct clk arm_clk = { ··· 406 411 CLK(NULL, "pwm2", &pwm2_clk), 407 412 CLK("eqep.0", NULL, &eqep0_clk), 408 413 CLK("eqep.1", NULL, &eqep1_clk), 409 - CLK("da830_lcdc", NULL, &lcdc_clk), 414 + CLK("da8xx_lcdc.0", NULL, &lcdc_clk), 410 415 CLK("davinci-mcasp.0", NULL, &mcasp0_clk), 411 416 CLK("davinci-mcasp.1", NULL, &mcasp1_clk), 412 417 CLK("davinci-mcasp.2", NULL, &mcasp2_clk), ··· 1138 1143 .part_no = 0xb7df, 1139 1144 .manufacturer = 0x017, /* 0x02f >> 1 */ 1140 1145 .cpu_id = DAVINCI_CPU_ID_DA830, 1141 - .name = "da830/omap l137", 1146 + .name = "da830/omap-l137 rev1.0", 1147 + }, 1148 + { 1149 + .variant = 0x8, 1150 + .part_no = 0xb7df, 1151 + .manufacturer = 0x017, 1152 + .cpu_id = DAVINCI_CPU_ID_DA830, 1153 + .name = "da830/omap-l137 rev1.1", 1154 + }, 1155 + { 1156 + .variant = 0x9, 1157 + .part_no = 0xb7df, 1158 + .manufacturer = 0x017, 1159 + .cpu_id = DAVINCI_CPU_ID_DA830, 1160 + .name = "da830/omap-l137 rev2.0", 1142 1161 }, 1143 1162 }; 1144 1163 ··· 1187 1178 static struct davinci_soc_info davinci_soc_info_da830 = { 1188 1179 .io_desc = da830_io_desc, 1189 1180 .io_desc_num = ARRAY_SIZE(da830_io_desc), 1190 - .jtag_id_base = IO_ADDRESS(DA8XX_JTAG_ID_REG), 1191 1181 .ids = da830_ids, 1192 1182 .ids_num = ARRAY_SIZE(da830_ids), 1193 1183 .cpu_clks = da830_clks, 1194 1184 .psc_bases = da830_psc_bases, 1195 1185 .psc_bases_num = ARRAY_SIZE(da830_psc_bases), 1196 - .pinmux_base = IO_ADDRESS(DA8XX_BOOT_CFG_BASE + 0x120), 1197 1186 .pinmux_pins = da830_pins, 1198 1187 .pinmux_pins_num = ARRAY_SIZE(da830_pins), 1199 1188 .intc_base = (void __iomem *)DA8XX_CP_INTC_VIRT, ··· 1208 1201 1209 1202 void __init da830_init(void) 1210 1203 { 1204 + da8xx_syscfg_base = ioremap(DA8XX_SYSCFG_BASE, SZ_4K); 1205 + if (WARN(!da8xx_syscfg_base, "Unable to map syscfg module")) 1206 + return; 1207 + 1208 + davinci_soc_info_da830.jtag_id_base = 1209 + DA8XX_SYSCFG_VIRT(DA8XX_JTAG_ID_REG); 1210 + davinci_soc_info_da830.pinmux_base = DA8XX_SYSCFG_VIRT(0x120); 1211 + 1211 1212 davinci_common_init(&davinci_soc_info_da830); 1212 1213 }
+276 -22
arch/arm/mach-davinci/da850.c
··· 11 11 * is licensed "as is" without any warranty of any kind, whether express 12 12 * or implied. 13 13 */ 14 - #include <linux/kernel.h> 15 14 #include <linux/init.h> 16 15 #include <linux/clk.h> 17 16 #include <linux/platform_device.h> 17 + #include <linux/cpufreq.h> 18 + #include <linux/regulator/consumer.h> 18 19 19 20 #include <asm/mach/map.h> 20 21 21 - #include <mach/clock.h> 22 22 #include <mach/psc.h> 23 - #include <mach/mux.h> 24 23 #include <mach/irqs.h> 25 24 #include <mach/cputype.h> 26 25 #include <mach/common.h> 27 26 #include <mach/time.h> 28 27 #include <mach/da8xx.h> 28 + #include <mach/cpufreq.h> 29 29 30 30 #include "clock.h" 31 31 #include "mux.h" 32 + 33 + /* SoC specific clock flags */ 34 + #define DA850_CLK_ASYNC3 BIT(16) 32 35 33 36 #define DA850_PLL1_BASE 0x01e1a000 34 37 #define DA850_TIMER64P2_BASE 0x01f0c000 35 38 #define DA850_TIMER64P3_BASE 0x01f0d000 36 39 37 40 #define DA850_REF_FREQ 24000000 41 + 42 + #define CFGCHIP3_ASYNC3_CLKSRC BIT(4) 43 + #define CFGCHIP0_PLL_MASTER_LOCK BIT(4) 44 + 45 + static int da850_set_armrate(struct clk *clk, unsigned long rate); 46 + static int da850_round_armrate(struct clk *clk, unsigned long rate); 47 + static int da850_set_pll0rate(struct clk *clk, unsigned long armrate); 38 48 39 49 static struct pll_data pll0_data = { 40 50 .num = 1, ··· 62 52 .parent = &ref_clk, 63 53 .pll_data = &pll0_data, 64 54 .flags = CLK_PLL, 55 + .set_rate = da850_set_pll0rate, 65 56 }; 66 57 67 58 static struct clk pll0_aux_clk = { ··· 221 210 .name = "tpcc1", 222 211 .parent = &pll0_sysclk2, 223 212 .lpsc = DA850_LPSC1_TPCC1, 213 + .gpsc = 1, 224 214 .flags = CLK_PSC | ALWAYS_ENABLED, 225 - .psc_ctlr = 1, 226 215 }; 227 216 228 217 static struct clk tptc2_clk = { 229 218 .name = "tptc2", 230 219 .parent = &pll0_sysclk2, 231 220 .lpsc = DA850_LPSC1_TPTC2, 221 + .gpsc = 1, 232 222 .flags = ALWAYS_ENABLED, 233 - .psc_ctlr = 1, 234 223 }; 235 224 236 225 static struct clk uart0_clk = { ··· 243 232 .name = "uart1", 244 233 .parent = &pll0_sysclk2, 245 234 .lpsc = DA8XX_LPSC1_UART1, 246 - .psc_ctlr = 1, 235 + .gpsc = 1, 236 + .flags = DA850_CLK_ASYNC3, 247 237 }; 248 238 249 239 static struct clk uart2_clk = { 250 240 .name = "uart2", 251 241 .parent = &pll0_sysclk2, 252 242 .lpsc = DA8XX_LPSC1_UART2, 253 - .psc_ctlr = 1, 243 + .gpsc = 1, 244 + .flags = DA850_CLK_ASYNC3, 254 245 }; 255 246 256 247 static struct clk aintc_clk = { ··· 266 253 .name = "gpio", 267 254 .parent = &pll0_sysclk4, 268 255 .lpsc = DA8XX_LPSC1_GPIO, 269 - .psc_ctlr = 1, 256 + .gpsc = 1, 270 257 }; 271 258 272 259 static struct clk i2c1_clk = { 273 260 .name = "i2c1", 274 261 .parent = &pll0_sysclk4, 275 262 .lpsc = DA8XX_LPSC1_I2C, 276 - .psc_ctlr = 1, 263 + .gpsc = 1, 277 264 }; 278 265 279 266 static struct clk emif3_clk = { 280 267 .name = "emif3", 281 268 .parent = &pll0_sysclk5, 282 269 .lpsc = DA8XX_LPSC1_EMIF3C, 270 + .gpsc = 1, 283 271 .flags = ALWAYS_ENABLED, 284 - .psc_ctlr = 1, 285 272 }; 286 273 287 274 static struct clk arm_clk = { ··· 289 276 .parent = &pll0_sysclk6, 290 277 .lpsc = DA8XX_LPSC0_ARM, 291 278 .flags = ALWAYS_ENABLED, 279 + .set_rate = da850_set_armrate, 280 + .round_rate = da850_round_armrate, 292 281 }; 293 282 294 283 static struct clk rmii_clk = { ··· 302 287 .name = "emac", 303 288 .parent = &pll0_sysclk4, 304 289 .lpsc = DA8XX_LPSC1_CPGMAC, 305 - .psc_ctlr = 1, 290 + .gpsc = 1, 306 291 }; 307 292 308 293 static struct clk mcasp_clk = { 309 294 .name = "mcasp", 310 295 .parent = &pll0_sysclk2, 311 296 .lpsc = DA8XX_LPSC1_McASP0, 312 - .psc_ctlr = 1, 297 + .gpsc = 1, 298 + .flags = DA850_CLK_ASYNC3, 313 299 }; 314 300 315 301 static struct clk lcdc_clk = { 316 302 .name = "lcdc", 317 303 .parent = &pll0_sysclk2, 318 304 .lpsc = DA8XX_LPSC1_LCDC, 319 - .psc_ctlr = 1, 305 + .gpsc = 1, 320 306 }; 321 307 322 308 static struct clk mmcsd_clk = { ··· 420 404 MUX_CFG(DA850, MII_RXD_0, 3, 28, 15, 8, false) 421 405 MUX_CFG(DA850, MDIO_CLK, 4, 0, 15, 8, false) 422 406 MUX_CFG(DA850, MDIO_D, 4, 4, 15, 8, false) 407 + MUX_CFG(DA850, RMII_TXD_0, 14, 12, 15, 8, false) 408 + MUX_CFG(DA850, RMII_TXD_1, 14, 8, 15, 8, false) 409 + MUX_CFG(DA850, RMII_TXEN, 14, 16, 15, 8, false) 410 + MUX_CFG(DA850, RMII_CRS_DV, 15, 4, 15, 8, false) 411 + MUX_CFG(DA850, RMII_RXD_0, 14, 24, 15, 8, false) 412 + MUX_CFG(DA850, RMII_RXD_1, 14, 20, 15, 8, false) 413 + MUX_CFG(DA850, RMII_RXER, 14, 28, 15, 8, false) 414 + MUX_CFG(DA850, RMII_MHZ_50_CLK, 15, 0, 15, 0, false) 423 415 /* McASP function */ 424 416 MUX_CFG(DA850, ACLKR, 0, 0, 15, 1, false) 425 417 MUX_CFG(DA850, ACLKX, 0, 4, 15, 1, false) ··· 530 506 MUX_CFG(DA850, EMA_WAIT_1, 6, 24, 15, 1, false) 531 507 MUX_CFG(DA850, NEMA_CS_2, 7, 0, 15, 1, false) 532 508 /* GPIO function */ 509 + MUX_CFG(DA850, GPIO2_6, 6, 4, 15, 8, false) 510 + MUX_CFG(DA850, GPIO2_8, 5, 28, 15, 8, false) 533 511 MUX_CFG(DA850, GPIO2_15, 5, 0, 15, 8, false) 534 - MUX_CFG(DA850, GPIO8_10, 18, 28, 15, 8, false) 535 512 MUX_CFG(DA850, GPIO4_0, 10, 28, 15, 8, false) 536 513 MUX_CFG(DA850, GPIO4_1, 10, 24, 15, 8, false) 537 514 #endif ··· 572 547 -1 573 548 }; 574 549 550 + const short da850_rmii_pins[] __initdata = { 551 + DA850_RMII_TXD_0, DA850_RMII_TXD_1, DA850_RMII_TXEN, 552 + DA850_RMII_CRS_DV, DA850_RMII_RXD_0, DA850_RMII_RXD_1, 553 + DA850_RMII_RXER, DA850_RMII_MHZ_50_CLK, DA850_MDIO_CLK, 554 + DA850_MDIO_D, 555 + -1 556 + }; 557 + 575 558 const short da850_mcasp_pins[] __initdata = { 576 559 DA850_AHCLKX, DA850_ACLKX, DA850_AFSX, 577 560 DA850_AHCLKR, DA850_ACLKR, DA850_AFSR, DA850_AMUTE, ··· 588 555 }; 589 556 590 557 const short da850_lcdcntl_pins[] __initdata = { 591 - DA850_LCD_D_1, DA850_LCD_D_2, DA850_LCD_D_3, DA850_LCD_D_4, 592 - DA850_LCD_D_5, DA850_LCD_D_6, DA850_LCD_D_7, DA850_LCD_D_8, 593 - DA850_LCD_D_9, DA850_LCD_D_10, DA850_LCD_D_11, DA850_LCD_D_12, 594 - DA850_LCD_D_13, DA850_LCD_D_14, DA850_LCD_D_15, DA850_LCD_PCLK, 595 - DA850_LCD_HSYNC, DA850_LCD_VSYNC, DA850_NLCD_AC_ENB_CS, DA850_GPIO2_15, 596 - DA850_GPIO8_10, 558 + DA850_LCD_D_0, DA850_LCD_D_1, DA850_LCD_D_2, DA850_LCD_D_3, 559 + DA850_LCD_D_4, DA850_LCD_D_5, DA850_LCD_D_6, DA850_LCD_D_7, 560 + DA850_LCD_D_8, DA850_LCD_D_9, DA850_LCD_D_10, DA850_LCD_D_11, 561 + DA850_LCD_D_12, DA850_LCD_D_13, DA850_LCD_D_14, DA850_LCD_D_15, 562 + DA850_LCD_PCLK, DA850_LCD_HSYNC, DA850_LCD_VSYNC, DA850_NLCD_AC_ENB_CS, 597 563 -1 598 564 }; 599 565 ··· 822 790 .clocksource_id = T0_TOP, 823 791 }; 824 792 793 + static void da850_set_async3_src(int pllnum) 794 + { 795 + struct clk *clk, *newparent = pllnum ? &pll1_sysclk2 : &pll0_sysclk2; 796 + struct davinci_clk *c; 797 + unsigned int v; 798 + int ret; 799 + 800 + for (c = da850_clks; c->lk.clk; c++) { 801 + clk = c->lk.clk; 802 + if (clk->flags & DA850_CLK_ASYNC3) { 803 + ret = clk_set_parent(clk, newparent); 804 + WARN(ret, "DA850: unable to re-parent clock %s", 805 + clk->name); 806 + } 807 + } 808 + 809 + v = __raw_readl(DA8XX_SYSCFG_VIRT(DA8XX_CFGCHIP3_REG)); 810 + if (pllnum) 811 + v |= CFGCHIP3_ASYNC3_CLKSRC; 812 + else 813 + v &= ~CFGCHIP3_ASYNC3_CLKSRC; 814 + __raw_writel(v, DA8XX_SYSCFG_VIRT(DA8XX_CFGCHIP3_REG)); 815 + } 816 + 817 + #ifdef CONFIG_CPU_FREQ 818 + /* 819 + * Notes: 820 + * According to the TRM, minimum PLLM results in maximum power savings. 821 + * The OPP definitions below should keep the PLLM as low as possible. 822 + * 823 + * The output of the PLLM must be between 400 to 600 MHz. 824 + * This rules out prediv of anything but divide-by-one for 24Mhz OSC input. 825 + */ 826 + struct da850_opp { 827 + unsigned int freq; /* in KHz */ 828 + unsigned int prediv; 829 + unsigned int mult; 830 + unsigned int postdiv; 831 + unsigned int cvdd_min; /* in uV */ 832 + unsigned int cvdd_max; /* in uV */ 833 + }; 834 + 835 + static const struct da850_opp da850_opp_300 = { 836 + .freq = 300000, 837 + .prediv = 1, 838 + .mult = 25, 839 + .postdiv = 2, 840 + .cvdd_min = 1140000, 841 + .cvdd_max = 1320000, 842 + }; 843 + 844 + static const struct da850_opp da850_opp_200 = { 845 + .freq = 200000, 846 + .prediv = 1, 847 + .mult = 25, 848 + .postdiv = 3, 849 + .cvdd_min = 1050000, 850 + .cvdd_max = 1160000, 851 + }; 852 + 853 + static const struct da850_opp da850_opp_96 = { 854 + .freq = 96000, 855 + .prediv = 1, 856 + .mult = 20, 857 + .postdiv = 5, 858 + .cvdd_min = 950000, 859 + .cvdd_max = 1050000, 860 + }; 861 + 862 + #define OPP(freq) \ 863 + { \ 864 + .index = (unsigned int) &da850_opp_##freq, \ 865 + .frequency = freq * 1000, \ 866 + } 867 + 868 + static struct cpufreq_frequency_table da850_freq_table[] = { 869 + OPP(300), 870 + OPP(200), 871 + OPP(96), 872 + { 873 + .index = 0, 874 + .frequency = CPUFREQ_TABLE_END, 875 + }, 876 + }; 877 + 878 + #ifdef CONFIG_REGULATOR 879 + static struct regulator *cvdd; 880 + 881 + static int da850_set_voltage(unsigned int index) 882 + { 883 + struct da850_opp *opp; 884 + 885 + if (!cvdd) 886 + return -ENODEV; 887 + 888 + opp = (struct da850_opp *) da850_freq_table[index].index; 889 + 890 + return regulator_set_voltage(cvdd, opp->cvdd_min, opp->cvdd_max); 891 + } 892 + 893 + static int da850_regulator_init(void) 894 + { 895 + cvdd = regulator_get(NULL, "cvdd"); 896 + if (WARN(IS_ERR(cvdd), "Unable to obtain voltage regulator for CVDD;" 897 + " voltage scaling unsupported\n")) { 898 + return PTR_ERR(cvdd); 899 + } 900 + 901 + return 0; 902 + } 903 + #endif 904 + 905 + static struct davinci_cpufreq_config cpufreq_info = { 906 + .freq_table = &da850_freq_table[0], 907 + #ifdef CONFIG_REGULATOR 908 + .init = da850_regulator_init, 909 + .set_voltage = da850_set_voltage, 910 + #endif 911 + }; 912 + 913 + static struct platform_device da850_cpufreq_device = { 914 + .name = "cpufreq-davinci", 915 + .dev = { 916 + .platform_data = &cpufreq_info, 917 + }, 918 + }; 919 + 920 + int __init da850_register_cpufreq(void) 921 + { 922 + return platform_device_register(&da850_cpufreq_device); 923 + } 924 + 925 + static int da850_round_armrate(struct clk *clk, unsigned long rate) 926 + { 927 + int i, ret = 0, diff; 928 + unsigned int best = (unsigned int) -1; 929 + 930 + rate /= 1000; /* convert to kHz */ 931 + 932 + for (i = 0; da850_freq_table[i].frequency != CPUFREQ_TABLE_END; i++) { 933 + diff = da850_freq_table[i].frequency - rate; 934 + if (diff < 0) 935 + diff = -diff; 936 + 937 + if (diff < best) { 938 + best = diff; 939 + ret = da850_freq_table[i].frequency; 940 + } 941 + } 942 + 943 + return ret * 1000; 944 + } 945 + 946 + static int da850_set_armrate(struct clk *clk, unsigned long index) 947 + { 948 + struct clk *pllclk = &pll0_clk; 949 + 950 + return clk_set_rate(pllclk, index); 951 + } 952 + 953 + static int da850_set_pll0rate(struct clk *clk, unsigned long index) 954 + { 955 + unsigned int prediv, mult, postdiv; 956 + struct da850_opp *opp; 957 + struct pll_data *pll = clk->pll_data; 958 + unsigned int v; 959 + int ret; 960 + 961 + opp = (struct da850_opp *) da850_freq_table[index].index; 962 + prediv = opp->prediv; 963 + mult = opp->mult; 964 + postdiv = opp->postdiv; 965 + 966 + /* Unlock writing to PLL registers */ 967 + v = __raw_readl(DA8XX_SYSCFG_VIRT(DA8XX_CFGCHIP0_REG)); 968 + v &= ~CFGCHIP0_PLL_MASTER_LOCK; 969 + __raw_writel(v, DA8XX_SYSCFG_VIRT(DA8XX_CFGCHIP0_REG)); 970 + 971 + ret = davinci_set_pllrate(pll, prediv, mult, postdiv); 972 + if (WARN_ON(ret)) 973 + return ret; 974 + 975 + return 0; 976 + } 977 + #else 978 + int __init da850_register_cpufreq(void) 979 + { 980 + return 0; 981 + } 982 + 983 + static int da850_set_armrate(struct clk *clk, unsigned long rate) 984 + { 985 + return -EINVAL; 986 + } 987 + 988 + static int da850_set_pll0rate(struct clk *clk, unsigned long armrate) 989 + { 990 + return -EINVAL; 991 + } 992 + 993 + static int da850_round_armrate(struct clk *clk, unsigned long rate) 994 + { 995 + return clk->rate; 996 + } 997 + #endif 998 + 999 + 825 1000 static struct davinci_soc_info davinci_soc_info_da850 = { 826 1001 .io_desc = da850_io_desc, 827 1002 .io_desc_num = ARRAY_SIZE(da850_io_desc), 828 - .jtag_id_base = IO_ADDRESS(DA8XX_JTAG_ID_REG), 829 1003 .ids = da850_ids, 830 1004 .ids_num = ARRAY_SIZE(da850_ids), 831 1005 .cpu_clks = da850_clks, 832 1006 .psc_bases = da850_psc_bases, 833 1007 .psc_bases_num = ARRAY_SIZE(da850_psc_bases), 834 - .pinmux_base = IO_ADDRESS(DA8XX_BOOT_CFG_BASE + 0x120), 835 1008 .pinmux_pins = da850_pins, 836 1009 .pinmux_pins_num = ARRAY_SIZE(da850_pins), 837 1010 .intc_base = (void __iomem *)DA8XX_CP_INTC_VIRT, ··· 1053 816 1054 817 void __init da850_init(void) 1055 818 { 819 + da8xx_syscfg_base = ioremap(DA8XX_SYSCFG_BASE, SZ_4K); 820 + if (WARN(!da8xx_syscfg_base, "Unable to map syscfg module")) 821 + return; 822 + 823 + davinci_soc_info_da850.jtag_id_base = 824 + DA8XX_SYSCFG_VIRT(DA8XX_JTAG_ID_REG); 825 + davinci_soc_info_da850.pinmux_base = DA8XX_SYSCFG_VIRT(0x120); 826 + 1056 827 davinci_common_init(&davinci_soc_info_da850); 828 + 829 + /* 830 + * Move the clock source of Async3 domain to PLL1 SYSCLK2. 831 + * This helps keeping the peripherals on this domain insulated 832 + * from CPU frequency changes caused by DVFS. The firmware sets 833 + * both PLL0 and PLL1 to the same frequency so, there should not 834 + * be any noticible change even in non-DVFS use cases. 835 + */ 836 + da850_set_async3_src(1); 1057 837 }
+87 -19
arch/arm/mach-davinci/devices-da8xx.c
··· 10 10 * the Free Software Foundation; either version 2 of the License, or 11 11 * (at your option) any later version. 12 12 */ 13 - #include <linux/module.h> 14 - #include <linux/kernel.h> 15 13 #include <linux/init.h> 16 14 #include <linux/platform_device.h> 17 15 #include <linux/dma-mapping.h> ··· 19 21 #include <mach/common.h> 20 22 #include <mach/time.h> 21 23 #include <mach/da8xx.h> 22 - #include <video/da8xx-fb.h> 24 + #include <mach/cpuidle.h> 23 25 24 26 #include "clock.h" 25 27 ··· 28 30 #define DA8XX_TPTC1_BASE 0x01c08400 29 31 #define DA8XX_WDOG_BASE 0x01c21000 /* DA8XX_TIMER64P1_BASE */ 30 32 #define DA8XX_I2C0_BASE 0x01c22000 33 + #define DA8XX_RTC_BASE 0x01C23000 31 34 #define DA8XX_EMAC_CPPI_PORT_BASE 0x01e20000 32 35 #define DA8XX_EMAC_CPGMACSS_BASE 0x01e22000 33 36 #define DA8XX_EMAC_CPGMAC_BASE 0x01e23000 ··· 41 42 #define DA8XX_EMAC_RAM_OFFSET 0x0000 42 43 #define DA8XX_MDIO_REG_OFFSET 0x4000 43 44 #define DA8XX_EMAC_CTRL_RAM_SIZE SZ_8K 45 + 46 + void __iomem *da8xx_syscfg_base; 44 47 45 48 static struct plat_serial8250_port da8xx_serial_pdata[] = { 46 49 { ··· 283 282 .resource = da8xx_emac_resources, 284 283 }; 285 284 285 + int __init da8xx_register_emac(void) 286 + { 287 + return platform_device_register(&da8xx_emac_device); 288 + } 289 + 286 290 static struct resource da830_mcasp1_resources[] = { 287 291 { 288 292 .name = "mcasp1", ··· 344 338 .resource = da850_mcasp_resources, 345 339 }; 346 340 347 - int __init da8xx_register_emac(void) 348 - { 349 - return platform_device_register(&da8xx_emac_device); 350 - } 351 - 352 - void __init da8xx_init_mcasp(int id, struct snd_platform_data *pdata) 341 + void __init da8xx_register_mcasp(int id, struct snd_platform_data *pdata) 353 342 { 354 343 /* DA830/OMAP-L137 has 3 instances of McASP */ 355 344 if (cpu_is_davinci_da830() && id == 1) { ··· 380 379 .raster_order = 0, 381 380 }; 382 381 383 - static struct da8xx_lcdc_platform_data da850_evm_lcdc_pdata = { 384 - .manu_name = "sharp", 385 - .controller_data = &lcd_cfg, 386 - .type = "Sharp_LK043T1DG01", 382 + struct da8xx_lcdc_platform_data sharp_lcd035q3dg01_pdata = { 383 + .manu_name = "sharp", 384 + .controller_data = &lcd_cfg, 385 + .type = "Sharp_LCD035Q3DG01", 386 + }; 387 + 388 + struct da8xx_lcdc_platform_data sharp_lk043t1dg01_pdata = { 389 + .manu_name = "sharp", 390 + .controller_data = &lcd_cfg, 391 + .type = "Sharp_LK043T1DG01", 387 392 }; 388 393 389 394 static struct resource da8xx_lcdc_resources[] = { ··· 405 398 }, 406 399 }; 407 400 408 - static struct platform_device da850_lcdc_device = { 401 + static struct platform_device da8xx_lcdc_device = { 409 402 .name = "da8xx_lcdc", 410 403 .id = 0, 411 404 .num_resources = ARRAY_SIZE(da8xx_lcdc_resources), 412 405 .resource = da8xx_lcdc_resources, 413 - .dev = { 414 - .platform_data = &da850_evm_lcdc_pdata, 415 - } 416 406 }; 417 407 418 - int __init da8xx_register_lcdc(void) 408 + int __init da8xx_register_lcdc(struct da8xx_lcdc_platform_data *pdata) 419 409 { 420 - return platform_device_register(&da850_lcdc_device); 410 + da8xx_lcdc_device.dev.platform_data = pdata; 411 + return platform_device_register(&da8xx_lcdc_device); 421 412 } 422 413 423 414 static struct resource da8xx_mmcsd0_resources[] = { ··· 453 448 da8xx_mmcsd0_device.dev.platform_data = config; 454 449 return platform_device_register(&da8xx_mmcsd0_device); 455 450 } 451 + 452 + static struct resource da8xx_rtc_resources[] = { 453 + { 454 + .start = DA8XX_RTC_BASE, 455 + .end = DA8XX_RTC_BASE + SZ_4K - 1, 456 + .flags = IORESOURCE_MEM, 457 + }, 458 + { /* timer irq */ 459 + .start = IRQ_DA8XX_RTC, 460 + .end = IRQ_DA8XX_RTC, 461 + .flags = IORESOURCE_IRQ, 462 + }, 463 + { /* alarm irq */ 464 + .start = IRQ_DA8XX_RTC, 465 + .end = IRQ_DA8XX_RTC, 466 + .flags = IORESOURCE_IRQ, 467 + }, 468 + }; 469 + 470 + static struct platform_device da8xx_rtc_device = { 471 + .name = "omap_rtc", 472 + .id = -1, 473 + .num_resources = ARRAY_SIZE(da8xx_rtc_resources), 474 + .resource = da8xx_rtc_resources, 475 + }; 476 + 477 + int da8xx_register_rtc(void) 478 + { 479 + /* Unlock the rtc's registers */ 480 + __raw_writel(0x83e70b13, IO_ADDRESS(DA8XX_RTC_BASE + 0x6c)); 481 + __raw_writel(0x95a4f1e0, IO_ADDRESS(DA8XX_RTC_BASE + 0x70)); 482 + 483 + return platform_device_register(&da8xx_rtc_device); 484 + } 485 + 486 + static struct resource da8xx_cpuidle_resources[] = { 487 + { 488 + .start = DA8XX_DDR2_CTL_BASE, 489 + .end = DA8XX_DDR2_CTL_BASE + SZ_32K - 1, 490 + .flags = IORESOURCE_MEM, 491 + }, 492 + }; 493 + 494 + /* DA8XX devices support DDR2 power down */ 495 + static struct davinci_cpuidle_config da8xx_cpuidle_pdata = { 496 + .ddr2_pdown = 1, 497 + }; 498 + 499 + 500 + static struct platform_device da8xx_cpuidle_device = { 501 + .name = "cpuidle-davinci", 502 + .num_resources = ARRAY_SIZE(da8xx_cpuidle_resources), 503 + .resource = da8xx_cpuidle_resources, 504 + .dev = { 505 + .platform_data = &da8xx_cpuidle_pdata, 506 + }, 507 + }; 508 + 509 + int __init da8xx_register_cpuidle(void) 510 + { 511 + return platform_device_register(&da8xx_cpuidle_device); 512 + } 513 +
+1 -5
arch/arm/mach-davinci/devices.c
··· 9 9 * (at your option) any later version. 10 10 */ 11 11 12 - #include <linux/module.h> 13 - #include <linux/kernel.h> 14 12 #include <linux/init.h> 15 13 #include <linux/platform_device.h> 16 14 #include <linux/dma-mapping.h> 17 15 #include <linux/io.h> 18 - 19 - #include <asm/mach/map.h> 20 16 21 17 #include <mach/hardware.h> 22 18 #include <mach/i2c.h> ··· 173 177 mmcsd1_resources[0].start = DM365_MMCSD1_BASE; 174 178 mmcsd1_resources[0].end = DM365_MMCSD1_BASE + 175 179 SZ_4K - 1; 176 - mmcsd0_resources[2].start = IRQ_DM365_SDIOINT1; 180 + mmcsd1_resources[2].start = IRQ_DM365_SDIOINT1; 177 181 } else 178 182 break; 179 183
-2
arch/arm/mach-davinci/dm355.c
··· 8 8 * is licensed "as is" without any warranty of any kind, whether express 9 9 * or implied. 10 10 */ 11 - #include <linux/kernel.h> 12 11 #include <linux/init.h> 13 12 #include <linux/clk.h> 14 13 #include <linux/serial_8250.h> ··· 20 21 #include <asm/mach/map.h> 21 22 22 23 #include <mach/dm355.h> 23 - #include <mach/clock.h> 24 24 #include <mach/cputype.h> 25 25 #include <mach/edma.h> 26 26 #include <mach/psc.h>
+102 -5
arch/arm/mach-davinci/dm365.c
··· 12 12 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 13 * GNU General Public License for more details. 14 14 */ 15 - #include <linux/kernel.h> 16 15 #include <linux/init.h> 17 16 #include <linux/clk.h> 18 17 #include <linux/serial_8250.h> ··· 22 23 #include <asm/mach/map.h> 23 24 24 25 #include <mach/dm365.h> 25 - #include <mach/clock.h> 26 26 #include <mach/cputype.h> 27 27 #include <mach/edma.h> 28 28 #include <mach/psc.h> ··· 30 32 #include <mach/time.h> 31 33 #include <mach/serial.h> 32 34 #include <mach/common.h> 35 + #include <mach/asp.h> 36 + #include <mach/keyscan.h> 33 37 34 38 #include "clock.h" 35 39 #include "mux.h" ··· 369 369 370 370 static struct clk usb_clk = { 371 371 .name = "usb", 372 - .parent = &pll2_sysclk1, 372 + .parent = &pll1_aux_clk, 373 373 .lpsc = DAVINCI_LPSC_USB, 374 374 }; 375 375 ··· 456 456 CLK(NULL, "usb", &usb_clk), 457 457 CLK("davinci_emac.1", NULL, &emac_clk), 458 458 CLK("voice_codec", NULL, &voicecodec_clk), 459 - CLK("soc-audio.0", NULL, &asp0_clk), 459 + CLK("davinci-asp.0", NULL, &asp0_clk), 460 460 CLK(NULL, "rto", &rto_clk), 461 461 CLK(NULL, "mjcp", &mjcp_clk), 462 462 CLK(NULL, NULL, NULL), ··· 531 531 MUX_CFG(DM365, EMAC_MDIO, 3, 1, 1, 1, false) 532 532 MUX_CFG(DM365, EMAC_MDCLK, 3, 0, 1, 1, false) 533 533 534 - MUX_CFG(DM365, KEYPAD, 2, 0, 0x3f, 0x3f, false) 534 + MUX_CFG(DM365, KEYSCAN, 2, 0, 0x3f, 0x3f, false) 535 535 536 536 MUX_CFG(DM365, PWM0, 1, 0, 3, 2, false) 537 537 MUX_CFG(DM365, PWM0_G23, 3, 26, 3, 3, false) ··· 603 603 INT_CFG(DM365, INT_IMX1_DISABLE, 24, 1, 0, false) 604 604 INT_CFG(DM365, INT_NSF_ENABLE, 25, 1, 1, false) 605 605 INT_CFG(DM365, INT_NSF_DISABLE, 25, 1, 0, false) 606 + 607 + EVT_CFG(DM365, EVT2_ASP_TX, 0, 1, 0, false) 608 + EVT_CFG(DM365, EVT3_ASP_RX, 1, 1, 0, false) 606 609 #endif 607 610 }; 608 611 ··· 699 696 [IRQ_I2C] = 3, 700 697 [IRQ_UARTINT0] = 3, 701 698 [IRQ_UARTINT1] = 3, 699 + [IRQ_DM365_RTCINT] = 3, 702 700 [IRQ_DM365_SPIINT0_0] = 3, 703 701 [IRQ_DM365_SPIINT3_0] = 3, 704 702 [IRQ_DM365_GPIO0] = 3, ··· 810 806 .resource = edma_resources, 811 807 }; 812 808 809 + static struct resource dm365_asp_resources[] = { 810 + { 811 + .start = DAVINCI_DM365_ASP0_BASE, 812 + .end = DAVINCI_DM365_ASP0_BASE + SZ_8K - 1, 813 + .flags = IORESOURCE_MEM, 814 + }, 815 + { 816 + .start = DAVINCI_DMA_ASP0_TX, 817 + .end = DAVINCI_DMA_ASP0_TX, 818 + .flags = IORESOURCE_DMA, 819 + }, 820 + { 821 + .start = DAVINCI_DMA_ASP0_RX, 822 + .end = DAVINCI_DMA_ASP0_RX, 823 + .flags = IORESOURCE_DMA, 824 + }, 825 + }; 826 + 827 + static struct platform_device dm365_asp_device = { 828 + .name = "davinci-asp", 829 + .id = 0, 830 + .num_resources = ARRAY_SIZE(dm365_asp_resources), 831 + .resource = dm365_asp_resources, 832 + }; 833 + 834 + static struct resource dm365_rtc_resources[] = { 835 + { 836 + .start = DM365_RTC_BASE, 837 + .end = DM365_RTC_BASE + SZ_1K - 1, 838 + .flags = IORESOURCE_MEM, 839 + }, 840 + { 841 + .start = IRQ_DM365_RTCINT, 842 + .flags = IORESOURCE_IRQ, 843 + }, 844 + }; 845 + 846 + static struct platform_device dm365_rtc_device = { 847 + .name = "rtc_davinci", 848 + .id = 0, 849 + .num_resources = ARRAY_SIZE(dm365_rtc_resources), 850 + .resource = dm365_rtc_resources, 851 + }; 852 + 813 853 static struct map_desc dm365_io_desc[] = { 814 854 { 815 855 .virtual = IO_VIRT, ··· 868 820 /* MT_MEMORY_NONCACHED requires supersection alignment */ 869 821 .type = MT_DEVICE, 870 822 }, 823 + }; 824 + 825 + static struct resource dm365_ks_resources[] = { 826 + { 827 + /* registers */ 828 + .start = DM365_KEYSCAN_BASE, 829 + .end = DM365_KEYSCAN_BASE + SZ_1K - 1, 830 + .flags = IORESOURCE_MEM, 831 + }, 832 + { 833 + /* interrupt */ 834 + .start = IRQ_DM365_KEYINT, 835 + .end = IRQ_DM365_KEYINT, 836 + .flags = IORESOURCE_IRQ, 837 + }, 838 + }; 839 + 840 + static struct platform_device dm365_ks_device = { 841 + .name = "davinci_keyscan", 842 + .id = 0, 843 + .num_resources = ARRAY_SIZE(dm365_ks_resources), 844 + .resource = dm365_ks_resources, 871 845 }; 872 846 873 847 /* Contents of JTAG ID register used to identify exact cpu type */ ··· 976 906 .sram_dma = 0x00010000, 977 907 .sram_len = SZ_32K, 978 908 }; 909 + 910 + void __init dm365_init_asp(struct snd_platform_data *pdata) 911 + { 912 + davinci_cfg_reg(DM365_MCBSP0_BDX); 913 + davinci_cfg_reg(DM365_MCBSP0_X); 914 + davinci_cfg_reg(DM365_MCBSP0_BFSX); 915 + davinci_cfg_reg(DM365_MCBSP0_BDR); 916 + davinci_cfg_reg(DM365_MCBSP0_R); 917 + davinci_cfg_reg(DM365_MCBSP0_BFSR); 918 + davinci_cfg_reg(DM365_EVT2_ASP_TX); 919 + davinci_cfg_reg(DM365_EVT3_ASP_RX); 920 + dm365_asp_device.dev.platform_data = pdata; 921 + platform_device_register(&dm365_asp_device); 922 + } 923 + 924 + void __init dm365_init_ks(struct davinci_ks_platform_data *pdata) 925 + { 926 + davinci_cfg_reg(DM365_KEYSCAN); 927 + dm365_ks_device.dev.platform_data = pdata; 928 + platform_device_register(&dm365_ks_device); 929 + } 930 + 931 + void __init dm365_init_rtc(void) 932 + { 933 + davinci_cfg_reg(DM365_INT_PRTCSS); 934 + platform_device_register(&dm365_rtc_device); 935 + } 979 936 980 937 void __init dm365_init(void) 981 938 {
+5 -2
arch/arm/mach-davinci/dm644x.c
··· 8 8 * is licensed "as is" without any warranty of any kind, whether express 9 9 * or implied. 10 10 */ 11 - #include <linux/kernel.h> 12 11 #include <linux/init.h> 13 12 #include <linux/clk.h> 14 13 #include <linux/serial_8250.h> ··· 17 18 #include <asm/mach/map.h> 18 19 19 20 #include <mach/dm644x.h> 20 - #include <mach/clock.h> 21 21 #include <mach/cputype.h> 22 22 #include <mach/edma.h> 23 23 #include <mach/irqs.h> ··· 368 370 MUX_CFG(DM644X, HPIEN_DISABLE, 0, 29, 1, 0, true) 369 371 370 372 MUX_CFG(DM644X, AEAW, 0, 0, 31, 31, true) 373 + MUX_CFG(DM644X, AEAW0, 0, 0, 1, 0, true) 374 + MUX_CFG(DM644X, AEAW1, 0, 1, 1, 0, true) 375 + MUX_CFG(DM644X, AEAW2, 0, 2, 1, 0, true) 376 + MUX_CFG(DM644X, AEAW3, 0, 3, 1, 0, true) 377 + MUX_CFG(DM644X, AEAW4, 0, 4, 1, 0, true) 371 378 372 379 MUX_CFG(DM644X, MSTK, 1, 9, 1, 0, false) 373 380
+8 -3
arch/arm/mach-davinci/dm646x.c
··· 8 8 * is licensed "as is" without any warranty of any kind, whether express 9 9 * or implied. 10 10 */ 11 - #include <linux/kernel.h> 12 11 #include <linux/init.h> 13 12 #include <linux/clk.h> 14 13 #include <linux/serial_8250.h> ··· 17 18 #include <asm/mach/map.h> 18 19 19 20 #include <mach/dm646x.h> 20 - #include <mach/clock.h> 21 21 #include <mach/cputype.h> 22 22 #include <mach/edma.h> 23 23 #include <mach/irqs.h> ··· 787 789 .part_no = 0xb770, 788 790 .manufacturer = 0x017, 789 791 .cpu_id = DAVINCI_CPU_ID_DM6467, 790 - .name = "dm6467", 792 + .name = "dm6467_rev1.x", 793 + }, 794 + { 795 + .variant = 0x1, 796 + .part_no = 0xb770, 797 + .manufacturer = 0x017, 798 + .cpu_id = DAVINCI_CPU_ID_DM6467, 799 + .name = "dm6467_rev3.x", 791 800 }, 792 801 }; 793 802
+57 -48
arch/arm/mach-davinci/dma.c
··· 18 18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 19 */ 20 20 #include <linux/kernel.h> 21 - #include <linux/sched.h> 22 21 #include <linux/init.h> 23 22 #include <linux/module.h> 24 23 #include <linux/interrupt.h> 25 24 #include <linux/platform_device.h> 26 - #include <linux/spinlock.h> 27 - #include <linux/compiler.h> 28 25 #include <linux/io.h> 29 26 30 - #include <mach/cputype.h> 31 - #include <mach/memory.h> 32 - #include <mach/hardware.h> 33 - #include <mach/irqs.h> 34 27 #include <mach/edma.h> 35 - #include <mach/mux.h> 36 - 37 28 38 29 /* Offsets matching "struct edmacc_param" */ 39 30 #define PARM_OPT 0x00 ··· 500 509 return IRQ_HANDLED; 501 510 } 502 511 503 - static int reserve_contiguous_params(int ctlr, unsigned int id, 504 - unsigned int num_params, 505 - unsigned int start_param) 512 + static int reserve_contiguous_slots(int ctlr, unsigned int id, 513 + unsigned int num_slots, 514 + unsigned int start_slot) 506 515 { 507 516 int i, j; 508 - unsigned int count = num_params; 517 + unsigned int count = num_slots; 518 + int stop_slot = start_slot; 519 + DECLARE_BITMAP(tmp_inuse, EDMA_MAX_PARAMENTRY); 509 520 510 - for (i = start_param; i < edma_info[ctlr]->num_slots; ++i) { 521 + for (i = start_slot; i < edma_info[ctlr]->num_slots; ++i) { 511 522 j = EDMA_CHAN_SLOT(i); 512 - if (!test_and_set_bit(j, edma_info[ctlr]->edma_inuse)) 523 + if (!test_and_set_bit(j, edma_info[ctlr]->edma_inuse)) { 524 + /* Record our current beginning slot */ 525 + if (count == num_slots) 526 + stop_slot = i; 527 + 513 528 count--; 529 + set_bit(j, tmp_inuse); 530 + 514 531 if (count == 0) 515 532 break; 516 - else if (id == EDMA_CONT_PARAMS_FIXED_EXACT) 517 - break; 518 - else 519 - count = num_params; 533 + } else { 534 + clear_bit(j, tmp_inuse); 535 + 536 + if (id == EDMA_CONT_PARAMS_FIXED_EXACT) { 537 + stop_slot = i; 538 + break; 539 + } else 540 + count = num_slots; 541 + } 520 542 } 521 543 522 544 /* 523 545 * We have to clear any bits that we set 524 - * if we run out parameter RAMs, i.e we do find a set 525 - * of contiguous parameter RAMs but do not find the exact number 526 - * requested as we may reach the total number of parameter RAMs 546 + * if we run out parameter RAM slots, i.e we do find a set 547 + * of contiguous parameter RAM slots but do not find the exact number 548 + * requested as we may reach the total number of parameter RAM slots 527 549 */ 528 - if (count) { 529 - for (j = i - num_params + count + 1; j <= i ; ++j) 550 + if (i == edma_info[ctlr]->num_slots) 551 + stop_slot = i; 552 + 553 + for (j = start_slot; j < stop_slot; j++) 554 + if (test_bit(j, tmp_inuse)) 530 555 clear_bit(j, edma_info[ctlr]->edma_inuse); 531 556 557 + if (count) 532 558 return -EBUSY; 533 - } 534 559 535 - for (j = i - num_params + 1; j <= i; ++j) 560 + for (j = i - num_slots + 1; j <= i; ++j) 536 561 memcpy_toio(edmacc_regs_base[ctlr] + PARM_OFFSET(j), 537 562 &dummy_paramset, PARM_SIZE); 538 563 539 - return EDMA_CTLR_CHAN(ctlr, i - num_params + 1); 564 + return EDMA_CTLR_CHAN(ctlr, i - num_slots + 1); 540 565 } 541 566 542 567 /*-----------------------------------------------------------------------*/ ··· 750 743 /** 751 744 * edma_alloc_cont_slots- alloc contiguous parameter RAM slots 752 745 * The API will return the starting point of a set of 753 - * contiguous PARAM's that have been requested 746 + * contiguous parameter RAM slots that have been requested 754 747 * 755 748 * @id: can only be EDMA_CONT_PARAMS_ANY or EDMA_CONT_PARAMS_FIXED_EXACT 756 749 * or EDMA_CONT_PARAMS_FIXED_NOT_EXACT 757 - * @count: number of contiguous Paramter RAM's 758 - * @param - the start value of Parameter RAM that should be passed if id 750 + * @count: number of contiguous Paramter RAM slots 751 + * @slot - the start value of Parameter RAM slot that should be passed if id 759 752 * is EDMA_CONT_PARAMS_FIXED_EXACT or EDMA_CONT_PARAMS_FIXED_NOT_EXACT 760 753 * 761 754 * If id is EDMA_CONT_PARAMS_ANY then the API starts looking for a set of 762 - * contiguous Parameter RAMs from parameter RAM 64 in the case of DaVinci SOCs 763 - * and 32 in the case of Primus 755 + * contiguous Parameter RAM slots from parameter RAM 64 in the case of 756 + * DaVinci SOCs and 32 in the case of DA8xx SOCs. 764 757 * 765 758 * If id is EDMA_CONT_PARAMS_FIXED_EXACT then the API starts looking for a 766 - * set of contiguous parameter RAMs from the "param" that is passed as an 759 + * set of contiguous parameter RAM slots from the "slot" that is passed as an 767 760 * argument to the API. 768 761 * 769 762 * If id is EDMA_CONT_PARAMS_FIXED_NOT_EXACT then the API initially tries 770 - * starts looking for a set of contiguous parameter RAMs from the "param" 763 + * starts looking for a set of contiguous parameter RAMs from the "slot" 771 764 * that is passed as an argument to the API. On failure the API will try to 772 - * find a set of contiguous Parameter RAMs in the remaining Parameter RAMs 765 + * find a set of contiguous Parameter RAM slots from the remaining Parameter 766 + * RAM slots 773 767 */ 774 768 int edma_alloc_cont_slots(unsigned ctlr, unsigned int id, int slot, int count) 775 769 { ··· 779 771 * the number of channels and lesser than the total number 780 772 * of slots 781 773 */ 782 - if (slot < edma_info[ctlr]->num_channels || 783 - slot >= edma_info[ctlr]->num_slots) 774 + if ((id != EDMA_CONT_PARAMS_ANY) && 775 + (slot < edma_info[ctlr]->num_channels || 776 + slot >= edma_info[ctlr]->num_slots)) 784 777 return -EINVAL; 785 778 786 779 /* 787 - * The number of parameter RAMs requested cannot be less than 1 780 + * The number of parameter RAM slots requested cannot be less than 1 788 781 * and cannot be more than the number of slots minus the number of 789 782 * channels 790 783 */ ··· 795 786 796 787 switch (id) { 797 788 case EDMA_CONT_PARAMS_ANY: 798 - return reserve_contiguous_params(ctlr, id, count, 789 + return reserve_contiguous_slots(ctlr, id, count, 799 790 edma_info[ctlr]->num_channels); 800 791 case EDMA_CONT_PARAMS_FIXED_EXACT: 801 792 case EDMA_CONT_PARAMS_FIXED_NOT_EXACT: 802 - return reserve_contiguous_params(ctlr, id, count, slot); 793 + return reserve_contiguous_slots(ctlr, id, count, slot); 803 794 default: 804 795 return -EINVAL; 805 796 } ··· 808 799 EXPORT_SYMBOL(edma_alloc_cont_slots); 809 800 810 801 /** 811 - * edma_free_cont_slots - deallocate DMA parameter RAMs 812 - * @slot: first parameter RAM of a set of parameter RAMs to be freed 813 - * @count: the number of contiguous parameter RAMs to be freed 802 + * edma_free_cont_slots - deallocate DMA parameter RAM slots 803 + * @slot: first parameter RAM of a set of parameter RAM slots to be freed 804 + * @count: the number of contiguous parameter RAM slots to be freed 814 805 * 815 806 * This deallocates the parameter RAM slots allocated by 816 807 * edma_alloc_cont_slots. 817 808 * Callers/applications need to keep track of sets of contiguous 818 - * parameter RAMs that have been allocated using the edma_alloc_cont_slots 809 + * parameter RAM slots that have been allocated using the edma_alloc_cont_slots 819 810 * API. 820 811 * Callers are responsible for ensuring the slots are inactive, and will 821 812 * not be activated. 822 813 */ 823 814 int edma_free_cont_slots(unsigned slot, int count) 824 815 { 825 - unsigned ctlr; 816 + unsigned ctlr, slot_to_free; 826 817 int i; 827 818 828 819 ctlr = EDMA_CTLR(slot); ··· 835 826 836 827 for (i = slot; i < slot + count; ++i) { 837 828 ctlr = EDMA_CTLR(i); 838 - slot = EDMA_CHAN_SLOT(i); 829 + slot_to_free = EDMA_CHAN_SLOT(i); 839 830 840 - memcpy_toio(edmacc_regs_base[ctlr] + PARM_OFFSET(slot), 831 + memcpy_toio(edmacc_regs_base[ctlr] + PARM_OFFSET(slot_to_free), 841 832 &dummy_paramset, PARM_SIZE); 842 - clear_bit(slot, edma_info[ctlr]->edma_inuse); 833 + clear_bit(slot_to_free, edma_info[ctlr]->edma_inuse); 843 834 } 844 835 845 836 return 0;
-9
arch/arm/mach-davinci/gpio.c
··· 12 12 13 13 #include <linux/errno.h> 14 14 #include <linux/kernel.h> 15 - #include <linux/list.h> 16 - #include <linux/module.h> 17 15 #include <linux/clk.h> 18 16 #include <linux/err.h> 19 17 #include <linux/io.h> 20 - #include <linux/irq.h> 21 - #include <linux/bitops.h> 22 18 23 - #include <mach/cputype.h> 24 - #include <mach/irqs.h> 25 - #include <mach/hardware.h> 26 - #include <mach/common.h> 27 19 #include <mach/gpio.h> 28 20 29 21 #include <asm/mach/irq.h> 30 - 31 22 32 23 static DEFINE_SPINLOCK(gpio_lock); 33 24
+3
arch/arm/mach-davinci/include/mach/asp.h
··· 11 11 #define DAVINCI_ASP0_BASE 0x01E02000 12 12 #define DAVINCI_ASP1_BASE 0x01E04000 13 13 14 + /* Bases of dm365 register banks */ 15 + #define DAVINCI_DM365_ASP0_BASE 0x01D02000 16 + 14 17 /* Bases of dm646x register banks */ 15 18 #define DAVINCI_DM646X_MCASP0_REG_BASE 0x01D01000 16 19 #define DAVINCI_DM646X_MCASP1_REG_BASE 0x01D01800
-6
arch/arm/mach-davinci/include/mach/common.h
··· 20 20 extern void __iomem *davinci_intc_base; 21 21 extern int davinci_intc_type; 22 22 23 - /* parameters describe VBUS sourcing for host mode */ 24 - extern void setup_usb(unsigned mA, unsigned potpgt_msec); 25 - 26 - /* parameters describe VBUS sourcing for host mode */ 27 - extern void setup_usb(unsigned mA, unsigned potpgt_msec); 28 - 29 23 struct davinci_timer_instance { 30 24 void __iomem *base; 31 25 u32 bottom_irq;
+26
arch/arm/mach-davinci/include/mach/cpufreq.h
··· 1 + /* 2 + * TI DaVinci CPUFreq platform support. 3 + * 4 + * Copyright (C) 2009 Texas Instruments, Inc. http://www.ti.com/ 5 + * 6 + * This program is free software; you can redistribute it and/or 7 + * modify it under the terms of the GNU General Public License as 8 + * published by the Free Software Foundation version 2. 9 + * 10 + * This program is distributed "as is" WITHOUT ANY WARRANTY of any 11 + * kind, whether express or implied; without even the implied warranty 12 + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 + * GNU General Public License for more details. 14 + */ 15 + #ifndef _MACH_DAVINCI_CPUFREQ_H 16 + #define _MACH_DAVINCI_CPUFREQ_H 17 + 18 + #include <linux/cpufreq.h> 19 + 20 + struct davinci_cpufreq_config { 21 + struct cpufreq_frequency_table *freq_table; 22 + int (*set_voltage) (unsigned int index); 23 + int (*init) (void); 24 + }; 25 + 26 + #endif
+17
arch/arm/mach-davinci/include/mach/cpuidle.h
··· 1 + /* 2 + * TI DaVinci cpuidle platform support 3 + * 4 + * 2009 (C) Texas Instruments, Inc. http://www.ti.com/ 5 + * 6 + * This file is licensed under the terms of the GNU General Public License 7 + * version 2. This program is licensed "as is" without any warranty of any 8 + * kind, whether express or implied. 9 + */ 10 + #ifndef _MACH_DAVINCI_CPUIDLE_H 11 + #define _MACH_DAVINCI_CPUIDLE_H 12 + 13 + struct davinci_cpuidle_config { 14 + u32 ddr2_pdown; 15 + }; 16 + 17 + #endif
+22 -4
arch/arm/mach-davinci/include/mach/da8xx.h
··· 11 11 #ifndef __ASM_ARCH_DAVINCI_DA8XX_H 12 12 #define __ASM_ARCH_DAVINCI_DA8XX_H 13 13 14 + #include <video/da8xx-fb.h> 15 + 14 16 #include <mach/serial.h> 15 17 #include <mach/edma.h> 16 18 #include <mach/i2c.h> 17 19 #include <mach/emac.h> 18 20 #include <mach/asp.h> 19 21 #include <mach/mmc.h> 22 + #include <mach/usb.h> 23 + 24 + extern void __iomem *da8xx_syscfg_base; 20 25 21 26 /* 22 27 * The cp_intc interrupt controller for the da8xx isn't in the same ··· 34 29 #define DA8XX_CP_INTC_SIZE SZ_8K 35 30 #define DA8XX_CP_INTC_VIRT (IO_VIRT - DA8XX_CP_INTC_SIZE - SZ_4K) 36 31 37 - #define DA8XX_BOOT_CFG_BASE (IO_PHYS + 0x14000) 32 + #define DA8XX_SYSCFG_BASE (IO_PHYS + 0x14000) 33 + #define DA8XX_SYSCFG_VIRT(x) (da8xx_syscfg_base + (x)) 34 + #define DA8XX_JTAG_ID_REG 0x18 35 + #define DA8XX_CFGCHIP0_REG 0x17c 36 + #define DA8XX_CFGCHIP2_REG 0x184 37 + #define DA8XX_CFGCHIP3_REG 0x188 38 38 39 39 #define DA8XX_PSC0_BASE 0x01c10000 40 40 #define DA8XX_PLL0_BASE 0x01c11000 41 - #define DA8XX_JTAG_ID_REG 0x01c14018 42 41 #define DA8XX_TIMER64P0_BASE 0x01c20000 43 42 #define DA8XX_TIMER64P1_BASE 0x01c21000 44 43 #define DA8XX_GPIO_BASE 0x01e26000 ··· 52 43 #define DA8XX_AEMIF_CS2_BASE 0x60000000 53 44 #define DA8XX_AEMIF_CS3_BASE 0x62000000 54 45 #define DA8XX_AEMIF_CTL_BASE 0x68000000 46 + #define DA8XX_DDR2_CTL_BASE 0xb0000000 55 47 56 48 #define PINMUX0 0x00 57 49 #define PINMUX1 0x04 ··· 81 71 int da8xx_register_edma(void); 82 72 int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata); 83 73 int da8xx_register_watchdog(void); 74 + int da8xx_register_usb20(unsigned mA, unsigned potpgt); 75 + int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata); 84 76 int da8xx_register_emac(void); 85 - int da8xx_register_lcdc(void); 77 + int da8xx_register_lcdc(struct da8xx_lcdc_platform_data *pdata); 86 78 int da8xx_register_mmcsd0(struct davinci_mmc_config *config); 87 - void __init da8xx_init_mcasp(int id, struct snd_platform_data *pdata); 79 + void __init da8xx_register_mcasp(int id, struct snd_platform_data *pdata); 80 + int da8xx_register_rtc(void); 81 + int da850_register_cpufreq(void); 82 + int da8xx_register_cpuidle(void); 88 83 89 84 extern struct platform_device da8xx_serial_device; 90 85 extern struct emac_platform_data da8xx_emac_pdata; 86 + extern struct da8xx_lcdc_platform_data sharp_lcd035q3dg01_pdata; 87 + extern struct da8xx_lcdc_platform_data sharp_lk043t1dg01_pdata; 91 88 92 89 extern const short da830_emif25_pins[]; 93 90 extern const short da830_spi0_pins[]; ··· 127 110 extern const short da850_i2c0_pins[]; 128 111 extern const short da850_i2c1_pins[]; 129 112 extern const short da850_cpgmac_pins[]; 113 + extern const short da850_rmii_pins[]; 130 114 extern const short da850_mcasp_pins[]; 131 115 extern const short da850_lcdcntl_pins[]; 132 116 extern const short da850_mmcsd0_pins[];
+10
arch/arm/mach-davinci/include/mach/dm365.h
··· 16 16 #include <linux/platform_device.h> 17 17 #include <mach/hardware.h> 18 18 #include <mach/emac.h> 19 + #include <mach/asp.h> 20 + #include <mach/keyscan.h> 19 21 20 22 #define DM365_EMAC_BASE (0x01D07000) 21 23 #define DM365_EMAC_CNTRL_OFFSET (0x0000) ··· 26 24 #define DM365_EMAC_MDIO_OFFSET (0x4000) 27 25 #define DM365_EMAC_CNTRL_RAM_SIZE (0x2000) 28 26 27 + /* Base of key scan register bank */ 28 + #define DM365_KEYSCAN_BASE (0x01C69400) 29 + 30 + #define DM365_RTC_BASE (0x01C69000) 31 + 29 32 void __init dm365_init(void); 33 + void __init dm365_init_asp(struct snd_platform_data *pdata); 34 + void __init dm365_init_ks(struct davinci_ks_platform_data *pdata); 35 + void __init dm365_init_rtc(void); 30 36 31 37 #endif /* __ASM_ARCH_DM365_H */
-1
arch/arm/mach-davinci/include/mach/dm644x.h
··· 22 22 #ifndef __ASM_ARCH_DM644X_H 23 23 #define __ASM_ARCH_DM644X_H 24 24 25 - #include <linux/platform_device.h> 26 25 #include <mach/hardware.h> 27 26 #include <mach/emac.h> 28 27 #include <mach/asp.h>
+1
arch/arm/mach-davinci/include/mach/irqs.h
··· 217 217 #define IRQ_DM365_SDIOINT0 23 218 218 #define IRQ_DM365_MMCINT1 27 219 219 #define IRQ_DM365_PWMINT3 28 220 + #define IRQ_DM365_RTCINT 29 220 221 #define IRQ_DM365_SDIOINT1 31 221 222 #define IRQ_DM365_SPIINT0_0 42 222 223 #define IRQ_DM365_SPIINT3_0 43
+17 -3
arch/arm/mach-davinci/include/mach/mux.h
··· 40 40 41 41 /* AEAW functions */ 42 42 DM644X_AEAW, 43 + DM644X_AEAW0, 44 + DM644X_AEAW1, 45 + DM644X_AEAW2, 46 + DM644X_AEAW3, 47 + DM644X_AEAW4, 43 48 44 49 /* Memory Stick */ 45 50 DM644X_MSTK, ··· 242 237 DM365_EMAC_MDIO, 243 238 DM365_EMAC_MDCLK, 244 239 245 - /* Keypad */ 246 - DM365_KEYPAD, 240 + /* Key Scan */ 241 + DM365_KEYSCAN, 247 242 248 243 /* PWM */ 249 244 DM365_PWM0, ··· 779 774 DA850_MII_RXD_0, 780 775 DA850_MDIO_CLK, 781 776 DA850_MDIO_D, 777 + DA850_RMII_TXD_0, 778 + DA850_RMII_TXD_1, 779 + DA850_RMII_TXEN, 780 + DA850_RMII_CRS_DV, 781 + DA850_RMII_RXD_0, 782 + DA850_RMII_RXD_1, 783 + DA850_RMII_RXER, 784 + DA850_RMII_MHZ_50_CLK, 782 785 783 786 /* McASP function */ 784 787 DA850_ACLKR, ··· 894 881 DA850_NEMA_CS_2, 895 882 896 883 /* GPIO function */ 884 + DA850_GPIO2_6, 885 + DA850_GPIO2_8, 897 886 DA850_GPIO2_15, 898 - DA850_GPIO8_10, 899 887 DA850_GPIO4_0, 900 888 DA850_GPIO4_1, 901 889 };
-3
arch/arm/mach-davinci/include/mach/system.h
··· 11 11 #ifndef __ASM_ARCH_SYSTEM_H 12 12 #define __ASM_ARCH_SYSTEM_H 13 13 14 - #include <linux/io.h> 15 - #include <mach/hardware.h> 16 - 17 14 extern void davinci_watchdog_reset(void); 18 15 19 16 static inline void arch_idle(void)
+59
arch/arm/mach-davinci/include/mach/usb.h
··· 1 + /* 2 + * USB related definitions 3 + * 4 + * Copyright (C) 2009 MontaVista Software, Inc. <source@mvista.com> 5 + * 6 + * This file is licensed under the terms of the GNU General Public License 7 + * version 2. This program is licensed "as is" without any warranty of any 8 + * kind, whether express or implied. 9 + */ 10 + 11 + #ifndef __ASM_ARCH_USB_H 12 + #define __ASM_ARCH_USB_H 13 + 14 + /* DA8xx CFGCHIP2 (USB 2.0 PHY Control) register bits */ 15 + #define CFGCHIP2_PHYCLKGD (1 << 17) 16 + #define CFGCHIP2_VBUSSENSE (1 << 16) 17 + #define CFGCHIP2_RESET (1 << 15) 18 + #define CFGCHIP2_OTGMODE (3 << 13) 19 + #define CFGCHIP2_NO_OVERRIDE (0 << 13) 20 + #define CFGCHIP2_FORCE_HOST (1 << 13) 21 + #define CFGCHIP2_FORCE_DEVICE (2 << 13) 22 + #define CFGCHIP2_FORCE_HOST_VBUS_LOW (3 << 13) 23 + #define CFGCHIP2_USB1PHYCLKMUX (1 << 12) 24 + #define CFGCHIP2_USB2PHYCLKMUX (1 << 11) 25 + #define CFGCHIP2_PHYPWRDN (1 << 10) 26 + #define CFGCHIP2_OTGPWRDN (1 << 9) 27 + #define CFGCHIP2_DATPOL (1 << 8) 28 + #define CFGCHIP2_USB1SUSPENDM (1 << 7) 29 + #define CFGCHIP2_PHY_PLLON (1 << 6) /* override PLL suspend */ 30 + #define CFGCHIP2_SESENDEN (1 << 5) /* Vsess_end comparator */ 31 + #define CFGCHIP2_VBDTCTEN (1 << 4) /* Vbus comparator */ 32 + #define CFGCHIP2_REFFREQ (0xf << 0) 33 + #define CFGCHIP2_REFFREQ_12MHZ (1 << 0) 34 + #define CFGCHIP2_REFFREQ_24MHZ (2 << 0) 35 + #define CFGCHIP2_REFFREQ_48MHZ (3 << 0) 36 + 37 + struct da8xx_ohci_root_hub; 38 + 39 + typedef void (*da8xx_ocic_handler_t)(struct da8xx_ohci_root_hub *hub, 40 + unsigned port); 41 + 42 + /* Passed as the platform data to the OHCI driver */ 43 + struct da8xx_ohci_root_hub { 44 + /* Switch the port power on/off */ 45 + int (*set_power)(unsigned port, int on); 46 + /* Read the port power status */ 47 + int (*get_power)(unsigned port); 48 + /* Read the port over-current indicator */ 49 + int (*get_oci)(unsigned port); 50 + /* Over-current indicator change notification (pass NULL to disable) */ 51 + int (*ocic_notify)(da8xx_ocic_handler_t handler); 52 + 53 + /* Time from power on to power good (in 2 ms units) */ 54 + u8 potpgt; 55 + }; 56 + 57 + void davinci_setup_usb(unsigned mA, unsigned potpgt_ms); 58 + 59 + #endif /* ifndef __ASM_ARCH_USB_H */
-1
arch/arm/mach-davinci/mux.c
··· 19 19 #include <linux/module.h> 20 20 #include <linux/spinlock.h> 21 21 22 - #include <mach/hardware.h> 23 22 #include <mach/mux.h> 24 23 #include <mach/common.h> 25 24
-3
arch/arm/mach-davinci/psc.c
··· 19 19 * 20 20 */ 21 21 #include <linux/kernel.h> 22 - #include <linux/module.h> 23 22 #include <linux/init.h> 24 23 #include <linux/io.h> 25 24 26 25 #include <mach/cputype.h> 27 - #include <mach/hardware.h> 28 26 #include <mach/psc.h> 29 - #include <mach/mux.h> 30 27 31 28 /* PSC register offsets */ 32 29 #define EPCPR 0x070
-6
arch/arm/mach-davinci/serial.c
··· 28 28 #include <linux/clk.h> 29 29 #include <linux/io.h> 30 30 31 - #include <asm/irq.h> 32 - #include <mach/hardware.h> 33 31 #include <mach/serial.h> 34 - #include <mach/irqs.h> 35 32 #include <mach/cputype.h> 36 - #include <mach/common.h> 37 - 38 - #include "clock.h" 39 33 40 34 static inline unsigned int serial_read_reg(struct plat_serial8250_port *up, 41 35 int offset)
-3
arch/arm/mach-davinci/sram.c
··· 9 9 * (at your option) any later version. 10 10 */ 11 11 #include <linux/module.h> 12 - #include <linux/kernel.h> 13 12 #include <linux/init.h> 14 13 #include <linux/genalloc.h> 15 14 16 15 #include <mach/common.h> 17 - #include <mach/memory.h> 18 16 #include <mach/sram.h> 19 - 20 17 21 18 static struct gen_pool *sram_pool; 22 19
-6
arch/arm/mach-davinci/time.c
··· 14 14 #include <linux/interrupt.h> 15 15 #include <linux/clocksource.h> 16 16 #include <linux/clockchips.h> 17 - #include <linux/spinlock.h> 18 17 #include <linux/io.h> 19 18 #include <linux/clk.h> 20 19 #include <linux/err.h> 21 - #include <linux/device.h> 22 20 #include <linux/platform_device.h> 23 21 24 22 #include <mach/hardware.h> 25 - #include <asm/system.h> 26 - #include <asm/irq.h> 27 23 #include <asm/mach/irq.h> 28 24 #include <asm/mach/time.h> 29 - #include <asm/errno.h> 30 - #include <mach/io.h> 31 25 #include <mach/cputype.h> 32 26 #include <mach/time.h> 33 27 #include "clock.h"
+75 -9
arch/arm/mach-davinci/usb.c
··· 1 1 /* 2 2 * USB 3 3 */ 4 - #include <linux/kernel.h> 5 - #include <linux/module.h> 6 4 #include <linux/init.h> 7 5 #include <linux/platform_device.h> 8 6 #include <linux/dma-mapping.h> 9 7 10 8 #include <linux/usb/musb.h> 11 - #include <linux/usb/otg.h> 12 9 13 10 #include <mach/common.h> 14 - #include <mach/hardware.h> 15 11 #include <mach/irqs.h> 16 12 #include <mach/cputype.h> 13 + #include <mach/usb.h> 17 14 18 - #define DAVINCI_USB_OTG_BASE 0x01C64000 15 + #define DAVINCI_USB_OTG_BASE 0x01c64000 16 + 17 + #define DA8XX_USB0_BASE 0x01e00000 18 + #define DA8XX_USB1_BASE 0x01e25000 19 19 20 20 #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) 21 21 static struct musb_hdrc_eps_bits musb_eps[] = { ··· 85 85 .num_resources = ARRAY_SIZE(usb_resources), 86 86 }; 87 87 88 - void __init setup_usb(unsigned mA, unsigned potpgt_msec) 88 + void __init davinci_setup_usb(unsigned mA, unsigned potpgt_ms) 89 89 { 90 - usb_data.power = mA / 2; 91 - usb_data.potpgt = potpgt_msec / 2; 90 + usb_data.power = mA > 510 ? 255 : mA / 2; 91 + usb_data.potpgt = (potpgt_ms + 1) / 2; 92 92 93 93 if (cpu_is_davinci_dm646x()) { 94 94 /* Override the defaults as DM6467 uses different IRQs. */ ··· 100 100 platform_device_register(&usb_dev); 101 101 } 102 102 103 + #ifdef CONFIG_ARCH_DAVINCI_DA8XX 104 + static struct resource da8xx_usb20_resources[] = { 105 + { 106 + .start = DA8XX_USB0_BASE, 107 + .end = DA8XX_USB0_BASE + SZ_64K - 1, 108 + .flags = IORESOURCE_MEM, 109 + }, 110 + { 111 + .start = IRQ_DA8XX_USB_INT, 112 + .flags = IORESOURCE_IRQ, 113 + }, 114 + }; 115 + 116 + int __init da8xx_register_usb20(unsigned mA, unsigned potpgt) 117 + { 118 + usb_data.clock = "usb20"; 119 + usb_data.power = mA > 510 ? 255 : mA / 2; 120 + usb_data.potpgt = (potpgt + 1) / 2; 121 + 122 + usb_dev.resource = da8xx_usb20_resources; 123 + usb_dev.num_resources = ARRAY_SIZE(da8xx_usb20_resources); 124 + 125 + return platform_device_register(&usb_dev); 126 + } 127 + #endif /* CONFIG_DAVINCI_DA8XX */ 128 + 103 129 #else 104 130 105 - void __init setup_usb(unsigned mA, unsigned potpgt_msec) 131 + void __init davinci_setup_usb(unsigned mA, unsigned potpgt_ms) 106 132 { 107 133 } 108 134 135 + #ifdef CONFIG_ARCH_DAVINCI_DA8XX 136 + int __init da8xx_register_usb20(unsigned mA, unsigned potpgt) 137 + { 138 + return 0; 139 + } 140 + #endif 141 + 109 142 #endif /* CONFIG_USB_MUSB_HDRC */ 110 143 144 + #ifdef CONFIG_ARCH_DAVINCI_DA8XX 145 + static struct resource da8xx_usb11_resources[] = { 146 + [0] = { 147 + .start = DA8XX_USB1_BASE, 148 + .end = DA8XX_USB1_BASE + SZ_4K - 1, 149 + .flags = IORESOURCE_MEM, 150 + }, 151 + [1] = { 152 + .start = IRQ_DA8XX_IRQN, 153 + .end = IRQ_DA8XX_IRQN, 154 + .flags = IORESOURCE_IRQ, 155 + }, 156 + }; 157 + 158 + static u64 da8xx_usb11_dma_mask = DMA_BIT_MASK(32); 159 + 160 + static struct platform_device da8xx_usb11_device = { 161 + .name = "ohci", 162 + .id = 0, 163 + .dev = { 164 + .dma_mask = &da8xx_usb11_dma_mask, 165 + .coherent_dma_mask = DMA_BIT_MASK(32), 166 + }, 167 + .num_resources = ARRAY_SIZE(da8xx_usb11_resources), 168 + .resource = da8xx_usb11_resources, 169 + }; 170 + 171 + int __init da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata) 172 + { 173 + da8xx_usb11_device.dev.platform_data = pdata; 174 + return platform_device_register(&da8xx_usb11_device); 175 + } 176 + #endif /* CONFIG_DAVINCI_DA8XX */