[PROJECT][KERNEL][WiP] 2.6.37 Kernel - Update 11/9/2011 - Galaxy 3 Android Development
I and Marcellusbe have decided to try port the 2.6.37 CyanogenMod Kernel to Galaxy 3.
It will be completely from scratch. We need to port each and every driver.
The project is just starting.
I'll keep a track of what all is done, and what all has to be done.
For those who want to help, just follow what i do, and help me with your knowledge and findings
What is Done:
http://forum.xda-developers.com/showpost.php?p=17239380&postcount=68
What is to be Done:
Everything
People Helping Us with the project
cdesai
AS MENTIONED ABOVE, THIS IS JUST A TRY...PLEASE DONT KILL US IF WE FAIL
Important Information:
Apollo Config: http://forum.xda-developers.com/showpost.php?p=17112129&postcount=14
Difference Between linux - 2.6.32.9 and samsung source: http://forum.xda-developers.com/showpost.php?p=17112163&postcount=15
Patch Files: (Between linux 2.6.32.9 and samsung source)
arch - http://forum.xda-developers.com/showthread.php?p=17112732#post17112732
block - http://forum.xda-developers.com/showpost.php?p=17112930&postcount=19
To Do Lists:
Add Samsung Changes to 2.6.37 Kernel - In Progress
Files That May give problems:
Kernel/drivers/rtc/hctosys.c
Important Links:
Linux Kernel - http://www.kernel.org/pub/linux/kernel/v2.6/
CM Kernel - https://github.com/CyanogenMod/cm-kernel
Credits:
Team CyanogenMod for their Excellent Work.
What are the advantages of 2.6.37 compared to 2.6.32? Better power management or other things related to our hardware? I don't follow linux changes for smartphones that closely as I do for my desktop/netbook.
Benjamin_L said:
What are the advantages of 2.6.37 compared to 2.6.32? Better power management or other things related to our hardware? I don't follow linux changes for smartphones that closely as I do for my desktop/netbook.
Click to expand...
Click to collapse
Well, there are too many advantages, and the kernel is the same...only the driver's change from desktop/netbook i think....
@dharam/marcellusbe
all the best for the project
@all galaxy 3 xda members
a kind request plz do not ask for eta and progress reports as far as I know dharam has the habit of updating every small detail achieved so don't bug them and most important plz dont pollute this thread starting hate speeches if u find someone being rude or abusive towards the project or members plz ignore them....
thank you...
All the best guys.
Hi, I'm looking forward for this project but one question you have stop just now developing other project like G3mod or CM 6,2 kernel ?
Best wishes for this new project I hope that you and Marcell finally port this kernel to Galaxy 3. I'm probably not able to help zou because I don't have any experience with C++ . But if isn't it necessary please mention it in topic and I will help you...
Thanks for your and Marcell hard work keep going...
Sorry for my english.
BeriCud said:
Hi, I'm looking forward for this project but one question you have stop just now developing other project like G3mod or CM 6,2 kernel ?
Best wishes for this new project I hope that you and Marcell finally port this kernel to Galaxy 3. I'm probably not able to help zou because I don't have any experience with C++ . But if isn't it necessary please mention it in topic and I will help you...
Thanks for your and Marcell hard work keep going...
Sorry for my english.
Click to expand...
Click to collapse
I've not stopped working on G3mod and cm6.2 kernel...infact there will be release today itself..
dharamg3 said:
I've not stopped working on G3mod and cm6.2 kernel...infact there will be release today itself..
Click to expand...
Click to collapse
OMFG im soo happy because cm6.2 kernel is good but i need 1GHZ and app2sd
Thank you and Marcellusbe for your hard work. This is great news for all of us. Best wishes to you and Marcellusbe.
apollo_config
Code:
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_GENERIC_GPIO=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_NO_IOPORT=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_ARCH_HAS_CPUFREQ=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_CONSTRUCTORS=y
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_DPRAM_BUILT_IN=y
CONFIG_KERNEL_DEBUG_SEC=y
CONFIG_TREE_RCU=y
CONFIG_GROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_CGROUP_SCHED=y
CONFIG_CGROUPS=y
CONFIG_CGROUP_DEBUG=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_NAMESPACES=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
CONFIG_INITRAMFS_COMPRESSION_NONE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_ASHMEM=y
CONFIG_AIO=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
CONFIG_COMPAT_BRK=y
CONFIG_SLUB=y
CONFIG_TRACEPOINTS=y
CONFIG_HAVE_OPROFILE=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_CLK=y
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_CFQ=y
CONFIG_FREEZER=y
CONFIG_MMU=y
CONFIG_ARCH_S5P64XX=y
CONFIG_PLAT_S3C=y
CONFIG_S3C_BOOT_UART_FORCE_FIFO=y
CONFIG_S3C_GPIO_TRACK=y
CONFIG_S3C_GPIO_PULL_UPDOWN=y
CONFIG_S3C_DEV_HSMMC=y
CONFIG_S3C_DEV_HSMMC1=y
CONFIG_S3C_DEV_I2C1=y
CONFIG_PLAT_S5P64XX=y
CONFIG_CPU_S5P6442_INIT=y
CONFIG_CPU_S5P6442_CLOCK=y
CONFIG_S5P64XX_SETUP_I2C0=y
CONFIG_S5P64XX_SETUP_I2C1=y
CONFIG_S5P64XX_SETUP_I2C2=y
CONFIG_S3C_DEV_HSMMC2=y
CONFIG_S3C_DEV_I2C2=y
CONFIG_S5P64XX_ADCTS=y
CONFIG_S5P64XX_DEV_FIMC0=y
CONFIG_S5P64XX_DEV_FIMC1=y
CONFIG_S5P64XX_DEV_FIMC2=y
CONFIG_S5P64XX_SETUP_FIMC0=y
CONFIG_S5P64XX_SETUP_FIMC1=y
CONFIG_S5P64XX_SETUP_FIMC2=y
CONFIG_S5P64XX_DEV_FB=y
CONFIG_S5P64XX_PWM=y
CONFIG_S5P64XX_TS_C_TYPE=y
CONFIG_S5P64XX_POWER_GATING=y
CONFIG_S5P64XX_CLOCK_GATING=y
CONFIG_S5P64XX_HIGH_RES_TIMERS=y
CONFIG_HRT_PWM=y
CONFIG_S3C_GPIO_CFG_S5P64XX=y
CONFIG_S3C_DMA_PL330=y
CONFIG_CPU_S5P6442=y
CONFIG_S5P6442_SETUP_SDHCI=y
CONFIG_MACH_APOLLO=y
CONFIG_SEC_HEADSET=y
CONFIG_CPU_32=y
CONFIG_CPU_V6=y
CONFIG_CPU_32v6K=y
CONFIG_CPU_32v6=y
CONFIG_CPU_ABRT_EV6=y
CONFIG_CPU_PABRT_V6=y
CONFIG_CPU_CACHE_V6=y
CONFIG_CPU_CACHE_VIPT=y
CONFIG_CPU_COPY_V6=y
CONFIG_CPU_TLB_V6=y
CONFIG_CPU_HAS_ASID=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y
CONFIG_ARM_THUMB=y
CONFIG_ARM_VIC=y
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_VMSPLIT_3G=y
CONFIG_PREEMPT_NONE=y
CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_DISCONTIGMEM_MANUAL=y
CONFIG_DISCONTIGMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_NEED_MULTIPLE_NODES=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_VIRT_TO_BUS=y
CONFIG_HAVE_MLOCK=y
CONFIG_HAVE_MLOCKED_PAGE_BIT=y
CONFIG_ALIGNMENT_TRAP=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_VFP=y
CONFIG_BINFMT_ELF=y
CONFIG_HAVE_AOUT=y
CONFIG_PM=y
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
CONFIG_HAS_WAKELOCK=y
CONFIG_HAS_EARLYSUSPEND=y
CONFIG_WAKELOCK=y
CONFIG_WAKELOCK_STAT=y
CONFIG_USER_WAKELOCK=y
CONFIG_EARLYSUSPEND=y
CONFIG_FB_EARLYSUSPEND=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_MIGRATE=y
CONFIG_NET_KEY=y
CONFIG_NET_KEY_MIGRATE=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_FIB_HASH=y
CONFIG_NET_IPIP=y
CONFIG_NET_IPGRE=y
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_INET_AH=y
CONFIG_INET_ESP=y
CONFIG_INET_TUNNEL=y
CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=y
CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_LRO=y
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_IPV6=y
CONFIG_INET6_XFRM_MODE_TRANSPORT=y
CONFIG_INET6_XFRM_MODE_TUNNEL=y
CONFIG_INET6_XFRM_MODE_BEET=y
CONFIG_IPV6_SIT=y
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_ANDROID_PARANOID_NETWORK=y
CONFIG_NETFILTER=y
CONFIG_NETFILTER_ADVANCED=y
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_QUEUE=y
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NF_CONNTRACK=y
CONFIG_NF_CT_ACCT=y
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_FTP=y
CONFIG_NETFILTER_XTABLES=y
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
CONFIG_NETFILTER_XT_TARGET_DSCP=y
CONFIG_NETFILTER_XT_TARGET_MARK=y
CONFIG_NETFILTER_XT_TARGET_NFLOG=y
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
CONFIG_NETFILTER_XT_TARGET_NOTRACK=y
CONFIG_NETFILTER_XT_TARGET_RATEEST=y
CONFIG_NETFILTER_XT_TARGET_TRACE=y
CONFIG_NETFILTER_XT_MATCH_COMMENT=y
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_ESP=y
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
CONFIG_NETFILTER_XT_MATCH_HELPER=y
CONFIG_NETFILTER_XT_MATCH_HL=y
CONFIG_NETFILTER_XT_MATCH_LENGTH=y
CONFIG_NETFILTER_XT_MATCH_LIMIT=y
CONFIG_NETFILTER_XT_MATCH_MAC=y
CONFIG_NETFILTER_XT_MATCH_MARK=y
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
CONFIG_NETFILTER_XT_MATCH_OWNER=y
CONFIG_NETFILTER_XT_MATCH_POLICY=y
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
CONFIG_NETFILTER_XT_MATCH_QUOTA=y
CONFIG_NETFILTER_XT_MATCH_RATEEST=y
CONFIG_NETFILTER_XT_MATCH_REALM=y
CONFIG_NETFILTER_XT_MATCH_SCTP=y
CONFIG_NETFILTER_XT_MATCH_STATE=y
CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
CONFIG_NETFILTER_XT_MATCH_STRING=y
CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
CONFIG_NETFILTER_XT_MATCH_TIME=y
CONFIG_NETFILTER_XT_MATCH_U32=y
CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_ADDRTYPE=y
CONFIG_IP_NF_MATCH_AH=y
CONFIG_IP_NF_MATCH_ECN=y
CONFIG_IP_NF_MATCH_TTL=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
CONFIG_NF_NAT=y
CONFIG_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_NETMAP=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_NF_NAT_FTP=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_RAW=y
CONFIG_PHONET=y
CONFIG_NET_CLS_ROUTE=y
CONFIG_BT=y
CONFIG_BT_L2CAP=y
CONFIG_BT_SCO=y
CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_H4=y
CONFIG_AF_RXRPC=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_WIRELESS_EXT_SYSFS=y
CONFIG_RFKILL=y
CONFIG_RFKILL_PM=y
CONFIG_RFKILL_INPUT=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_RFS_STL_DELETE=y
CONFIG_LINUSTOREIII_DEBUG=y
CONFIG_TINY_FSR=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_MISC_DEVICES=y
CONFIG_ANDROID_PMEM=y
CONFIG_UID_STAT=y
CONFIG_HAVE_IDE=y
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_PROC_FS=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_LOWLEVEL=y
CONFIG_MD=y
CONFIG_BLK_DEV_DM=y
CONFIG_DM_DEBUG=y
CONFIG_DM_CRYPT=y
CONFIG_DM_SNAPSHOT=y
CONFIG_DM_MIRROR=y
CONFIG_DM_ZERO=y
CONFIG_DM_MULTIPATH=y
CONFIG_DM_MULTIPATH_QL=y
CONFIG_DM_MULTIPATH_ST=y
CONFIG_NETDEVICES=y
CONFIG_NETDEV_1000=y
CONFIG_NETDEV_10000=y
CONFIG_CHELSIO_T3_DEPENDS=y
CONFIG_WLAN=y
CONFIG_BROADCOM_WIFI_RESERVED_MEM=y
CONFIG_PPP=y
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=y
CONFIG_PPP_SYNC_TTY=y
CONFIG_PPP_DEFLATE=y
CONFIG_PPP_BSDCOMP=y
CONFIG_PPP_MPPE=y
CONFIG_PPPOE=y
CONFIG_PPPOL2TP=y
CONFIG_PPPOLAC=y
CONFIG_PPPOPNS=y
CONFIG_SLIP=y
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLHC=y
CONFIG_SLIP_MODE_SLIP6=y
CONFIG_INPUT=y
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_KEYPAD_S3C=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_QT602240=y
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=y
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_DEVMEM=y
CONFIG_DEVKMEM=y
CONFIG_SERIAL_SAMSUNG=y
CONFIG_SERIAL_SAMSUNG_CONSOLE=y
CONFIG_SERIAL_S5PC100=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_HW_RANDOM=y
CONFIG_DEVPORT=y
CONFIG_S3C_MEM=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_GPIO=y
CONFIG_I2C_S3C2410=y
CONFIG_PMIC_MAX8998=y
CONFIG_SPI=y
CONFIG_SPI_MASTER=y
CONFIG_SPI_BITBANG=y
CONFIG_SPI_GPIO=y
CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y
CONFIG_POWER_SUPPLY=y
CONFIG_BATTERY_S5P6442=y
CONFIG_BATTERY_S5P6442_FAKE=y
CONFIG_CHARGER_MAX8998=y
CONFIG_WATCHDOG=y
CONFIG_S3C_WATCHDOG=y
CONFIG_SSB_POSSIBLE=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_VIDEO_DEV=y
CONFIG_VIDEO_V4L2_COMMON=y
CONFIG_VIDEO_ALLOW_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_VIDEO_MEDIA=y
CONFIG_MEDIA_TUNER=y
CONFIG_MEDIA_TUNER_SIMPLE=y
CONFIG_MEDIA_TUNER_TDA8290=y
CONFIG_MEDIA_TUNER_TDA9887=y
CONFIG_MEDIA_TUNER_TEA5761=y
CONFIG_MEDIA_TUNER_TEA5767=y
CONFIG_MEDIA_TUNER_MT20XX=y
CONFIG_MEDIA_TUNER_XC2028=y
CONFIG_MEDIA_TUNER_XC5000=y
CONFIG_MEDIA_TUNER_MC44S803=y
CONFIG_VIDEO_V4L2=y
CONFIG_VIDEO_V4L1=y
CONFIG_VIDEO_CAPTURE_DRIVERS=y
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
CONFIG_RADIO_ADAPTERS=y
CONFIG_S5P6442_MFC=y
CONFIG_VIDEO_FIMC=y
CONFIG_VIDEO_S5K4CA=y
CONFIG_VIDEO_SAMSUNG_V4L2=y
CONFIG_VIDEO_JPEG_V2=y
CONFIG_VIDEO_G3D=y
CONFIG_VIDEO_G2D=y
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_S3C=y
CONFIG_FB_S3C_DEBUG=y
CONFIG_FB_S3C_S6D04D1=y
CONFIG_FB_S3C_BPP_24=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_SOUND=y
CONFIG_SOUND_OSS_CORE=y
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
CONFIG_SND_JACK=y
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_SOC=y
CONFIG_SND_S5P_SOC=y
CONFIG_SND_S3C_I2S_V50=y
CONFIG_SND_APOLLO_WM8994=y
CONFIG_SND_S5P64XX_SOC_I2S_REC_DOWNSAMPLING=y
CONFIG_SND_WM8994_MASTER_MODE=y
CONFIG_SND_SOC_I2C_AND_SPI=y
CONFIG_SND_SOC_WM8994=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_SELECTED=y
CONFIG_USB_GADGET_S3C_OTGD_HS=y
CONFIG_USB_GADGET_S3C_OTGD_HS_DMA_MODE=y
CONFIG_USB_GADGET_DUALSPEED=y
CONFIG_USB_ETH_RNDIS=y
CONFIG_USB_DUN_SUPPORT=y
CONFIG_USB_ANDROID_ADB_UMS_ACM_ETH_MTP=y
CONFIG_MMC=y
CONFIG_MMC_UNSAFE_RESUME=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_S3C=y
CONFIG_MMC_SDHCI_S3C_DMA=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_NEW_SENSORS=y
CONFIG_ACCEL=y
CONFIG_ACCEL_BMA020=y
CONFIG_COMPASS=y
CONFIG_COMPASS_AK8973B=y
CONFIG_PROXIMITY=y
CONFIG_PROXIMITY_GP2A=y
CONFIG_SWITCH=y
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
CONFIG_RTC_INTF_ALARM=y
CONFIG_RTC_INTF_ALARM_DEV=y
CONFIG_RTC_DRV_S3C=y
CONFIG_RTC_S3C_SYNC_SYSTEM_TIME=y
CONFIG_RTC_DRV_MAX8998=y
CONFIG_STAGING=y
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_LOGGER=y
CONFIG_ANDROID_TIMED_OUTPUT=y
CONFIG_ANDROID_TIMED_GPIO=y
CONFIG_ANDROID_LOW_MEMORY_KILLER=y
CONFIG_SVNET_WHITELIST=y
CONFIG_EXT2_FS=y
CONFIG_FS_POSIX_ACL=y
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_GENERIC_ACL=y
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_MISC_FILESYSTEMS=y
CONFIG_RFS_FS_PERMISSION=y
CONFIG_RFS_FS_SYNC_ON_CLOSE=y
CONFIG_RFS_FS_ERASE_SECTOR=y
CONFIG_RFS_FS_SPECIAL=y
CONFIG_RFS_FS_FAT_VFAT=y
CONFIG_CRAMFS=y
CONFIG_ROMFS_FS=y
CONFIG_ROMFS_BACKED_BY_BLOCK=y
CONFIG_ROMFS_ON_BLOCK=y
CONFIG_SYSV_FS=y
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_PARTITION_ADVANCED=y
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
CONFIG_SOLARIS_X86_PARTITION=y
CONFIG_NLS=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_UTF8=y
CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_DETECT_HUNG_TASK=y
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_STACKTRACE=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_FRAME_POINTER=y
CONFIG_LATENCYTOP=y
CONFIG_SYSCTL_SYSCALL_CHECK=y
CONFIG_NOP_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_TRACER_MAX_TRACE=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_TRACING=y
CONFIG_GENERIC_TRACER=y
CONFIG_TRACING_SUPPORT=y
CONFIG_FTRACE=y
CONFIG_FUNCTION_TRACER=y
CONFIG_SCHED_TRACER=y
CONFIG_BRANCH_PROFILE_NONE=y
CONFIG_STACK_TRACER=y
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_ARM_UNWIND=y
CONFIG_DEBUG_USER=y
CONFIG_DEBUG_ERRORS=y
CONFIG_KEYS=y
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_PCOMP=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_GF128MUL=y
CONFIG_CRYPTO_NULL=y
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_AUTHENC=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_GHASH=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_TWOFISH_COMMON=y
CONFIG_CRYPTO_ANSI_CPRNG=y
CONFIG_CRYPTO_HW=y
CONFIG_BINARY_PRINTF=y
CONFIG_BITREVERSE=y
CONFIG_GENERIC_FIND_LAST_BIT=y
CONFIG_CRC_CCITT=y
CONFIG_CRC16=y
CONFIG_CRC32=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_REED_SOLOMON=y
CONFIG_REED_SOLOMON_ENC8=y
CONFIG_REED_SOLOMON_DEC8=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=y
CONFIG_TEXTSEARCH_BM=y
CONFIG_TEXTSEARCH_FSM=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_DMA=y
CONFIG_NLATTR=y
Difference Between linux - 2.6.32.9 and samsung source.
Arch:
Code:
Files Linux/arch/arm/boot/compressed/head.S and G3/arch/arm/boot/compressed/head.S differ
Files Linux/arch/arm/boot/compressed/misc.c and G3/arch/arm/boot/compressed/misc.c differ
Only in G3/arch/arm/configs: apollo_rev_02_android_defconfig
Files Linux/arch/arm/configs/msm_defconfig and G3/arch/arm/configs/msm_defconfig differ
Files Linux/arch/arm/include/asm/cacheflush.h and G3/arch/arm/include/asm/cacheflush.h differ
Files Linux/arch/arm/Kconfig and G3/arch/arm/Kconfig differ
Files Linux/arch/arm/kernel/debug.S and G3/arch/arm/kernel/debug.S differ
Files Linux/arch/arm/kernel/entry-armv.S and G3/arch/arm/kernel/entry-armv.S differ
Files Linux/arch/arm/kernel/process.c and G3/arch/arm/kernel/process.c differ
Files Linux/arch/arm/kernel/setup.c and G3/arch/arm/kernel/setup.c differ
Files Linux/arch/arm/kernel/signal.c and G3/arch/arm/kernel/signal.c differ
Files Linux/arch/arm/kernel/traps.c and G3/arch/arm/kernel/traps.c differ
Only in G3/arch/arm: mach-s5p6442
Files Linux/arch/arm/Makefile and G3/arch/arm/Makefile differ
Files Linux/arch/arm/mm/cache-v6.S and G3/arch/arm/mm/cache-v6.S differ
Files Linux/arch/arm/mm/Kconfig and G3/arch/arm/mm/Kconfig differ
Only in G3/arch/arm: plat-s5p
Only in G3/arch/arm: plat-s5p64xx
Files Linux/arch/arm/tools/mach-types and G3/arch/arm/tools/mach-types differ
block:
Code:
Files Linux/block/blk-core.c and G3/block/blk-core.c differ
Files Linux/block/genhd.c and G3/block/genhd.c differ
crypto:
Code:
No Difference
Documentation:
Code:
Only in G3/Documentation: android.txt
drivers:
Code:
Files Linux/drivers/base/power/main.c and G3/drivers/base/power/main.c differ
Only in G3/drivers/char: dcc_tty.c
Files Linux/drivers/char/Kconfig and G3/drivers/char/Kconfig differ
Files Linux/drivers/char/Makefile and G3/drivers/char/Makefile differ
Files Linux/drivers/char/mem.c and G3/drivers/char/mem.c differ
Files Linux/drivers/cpufreq/cpufreq.c and G3/drivers/cpufreq/cpufreq.c differ
Files Linux/drivers/cpufreq/cpufreq_conservative.c and G3/drivers/cpufreq/cpufreq_conservative.c differ
Files Linux/drivers/i2c/busses/i2c-s3c2410.c and G3/drivers/i2c/busses/i2c-s3c2410.c differ
Files Linux/drivers/i2c/busses/Kconfig and G3/drivers/i2c/busses/Kconfig differ
Files Linux/drivers/i2c/chips/Kconfig and G3/drivers/i2c/chips/Kconfig differ
Files Linux/drivers/i2c/chips/Makefile and G3/drivers/i2c/chips/Makefile differ
Only in G3/drivers/i2c/chips: max8998.c
Only in G3/drivers/i2c/chips: pca963x.c
Files Linux/drivers/input/evdev.c and G3/drivers/input/evdev.c differ
Files Linux/drivers/input/Kconfig and G3/drivers/input/Kconfig differ
Files Linux/drivers/input/keyboard/Kconfig and G3/drivers/input/keyboard/Kconfig differ
Files Linux/drivers/input/keyboard/Makefile and G3/drivers/input/keyboard/Makefile differ
Only in G3/drivers/input/keyboard: s3c-keypad.c
Only in G3/drivers/input/keyboard: s3c-keypad.h
Only in G3/drivers/input: keyreset.c
Files Linux/drivers/input/Makefile and G3/drivers/input/Makefile differ
Only in G3/drivers/input/misc: gpio_axis.c
Only in G3/drivers/input/misc: gpio_event.c
Only in G3/drivers/input/misc: gpio_input.c
Only in G3/drivers/input/misc: gpio_matrix.c
Only in G3/drivers/input/misc: gpio_output.c
Files Linux/drivers/input/misc/Kconfig and G3/drivers/input/misc/Kconfig differ
Only in G3/drivers/input/misc: keychord.c
Files Linux/drivers/input/misc/Makefile and G3/drivers/input/misc/Makefile differ
Only in G3/drivers/input/touchscreen: Firmware16.h
Files Linux/drivers/input/touchscreen/Kconfig and G3/drivers/input/touchscreen/Kconfig differ
Files Linux/drivers/input/touchscreen/Makefile and G3/drivers/input/touchscreen/Makefile differ
Only in G3/drivers/input/touchscreen: qt602240.c
Only in G3/drivers/input/touchscreen: synaptics_i2c_rmi.c
Files Linux/drivers/Kconfig and G3/drivers/Kconfig differ
Files Linux/drivers/leds/Kconfig and G3/drivers/leds/Kconfig differ
Only in G3/drivers/leds: ledtrig-sleep.c
Files Linux/drivers/leds/Makefile and G3/drivers/leds/Makefile differ
Only in G3/drivers: level
Files Linux/drivers/Makefile and G3/drivers/Makefile differ
Files Linux/drivers/media/Kconfig and G3/drivers/media/Kconfig differ
Files Linux/drivers/media/Makefile and G3/drivers/media/Makefile differ
Only in G3/drivers/media: s5p6442
Files Linux/drivers/media/video/Makefile and G3/drivers/media/video/Makefile differ
Only in G3/drivers/media/video: s5k4ca.c
Only in G3/drivers/media/video: s5k4ca.h
Only in G3/drivers/media/video: s5k4ca_init.h
Only in G3/drivers/misc: apanic.c
Files Linux/drivers/misc/Kconfig and G3/drivers/misc/Kconfig differ
Only in G3/drivers/misc: kernel_debugger.c
Files Linux/drivers/misc/Makefile and G3/drivers/misc/Makefile differ
Only in G3/drivers/misc: pmem.c
Only in G3/drivers/misc: uid_stat.c
Only in G3/drivers/misc: wl127x-rfkill.c
Files Linux/drivers/mmc/card/block.c and G3/drivers/mmc/card/block.c differ
Files Linux/drivers/mmc/card/Kconfig and G3/drivers/mmc/card/Kconfig differ
Files Linux/drivers/mmc/core/core.c and G3/drivers/mmc/core/core.c differ
Files Linux/drivers/mmc/core/Kconfig and G3/drivers/mmc/core/Kconfig differ
Files Linux/drivers/mmc/core/mmc.c and G3/drivers/mmc/core/mmc.c differ
Files Linux/drivers/mmc/core/sd.c and G3/drivers/mmc/core/sd.c differ
Files Linux/drivers/mmc/core/sdio_bus.c and G3/drivers/mmc/core/sdio_bus.c differ
Files Linux/drivers/mmc/core/sdio.c and G3/drivers/mmc/core/sdio.c differ
Files Linux/drivers/mmc/core/sdio_io.c and G3/drivers/mmc/core/sdio_io.c differ
Files Linux/drivers/mmc/host/Kconfig and G3/drivers/mmc/host/Kconfig differ
Files Linux/drivers/mmc/host/sdhci.c and G3/drivers/mmc/host/sdhci.c differ
Files Linux/drivers/mmc/host/sdhci.h and G3/drivers/mmc/host/sdhci.h differ
Files Linux/drivers/mmc/host/sdhci-s3c.c and G3/drivers/mmc/host/sdhci-s3c.c differ
Only in G3/drivers: modemctl
Files Linux/drivers/mtd/nand/Kconfig and G3/drivers/mtd/nand/Kconfig differ
Files Linux/drivers/mtd/nand/nand_base.c and G3/drivers/mtd/nand/nand_base.c differ
Files Linux/drivers/mtd/onenand/Makefile and G3/drivers/mtd/onenand/Makefile differ
Only in G3/drivers/mtd/onenand: s5p6442.c
Files Linux/drivers/net/Kconfig and G3/drivers/net/Kconfig differ
Files Linux/drivers/net/Makefile and G3/drivers/net/Makefile differ
Only in G3/drivers/net: pppolac.c
Only in G3/drivers/net: pppopns.c
Only in G3/drivers: onedram
Files Linux/drivers/power/Kconfig and G3/drivers/power/Kconfig differ
Files Linux/drivers/power/Makefile and G3/drivers/power/Makefile differ
Files Linux/drivers/power/power_supply_core.c and G3/drivers/power/power_supply_core.c differ
Only in G3/drivers/power: s5p6442_battery.c
Only in G3/drivers/power: s5p6442_battery.h
Only in G3/drivers/rtc: alarm.c
Only in G3/drivers/rtc: alarm-dev.c
Files Linux/drivers/rtc/class.c and G3/drivers/rtc/class.c differ
Files Linux/drivers/rtc/hctosys.c and G3/drivers/rtc/hctosys.c differ
Files Linux/drivers/rtc/Kconfig and G3/drivers/rtc/Kconfig differ
Files Linux/drivers/rtc/Makefile and G3/drivers/rtc/Makefile differ
Only in G3/drivers/rtc: rtc-max8998.c
Files Linux/drivers/rtc/rtc-s3c.c and G3/drivers/rtc/rtc-s3c.c differ
Only in G3/drivers: sensor
Files Linux/drivers/serial/Kconfig and G3/drivers/serial/Kconfig differ
Files Linux/drivers/serial/Makefile and G3/drivers/serial/Makefile differ
Only in G3/drivers/serial: s5pc100.c
Files Linux/drivers/serial/samsung.c and G3/drivers/serial/samsung.c differ
Files Linux/drivers/serial/samsung.h and G3/drivers/serial/samsung.h differ
Files Linux/drivers/serial/serial_core.c and G3/drivers/serial/serial_core.c differ
Files Linux/drivers/staging/android/binder.c and G3/drivers/staging/android/binder.c differ
Files Linux/drivers/staging/android/Kconfig and G3/drivers/staging/android/Kconfig differ
Files Linux/drivers/staging/android/logger.c and G3/drivers/staging/android/logger.c differ
Files Linux/drivers/staging/android/logger.h and G3/drivers/staging/android/logger.h differ
Files Linux/drivers/staging/android/lowmemorykiller.c and G3/drivers/staging/android/lowmemorykiller.c differ
Files Linux/drivers/staging/android/ram_console.c and G3/drivers/staging/android/ram_console.c differ
Files Linux/drivers/staging/android/timed_gpio.c and G3/drivers/staging/android/timed_gpio.c differ
Files Linux/drivers/staging/android/timed_output.c and G3/drivers/staging/android/timed_output.c differ
Files Linux/drivers/staging/Makefile and G3/drivers/staging/Makefile differ
Only in G3/drivers: storage
Only in G3/drivers: svnet
Only in G3/drivers: switch
Only in G3/drivers: tfsr
Only in G3/drivers/usb/gadget: adb_ums_acm.c
Only in G3/drivers/usb/gadget: adb_ums_acm_eth.c
Only in G3/drivers/usb/gadget: adb_ums_acm_eth_mtp.c
Files Linux/drivers/usb/gadget/amd5536udc.c and G3/drivers/usb/gadget/amd5536udc.c differ
Only in G3/drivers/usb/gadget: android.c
Files Linux/drivers/usb/gadget/at91_udc.c and G3/drivers/usb/gadget/at91_udc.c differ
Files Linux/drivers/usb/gadget/atmel_usba_udc.c and G3/drivers/usb/gadget/atmel_usba_udc.c differ
Only in Linux/drivers/usb/gadget: audio.c
Files Linux/drivers/usb/gadget/cdc2.c and G3/drivers/usb/gadget/cdc2.c differ
Files Linux/drivers/usb/gadget/ci13xxx_udc.c and G3/drivers/usb/gadget/ci13xxx_udc.c differ
Files Linux/drivers/usb/gadget/composite.c and G3/drivers/usb/gadget/composite.c differ
Files Linux/drivers/usb/gadget/dummy_hcd.c and G3/drivers/usb/gadget/dummy_hcd.c differ
Files Linux/drivers/usb/gadget/epautoconf.c and G3/drivers/usb/gadget/epautoconf.c differ
Files Linux/drivers/usb/gadget/ether.c and G3/drivers/usb/gadget/ether.c differ
Files Linux/drivers/usb/gadget/f_acm.c and G3/drivers/usb/gadget/f_acm.c differ
Only in G3/drivers/usb/gadget: f_acm.h
Only in G3/drivers/usb/gadget: f_adb.c
Only in G3/drivers/usb/gadget: f_adb.h
Only in Linux/drivers/usb/gadget: f_audio.c
Files Linux/drivers/usb/gadget/f_ecm.c and G3/drivers/usb/gadget/f_ecm.c differ
Only in Linux/drivers/usb/gadget: f_eem.c
Files Linux/drivers/usb/gadget/file_storage.c and G3/drivers/usb/gadget/file_storage.c differ
Only in G3/drivers/usb/gadget: f_logging.c
Only in G3/drivers/usb/gadget: f_logging.h
Files Linux/drivers/usb/gadget/f_loopback.c and G3/drivers/usb/gadget/f_loopback.c differ
Only in G3/drivers/usb/gadget: f_mass_storage.c
Only in G3/drivers/usb/gadget: f_mass_storage.h
Only in G3/drivers/usb/gadget: f_mtp.c
Only in G3/drivers/usb/gadget: f_mtp.h
Files Linux/drivers/usb/gadget/f_obex.c and G3/drivers/usb/gadget/f_obex.c differ
Files Linux/drivers/usb/gadget/f_rndis.c and G3/drivers/usb/gadget/f_rndis.c differ
Only in G3/drivers/usb/gadget: fsa9480_i2c.c
Only in G3/drivers/usb/gadget: fsa9480_i2c.h
Files Linux/drivers/usb/gadget/f_serial.c and G3/drivers/usb/gadget/f_serial.c differ
Only in Linux/drivers/usb/gadget: fsl_mx3_udc.c
Only in Linux/drivers/usb/gadget: fsl_udc_core.c
Only in G3/drivers/usb/gadget: fsl_usb2_udc.c
Files Linux/drivers/usb/gadget/fsl_usb2_udc.h and G3/drivers/usb/gadget/fsl_usb2_udc.h differ
Files Linux/drivers/usb/gadget/f_sourcesink.c and G3/drivers/usb/gadget/f_sourcesink.c differ
Files Linux/drivers/usb/gadget/f_subset.c and G3/drivers/usb/gadget/f_subset.c differ
Files Linux/drivers/usb/gadget/gadget_chips.h and G3/drivers/usb/gadget/gadget_chips.h differ
Files Linux/drivers/usb/gadget/gmidi.c and G3/drivers/usb/gadget/gmidi.c differ
Files Linux/drivers/usb/gadget/goku_udc.c and G3/drivers/usb/gadget/goku_udc.c differ
Files Linux/drivers/usb/gadget/g_zero.h and G3/drivers/usb/gadget/g_zero.h differ
Files Linux/drivers/usb/gadget/imx_udc.c and G3/drivers/usb/gadget/imx_udc.c differ
Files Linux/drivers/usb/gadget/imx_udc.h and G3/drivers/usb/gadget/imx_udc.h differ
Files Linux/drivers/usb/gadget/inode.c and G3/drivers/usb/gadget/inode.c differ
Files Linux/drivers/usb/gadget/Kconfig and G3/drivers/usb/gadget/Kconfig differ
Only in Linux/drivers/usb/gadget: langwell_udc.c
Only in Linux/drivers/usb/gadget: langwell_udc.h
Files Linux/drivers/usb/gadget/lh7a40x_udc.c and G3/drivers/usb/gadget/lh7a40x_udc.c differ
Files Linux/drivers/usb/gadget/m66592-udc.c and G3/drivers/usb/gadget/m66592-udc.c differ
Files Linux/drivers/usb/gadget/m66592-udc.h and G3/drivers/usb/gadget/m66592-udc.h differ
Files Linux/drivers/usb/gadget/Makefile and G3/drivers/usb/gadget/Makefile differ
Files Linux/drivers/usb/gadget/net2280.c and G3/drivers/usb/gadget/net2280.c differ
Files Linux/drivers/usb/gadget/omap_udc.c and G3/drivers/usb/gadget/omap_udc.c differ
Files Linux/drivers/usb/gadget/printer.c and G3/drivers/usb/gadget/printer.c differ
Files Linux/drivers/usb/gadget/pxa25x_udc.c and G3/drivers/usb/gadget/pxa25x_udc.c differ
Files Linux/drivers/usb/gadget/pxa25x_udc.h and G3/drivers/usb/gadget/pxa25x_udc.h differ
Files Linux/drivers/usb/gadget/pxa27x_udc.c and G3/drivers/usb/gadget/pxa27x_udc.c differ
Files Linux/drivers/usb/gadget/pxa27x_udc.h and G3/drivers/usb/gadget/pxa27x_udc.h differ
Only in Linux/drivers/usb/gadget: r8a66597-udc.c
Only in Linux/drivers/usb/gadget: r8a66597-udc.h
Files Linux/drivers/usb/gadget/rndis.c and G3/drivers/usb/gadget/rndis.c differ
Files Linux/drivers/usb/gadget/rndis.h and G3/drivers/usb/gadget/rndis.h differ
Files Linux/drivers/usb/gadget/s3c2410_udc.c and G3/drivers/usb/gadget/s3c2410_udc.c differ
Only in Linux/drivers/usb/gadget: s3c-hsotg.c
Only in G3/drivers/usb/gadget: s3c-udc.h
Only in G3/drivers/usb/gadget: s3c-udc-otg-hs.c
Only in G3/drivers/usb/gadget: s3c-udc-otg-hs_dma.c
Only in G3/drivers/usb/gadget: s3c-udc-otg-hs_slave.c
Only in G3/drivers/usb/gadget: serial_acm.c
Files Linux/drivers/usb/gadget/serial.c and G3/drivers/usb/gadget/serial.c differ
Only in Linux/drivers/usb/gadget: u_audio.c
Only in Linux/drivers/usb/gadget: u_audio.h
Files Linux/drivers/usb/gadget/u_ether.c and G3/drivers/usb/gadget/u_ether.c differ
Files Linux/drivers/usb/gadget/u_ether.h and G3/drivers/usb/gadget/u_ether.h differ
Files Linux/drivers/usb/gadget/usbstring.c and G3/drivers/usb/gadget/usbstring.c differ
Files Linux/drivers/usb/gadget/u_serial.c and G3/drivers/usb/gadget/u_serial.c differ
Files Linux/drivers/usb/gadget/zero.c and G3/drivers/usb/gadget/zero.c differ
Files Linux/drivers/video/fbmem.c and G3/drivers/video/fbmem.c differ
Files Linux/drivers/video/Kconfig and G3/drivers/video/Kconfig differ
Files Linux/drivers/video/Makefile and G3/drivers/video/Makefile differ
Only in G3/drivers/video: samsung
Files Linux/drivers/w1/w1.c and G3/drivers/w1/w1.c differ
Files Linux/drivers/watchdog/Kconfig and G3/drivers/watchdog/Kconfig differ
Files Linux/drivers/watchdog/Makefile and G3/drivers/watchdog/Makefile differ
Only in G3/drivers/watchdog: s3c_wdt.c
firmware:
Code:
No Difference
fs:
Code:
Files Linux/fs/fat/dir.c and G3/fs/fat/dir.c differ
Files Linux/fs/fat/fat.h and G3/fs/fat/fat.h differ
Files Linux/fs/fat/inode.c and G3/fs/fat/inode.c differ
Files Linux/fs/fs-writeback.c and G3/fs/fs-writeback.c differ
Files Linux/fs/Kconfig and G3/fs/Kconfig differ
Files Linux/fs/Makefile and G3/fs/Makefile differ
Files Linux/fs/partitions/check.c and G3/fs/partitions/check.c differ
Files Linux/fs/proc/base.c and G3/fs/proc/base.c differ
Files Linux/fs/proc/task_mmu.c and G3/fs/proc/task_mmu.c differ
Files Linux/fs/sysfs/dir.c and G3/fs/sysfs/dir.c differ
Only in G3/fs: yaffs2
include:
Code:
Files Linux/include/linux/amba/mmci.h and G3/include/linux/amba/mmci.h differ
Only in G3/include/linux: android_aid.h
Only in G3/include/linux: android_alarm.h
Only in G3/include/linux: android_pmem.h
Only in G3/include/linux: ashmem.h
Only in G3/include/linux: earlysuspend.h
Only in G3/include/linux: fsr_if.h
Only in G3/include/linux: gpio_event.h
Only in G3/include/linux/i2c: max8998.h
Only in G3/include/linux/i2c: pmic.h
Only in G3/include/linux: if_pppolac.h
Only in G3/include/linux: if_pppopns.h
Files Linux/include/linux/if_pppox.h and G3/include/linux/if_pppox.h differ
Only in G3/include/linux: kernel_debugger.h
Only in G3/include/linux: kernel_sec_common.h
Only in G3/include/linux: keychord.h
Only in G3/include/linux: keyreset.h
Files Linux/include/linux/mmc/host.h and G3/include/linux/mmc/host.h differ
Files Linux/include/linux/mmc/sdio_func.h and G3/include/linux/mmc/sdio_func.h differ
Files Linux/include/linux/mm.h and G3/include/linux/mm.h differ
Only in G3/include/linux: modemctl.h
Files Linux/include/linux/msdos_fs.h and G3/include/linux/msdos_fs.h differ
Files Linux/include/linux/mtd/onenand.h and G3/include/linux/mtd/onenand.h differ
Files Linux/include/linux/mtd/onenand_regs.h and G3/include/linux/mtd/onenand_regs.h differ
Only in G3/include/linux: onedram.h
Files Linux/include/linux/power_supply.h and G3/include/linux/power_supply.h differ
Only in G3/include/linux/regulator: max8998.h
Files Linux/include/linux/sched.h and G3/include/linux/sched.h differ
Files Linux/include/linux/serial_core.h and G3/include/linux/serial_core.h differ
Files Linux/include/linux/skbuff.h and G3/include/linux/skbuff.h differ
Files Linux/include/linux/sockios.h and G3/include/linux/sockios.h differ
Only in G3/include/linux: switch.h
Only in G3/include/linux: synaptics_i2c_rmi.h
Only in G3/include/linux: uid_stat.h
Only in G3/include/linux/usb: android_composite.h
Only in G3/include/linux/usb: android.h
Files Linux/include/linux/usb/composite.h and G3/include/linux/usb/composite.h differ
Only in G3/include/linux: videodev2_samsung.h
Only in G3/include/linux: wakelock.h
Only in G3/include/linux: wifi_tiwlan.h
Only in G3/include/linux: wl127x-rfkill.h
Only in G3/include/linux: wlan_plat.h
Only in G3/include/media: s5k4ca_platform.h
Files Linux/include/net/bluetooth/hci_core.h and G3/include/net/bluetooth/hci_core.h differ
Files Linux/include/net/bluetooth/hci.h and G3/include/net/bluetooth/hci.h differ
Files Linux/include/net/bluetooth/l2cap.h and G3/include/net/bluetooth/l2cap.h differ
Files Linux/include/net/bluetooth/rfcomm.h and G3/include/net/bluetooth/rfcomm.h differ
Files Linux/include/net/bluetooth/sco.h and G3/include/net/bluetooth/sco.h differ
Files Linux/include/net/tcp.h and G3/include/net/tcp.h differ
Files Linux/include/sound/pcm.h and G3/include/sound/pcm.h differ
init:
Code:
Files Linux/init/Kconfig and G3/init/Kconfig differ
ipc:
Code:
No Difference
kernel:
Code:
Files Linux/kernel/cgroup.c and G3/kernel/cgroup.c differ
Files Linux/kernel/cgroup_freezer.c and G3/kernel/cgroup_freezer.c differ
Files Linux/kernel/cpuset.c and G3/kernel/cpuset.c differ
Files Linux/kernel/fork.c and G3/kernel/fork.c differ
Files Linux/kernel/futex.c and G3/kernel/futex.c differ
Only in G3/kernel: kernel_sec_debug.c
Files Linux/kernel/Makefile and G3/kernel/Makefile differ
Files Linux/kernel/panic.c and G3/kernel/panic.c differ
Only in G3/kernel/power: consoleearlysuspend.c
Only in G3/kernel/power: earlysuspend.c
Only in G3/kernel/power: fbearlysuspend.c
Files Linux/kernel/power/Kconfig and G3/kernel/power/Kconfig differ
Files Linux/kernel/power/main.c and G3/kernel/power/main.c differ
Files Linux/kernel/power/Makefile and G3/kernel/power/Makefile differ
Files Linux/kernel/power/power.h and G3/kernel/power/power.h differ
Files Linux/kernel/power/process.c and G3/kernel/power/process.c differ
Files Linux/kernel/power/suspend.c and G3/kernel/power/suspend.c differ
Only in G3/kernel/power: userwakelock.c
Only in G3/kernel/power: wakelock.c
Files Linux/kernel/printk.c and G3/kernel/printk.c differ
Files Linux/kernel/sched.c and G3/kernel/sched.c differ
Files Linux/kernel/sysctl.c and G3/kernel/sysctl.c differ
lib:
Code:
No Difference
mm:
Code:
Only in G3/mm: ashmem.c
Files Linux/mm/Makefile and G3/mm/Makefile differ
Files Linux/mm/page_alloc.c and G3/mm/page_alloc.c differ
Files Linux/mm/shmem.c and G3/mm/shmem.c differ
modules:
Code:
Folder only in Samsung Kernel.
net:
Code:
Files Linux/net/bluetooth/af_bluetooth.c and G3/net/bluetooth/af_bluetooth.c differ
Files Linux/net/bluetooth/hci_conn.c and G3/net/bluetooth/hci_conn.c differ
Files Linux/net/bluetooth/hci_core.c and G3/net/bluetooth/hci_core.c differ
Files Linux/net/bluetooth/hci_event.c and G3/net/bluetooth/hci_event.c differ
Files Linux/net/bluetooth/l2cap.c and G3/net/bluetooth/l2cap.c differ
Files Linux/net/bluetooth/rfcomm/core.c and G3/net/bluetooth/rfcomm/core.c differ
Files Linux/net/bluetooth/sco.c and G3/net/bluetooth/sco.c differ
Files Linux/net/core/skbuff.c and G3/net/core/skbuff.c differ
Files Linux/net/ipv4/af_inet.c and G3/net/ipv4/af_inet.c differ
Files Linux/net/ipv4/devinet.c and G3/net/ipv4/devinet.c differ
Files Linux/net/ipv4/Makefile and G3/net/ipv4/Makefile differ
Only in G3/net/ipv4: sysfs_net_ipv4.c
Files Linux/net/ipv4/tcp_input.c and G3/net/ipv4/tcp_input.c differ
Files Linux/net/ipv4/tcp_ipv4.c and G3/net/ipv4/tcp_ipv4.c differ
Files Linux/net/ipv4/tcp_output.c and G3/net/ipv4/tcp_output.c differ
Files Linux/net/ipv6/af_inet6.c and G3/net/ipv6/af_inet6.c differ
Files Linux/net/Kconfig and G3/net/Kconfig differ
Files Linux/net/phonet/af_phonet.c and G3/net/phonet/af_phonet.c differ
Files Linux/net/phonet/Kconfig and G3/net/phonet/Kconfig differ
Files Linux/net/rfkill/core.c and G3/net/rfkill/core.c differ
Files Linux/net/rfkill/Kconfig and G3/net/rfkill/Kconfig differ
Files Linux/net/socket.c and G3/net/socket.c differ
samples:
Code:
No Difference
scipts:
Code:
No Difference
security:
Code:
Files Linux/security/commoncap.c and G3/security/commoncap.c differ
sound:
Code:
Files Linux/sound/core/pcm_lib.c and G3/sound/core/pcm_lib.c differ
Files Linux/sound/soc/codecs/Kconfig and G3/sound/soc/codecs/Kconfig differ
Files Linux/sound/soc/codecs/Makefile and G3/sound/soc/codecs/Makefile differ
Only in G3/sound/soc/codecs: wm8994_apollo.c
Only in G3/sound/soc/codecs: wm8994.c
Only in G3/sound/soc/codecs: wm8994_def.h
Only in G3/sound/soc/codecs: wm8994_gain.c
Only in G3/sound/soc/codecs: wm8994_gain.h
Files Linux/sound/soc/Kconfig and G3/sound/soc/Kconfig differ
Files Linux/sound/soc/Makefile and G3/sound/soc/Makefile differ
Only in G3/sound/soc: s5p
tools:
Code:
No Difference
usr:
Code:
No Difference
virt:
Code:
No Difference
dharamg3 said:
Well, there are too many advantages, and the kernel is the same...only the driver's change from desktop/netbook i think....
Click to expand...
Click to collapse
I know that it's the same kernel. Can you or Sebastien name some of the advantages which make this work worthwhile? E.g. what goals are you trying to reach by it except having a newer kernel.
Benjamin_L said:
I know that it's the same kernel. Can you or Sebastien name some of the advantages which make this work worthwhile? E.g. what goals are you trying to reach by it except having a newer kernel.
Click to expand...
Click to collapse
one thing we are supposing is that if this kernel is ported then we may get Official CM support...
another thing is to get MTD driver working for our NAND devices...
and also all the other improvements for the kernel...
many more things...which i think marcellusbe can explain better...
Difference in arch folder:
diff -crB Linux/arch G3/arch > arch.patch
Code:
diff -crB Linux/arch/arm/boot/compressed/head.S G3/arch/arm/boot/compressed/head.S
*** Linux/arch/arm/boot/compressed/head.S 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/boot/compressed/head.S 2011-02-26 04:41:29.000000000 -0800
***************
*** 21,27 ****
#if defined(CONFIG_DEBUG_ICEDCC)
! #ifdef CONFIG_CPU_V6
.macro loadsp, rb
.endm
.macro writeb, ch, rb
--- 21,27 ----
#if defined(CONFIG_DEBUG_ICEDCC)
! #ifdef defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V7)
.macro loadsp, rb
.endm
.macro writeb, ch, rb
***************
*** 620,625 ****
--- 620,627 ----
@ b __arm6_mmu_cache_off
@ b __armv3_mmu_cache_flush
+ #if !defined(CONFIG_CPU_V7)
+ /* This collides with some V7 IDs, preventing correct detection */
.word 0x00000000 @ old ARM ID
.word 0x0000f000
mov pc, lr
***************
*** 628,633 ****
--- 630,636 ----
THUMB( nop )
mov pc, lr
THUMB( nop )
+ #endif
.word 0x41007000 @ ARM7/710
.word 0xfff8fe00
diff -crB Linux/arch/arm/boot/compressed/misc.c G3/arch/arm/boot/compressed/misc.c
*** Linux/arch/arm/boot/compressed/misc.c 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/boot/compressed/misc.c 2011-02-26 04:41:29.000000000 -0800
***************
*** 33,39 ****
#ifdef CONFIG_DEBUG_ICEDCC
! #ifdef CONFIG_CPU_V6
static void icedcc_putc(int ch)
{
--- 33,39 ----
#ifdef CONFIG_DEBUG_ICEDCC
! #if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V7)
static void icedcc_putc(int ch)
{
Only in G3/arch/arm/configs: apollo_rev_02_android_defconfig
diff -crB Linux/arch/arm/configs/msm_defconfig G3/arch/arm/configs/msm_defconfig
*** Linux/arch/arm/configs/msm_defconfig 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/configs/msm_defconfig 2011-02-26 04:41:29.000000000 -0800
***************
*** 69,74 ****
--- 69,75 ----
CONFIG_SIGNALFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
+ CONFIG_ASHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
***************
*** 256,261 ****
--- 257,263 ----
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
+ CONFIG_ANDROID_PARANOID_NETWORK=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
diff -crB Linux/arch/arm/include/asm/cacheflush.h G3/arch/arm/include/asm/cacheflush.h
*** Linux/arch/arm/include/asm/cacheflush.h 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/include/asm/cacheflush.h 2011-02-26 04:41:29.000000000 -0800
***************
*** 381,387 ****
* Harvard caches are synchronised for the user space address range.
* This is used for the ARM private sys_cacheflush system call.
*/
! #define flush_cache_user_range(vma,start,end) \
__cpuc_coherent_user_range((start) & PAGE_MASK, PAGE_ALIGN(end))
/*
--- 381,387 ----
* Harvard caches are synchronised for the user space address range.
* This is used for the ARM private sys_cacheflush system call.
*/
! #define flush_cache_user_range(start,end) \
__cpuc_coherent_user_range((start) & PAGE_MASK, PAGE_ALIGN(end))
/*
diff -crB Linux/arch/arm/Kconfig G3/arch/arm/Kconfig
*** Linux/arch/arm/Kconfig 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/Kconfig 2011-02-26 04:41:29.000000000 -0800
***************
*** 627,632 ****
--- 627,640 ----
help
Samsung S5PC1XX series based systems
+ config ARCH_S5P64XX
+ bool "Samsung S5P64XX"
+ select GENERIC_GPIO
+ select ARCH_HAS_CPUFREQ
+ select HAVE_CLK
+ help
+ Samsung S5P64XX series based systems
+
config ARCH_SHARK
bool "Shark"
select CPU_SA110
***************
*** 751,756 ****
--- 759,766 ----
source "arch/arm/plat-s3c64xx/Kconfig"
source "arch/arm/plat-s3c/Kconfig"
source "arch/arm/plat-s5pc1xx/Kconfig"
+ source "arch/arm/plat-s5p64xx/Kconfig"
+ source "arch/arm/plat-s5p/Kconfig"
if ARCH_S3C2410
source "arch/arm/mach-s3c2400/Kconfig"
***************
*** 772,777 ****
--- 782,791 ----
source "arch/arm/mach-s5pc100/Kconfig"
endif
+ if ARCH_S5P64XX
+ source "arch/arm/mach-s5p6442/Kconfig"
+ endif
+
source "arch/arm/mach-lh7a40x/Kconfig"
source "arch/arm/mach-h720x/Kconfig"
***************
*** 948,953 ****
--- 962,981 ----
endmenu
+ menu "Samsung Kernel Debug Features"
+
+ choice
+ prompt "Enable Samsung Kernel Debug Features"
+ default KERNEL_DEBUG_SEC
+
+ config KERNEL_DEBUG_SEC
+ bool "KERNEL_DEBUG_SEC"
+
+ endchoice
+
+ endmenu
+
+
menu "Kernel Features"
source "kernel/time/Kconfig"
***************
*** 1041,1047 ****
config HZ
int
default 128 if ARCH_L7200
! default 200 if ARCH_EBSA110 || ARCH_S3C2410
default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
default AT91_TIMER_HZ if ARCH_AT91
default 100
--- 1069,1076 ----
config HZ
int
default 128 if ARCH_L7200
! default 200 if ARCH_EBSA110 || ARCH_S3C2410 || (ARCH_S5P64XX && !HRT_RTC)
! default 256 if ARCH_S5P64XX && HRT_RTC
default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
default AT91_TIMER_HZ if ARCH_AT91
default 100
***************
*** 1137,1142 ****
--- 1166,1178 ----
depends on HIGHMEM
depends on !OUTER_CACHE
+ config VMALLOC_RESERVE
+ hex "Reserved vmalloc space"
+ default 0x08000000
+ depends on MMU
+ help
+ Reserved vmalloc space if not specified on the kernel commandline.
+
source "mm/Kconfig"
config LEDS
***************
*** 1508,1513 ****
--- 1544,1551 ----
source "drivers/Kconfig"
+ source "drivers/sensor/Kconfig"
+
source "fs/Kconfig"
source "arch/arm/Kconfig.debug"
diff -crB Linux/arch/arm/kernel/debug.S G3/arch/arm/kernel/debug.S
*** Linux/arch/arm/kernel/debug.S 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/kernel/debug.S 2011-02-26 04:41:29.000000000 -0800
***************
*** 22,28 ****
#if defined(CONFIG_DEBUG_ICEDCC)
@@ debug using ARM EmbeddedICE DCC channel
! #if defined(CONFIG_CPU_V6)
.macro addruart, rx
.endm
--- 22,28 ----
#if defined(CONFIG_DEBUG_ICEDCC)
@@ debug using ARM EmbeddedICE DCC channel
! #if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V7)
.macro addruart, rx
.endm
diff -crB Linux/arch/arm/kernel/entry-armv.S G3/arch/arm/kernel/entry-armv.S
*** Linux/arch/arm/kernel/entry-armv.S 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/kernel/entry-armv.S 2011-02-26 04:41:29.000000000 -0800
***************
*** 741,750 ****
#endif
#if defined(CONFIG_HAS_TLS_REG)
mcr p15, 0, r3, c13, c0, 3 @ set TLS register
! #elif !defined(CONFIG_TLS_REG_EMUL)
mov r4, #0xffff0fff
str r3, [r4, #-15] @ TLS val at 0xffff0ff0
! #endif
#ifdef CONFIG_MMU
mcr p15, 0, r6, c3, c0, 0 @ Set domain register
#endif
--- 741,751 ----
#endif
#if defined(CONFIG_HAS_TLS_REG)
mcr p15, 0, r3, c13, c0, 3 @ set TLS register
! //#elif !defined(CONFIG_TLS_REG_EMUL)
! #endif
mov r4, #0xffff0fff
str r3, [r4, #-15] @ TLS val at 0xffff0ff0
! //#endif
#ifdef CONFIG_MMU
mcr p15, 0, r6, c3, c0, 0 @ Set domain register
#endif
diff -crB Linux/arch/arm/kernel/process.c G3/arch/arm/kernel/process.c
*** Linux/arch/arm/kernel/process.c 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/kernel/process.c 2011-02-26 04:41:29.000000000 -0800
***************
*** 206,211 ****
--- 206,282 ----
arm_pm_restart(reboot_mode, cmd);
}
+ /*
+ * dump a block of kernel memory from around the given address
+ */
+ static void show_data(unsigned long addr, int nbytes, const char *name)
+ {
+ int i, j;
+ int nlines;
+ u32 *p;
+
+ /*
+ * don't attempt to dump non-kernel addresses or
+ * values that are probably just small negative numbers
+ */
+ if (addr < PAGE_OFFSET || addr > -256UL)
+ return;
+
+ printk("\n%s: %#lx:\n", name, addr);
+
+ /*
+ * round address down to a 32 bit boundary
+ * and always dump a multiple of 32 bytes
+ */
+ p = (u32 *)(addr & ~(sizeof(u32) - 1));
+ nbytes += (addr & (sizeof(u32) - 1));
+ nlines = (nbytes + 31) / 32;
+
+
+ for (i = 0; i < nlines; i++) {
+ /*
+ * just display low 16 bits of address to keep
+ * each line of the dump < 80 characters
+ */
+ printk("%04lx ", (unsigned long)p & 0xffff);
+ for (j = 0; j < 8; j++) {
+ u32 data;
+ if (probe_kernel_address(p, data)) {
+ printk(" ********");
+ } else {
+ printk(" %08x", data);
+ }
+ ++p;
+ }
+ printk("\n");
+ }
+ }
+
+ static void show_extra_register_data(struct pt_regs *regs, int nbytes)
+ {
+ mm_segment_t fs;
+
+ fs = get_fs();
+ set_fs(KERNEL_DS);
+ show_data(regs->ARM_pc - nbytes, nbytes * 2, "PC");
+ show_data(regs->ARM_lr - nbytes, nbytes * 2, "LR");
+ show_data(regs->ARM_sp - nbytes, nbytes * 2, "SP");
+ show_data(regs->ARM_ip - nbytes, nbytes * 2, "IP");
+ show_data(regs->ARM_fp - nbytes, nbytes * 2, "FP");
+ show_data(regs->ARM_r0 - nbytes, nbytes * 2, "R0");
+ show_data(regs->ARM_r1 - nbytes, nbytes * 2, "R1");
+ show_data(regs->ARM_r2 - nbytes, nbytes * 2, "R2");
+ show_data(regs->ARM_r3 - nbytes, nbytes * 2, "R3");
+ show_data(regs->ARM_r4 - nbytes, nbytes * 2, "R4");
+ show_data(regs->ARM_r5 - nbytes, nbytes * 2, "R5");
+ show_data(regs->ARM_r6 - nbytes, nbytes * 2, "R6");
+ show_data(regs->ARM_r7 - nbytes, nbytes * 2, "R7");
+ show_data(regs->ARM_r8 - nbytes, nbytes * 2, "R8");
+ show_data(regs->ARM_r9 - nbytes, nbytes * 2, "R9");
+ show_data(regs->ARM_r10 - nbytes, nbytes * 2, "R10");
+ set_fs(fs);
+ }
+
void __show_regs(struct pt_regs *regs)
{
unsigned long flags;
***************
*** 264,269 ****
--- 335,342 ----
printk("Control: %08x%s\n", ctrl, buf);
}
#endif
+
+ show_extra_register_data(regs, 128);
}
void show_regs(struct pt_regs * regs)
diff -crB Linux/arch/arm/kernel/setup.c G3/arch/arm/kernel/setup.c
*** Linux/arch/arm/kernel/setup.c 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/kernel/setup.c 2011-02-26 04:41:29.000000000 -0800
***************
*** 211,216 ****
--- 211,223 ----
if (cpu_arch)
cpu_arch += CPU_ARCH_ARMv3;
} else if ((read_cpuid_id() & 0x000f0000) == 0x000f0000) {
+ #ifdef CONFIG_CPU_V6
+ /* This patch is to detect CPU arch for ARM1176JZF-S.
+ * The ARM1176JZF-S has VMSAv7 memory model(same as cortex)
+ * but it is not the ARMv7 architecture.
+ */
+ return CPU_ARCH_ARMv6;
+ #else
unsigned int mmfr0;
/* Revised CPUID format. Read the Memory Model Feature
***************
*** 225,230 ****
--- 232,238 ----
cpu_arch = CPU_ARCH_ARMv6;
else
cpu_arch = CPU_ARCH_UNKNOWN;
+ #endif
} else
cpu_arch = CPU_ARCH_UNKNOWN;
diff -crB Linux/arch/arm/kernel/signal.c G3/arch/arm/kernel/signal.c
*** Linux/arch/arm/kernel/signal.c 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/kernel/signal.c 2011-02-26 04:41:29.000000000 -0800
***************
*** 517,522 ****
--- 517,530 ----
static inline void setup_syscall_restart(struct pt_regs *regs)
{
+ if (regs->ARM_ORIG_r0 == -ERESTARTNOHAND ||
+ regs->ARM_ORIG_r0 == -ERESTARTSYS ||
+ regs->ARM_ORIG_r0 == -ERESTARTNOINTR ||
+ regs->ARM_ORIG_r0 == -ERESTART_RESTARTBLOCK) {
+ /* the syscall cannot be safely restarted, return -EINTR instead */
+ regs->ARM_r0 = -EINTR;
+ return;
+ }
regs->ARM_r0 = regs->ARM_ORIG_r0;
regs->ARM_pc -= thumb_mode(regs) ? 2 : 4;
}
***************
*** 649,654 ****
--- 657,663 ----
*/
if (syscall) {
if (regs->ARM_r0 == -ERESTART_RESTARTBLOCK) {
+ regs->ARM_r0 = -EAGAIN; /* prevent multiple restarts */
if (thumb_mode(regs)) {
regs->ARM_r7 = __NR_restart_syscall - __NR_SYSCALL_BASE;
regs->ARM_pc -= 2;
diff -crB Linux/arch/arm/kernel/traps.c G3/arch/arm/kernel/traps.c
*** Linux/arch/arm/kernel/traps.c 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/kernel/traps.c 2011-02-26 04:41:29.000000000 -0800
***************
*** 438,444 ****
if (end > vma->vm_end)
end = vma->vm_end;
! flush_cache_user_range(vma, start, end);
}
up_read(&mm->mmap_sem);
}
--- 438,446 ----
if (end > vma->vm_end)
end = vma->vm_end;
! up_read(&mm->mmap_sem);
! flush_cache_user_range(start, end);
! return;
}
up_read(&mm->mmap_sem);
}
***************
*** 505,511 ****
thread->tp_value = regs->ARM_r0;
#if defined(CONFIG_HAS_TLS_REG)
asm ("mcr p15, 0, %0, c13, c0, 3" : : "r" (regs->ARM_r0) );
! #elif !defined(CONFIG_TLS_REG_EMUL)
/*
* User space must never try to access this directly.
* Expect your app to break eventually if you do so.
--- 507,514 ----
thread->tp_value = regs->ARM_r0;
#if defined(CONFIG_HAS_TLS_REG)
asm ("mcr p15, 0, %0, c13, c0, 3" : : "r" (regs->ARM_r0) );
! //#elif !defined(CONFIG_TLS_REG_EMUL)
! #endif
/*
* User space must never try to access this directly.
* Expect your app to break eventually if you do so.
***************
*** 513,519 ****
* (see entry-armv.S for details)
*/
*((unsigned int *)0xffff0ff0) = regs->ARM_r0;
! #endif
return 0;
#ifdef CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG
--- 516,522 ----
* (see entry-armv.S for details)
*/
*((unsigned int *)0xffff0ff0) = regs->ARM_r0;
! //#endif
return 0;
#ifdef CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG
Only in G3/arch/arm: mach-s5p6442
diff -crB Linux/arch/arm/Makefile G3/arch/arm/Makefile
*** Linux/arch/arm/Makefile 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/Makefile 2011-02-26 04:41:29.000000000 -0800
***************
*** 161,166 ****
--- 161,167 ----
machine-$(CONFIG_ARCH_S3C24A0) := s3c24a0
machine-$(CONFIG_ARCH_S3C64XX) := s3c6400 s3c6410
machine-$(CONFIG_ARCH_S5PC1XX) := s5pc100
+ machine-$(CONFIG_ARCH_S5P64XX) := s5p6442
machine-$(CONFIG_ARCH_SA1100) := sa1100
machine-$(CONFIG_ARCH_SHARK) := shark
machine-$(CONFIG_ARCH_STMP378X) := stmp378x
***************
*** 181,186 ****
--- 182,188 ----
plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx s3c
plat-$(CONFIG_PLAT_S3C64XX) := s3c64xx s3c
plat-$(CONFIG_PLAT_S5PC1XX) := s5pc1xx s3c
+ plat-$(CONFIG_PLAT_S5P64XX) := s5p64xx s5p
plat-$(CONFIG_ARCH_STMP3XXX) := stmp3xxx
ifeq ($(CONFIG_ARCH_EBSA110),y)
diff -crB Linux/arch/arm/mm/cache-v6.S G3/arch/arm/mm/cache-v6.S
*** Linux/arch/arm/mm/cache-v6.S 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/mm/cache-v6.S 2011-02-26 04:41:30.000000000 -0800
***************
*** 248,253 ****
--- 248,258 ----
* - end - virtual end address of region
*/
ENTRY(v6_dma_flush_range)
+ #ifdef CONFIG_CACHE_FLUSH_RANGE_LIMIT
+ sub r2, r1, r0
+ cmp r2, #CONFIG_CACHE_FLUSH_RANGE_LIMIT
+ bhi v6_dma_flush_dcache_all
+ #endif
bic r0, r0, #D_CACHE_LINE_SIZE - 1
1:
#ifdef HARVARD_CACHE
***************
*** 262,267 ****
--- 267,284 ----
mcr p15, 0, r0, c7, c10, 4 @ drain write buffer
mov pc, lr
+ #ifdef CONFIG_CACHE_FLUSH_RANGE_LIMIT
+ v6_dma_flush_dcache_all:
+ mov r0, #0
+ #ifdef HARVARD_CACHE
+ mcr p15, 0, r0, c7, c14, 0 @ D cache clean+invalidate
+ #else
+ mcr p15, 0, r0, c7, c15, 0 @ Cache clean+invalidate
+ #endif
+ mcr p15, 0, r0, c7, c10, 4 @ drain write buffer
+ mov pc, lr
+ #endif
+
__INITDATA
.type v6_cache_fns, #object
diff -crB Linux/arch/arm/mm/Kconfig G3/arch/arm/mm/Kconfig
*** Linux/arch/arm/mm/Kconfig 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/mm/Kconfig 2011-02-26 04:41:30.000000000 -0800
***************
*** 388,394 ****
# ARMv6
config CPU_V6
! bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
select CPU_32v6
select CPU_ABRT_EV6
select CPU_PABRT_V6
--- 388,394 ----
# ARMv6
config CPU_V6
! bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX || ARCH_S5P64XX
select CPU_32v6
select CPU_ABRT_EV6
select CPU_PABRT_V6
Only in G3/arch/arm: plat-s5p
Only in G3/arch/arm: plat-s5p64xx
diff -crB Linux/arch/arm/tools/mach-types G3/arch/arm/tools/mach-types
*** Linux/arch/arm/tools/mach-types 2010-02-23 07:38:51.000000000 -0800
--- G3/arch/arm/tools/mach-types 2011-02-26 04:41:31.000000000 -0800
***************
*** 2128,2134 ****
dm355_leopard MACH_DM355_LEOPARD DM355_LEOPARD 2138
ts219 MACH_TS219 TS219 2139
tny_a9263 MACH_TNY_A9263 TNY_A9263 2140
- apollo MACH_APOLLO APOLLO 2141
at91cap9stk MACH_AT91CAP9STK AT91CAP9STK 2142
spc300 MACH_SPC300 SPC300 2143
eko MACH_EKO EKO 2144
--- 2128,2133 ----
***************
*** 2309,2314 ****
--- 2308,2314 ----
sbox9263 MACH_SBOX9263 SBOX9263 2322
oreo MACH_OREO OREO 2323
smdk6442 MACH_SMDK6442 SMDK6442 2324
+ apollo MACH_APOLLO APOLLO 2324
openrd_base MACH_OPENRD_BASE OPENRD_BASE 2325
incredible MACH_INCREDIBLE INCREDIBLE 2326
incrediblec MACH_INCREDIBLEC INCREDIBLEC 2327
Difference in block folder
diff -crB linux/block g3/block > block.patch
Code:
diff -crB linux/block/blk-core.c g3/block/blk-core.c
*** linux/block/blk-core.c 2010-02-23 07:38:51.000000000 -0800
--- g3/block/blk-core.c 2011-02-26 04:41:37.000000000 -0800
***************
*** 1569,1579 ****
if (unlikely(block_dump)) {
char b[BDEVNAME_SIZE];
! printk(KERN_DEBUG "%s(%d): %s block %Lu on %s\n",
current->comm, task_pid_nr(current),
(rw & WRITE) ? "WRITE" : "READ",
(unsigned long long)bio->bi_sector,
! bdevname(bio->bi_bdev, b));
}
}
--- 1569,1580 ----
if (unlikely(block_dump)) {
char b[BDEVNAME_SIZE];
! printk(KERN_DEBUG "%s(%d): %s block %Lu on %s (%u sectors)\n",
current->comm, task_pid_nr(current),
(rw & WRITE) ? "WRITE" : "READ",
(unsigned long long)bio->bi_sector,
! bdevname(bio->bi_bdev, b),
! count);
}
}
diff -crB linux/block/genhd.c g3/block/genhd.c
*** linux/block/genhd.c 2010-02-23 07:38:51.000000000 -0800
--- g3/block/genhd.c 2011-02-26 04:41:37.000000000 -0800
***************
*** 994,999 ****
--- 994,1015 ----
free_part_stats(&disk->part0);
kfree(disk);
}
+
+ static int disk_uevent(struct device *dev, struct kobj_uevent_env *env)
+ {
+ struct gendisk *disk = dev_to_disk(dev);
+ struct disk_part_iter piter;
+ struct hd_struct *part;
+ int cnt = 0;
+
+ disk_part_iter_init(&piter, disk, 0);
+ while((part = disk_part_iter_next(&piter)))
+ cnt++;
+ disk_part_iter_exit(&piter);
+ add_uevent_var(env, "NPARTS=%u", cnt);
+ return 0;
+ }
+
struct class block_class = {
.name = "block",
};
***************
*** 1012,1017 ****
--- 1028,1034 ----
.groups = disk_attr_groups,
.release = disk_release,
.devnode = block_devnode,
+ .uevent = disk_uevent,
};
#ifdef CONFIG_PROC_FS
Some parts of the porting seem simple enough but some parts will be a bit awkward such as fixing files which have been messed with by Samsung and getting those changes to work in the new kernel.
While it may not seem like it is worth it to most people, a completely fresh and new kernel will bring about a few major changes to our phone and will really give us more of a boost. Linux doesn't make new kernels just for minor things, the changelogs between each version is massive and they include performance boosts, security fixes and improved stability.
Putting a new kernel into our phone will mean we will have a clean slate, like CM is. None of Samsungs weird modifications will shine through.
The best part is that by putting a new kernel in we can see what the changes are that need to be made to make it work on our phone and it will allow us to move on to even bigger better kernels at a later stage such a 3.0 maybe.
Related
j4fs driver is now OpenSource
Big news for every hacker on Samsung devices! j4fs driver is now OpenSource Enjoy: http://bit.ly/jatK1c Click to expand... Click to collapse http://romkitchen.org/sgs/?s=home Someone care to explain the benefits, if any, of this? My understanding from what little i read is it will help with kernal development on a decent number of samsung devices. Edit: as in should i be "super excited", "meh", or "cool beans".
second that question .. does this help us?
Would this driver be the one that controls download mode? Sent from my GT-I9000 using XDA Premium App
Maybe this? added: Should have checked supercurio's github Samsung v1 GT-I9100 sources: [common] param.lfs/j4fs driver (communication with bootloader), now OpenSource, yay!
google : j4fs... its a filesystem.... FACT So my GUESS... a driver for a filesystem... like ext4 and fat drivers for handling our other storage.. a new filesystem for us to tweak the crap out of and use..? though ive been wrong before. that is only a logical conclusion not a factual statement
TRusselo said: google : j4fs... its a filesystem.... FACT So my GUESS... a driver for a filesystem... like ext4 and fat drivers for handling our other storage.. a new filesystem for us to tweak the crap out of and use..? though ive been wrong before. that is only a logical conclusion not a factual statement Click to expand... Click to collapse Sounds good to me. Sent from my GT-I9000 using XDA Premium App
TRusselo said: google : j4fs... its a filesystem.... FACT So my GUESS... a driver for a filesystem... like ext4 and fat drivers for handling our other storage.. a new filesystem for us to tweak the crap out of and use..? though ive been wrong before. that is only a logical conclusion not a factual statement Click to expand... Click to collapse according to the post above you this may be the file system used for the bootloaders on the sgs2 so it would help those folks when hacking.
J4FS porting released If someone is still interested I've just finished the porting of the J4FS on 3.1.x kernel adding support for normal "block device" (for loopback image mounting). movitool.ntd.homelinux.org/trac/movitool/wiki/j4fs Hope this can help... Ceers Nitro
And another tool (standalone) to extract j4fs/lfs images (eg. param.lfs). Note: it only extracts - if you want to modify an image you'll have to use the kernel module from the post above (or a hexeditor and some cleverness). https://github.com/ius/j4fs_extract (for Googleability)
whiteguypl said: http://romkitchen.org/sgs/?s=home Someone care to explain the benefits, if any, of this? My understanding from what little i read is it will help with kernal development on a decent number of samsung devices. Edit: as in should i be "super excited", "meh", or "cool beans". Click to expand... Click to collapse dunno for what the driver/partition is used, had troubles (device freeze) with custom kernel an the original module from my GT-I9100 (ICS) as note: device boots and working without the j4fs module in initramfs... just for fun a little patch for kernel 3.0.15, just read operation tested. Code: Index: jv/llid_kernel.c =================================================================== --- jv/llid_kernel.c (Revision 2075) +++ jv/llid_kernel.c (Arbeitskopie) @@ -95,7 +95,7 @@ set_fs(oldfs); j4fs_filp->f_flags &= ~O_NONBLOCK; if (ret < 0) { - printk(1, "j4fs_filp->read() failed: %d\n", ret); + printk(KERN_WARNING "j4fs_filp->read() failed: %d\n", ret); return J4FS_FAIL; } // J4FS for moviNAND merged from ROSSI @@ -153,7 +153,7 @@ set_fs(oldfs); j4fs_filp->f_flags &= ~O_NONBLOCK; if (ret < 0) { - printk(1, "j4fs_filp->write() failed: %d\n", ret); + printk(KERN_WARNING "j4fs_filp->write() failed: %d\n", ret); return J4FS_FAIL; } // J4FS for moviNAND merged from ROSSI Index: jv/j4fs_kernel.c =================================================================== --- jv/j4fs_kernel.c (Revision 2075) +++ jv/j4fs_kernel.c (Arbeitskopie) @@ -10,7 +10,9 @@ * 2009.03 - Currently managed by SungHwan.yun <[email protected]> @[email protected] * */ -#include <linux/smp_lock.h> +#include <linux/kernel.h> +#include <linux/mm.h> +#include <linux/smp.h> #include <linux/time.h> #include <linux/highuid.h> #include <linux/pagemap.h> @@ -53,6 +55,8 @@ #define Page_Uptodate(page) test_bit(PG_uptodate, &(page)->flags) +#define init_MUTEX(sema) sema_init(sema,1) + extern j4fs_device_info device_info; extern unsigned int j4fs_traceMask; extern unsigned int j4fs_rw_start; @@ -234,7 +238,7 @@ T(J4FS_TRACE_FS, ("start j4fs_write_begin\n")); if(to>PAGE_CACHE_SIZE) { - T(J4FS_TRACE_ALWAYS,("%s %d: page size overflow(pos,index,offset,len,to)=(%d,%d,%d,%d,%d)\n",__FUNCTION__,__LINE__,pos,index,offset,len,to)); + T(J4FS_TRACE_ALWAYS,("%s %d: page size overflow(pos,index,offset,len,to)=(%llu,%lu,%d,%d,%d)\n",__FUNCTION__,__LINE__,pos,index,offset,len,to)); j4fs_panic("page size overflow"); return -ENOSPC; } @@ -1221,7 +1225,7 @@ struct j4fs_sb_info * sbi; struct j4fs_super_block * es; struct inode *root; - u32 tmp, len,ret; + u32 ret; T(J4FS_TRACE_FS,("%s %d\n",__FUNCTION__,__LINE__)); @@ -1322,11 +1326,11 @@ } -int j4fs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *j4fs_mount(struct file_system_type *fs_type, int flags, const char *dev_name, void *data) { T(J4FS_TRACE_FS,("%s %d\n",__FUNCTION__,__LINE__)); - return get_sb_bdev(fs_type, flags, dev_name, data, j4fs_fill_super, mnt); + return mount_bdev(fs_type, flags, dev_name, data, j4fs_fill_super); } struct kmem_cache * j4fs_inode_cachep; @@ -1386,7 +1390,7 @@ struct file_system_type j4fs_fs_type = { .owner = THIS_MODULE, .name = "j4fs", - .get_sb = j4fs_get_sb, + .mount = j4fs_mount, .kill_sb = kill_block_super, .fs_flags = FS_REQUIRES_DEV, }; @@ -1416,9 +1420,16 @@ return -EINVAL; } -int j4fs_fsync(struct file *file, struct dentry *dentry, int datasync) +static int j4fs_fsync(struct file *file, int datasync) { - return 0; + int rc = 0; + + rc = generic_file_fsync(file, datasync); + if (rc) + goto out; + rc = vfs_fsync(file, datasync); +out: + return rc; } int __init init_j4fs_fs(void) Index: jv/j4fs.h =================================================================== --- jv/j4fs.h (Revision 2075) +++ jv/j4fs.h (Arbeitskopie) @@ -167,6 +167,7 @@ #define J4FS_RECLAIM_RESET_UNUSED_SPACE #define J4FS_TRANSACTION_LOGGING +#undef T #define T(mask, p) do { if ((mask) & (j4fs_traceMask | J4FS_TRACE_ALWAYS)) TOUT(p); } while (0) #define POR(mask, p, q) do { if (((mask) & (j4fs_PORMask))&&!(--j4fs_PORCount)) {TOUT(p); while(1); }} while (0) Index: jv/Makefile =================================================================== --- jv/Makefile (Revision 2075) +++ jv/Makefile (Arbeitskopie) @@ -1,31 +1,5 @@ -############################################################################## -# COPYRIGHT(C) : Samsung Electronics Co.Ltd, 2006-2011 ALL RIGHTS RESERVED -# 2009.02 - Currently managed by JongMinKim <[email protected]> , SungHwanYun <[email protected]> -############################################################################## -# VERSION&DATE : Version 1.00 2009/02 -############################################################################## +EXTRA_CFLAGS += -Wframe-larger-than=2048 -Wno-error=declaration-after-statement -MOD_NAME = j4fs +obj-$(CONFIG_J4FS) += j4fs.o -ifneq ($(KERNELRELEASE), ) - -EXTRA_CFLAGS += -I$(PRJROOT)/modules/include -I$(KDIR)/drivers/tfsr/Inc -I$(KDIR)/include -I$(KDIR)/include/linux -I$(KDIR)/include/asm -D__KERNEL - -obj-m := $(MOD_NAME).o - -$(MOD_NAME)-y := j4fs_kernel.o llid_kernel.o fsd_common.o - -else - -all: - @$(MAKE) -C $(KDIR) \ - SUBDIRS=$(CURDIR) modules - -clean: - rm -f *.o *.ko *.mod.c *~ .*.cmd - -install: - @$(MAKE) --no-print-directory -C $(KDIR) \ - SUBDIRS=$(CURDIR) modules_install - -endif +j4fs-objs := j4fs_kernel.o llid_kernel.o fsd_common.o
[REF] The All In One Guide for SGSA
There isn't really a wholesome guide for this device, which includes everything form flashing to compiling. So i am writing this guide. Currently its being populated. This will contain everything - flashing, modding, compiling etc. How to root SGSA : Look here How to flash firmwares from sammobile using Odin : Look here
Rooting JB : Download here : Root How to : 1. Download the zip and place it in the root of your sd card. PS : SD Card is a must. 2. Reboot to the stock recovery. 3. Select install update from external storage. 4. Select the root.zip file. 5. Viola Enjoy your rooted JB. Original post here. Rooting GB : Please note that this method will increase the binary counter. A more complex method to root GB is available here which doesn't increase the binary counter. This kernel will provide you the standard stock kernel and also includes TWRP recovery. ( disclaimer ) I AM NOT TO BE HELD RESPONSIBLE IF YOU DAMAGE YOUR PHONE Using Odin to flash this kernel WILL increase your binary counter. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ( features ) - Team Win Recovery Project 2.2.1 - CIFS Support ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ( how to install using Odin ) 1. Restart into download mode by pressing Power + Home + Vol Down 2. Start Odin, and flash the attached kernel as PDA. Remember to extract the attached file only once. if you end up with a kernel.bin.md5 you extracted twice! Do not use the PIT, do not have any options checked except for "Auto reboot" and "F. Reset Time" 3. Wait for the device to reboot ( how to install using DD ) This method does not increase your binary counter, but your phone needs to be rooted so you can perform this! IF YOU'RE NOT FAMILIAR WITH DD I RECOMMEND YOU TO AVOID THIS METHOD 1. Extract the attached file twice. You will end up with a kernel.bin.md5 file 2. Put the kernel.bin.md5 file to /sdcard 3. Start adb shell 4. Do the following commands: Code: $ su # dd if=/sdcard/kernel.bin.md5 of=/dev/block/mmcblk0p15 # reboot 5. Wait for the device to reboot. Click to expand... Click to collapse Download the pre-rooted kernel here.
Flashing with Odin : Odin is the saviour tool for all Samsung devices. The method for flashing by Odin differs from device to device. This thread will give step by step instructions on how to flash a stock rom from Odin on the GT-I9070/p : A. Download Odin tools from here : Odin Tools Pass : shaaan B. Download the stock rom from : SamFirmware Setting up Odin : 1. Make sure you have installed the necessary drivers for this device. The drivers can be installed from within KIES or seperately here. 2. Run Odin as administrator. 3. Setting up the files is divided in two types depending on the firmware type : a. If the firmware is a multi package file, put the files in the corresponding sections. ie. CSC file in CSC section, PDA file in PDA section. b. If the firmware is a single package, add the single file in the PDA section. { "lightbox_close": "Close", "lightbox_next": "Next", "lightbox_previous": "Previous", "lightbox_error": "The requested content cannot be loaded. Please try again later.", "lightbox_start_slideshow": "Start slideshow", "lightbox_stop_slideshow": "Stop slideshow", "lightbox_full_screen": "Full screen", "lightbox_thumbnails": "Thumbnails", "lightbox_download": "Download", "lightbox_share": "Share", "lightbox_zoom": "Zoom", "lightbox_new_window": "New window", "lightbox_toggle_sidebar": "Toggle sidebar" } 4. Now that Odin is setup, put the phone in download mode. To do that, power off the phone and press 'home+power+volume down' buttons together. Keep the buttons pressed till Download mode appears. 5. Now that Odin and the phone are setup, connect the phone to the device. Odin will detect the device and show something like 'com port (1)' 6. Flash the device. 7. The flash will take 5 minutes for a full flash on average. 8. When the flashing is complete, DO NOT remove the device until Odin shows ' PASS '. 9. The device will reboot. Remove the device, go to recovery mode and do a factory/data reset. That's it. Happy flashing peeps..!!
ROM Modding Now that we are done with basic things like rooting and flashing, let's move on to some complex stuff.. Tools needed - 1. Apktool 2. XUltimate for deodexing 3. Notepad ++ 4. Baksmali manager ( attached ) 5. DSIXDA's Android kitchen - only if you really want to use it. but i recommend doing everything manually. Click to expand... Click to collapse Step I : Setup Android SDK. Instructions here. Once the SDK is setup, run the command "android" in command prompt. It should look something like this. Make sure that your PC recognizes the device. Run the command "adb devices". It should show something like this. Step II : Once these basic things are setup, install apktool : 1. Download apktool. 2. There will be two files, they will be .bz2 files. 3. Create a new folder called apktool. 4. Put it here: C:\Users\<your username>\apktool. 5. Open these with 7zip. You’ll notice that inside there are .tar files. 6. Double-click the .tar file, and now you’ll see the files. 7. Extract the files from BOTH zips to your new apktool folder at C:\Users\<your username>\apktool. 8. You’ll have 3 files total now in your apktool folder: aapt.exe, apktool.bat, apktool.jar. Click to expand... Click to collapse Now install Notepad++ Restart the computer. Using apktool : Generally it is not required to install the framework files, but apps like '/system/app/Settings.apk' need it. The general commands for apktool are - apktool d framework-res.apk -- Decompiles framework-res.apk apktool b framework-res -- Builds the modified files apktool if path_to_framework-res.apk -- Installs framework-res. Do the same for twframework-res Click to expand... Click to collapse
Preface : OK a lot of people have been asking about building kernels, so here is my best shot at a tutorial. You guys shouldn't expect my little walk through here plus another person’s source to make you a "developer", all it will prove is that you can copy/paste. Also if you follow this guide, I am not responsible for anything that you may do that results in destruction, death, or other negative side-affects. You really shouldn't be messing with this stuff unless you know what you are doing, or doing a LOT of research along the way. However please use this guide as a springboard for knowledge, to give you some key terms to google, to turn on those lightbulbs in your head and get those gears churning. Note: This is not a newbie's guide to Linux. Before you post your question please look at it. If it involves the syntax of the command/what a command does you need to do your own research elsewhere before attempting to continue with this guide. Click to expand... Click to collapse I. Setting up the environment : A. Install Ubuntu 12.04 (Not holding your hand here, if you can't do this you shouldn't be messing with kernels) B. Installing required packages: Type this code into the terminal. Code: For 32 and 64 bit systems : sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-6-jre openjdk-6-jdk pngcrush schedtool For 64 bit systems only : g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-4.7-multilib g++-4.5-multilib Also make sure you have ADB installed. Its a must. C. Open a terminal D. Type "mkdir -p android/kernel" The above steps explained: A. Installing a linux distro. You could really install any Linux distro however Ubuntu in my eyes is the easy to use and install, and widely supported. B. Installing needed packages. These are needed for building the kernel. No I can't tell you what every single package does, it is your job to research and figure that out. C. Ummm...duh? D. Building a directory structure that will help keep us organized. The "mkdir" command creates a directory. The more you type these commands the more familiar you will become with them. Click to expand... Click to collapse II. Downloading the source : A. Download the relevant source from the Samsung Opensource Website B. Once the source is download, extract it into the "android/kernel" directory that we made in the previous step. C. Grab your desired toolchain. I generally recommend the CodeSourcery toolchain. Click to expand... Click to collapse III. Modifications : This is the part people are curious about, they want to make modifications to the kernel to make it "special". Start all these from the root directory of your kernel source. Mod 1. Applying a patch A. Download the patch you wish to apply, in this case this one should work. B. Save that file as "kernelPatch" in your kernel directory. C. Open a Terminal D. Move into the root directory of the kernel you wish to patch. E. Type "patch -p1 < ../kernelPatch" The above steps explained: A. Pretty simple, I mean we need a patch. The patch itself is quite simply a diff between the original kernel source tree and the source tree containing the changes. I'll post a quick tutorial on how to create a patch in the third post. The patch above contains multiple governors to be added to your kernel. B. Self-explanatory C. Self-explanatory D. Self-explanatory E. Basically we run the patch command on our source using the patch we downloaded previously. The "patch" portion is the binary itself, the "-p1" option allows you to control the number of forward slashes to remove from file paths(You'll need to look at this option more if you are using weird directory structures or applying the patches from a odd location). The "<" operator directs the content of our "../kernelPatch" file into the command. Click to expand... Click to collapse Mod 2. Adding a Governor A. Open "drivers/cpufreq/Kconfig" B. Add the following lines in appropriate spot amongst the other govenor's Code: config CPU_FREQ_DEFAULT_GOV_SMARTASS bool "smartass" select CPU_FREQ_GOV_SMARTASS select CPU_FREQ_GOV_PERFORMANCE help Use the CPUFreq governor 'smartass' as default. Code: config CPU_FREQ_GOV_SMARTASS tristate "'smartass' cpufreq governor" depends on CPU_FREQ help smartass' - a "smart" optimized governor! If in doubt, say N. C. Open "drivers/cpufreq/Makefile" D. Add the following line in the appropriate spot. Code: obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS) += cpufreq_smartass.o E. Create a file called "drivers/cpufreq/cpufreq_smartass.c" F. Put the following code in that file. Code: /* * drivers/cpufreq/cpufreq_smartass.c * * Copyright (C) 2010 Google, Inc. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and * may be copied, distributed, and modified under those terms. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * Author: Erasmux * * Based on the interactive governor By Mike Chan ([email protected]) * which was adaptated to 2.6.29 kernel by Nadlabak ([email protected]) * * requires to add * EXPORT_SYMBOL_GPL(nr_running); * at the end of kernel/sched.c * */ #include <linux/cpu.h> #include <linux/cpumask.h> #include <linux/cpufreq.h> #include <linux/sched.h> #include <linux/tick.h> #include <linux/timer.h> #include <linux/workqueue.h> #include <linux/moduleparam.h> #include <asm/cputime.h> #include <linux/earlysuspend.h> static void (*pm_idle_old)(void); static atomic_t active_count = ATOMIC_INIT(0); struct smartass_info_s { struct cpufreq_policy *cur_policy; struct timer_list timer; u64 time_in_idle; u64 idle_exit_time; unsigned int force_ramp_up; unsigned int enable; }; static DEFINE_PER_CPU(struct smartass_info_s, smartass_info); /* Workqueues handle frequency scaling */ static struct workqueue_struct *up_wq; static struct workqueue_struct *down_wq; static struct work_struct freq_scale_work; static u64 freq_change_time; static u64 freq_change_time_in_idle; static cpumask_t work_cpumask; static unsigned int suspended; /* * The minimum amount of time to spend at a frequency before we can ramp down, * default is 45ms. */ #define DEFAULT_DOWN_RATE_US 20000 static unsigned long down_rate_us; /* * When ramping up frequency with no idle cycles jump to at least this frequency. * Zero disables. Set a very high value to jump to policy max freqeuncy. */ #define DEFAULT_UP_MIN_FREQ 1152000 static unsigned int up_min_freq; /* * When sleep_max_freq>0 the frequency when suspended will be capped * by this frequency. Also will wake up at max frequency of policy * to minimize wakeup issues. * Set sleep_max_freq=0 to disable this behavior. */ #define DEFAULT_SLEEP_MAX_FREQ 537600 static unsigned int sleep_max_freq; /* * Sampling rate, I highly recommend to leave it at 2. */ #define DEFAULT_SAMPLE_RATE_JIFFIES 2 static unsigned int sample_rate_jiffies; /* * Freqeuncy delta when ramping up. * zero disables causes to always jump straight to max frequency. */ #define DEFAULT_RAMP_UP_STEP 614400 static unsigned int ramp_up_step; /* * Max freqeuncy delta when ramping down. zero disables. */ #define DEFAULT_MAX_RAMP_DOWN 384000 static unsigned int max_ramp_down; /* * CPU freq will be increased if measured load > max_cpu_load; */ #define DEFAULT_MAX_CPU_LOAD 75 static unsigned long max_cpu_load; /* * CPU freq will be decreased if measured load < min_cpu_load; */ #define DEFAULT_MIN_CPU_LOAD 30 static unsigned long min_cpu_load; static int cpufreq_governor_smartass(struct cpufreq_policy *policy, unsigned int event); #ifndef CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS static #endif struct cpufreq_governor cpufreq_gov_smartass = { .name = "smartass", .governor = cpufreq_governor_smartass, .max_transition_latency = 6000000, .owner = THIS_MODULE, }; static void cpufreq_smartass_timer(unsigned long data) { u64 delta_idle; u64 update_time; u64 now_idle; struct smartass_info_s *this_smartass = &per_cpu(smartass_info, data); struct cpufreq_policy *policy = this_smartass->cur_policy; now_idle = get_cpu_idle_time_us(data, &update_time); if (update_time == this_smartass->idle_exit_time) return; delta_idle = cputime64_sub(now_idle, this_smartass->time_in_idle); //printk(KERN_INFO "smartass: t=%llu i=%llu\n",cputime64_sub(update_time,this_smartass->idle_exit_time),delta_idle); /* Scale up if there were no idle cycles since coming out of idle */ if (delta_idle == 0) { if (policy->cur == policy->max) return; if (nr_running() < 1) return; this_smartass->force_ramp_up = 1; cpumask_set_cpu(data, &work_cpumask); queue_work(up_wq, &freq_scale_work); return; } /* * There is a window where if the cpu utlization can go from low to high * between the timer expiring, delta_idle will be > 0 and the cpu will * be 100% busy, preventing idle from running, and this timer from * firing. So setup another timer to fire to check cpu utlization. * Do not setup the timer if there is no scheduled work. */ if (!timer_pending(&this_smartass->timer) && nr_running() > 0) { this_smartass->time_in_idle = get_cpu_idle_time_us( data, &this_smartass->idle_exit_time); mod_timer(&this_smartass->timer, jiffies + sample_rate_jiffies); } if (policy->cur == policy->min) return; /* * Do not scale down unless we have been at this frequency for the * minimum sample time. */ if (cputime64_sub(update_time, freq_change_time) < down_rate_us) return; cpumask_set_cpu(data, &work_cpumask); queue_work(down_wq, &freq_scale_work); } static void cpufreq_idle(void) { struct smartass_info_s *this_smartass = &per_cpu(smartass_info, smp_processor_id()); struct cpufreq_policy *policy = this_smartass->cur_policy; pm_idle_old(); if (!cpumask_test_cpu(smp_processor_id(), policy->cpus)) return; /* Timer to fire in 1-2 ticks, jiffie aligned. */ if (timer_pending(&this_smartass->timer) == 0) { this_smartass->time_in_idle = get_cpu_idle_time_us( smp_processor_id(), &this_smartass->idle_exit_time); mod_timer(&this_smartass->timer, jiffies + sample_rate_jiffies); } } /* * Choose the cpu frequency based off the load. For now choose the minimum * frequency that will satisfy the load, which is not always the lower power. */ static unsigned int cpufreq_smartass_calc_freq(unsigned int cpu, struct cpufreq_policy *policy) { unsigned int delta_time; unsigned int idle_time; unsigned int cpu_load; unsigned int new_freq; u64 current_wall_time; u64 current_idle_time; current_idle_time = get_cpu_idle_time_us(cpu, ¤t_wall_time); idle_time = (unsigned int)( current_idle_time - freq_change_time_in_idle ); delta_time = (unsigned int)( current_wall_time - freq_change_time ); cpu_load = 100 * (delta_time - idle_time) / delta_time; //printk(KERN_INFO "Smartass calc_freq: delta_time=%u cpu_load=%u\n",delta_time,cpu_load); if (cpu_load < min_cpu_load) { cpu_load += 100 - max_cpu_load; // dummy load. new_freq = policy->cur * cpu_load / 100; if (max_ramp_down && new_freq < policy->cur - max_ramp_down) new_freq = policy->cur - max_ramp_down; //printk(KERN_INFO "Smartass calc_freq: %u => %u\n",policy->cur,new_freq); return new_freq; } if (cpu_load > max_cpu_load) { if (ramp_up_step) new_freq = policy->cur + ramp_up_step; else new_freq = policy->max; return new_freq; } return policy->cur; } /* We use the same work function to sale up and down */ static void cpufreq_smartass_freq_change_time_work(struct work_struct *work) { unsigned int cpu; unsigned int new_freq; struct smartass_info_s *this_smartass; struct cpufreq_policy *policy; cpumask_t tmp_mask = work_cpumask; for_each_cpu(cpu, tmp_mask) { this_smartass = &per_cpu(smartass_info, cpu); policy = this_smartass->cur_policy; if (this_smartass->force_ramp_up) { this_smartass->force_ramp_up = 0; if (nr_running() == 1) { cpumask_clear_cpu(cpu, &work_cpumask); return; } if (policy->cur == policy->max) return; if (ramp_up_step) new_freq = policy->cur + ramp_up_step; else new_freq = policy->max; if (suspended && sleep_max_freq) { if (new_freq > sleep_max_freq) new_freq = sleep_max_freq; } else { if (new_freq < up_min_freq) new_freq = up_min_freq; } } else { new_freq = cpufreq_smartass_calc_freq(cpu,policy); // in suspend limit to sleep_max_freq and // jump straight to sleep_max_freq to avoid wakeup problems if (suspended && sleep_max_freq && (new_freq > sleep_max_freq || new_freq > policy->cur)) new_freq = sleep_max_freq; } if (new_freq > policy->max) new_freq = policy->max; if (new_freq < policy->min) new_freq = policy->min; __cpufreq_driver_target(policy, new_freq, CPUFREQ_RELATION_L); freq_change_time_in_idle = get_cpu_idle_time_us(cpu, &freq_change_time); cpumask_clear_cpu(cpu, &work_cpumask); } } static ssize_t show_down_rate_us(struct cpufreq_policy *policy, char *buf) { return sprintf(buf, "%lu\n", down_rate_us); } static ssize_t store_down_rate_us(struct cpufreq_policy *policy, const char *buf, size_t count) { ssize_t res; unsigned long input; res = strict_strtoul(buf, 0, &input); if (res >= 0 && input >= 1000 && input <= 100000000) down_rate_us = input; return res; } static struct freq_attr down_rate_us_attr = __ATTR(down_rate_us, 0644, show_down_rate_us, store_down_rate_us); static ssize_t show_up_min_freq(struct cpufreq_policy *policy, char *buf) { return sprintf(buf, "%u\n", up_min_freq); } static ssize_t store_up_min_freq(struct cpufreq_policy *policy, const char *buf, size_t count) { ssize_t res; unsigned long input; res = strict_strtoul(buf, 0, &input); if (res >= 0 && input >= 0) up_min_freq = input; return res; } static struct freq_attr up_min_freq_attr = __ATTR(up_min_freq, 0644, show_up_min_freq, store_up_min_freq); static ssize_t show_sleep_max_freq(struct cpufreq_policy *policy, char *buf) { return sprintf(buf, "%u\n", sleep_max_freq); } static ssize_t store_sleep_max_freq(struct cpufreq_policy *policy, const char *buf, size_t count) { ssize_t res; unsigned long input; res = strict_strtoul(buf, 0, &input); if (res >= 0 && input >= 0) sleep_max_freq = input; return res; } static struct freq_attr sleep_max_freq_attr = __ATTR(sleep_max_freq, 0644, show_sleep_max_freq, store_sleep_max_freq); static ssize_t show_sample_rate_jiffies(struct cpufreq_policy *policy, char *buf) { return sprintf(buf, "%u\n", sample_rate_jiffies); } static ssize_t store_sample_rate_jiffies(struct cpufreq_policy *policy, const char *buf, size_t count) { ssize_t res; unsigned long input; res = strict_strtoul(buf, 0, &input); if (res >= 0 && input > 0 && input <= 1000) sample_rate_jiffies = input; return res; } static struct freq_attr sample_rate_jiffies_attr = __ATTR(sample_rate_jiffies, 0644, show_sample_rate_jiffies, store_sample_rate_jiffies); static ssize_t show_ramp_up_step(struct cpufreq_policy *policy, char *buf) { return sprintf(buf, "%u\n", ramp_up_step); } static ssize_t store_ramp_up_step(struct cpufreq_policy *policy, const char *buf, size_t count) { ssize_t res; unsigned long input; res = strict_strtoul(buf, 0, &input); if (res >= 0) ramp_up_step = input; return res; } static struct freq_attr ramp_up_step_attr = __ATTR(ramp_up_step, 0644, show_ramp_up_step, store_ramp_up_step); static ssize_t show_max_ramp_down(struct cpufreq_policy *policy, char *buf) { return sprintf(buf, "%u\n", max_ramp_down); } static ssize_t store_max_ramp_down(struct cpufreq_policy *policy, const char *buf, size_t count) { ssize_t res; unsigned long input; res = strict_strtoul(buf, 0, &input); if (res >= 0) max_ramp_down = input; return res; } static struct freq_attr max_ramp_down_attr = __ATTR(max_ramp_down, 0644, show_max_ramp_down, store_max_ramp_down); static ssize_t show_max_cpu_load(struct cpufreq_policy *policy, char *buf) { return sprintf(buf, "%lu\n", max_cpu_load); } static ssize_t store_max_cpu_load(struct cpufreq_policy *policy, const char *buf, size_t count) { ssize_t res; unsigned long input; res = strict_strtoul(buf, 0, &input); if (res >= 0 && input > 0 && input <= 100) max_cpu_load = input; return res; } static struct freq_attr max_cpu_load_attr = __ATTR(max_cpu_load, 0644, show_max_cpu_load, store_max_cpu_load); static ssize_t show_min_cpu_load(struct cpufreq_policy *policy, char *buf) { return sprintf(buf, "%lu\n", min_cpu_load); } static ssize_t store_min_cpu_load(struct cpufreq_policy *policy, const char *buf, size_t count) { ssize_t res; unsigned long input; res = strict_strtoul(buf, 0, &input); if (res >= 0 && input > 0 && input < 100) min_cpu_load = input; return res; } static struct freq_attr min_cpu_load_attr = __ATTR(min_cpu_load, 0644, show_min_cpu_load, store_min_cpu_load); static struct attribute * smartass_attributes[] = { &down_rate_us_attr.attr, &up_min_freq_attr.attr, &sleep_max_freq_attr.attr, &sample_rate_jiffies_attr.attr, &ramp_up_step_attr.attr, &max_ramp_down_attr.attr, &max_cpu_load_attr.attr, &min_cpu_load_attr.attr, NULL, }; static struct attribute_group smartass_attr_group = { .attrs = smartass_attributes, .name = "smartass", }; static int cpufreq_governor_smartass(struct cpufreq_policy *new_policy, unsigned int event) { unsigned int cpu = new_policy->cpu; int rc; struct smartass_info_s *this_smartass = &per_cpu(smartass_info, cpu); switch (event) { case CPUFREQ_GOV_START: if ((!cpu_online(cpu)) || (!new_policy->cur)) return -EINVAL; if (this_smartass->enable) /* Already enabled */ break; /* * Do not register the idle hook and create sysfs * entries if we have already done so. */ if (atomic_inc_return(&active_count) > 1) return 0; rc = sysfs_create_group(&new_policy->kobj, &smartass_attr_group); if (rc) return rc; pm_idle_old = pm_idle; pm_idle = cpufreq_idle; this_smartass->cur_policy = new_policy; this_smartass->cur_policy->max = CONFIG_MSM_CPU_FREQ_ONDEMAND_MAX; this_smartass->cur_policy->min = CONFIG_MSM_CPU_FREQ_ONDEMAND_MIN; this_smartass->cur_policy->cur = CONFIG_MSM_CPU_FREQ_ONDEMAND_MAX; this_smartass->enable = 1; // notice no break here! case CPUFREQ_GOV_LIMITS: if (this_smartass->cur_policy->cur != new_policy->max) __cpufreq_driver_target(new_policy, new_policy->max, CPUFREQ_RELATION_H); break; case CPUFREQ_GOV_STOP: this_smartass->enable = 0; if (atomic_dec_return(&active_count) > 1) return 0; sysfs_remove_group(&new_policy->kobj, &smartass_attr_group); pm_idle = pm_idle_old; del_timer(&this_smartass->timer); break; } return 0; } static void smartass_suspend(int cpu, int suspend) { struct smartass_info_s *this_smartass = &per_cpu(smartass_info, smp_processor_id()); struct cpufreq_policy *policy = this_smartass->cur_policy; unsigned int new_freq; if (!this_smartass->enable || sleep_max_freq==0) // disable behavior for sleep_max_freq==0 return; if (suspend) { if (policy->cur > sleep_max_freq) { new_freq = sleep_max_freq; if (new_freq > policy->max) new_freq = policy->max; if (new_freq < policy->min) new_freq = policy->min; __cpufreq_driver_target(policy, new_freq, CPUFREQ_RELATION_H); } } else { // resume at max speed: __cpufreq_driver_target(policy, policy->max, CPUFREQ_RELATION_H); } } static void smartass_early_suspend(struct early_suspend *handler) { int i; suspended = 1; for_each_online_cpu(i) smartass_suspend(i,1); } static void smartass_late_resume(struct early_suspend *handler) { int i; suspended = 0; for_each_online_cpu(i) smartass_suspend(i,0); } static struct early_suspend smartass_power_suspend = { .suspend = smartass_early_suspend, .resume = smartass_late_resume, }; static int __init cpufreq_smartass_init(void) { unsigned int i; struct smartass_info_s *this_smartass; down_rate_us = DEFAULT_DOWN_RATE_US; up_min_freq = DEFAULT_UP_MIN_FREQ; sleep_max_freq = DEFAULT_SLEEP_MAX_FREQ; sample_rate_jiffies = DEFAULT_SAMPLE_RATE_JIFFIES; ramp_up_step = DEFAULT_RAMP_UP_STEP; max_ramp_down = DEFAULT_MAX_RAMP_DOWN; max_cpu_load = DEFAULT_MAX_CPU_LOAD; min_cpu_load = DEFAULT_MIN_CPU_LOAD; suspended = 0; /* Initalize per-cpu data: */ for_each_possible_cpu(i) { this_smartass = &per_cpu(smartass_info, i); this_smartass->enable = 0; this_smartass->force_ramp_up = 0; this_smartass->time_in_idle = 0; this_smartass->idle_exit_time = 0; // intialize timer: init_timer_deferrable(&this_smartass->timer); this_smartass->timer.function = cpufreq_smartass_timer; this_smartass->timer.data = i; } /* Scale up is high priority */ up_wq = create_rt_workqueue("ksmartass_up"); down_wq = create_workqueue("ksmartass_down"); INIT_WORK(&freq_scale_work, cpufreq_smartass_freq_change_time_work); register_early_suspend(&smartass_power_suspend); return cpufreq_register_governor(&cpufreq_gov_smartass); } #ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS pure_initcall(cpufreq_smartass_init); #else module_init(cpufreq_smartass_init); #endif static void __exit cpufreq_smartass_exit(void) { cpufreq_unregister_governor(&cpufreq_gov_smartass); destroy_workqueue(up_wq); destroy_workqueue(down_wq); } module_exit(cpufreq_smartass_exit); MODULE_AUTHOR ("Erasmux"); MODULE_DESCRIPTION ("'cpufreq_smartass' - A smart cpufreq governor"); MODULE_LICENSE ("GPL"); G. open "include/linux/cpufreq.h" H. Under the "Cpufreq Default" section add Code: #elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS) extern struct cpufreq_governor cpufreq_gov_smartass; #define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass) Ok there is a governor added, do the exact same steps for any other one's you would like to add. The above steps explained: A. Just opening a file, you guys have this. The Kconfig ties into our "make menuconfig" command later, making our mod a selectable option. B. Adding the appropriate code for our governor to get it in our .config file. The first chunk would allow us to set our governor as the default one for our kernel, the other allows us to totally remove or add it to the build as we wish. C-D. This step tells the linker to tie our module in with the rest of the code. E-F. Creating the actually governor itself, don't skip this step. I would suggest reading through this and trying to understand how it works, it's some pretty awesome stuff. G-H. Open a file and add the code needed to tie our module into the rest of the source. Without this we would not be able to compile due to the rest of the source not knowing our module exists. Click to expand... Click to collapse Click to expand... Click to collapse IV. Getting a Config File : Samsung now doesn't support grabbing the kernel config from "/proc/config". So we have the alternative method of using the stock config from "/arch/arm/config". Use the README to get a better understanding of how the config file works. Click to expand... Click to collapse V. Building : Time to start the real "build" section of this tutorial. Part A. Pre-build Steps A. Open terminal and change to the root of your kernel directory B. Type "export ARCH=arm" C. Type "export CROSS_COMPILE=~/android/kernel/toolchains/arm-eabi-linaro-4.6.2/bin/arm-eabi-" Part B. The First Build A. Type "make <your_config_name>_defconfig" B. Type "make menuconfig" and make the required changes to use any modules you added or similar changes. C. Type "make -j<maximum number of jobs>" Part C. Re-Builds A. Type "make clean" B. Type "make oldconfig" C. Type "make -j<maximum number of jobs>" Part D. Building Modules You have two options: A. Type "make modules" B. Type "make path/to/your/module.ko" Alternatively, you can use this build script here[/URL.] Click to expand... Click to collapse Above steps explained : Part A.(These steps are required every time you close your terminal and re-open it to build again.) A. Ok shouldn’t need to explain this. B. This command sets your target architecture. C. Defines the path to the toolchain we are going to use to compile our kernel. You can change this to point towards whatever toolchain you have downloaded or feel like using, the way it is currently configured it will use the Linaro toolchain that we downloaded above. Part B.(These only need to be run the first time you build a kernel.) A. Load's your configuration file from earlier. B. Open up a menu to configure your kernel. It will use the config file you loaded in the previous step as a base. C. Viola start the build. I typically allow 1 job per core, so on my quad core machine I put "make -j4". Just raising that number will not make your build faster, your processor needs to be able to support the number of jobs you are assigning it. Part C. (Use the command's when you are building any-time outside of the first) A. This command gets rid of any old/outdated binaries or modules you compiled before, and let's start fresh. I like to run it every I build unless my changes are really small and localized. B. A very awesome command, it parses through what has changed and only prompts you about new options. C. See the explanation for the above "Part C.". Part D.(Use these for just building kernel modules.) A. This will re-build all modules. B. Will rebuild just the module you need. Very useful when you need to rebuild a WiFi module. Click to expand... Click to collapse Click to expand... Click to collapse VI. Now What ? Ok we have now started our build and we are waiting for it to finish, so there are two possible outcomes: Outcome A. Build Succeds W00t!! You have a kernel built by your self from source. There are a couple things you need in-order to use this kernel on your device any ".ko" modules and the zImage binary. If you pay attention to the output of your compiler then you will see the location of those objects. However the following commands will make your life a bit easier(Thanks Recognized Developer Hacre): A. Open a terminal B. Change to your root kernel directory C. Type "mkdir ../<your_kernel>_output" D. Type "cp arch/arm/boot/zImage ../<your_kernel>_output/zImage" E. Type "find . -name "*.ko" -exec cp {} ../<your_kernel>_output \;" The above steps explained: A-C. Self-Explanatory D. Move our kernel binary into our output folder E. This handy bit of magic finds all ".ko" modules and also copies them into your output file. You will also need to assemble a kernel image containing a initramfs for your device, along with the kernel binary and such. Getting the ramdisk from a bin file isn't really easy, but i have attached a script that should do the work. Just remove the .txt extension and chmod it to a+x. Click to expand... Click to collapse Outcome B : Build Fails Oh dear. It failed. Well guess what...this is going to happen..a LOT. Get used to it, and get used to googling and experimenting with different solutions. The following are some tips that will help you with debugging your issues. Running a "Clean" build A. Backup your config file(Type "cp .config ../backupConfig") B. Re-run the build process using just your defconfig from earlier. Limiting Output(Thanks Hacre.) A. Another good tip is to run "make -j1" to get the error, as it will limit the amount of text you need to scroll through. Click to expand... Click to collapse Click to expand... Click to collapse While the kernel is compiling, it should show something like this : When the kernel compile is complete, it should show something like this : Tips : I. In the defconfig file, remove the SHRM file signature verification or RIL won't work. II. Use "make menuconfig" to access a GUI and modify the kernel parameters.
FAQ's : Q. Can i downgrade the device if i upgrade it to JB ? A. Yes. You can. There is a detailed guide in the development section. Please refer it before posting. Credits : thewadegeek form whose kernel compiling guide, i copy pasted loads of stuff users for their support Click to expand... Click to collapse Feel something is missing ? Please let me know. I will be happy to update the guide.
Good job dude , keep up u r doing great , thanks lot ^_*
Can I flash whole XXLPZ via odin the same way? Coz my ota doesn't show any update. And will the root method work then too? Sent from my GT-I9070 using xda premium
atishey23 said: Can I flash whole XXLPZ via odin the same way? Coz my ota doesn't show any update. And will the root method work then too? Sent from my GT-I9070 using xda premium Click to expand... Click to collapse yes and yes. worked for me, improved performance for me
i think they should pin this thread
popup error after i flash xxlpz via odin it reboots perfectly and stuck at language chooser. cant finish setup because of popup error "unfortunately com.google.process has stopped" any fix?
Одг: [REF] The All In One Guide for SGSA ianmcgui said: after i flash xxlpz via odin it reboots perfectly and stuck at language chooser. cant finish setup because of popup error "unfortunately com.google.process has stopped" any fix? Click to expand... Click to collapse Read a bit! http://forum.xda-developers.com/showthread.php?p=37246645 Sent from Galaxy S Advance
thanks...good going thanks, waiting for more :good:
OP updated.
perfect guide gr8 work.................. i wish i could find this type of guide before i root 1st time so that my binary count wont increase btw there is any other way for zero binary count??? (i know about triangle away & jib and try both on my sgsa but dont work and i have 1 problem if u have sol. than plz reply.. in my sgsa "wap setting" can not be installed which is sent by service providers (i.e bsnllive , docomo divein etc) it gives me unable to read any one having this type of problem???/
great guide..btw i have a problem.. i have installed everything and when i perform a task the terminal want the password which i cant seem to be able to input! i cant do anything because of that! any workaround?
Brainiac.shri said: great guide..btw i have a problem.. i have installed everything and when i perform a task the terminal want the password which i cant seem to be able to input! i cant do anything because of that! any workaround? Click to expand... Click to collapse Since you don't state it clearly, i guess that you are talking about the commands in Ubuntu! When you enter the password in the Ubuntu terminal, it isn't showed for security reasons. So, just type the password and press enter! Sent from my GT-I9070 using xda premium
Shaaan said: Since you don't state it clearly, i guess that you are talking about the commands in Ubuntu! When you enter the password in the Ubuntu terminal, it isn't showed for security reasons. So, just type the password and press enter! Sent from my GT-I9070 using xda premium Click to expand... Click to collapse nope! doesnt work! but still logged into ubuntu and tried again and still not working. i remember the password(i just used it to log into the OS) just do not see the problem! EDIT: doesnt work for certain commands! i tried rooting it just for fun and there the password was accepted just fine!
Frankly speaking after spending a lot of time on XDA, I feel like Developing something for our dear phone! So like which is easier, safer and/or quicker to develop.. A Kernel or a Custom ROM..? If Kernel.. how can I do that? Download stock kernel and modify it? If ROM.. where to start? Download the firmware and start modifying it? PS: I'm not trolling... I'm serious
Sami Kabir said: Frankly speaking after spending a lot of time on XDA, I feel like Developing something for our dear phone! So like which is easier, safer and/or quicker to develop.. A Kernel or a Custom ROM..? If Kernel.. how can I do that? Download stock kernel and modify it? If ROM.. where to start? Download the firmware and start modifying it? PS: I'm not trolling... I'm serious Click to expand... Click to collapse Step by step ROM making guide. Heat up your PC chair by reading!!! But, as I know you - you will ask for explanation. http://forum.xda-developers.com/showthread.php?t=1801690
[Q] Compiling gcc and toolchain for use ON android device
Hello all. I have built the android-ndk-r9d toolchain on my Ubuntu machine, and it will compile a few things like nmap and perl just fine with some tweaking (I forgot the links but there are projects that give the options to use when compiling these). But I haven't seen any successful compilations of more recent versions of gcc with bionic. I did some digging around in spartacus' terminal-ide project, the point of which is to have java, vim, gcc for use on the device itself, I found that gcc was version 4.4.0. I have tried to reach him via email to see what ./configure settings he used, but to no response. Has anyone else attempted this, to build android gcc in versions more recent than 4.4.0 for compiling software on the device? What configure settings have you tried, and how much have you modified the gcc source code itself? Or is everyone content to build other projects using their regular Linux box? My device in question is a nexus 5, which has more than enough CPU power to do this, to quell any concerns people will have to that end.
Well, I had a day free yesterday and tried everything again, and I believe I hit the same stopping point error after correcting several others. Only this time, I made an actual script and patchfiles to handle everything to make this more organized. Again has anyone attempted to do this? First, the script. Code: #!/bin/bash HOME_DIR=/home/jmanley GCC_BUILD_DIR=$HOME_DIR/gcc-android-build HOST=arm-linux-androideabi CFLAGS='-Wall -O -mandroid -mbionic' LIBCFLAGS='-O2 -mandroid -mbionic' LIBCPPFLAGS='-O2 -mandroid -mbionic' LIBCXXFLAGS='-O2 -mandroid -mbionic -fno-implicit-templates' PREFIX=/data TOOLCHAIN_DIR=$HOME_DIR/arm-linux-androideabi-4.8 SYSROOT=$TOOLCHAIN_DIR/sysroot GCC_VERSION=4.9.0 MPFR_VERSION=3.1.2 GMP_VERSION=6.0.0a RENAMED_GMP_VERSION=6.0.0 MPC_VERSION=1.0.2 LDFLAGS='-lc -ldl -lgcc -lm -static' LIBS='-lc -ldl -lgcc -lm -lsupc++ -lgnustl_shared -lgmp' CC=arm-linux-androideabi-gcc CXX=arm-linux-androideabi-g++ LD=arm-linux-androideabi-ld RANLIB=arm-linux-androideabi-ranlib AR=arm-linux-androideabi-ar STRIP=arm-linux-androideabi-strip PATH=$TOOLCHAIN_DIR/bin:$PATH cd $HOME_DIR mkdir $GCC_BUILD_DIR tar -jxf gcc-$GCC_VERSION.tar.bz2 cd $HOME_DIR/gcc-$GCC_VERSION tar -jxf ../gmp-$GMP_VERSION.tar.bz2 mv gmp-$RENAMED_GMP_VERSION gmp tar -jxf ../mpfr-$MPFR_VERSION.tar.bz2 mv mpfr-$MPFR_VERSION mpfr tar -zxf ../mpc-$MPC_VERSION.tar.gz mv mpc-$MPC_VERSION mpc patch -Np0 -i $HOME_DIR/getpagesize-gcc.patch patch -Np0 -i $HOME_DIR/mpfr-impl.patch patch -Np0 -i $HOME_DIR/libcpp-files.patch patch -Np0 -i $HOME_DIR/libcpp-macro.patch cd $GCC_BUILD_DIR ../gcc-$GCC_VERSION/configure \ --prefix=$PREFIX --host=$HOST --disable-option-checking --disable-ld \ --enable-shared --enable-languages=c \ --disable-bootstrap -disable-gold --disable-fortran --disable-libssp \ --disable-libquadmath --disable-libquadmath-support --disable-libada \ --disable-multilib --disable-libgomp --disable-cloog --disable-werror \ --with-sysroot=$SYSROOT --disable-nls --disable-long-long make sudo make install Second, the actual error in question. Code: ../../../gcc-4.9.0/gmp/mpz/powm_ui.c:162: error: undefined reference to '__gmpn_invert_limb' divrem_1.c:228: error: undefined reference to '__gmpn_invert_limb' divrem_1.c:149: error: undefined reference to '__gmpn_invert_limb' divrem_2.c:91: error: undefined reference to '__gmpn_invert_limb' collect2: error: ld returned 1 exit status make[2]: *** [cc1] Error 1 make[2]: Leaving directory `/home/jmanley/gcc-android-build/gcc' make[1]: *** [all-gcc] Error 2 make[1]: Leaving directory `/home/jmanley/gcc-android-build' make: *** [all] Error 2 Now, some of the patchfiles I made to fix previous errors. Is any of this recommended? Code: *** libiberty/getpagesize.c 2005-03-27 07:31:13.000000000 -0800 --- getpagesize.c 2014-07-13 14:59:40.270231633 -0700 *************** *** 60,71 **** # endif /* PAGESIZE */ #endif /* GNU_OUR_PAGESIZE */ - int - getpagesize (void) - { - return (GNU_OUR_PAGESIZE); - } - #else /* VMS */ #if 0 /* older distributions of gcc-vms are missing <syidef.h> */ --- 60,65 ---- Code: *** libcpp/files.c 2014-01-02 14:24:45.000000000 -0800 --- files.c 2014-07-13 19:09:23.685783988 -0700 *************** *** 716,726 **** cpp_error (pfile, CPP_DL_WARNING, "%s is shorter than expected", file->path); file->buffer = _cpp_convert_input (pfile, CPP_OPTION (pfile, input_charset), buf, size + 16, total, &file->buffer_start, ! &file->st.st_size); file->buffer_valid = true; return true; --- 716,728 ---- cpp_error (pfile, CPP_DL_WARNING, "%s is shorter than expected", file->path); + off_t ot = (off_t) file->st.st_size; file->buffer = _cpp_convert_input (pfile, CPP_OPTION (pfile, input_charset), buf, size + 16, total, &file->buffer_start, ! &ot); ! file->st.st_size = ot; file->buffer_valid = true; return true; Code: *** libcpp/macro.c 2014-02-18 22:05:55.000000000 -0800 --- macro.c 2014-07-13 19:55:27.751477291 -0700 *************** *** 250,256 **** struct tm *tb = NULL; struct stat *st = _cpp_get_file_stat (file); if (st) ! tb = localtime (&st->st_mtime); if (tb) { char *str = asctime (tb); --- 250,260 ---- struct tm *tb = NULL; struct stat *st = _cpp_get_file_stat (file); if (st) ! { ! time_t tt = (time_t) st->st_mtime; ! tb = localtime (&tt); ! st->st_mtime = tt; ! } if (tb) { char *str = asctime (tb); Code: *** mpfr/src/mpfr-impl.h 2013-03-13 08:37:36.000000000 -0700 --- mpfr-impl.h 2014-07-13 18:44:36.599599742 -0700 *************** *** 1135,1142 **** #include <locale.h> /* Warning! In case of signed char, the value of MPFR_DECIMAL_POINT may be negative (the ISO C99 does not seem to forbid negative values). */ ! #define MPFR_DECIMAL_POINT (localeconv()->decimal_point[0]) ! #define MPFR_THOUSANDS_SEPARATOR (localeconv()->thousands_sep[0]) #else #define MPFR_DECIMAL_POINT ((char) '.') #define MPFR_THOUSANDS_SEPARATOR ('\0') --- 1135,1142 ---- #include <locale.h> /* Warning! In case of signed char, the value of MPFR_DECIMAL_POINT may be negative (the ISO C99 does not seem to forbid negative values). */ ! #define MPFR_DECIMAL_POINT ((char) '.') ! #define MPFR_THOUSANDS_SEPARATOR ('\0') #else #define MPFR_DECIMAL_POINT ((char) '.') #define MPFR_THOUSANDS_SEPARATOR ('\0')
[Xperia E][C1505] Error compile kernel. Help
I'm trying compile My own kernel but always show error Code: [email protected]:~/Desktop/kernel_jb/kernel$ export ARCH=arm [email protected]:~/Desktop/kernel_jb/kernel$ export CROSS_COMPILE=/home/jbliz/Desktop/kernel_jb/toolchains/arm-eabi-linaro-4.6.2/bin/arm-eabi- [email protected]:~/Desktop/kernel_jb/kernel$ make -j2 HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf --silentoldconfig Kconfig warning: (SCSI_SRP) selects SCSI_TGT which has unmet direct dependencies (SCSI && EXPERIMENTAL) warning: (DRM && ION) selects DMA_SHARED_BUFFER which has unmet direct dependencies (EXPERIMENTAL) warning: (USB_DWC3) selects USB_XHCI_PLATFORM which has unmet direct dependencies (USB_SUPPORT && USB_XHCI_HCD) warning: (SCSI_SRP) selects SCSI_TGT which has unmet direct dependencies (SCSI && EXPERIMENTAL) warning: (DRM && ION) selects DMA_SHARED_BUFFER which has unmet direct dependencies (EXPERIMENTAL) warning: (USB_DWC3) selects USB_XHCI_PLATFORM which has unmet direct dependencies (USB_SUPPORT && USB_XHCI_HCD) CHK include/linux/version.h CHK include/generated/utsrelease.h HOSTCC scripts/genksyms/genksyms.o HOSTCC scripts/genksyms/lex.lex.o HOSTCC scripts/genksyms/parse.tab.o HOSTLD scripts/genksyms/genksyms CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/file2alias.o HOSTCC scripts/selinux/genheaders/genheaders HOSTCC scripts/selinux/mdp/mdp HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTCC scripts/kallsyms HOSTLD scripts/mod/modpost make[1]: `include/generated/mach-types.h' is up to date. HOSTCC scripts/conmakehash CC kernel/bounds.s GEN include/generated/bounds.h CC arch/arm/kernel/asm-offsets.s In file included from include/linux/spinlock.h:50:0, from include/linux/seqlock.h:29, from include/linux/time.h:8, from include/linux/timex.h:56, from include/linux/sched.h:57, from arch/arm/kernel/asm-offsets.c:13: include/linux/preempt.h:110:0: warning: "inc_preempt_count" redefined [enabled by default] error, forbidden warning: preempt.h:110 make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1 make: *** [prepare0] Error 2 [email protected]:~/Desktop/kernel_jb/kernel$ preempt.h Code: #ifndef __LINUX_PREEMPT_H #define __LINUX_PREEMPT_H /* * include/linux/preempt.h - macros for accessing and manipulating * preempt_count (used for kernel preemption, interrupt count, etc.) */ #include <linux/thread_info.h> #include <linux/linkage.h> #include <linux/list.h> #if defined(CONFIG_DEBUG_PREEMPT) || defined(CONFIG_PREEMPT_TRACER) extern void add_preempt_count(int val); extern void sub_preempt_count(int val); #else # define add_preempt_count(val) do { preempt_count() += (val); } while (0) # define sub_preempt_count(val) do { preempt_count() -= (val); } while (0) #endif #define inc_preempt_count() add_preempt_count(1) #define dec_preempt_count() sub_preempt_count(1) #define preempt_count() (current_thread_info()->preempt_count) #ifdef CONFIG_PREEMPT asmlinkage void preempt_schedule(void); #define preempt_check_resched() \ do { \ if (unlikely(test_thread_flag(TIF_NEED_RESCHED))) \ preempt_schedule(); \ } while (0) #else /* !CONFIG_PREEMPT */ #define preempt_check_resched() do { } while (0) #endif /* CONFIG_PREEMPT */ #ifdef CONFIG_PREEMPT_COUNT #define preempt_disable() \ do { \ inc_preempt_count(); \ barrier(); \ } while (0) #define sched_preempt_enable_no_resched() \ do { \ barrier(); \ dec_preempt_count(); \ } while (0) #define preempt_enable_no_resched() sched_preempt_enable_no_resched() #define preempt_enable() \ do { \ preempt_enable_no_resched(); \ barrier(); \ preempt_check_resched(); \ } while (0) /* For debugging and tracer internals only! */ #define add_preempt_count_notrace(val) \ do { preempt_count() += (val); } while (0) #define sub_preempt_count_notrace(val) \ do { preempt_count() -= (val); } while (0) #define inc_preempt_count_notrace() add_preempt_count_notrace(1) #define dec_preempt_count_notrace() sub_preempt_count_notrace(1) #define preempt_disable_notrace() \ do { \ inc_preempt_count_notrace(); \ barrier(); \ } while (0) #define preempt_enable_no_resched_notrace() \ do { \ barrier(); \ dec_preempt_count_notrace(); \ } while (0) /* preempt_check_resched is OK to trace */ #define preempt_enable_notrace() \ do { \ preempt_enable_no_resched_notrace(); \ barrier(); \ preempt_check_resched(); \ } while (0) #else /* !CONFIG_PREEMPT_COUNT */ #define preempt_disable() do { } while (0) #define sched_preempt_enable_no_resched() do { } while (0) #define preempt_enable_no_resched() do { } while (0) #define preempt_enable() do { } while (0) #define preempt_disable_notrace() do { } while (0) #define preempt_enable_no_resched_notrace() do { } while (0) #define preempt_enable_notrace() do { } while (0) //20130122-JordanChen #define add_preempt_count_notrace(val) do { } while (0) #define sub_preempt_count_notrace(val) do { } while (0) #define inc_preempt_count_notrace() do { } while (0) #define dec_preempt_count_notrace() do { } while (0) #define inc_preempt_count() do { } while (0) #define dec_preempt_count() do { } while (0) //20130122-JordanChen #endif /* CONFIG_PREEMPT_COUNT */ #ifdef CONFIG_PREEMPT_NOTIFIERS struct preempt_notifier; /** * preempt_ops - notifiers called when a task is preempted and rescheduled * @sched_in: we're about to be rescheduled: * notifier: struct preempt_notifier for the task being scheduled * cpu: cpu we're scheduled on * @sched_out: we've just been preempted * notifier: struct preempt_notifier for the task being preempted * next: the task that's kicking us out * * Please note that sched_in and out are called under different * contexts. sched_out is called with rq lock held and irq disabled * while sched_in is called without rq lock and irq enabled. This * difference is intentional and depended upon by its users. */ struct preempt_ops { void (*sched_in)(struct preempt_notifier *notifier, int cpu); void (*sched_out)(struct preempt_notifier *notifier, struct task_struct *next); }; /** * preempt_notifier - key for installing preemption notifiers * @link: internal use * @ops: defines the notifier functions to be called * * Usually used in conjunction with container_of(). */ struct preempt_notifier { struct hlist_node link; struct preempt_ops *ops; }; void preempt_notifier_register(struct preempt_notifier *notifier); void preempt_notifier_unregister(struct preempt_notifier *notifier); static inline void preempt_notifier_init(struct preempt_notifier *notifier, struct preempt_ops *ops) { INIT_HLIST_NODE(¬ifier->link); notifier->ops = ops; } #endif #endif /* __LINUX_PREEMPT_H */ Toolchains by DooMLoRD Code: /home/jbliz/Desktop/kernel_jb/toolchains/arm-2009q3/ /home/jbliz/Desktop/kernel_jb/toolchains/arm-2010.09/ /home/jbliz/Desktop/kernel_jb/toolchains/arm-2011.03/ /home/jbliz/Desktop/kernel_jb/toolchains/arm-2011.09/ /home/jbliz/Desktop/kernel_jb/toolchains/arm-eabi-4.4.3/ /home/jbliz/Desktop/kernel_jb/toolchains/arm-eabi-linaro-4.6.2/
mkbootimg created boot.img creation discrepenacy
Hi, I have noticed a discrepancy which I am unable to understand and appreciate if someone can provide a clarification in case they have noticed the same issue. I tried to split (using unmkbootimg) boot.img (from Xiaomi Mi MAX update ROMs) and merged it back (using mkbootimg) and found that the newly made boot.img was smaller by 1354 bytes. Appreciate your reply if I am missing anything. % ls -l boot.img ../boot.img -rw-rw-r-- 1 skanduru skanduru 12924234 Jan 1 2009 ../boot.img -rw-rw-r-- 1 skanduru skanduru 12922880 Jan 15 01:07 boot_new.img % cat output.txt # kernel written to 'kernel' (10172221 bytes) # ramdisk written to 'ramdisk.cpio.gz' (2746601 bytes) # To rebuild this boot image, you can use the command: mkbootimg --base 0 --pagesize 2048 --kernel_offset 0x80008000 --ramdisk_offset 0x81000000 --second_offset 0x80f00000 --tags_offset 0x80000100 --cmdline 'console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom msm_rtb.filter=0x237 ehci-hcd.park=3 androidboot.bootdevice=7824900.sdhci lpm_levels.sleep_disabled=1 earlyprintk ramoops_memreserve=4M' --kernel kernel --ramdisk ramdisk.cpio.gz -o boot_new.img A bindiff of the two images shows that the original boot.img has some stuff (1354 bytes) appended at the bottom which makes the difference. The net result is the boot_new.img doesn't boot up. Just wondering if someone has seen this issue.
boot image to try The link to boot.img image to try out mkbootimg issue. We can see that @C53000, the original boot.img has extra stuff (1374 bytes). Image can be downloaded from (Couldn't update it in the previous query) s000 DOT tinyupload DOT com/?file_id=42124441031490820660
skanduru said: The link to boot.img image to try out mkbootimg issue. We can see that @C53000, the original boot.img has extra stuff (1374 bytes). Image can be downloaded from (Couldn't update it in the previous query) s000 DOT tinyupload DOT com/?file_id=42124441031490820660 Click to expand... Click to collapse Could be an issue with Xiaomi image as it doesn't specify second_bootloader size, but appends it. Tried this change and it works. Not sure if it might be the case for potentially other manufacturer's boot.img. Posting it if it could be of some use. --- a/mkbootimg/unmkbootimg.c +++ b/mkbootimg/unmkbootimg.c @@ -80,6 +80,30 @@ int usage(void) return 1; } +int maybe_fix_second_image_size(boot_img_hdr *hdr, void *file_data) +{ + int offset = ((hdr->kernel_size + hdr->ramdisk_size + + 2*hdr->page_size - 1) / hdr->page_size) * hdr->page_size; + char *second_image = ((char *)file_data + offset); + u_int16_t *s = (u_int16_t *) second_image; + int is_second_image_true = 0; + + if (s[0]) { + /* + * Second_image does exist ! Calculate the size and fix the + * size in hdr. + */ + int size = 0; + while (s[0]) { + size += 2; + s++; + } + hdr->second_size = size; + is_second_image_true = 1; + } + return is_second_image_true; +} + int main(int argc, char **argv) { void *file_data = 0; @@ -160,7 +184,13 @@ int main(int argc, char **argv) hdr->ramdisk_size); } - if(hdr->second_size != 0) { + /* + * Even though the second_size is 0, some vendors may place secondary + * image there, for ex. Xiaomi. In such a case do calculate the size + * based on termination with a null. + * XXX: Temp fix. + */ + if(hdr->second_size != 0 || maybe_fix_second_image_size(hdr, file_data)) { offset = ((hdr->kernel_size + hdr->ramdisk_size + 2*hdr->page_size - 1) / hdr->page_size) * hdr->page_size; if (save_file(second_fn, &((char *)file_data)[offset],