[Galaxy S I9000 Android Development] supercurio:
Samsung specific audio driver.

After broonie (Mark Brown)... revelations on IRC, I looked more closely into Samsung kenel sources :

Here is the list of files they added (only about audio)

./sound/soc/s3c/s3c-i2s.c
./sound/soc/s3c/Kconfig
./sound/soc/s3c/universal_pcm_wm8994.c
./sound/soc/s3c/universal_wm8994.c
./sound/soc/s3c/Makefile
./sound/soc/codecs/wm8994_aries.c
./sound/soc/codecs/wm8994_universal.c
./sound/soc/codecs/wm8994_def.h
./sound/soc/codecs/Makefile
./sound/soc/codecs/wm8580_pcm.c
./sound/soc/codecs/wm8994.c
./sound/soc/codecs/wm8994.h

If you're curious and in case I missed some here is the complete list :

./.config.old
./arch/powerpc/boot/wrapper
./arch/arm/plat-s5pc1xx/include/plat/regs-mfc.h
./arch/arm/mach-s5pc110/setup-sdhci.c
./arch/arm/mach-s5pc110/mach-common.c
./arch/arm/mach-s5pc110/mach-jupiter.c
./arch/arm/mach-s5pc110/include/mach/param.h
./arch/arm/mach-s5pc110/include/mach/gpio-jupiter.h
./arch/arm/mach-s5pc110/include/mach/battery.h
./arch/arm/mach-s5pc110/include/mach/max8998_function.h
./arch/arm/mach-s5pc110/mach-jupiter-gps.c
./arch/arm/mach-s5pc110/mach-smdkc110.c
./arch/arm/mach-s5pc110/mach-p1p2.c
./arch/arm/oprofile/op_model_v7.c
./arch/arm/mm/dma-mapping.c
./arch/arm/mm/Kconfig
./arch/arm/configs/jupiter_android_defconfig
./arch/arm/configs/aries_rev02_defconfig
./arch/arm/configs/universal_s5pc110_android_defconfig
./arch/arm/configs/aries_rev05_defconfig
./arch/arm/configs/smdkc110_android_defconfig
./arch/arm/configs/aries_slsi_defconfig
./arch/arm/configs/aries_rev04_defconfig
./arch/arm/configs/jupiter_b4_android_defconfig
./arch/arm/configs/jupiter_rev05_defconfig
./arch/arm/configs/jupiter_rev00_defconfig
./arch/arm/configs/aries_rev00_defconfig
./arch/arm/configs/aries_b4_android_defconfig
./arch/arm/configs/jupiter_rev04_defconfig
./arch/arm/configs/aries_rev01_defconfig
./arch/arm/Kconfig
./arch/arm/lib/copy_page.S
./arch/arm/plat-s5pc11x/adc.c
./arch/arm/plat-s5pc11x/s5pc11x-dvfs.c
./arch/arm/plat-s5pc11x/sleep.S
./arch/arm/plat-s5pc11x/s5pc110-clock.c
./arch/arm/plat-s5pc11x/gpiolib.c
./arch/arm/plat-s5pc11x/include/plat/regs-clock.h
./arch/arm/plat-s5pc11x/include/plat/media.h
./arch/arm/plat-s5pc11x/include/plat/s5pc11x-dvfs.h
./arch/arm/plat-s5pc11x/max8998_consumer.c
./arch/arm/plat-s5pc11x/clock.c
./arch/arm/plat-s5pc11x/hr-time.c
./arch/arm/plat-s5pc11x/bootmem.c
./arch/arm/kernel/process.c
./arch/arm/plat-s3c/dev-i2c0.c
./arch/arm/plat-s3c/gpio-config.c
./arch/arm/plat-s3c/include/plat/regs-otg.h
./arch/arm/plat-s3c/include/plat/gpio-cfg.h
./arch/arm/plat-s3c/include/plat/regs-keypad.h
./arch/arm/plat-s3c/include/mach/vmalloc.h
./arch/ia64/scripts/toolchain-flags
./arch/ia64/scripts/check-gas
./sound/soc/s3c/s3c-i2s.c
./sound/soc/s3c/Kconfig
./sound/soc/s3c/universal_wm8994.c
./sound/soc/s3c/Makefile
./sound/soc/codecs/wm8994_aries.c
./sound/soc/codecs/wm8994_universal.c
./sound/soc/codecs/wm8994_def.h
./sound/soc/codecs/Makefile
./sound/soc/codecs/wm8580_pcm.c
./sound/soc/codecs/wm8994.c
./sound/soc/codecs/wm8994.h
./drivers/regulator/max8998_function.c
./drivers/regulator/max8998.c
./drivers/tfsr/Makefile.26.org
./drivers/tfsr/PAM/Poseidon/FSR_PAM_asm.S
./drivers/tfsr/PAM/Poseidon/FSR_PAM_Poseidon.c
./drivers/tfsr/PAM/Poseidon/FSR_PAM_Memcpy.c
./drivers/tfsr/PAM/s5pc110/FSR_PAM_asm.S
./drivers/tfsr/PAM/s5pc110/FSR_PAM_s5pc110.c
./drivers/tfsr/PAM/s5pc110/FSR_PAM_Memcpy.c
./drivers/tfsr/PAM/ApollonPLUS/FSR_PAM_asm.S
./drivers/tfsr/PAM/ApollonPLUS/FSR_PAM_ApollonPLUS.c
./drivers/tfsr/PAM/ApollonPLUS/FSR_PAM_memcpy.c
./drivers/tfsr/tfsr_base.c
./drivers/tfsr/tfsr_block.c
./drivers/tfsr/Inc/FSR_OAM.h
./drivers/tfsr/Inc/FSR_LLD_OneNAND.h
./drivers/tfsr/Inc/FSR_LLD_FlexOND.h
./drivers/tfsr/Inc/FSR_LLD_4K_OneNAND.h
./drivers/tfsr/Inc/FSR_LLD_PureNAND.h
./drivers/tfsr/Inc/FSR_BML.h
./drivers/tfsr/Inc/FSR_PartitionID.h
./drivers/tfsr/Inc/FSR_LLD.h
./drivers/tfsr/Inc/FSR_STL.h
./drivers/tfsr/Inc/FSR_PAM.h
./drivers/tfsr/Inc/FSR.h
./drivers/tfsr/Inc/FSR_DBG.h
./drivers/tfsr/debug.h
./drivers/tfsr/Core/BML/FSR_BML_BBMCommon.c
./drivers/tfsr/Core/BML/FSR_BML_ROInterface.c
./drivers/tfsr/Core/BML/FSR_BML_NonBlkMgr.h
./drivers/tfsr/Core/BML/FSR_BML_BBMCommon.h
./drivers/tfsr/Core/BML/FSR_BML_BBMMount.c
./drivers/tfsr/Core/BML/FSR_BML_BadBlkMgr.h
./drivers/tfsr/Core/BML/FSR_BML_BIFCommon.h
./drivers/tfsr/Core/BML/FSR_BML_Types.h
./drivers/tfsr/Core/BML/FSR_BML_BIFCommon.c
./drivers/tfsr/Core/BML/FSR_BML_BBMMount.h
./drivers/tfsr/Core/BML/FSR_BML_Config.h
./drivers/tfsr/Misc/FSR_DBG_Stack.c
./drivers/tfsr/Misc/FSR_DBG_Zone.c
./drivers/tfsr/Misc/FSR_Version.c
./drivers/tfsr/tfsr_base.h
./drivers/tfsr/OAM/Linux/FSR_OAM_Linux.c
./drivers/tfsr/LLD/FlexOND/FSR_LLD_FlexOND.c
./drivers/tfsr/LLD/OND/FSR_LLD_OneNAND.c
./drivers/tfsr/LLD/OND/FSR_LLD_SWEcc.c
./drivers/tfsr/LLD/OND/FSR_LLD_4K_OneNAND.c
./drivers/tfsr/LLD/OND/FSR_LLD_SWEcc.h
./drivers/tfsr/LLD/OND_MSM7k/FSR_LLD_OneNAND.c
./drivers/tfsr/LLD/OND_MSM7k/FSR_LLD_ONDShared.c
./drivers/tfsr/LLD/OND_MSM7k/FSR_LLD_SWEcc.c
./drivers/tfsr/LLD/OND_MSM7k/FSR_LLD_4K_ONDShared.c
./drivers/tfsr/LLD/OND_MSM7k/FSR_LLD_4K_OneNAND.c
./drivers/tfsr/LLD/OND_MSM7k/FSR_LLD_SWEcc.h
./drivers/tfsr/LLD/FlexOND_MSM7k/FSR_LLD_FlexOND.c
./drivers/tfsr/LLD/FlexOND_MSM7k/FSR_LLD_FNDShared.c
./drivers/tfsr/LLD/PND_OMAP2430/FSR_LLD_OMAP2430.h
./drivers/tfsr/LLD/PND_OMAP2430/FSR_LLD_PureNAND.c
./drivers/tfsr/Makefile.gcov
./drivers/tfsr/Kconfig
./drivers/tfsr/tfsr_blkdev.c
./drivers/tfsr/Makefile.26
./drivers/tfsr/Makefile
./drivers/staging/android/logger.h
./drivers/staging/android/logger.c
./drivers/inform/inform.c
./drivers/inform/inform.h
./drivers/inform/Kconfig
./drivers/power/s5pc110_battery.c
./drivers/power/Kconfig
./drivers/power/fuel_gauge.c
./drivers/power/s5pc110_battery.h
./drivers/power/s5pc110_battery.c.bak
./drivers/power/Makefile
./drivers/spi/spi_sam.c
./drivers/spi/spi_sam.h
./drivers/sensor/compass/ak8973b.c
./drivers/sensor/compass/ak8973b.h
./drivers/sensor/compass/Kconfig
./drivers/sensor/compass/Makefile
./drivers/sensor/compass/yamaha.c
./drivers/sensor/optical/gp2a.c
./drivers/sensor/optical/Kconfig
./drivers/sensor/optical/Makefile
./drivers/sensor/optical/gp2a.h
./drivers/sensor/Kconfig
./drivers/sensor/accel/smb_i2c.h
./drivers/sensor/accel/smb380.h
./drivers/sensor/accel/smb_acc.h
./drivers/sensor/accel/smb_i2c.c
./drivers/sensor/accel/smb_acc.c
./drivers/sensor/accel/Kconfig
./drivers/sensor/accel/Makefile
./drivers/sensor/accel/smb380.c
./drivers/sensor/Makefile
./drivers/video/samsung/logo_rgb24_wvga_portrait.h
./drivers/video/samsung/Kconfig
./drivers/video/samsung/s3cfb.c
./drivers/video/samsung/Makefile
./drivers/video/samsung/s3cfb_tl2796.c
./drivers/video/backlight/backlight.c
./drivers/mmc/core/sdio_io.c
./drivers/rtc/rtc-max8998.c
./drivers/input/input.c
./drivers/input/touchscreen/qt602240.c.bak
./drivers/input/evdev.c
./drivers/input/keyboard/s3c-keypad.c
./drivers/input/keyboard/Kconfig
./drivers/input/keyboard/s3c-keypad.h
./drivers/input/keyboard/Makefile
./drivers/media/video/s5ka3dfx.c
./drivers/media/video/s5ka3dfx.h
./drivers/media/video/samsung/tv20_ap/s5p_stda_video_layer.c
./drivers/media/video/samsung/tv20_ap/s5p_stda_tvout_if.c
./drivers/media/video/samsung/tv20_ap/s5pc110/hdmi_param.h
./drivers/media/video/samsung/tv20_ap/s5pc110/vp_coeff_s5pc110.h
./drivers/media/video/samsung/tv20_ap/s5pc110/tv_out_s5pc110.h
./drivers/media/video/samsung/tv20_ap/s5pc110/vprocessor_s5pc110.c
./drivers/media/video/samsung/tv20_ap/s5pc110/sdout_s5pc110.c
./drivers/media/video/samsung/tv20_ap/s5pc110/hdmi_s5pc110.c
./drivers/media/video/samsung/tv20_ap/s5pc110/vmixer_s5pc110.c
./drivers/media/video/samsung/tv20_ap/s5pc110/hdcp_s5pc110.c
./drivers/media/video/samsung/tv20_ap/s5pc110/regs/regs-sdaout.h
./drivers/media/video/samsung/tv20_ap/s5pc110/regs/regs-hdmi.h
./drivers/media/video/samsung/tv20_ap/s5pc110/regs/regs-vprocessor.h
./drivers/media/video/samsung/tv20_ap/s5pc110/regs/regs-clock_extra.h
./drivers/media/video/samsung/tv20_ap/s5pc110/regs/regs-vmx.h
./drivers/media/video/samsung/tv20_ap/s5pc110/tv_clock_s5pc110.c
./drivers/media/video/samsung/tv20_ap/Kconfig
./drivers/media/video/samsung/tv20_ap/s5p_stda_hdmi.c
./drivers/media/video/samsung/tv20_ap/s5p_tv_v4l2.c
./drivers/media/video/samsung/tv20_ap/s5pc100/sdout_s5pc100.c
./drivers/media/video/samsung/tv20_ap/s5pc100/vp_coeff_s5pc100.h
./drivers/media/video/samsung/tv20_ap/s5pc100/tv_out_s5pc100.h
./drivers/media/video/samsung/tv20_ap/s5pc100/vprocessor_s5pc100.c
./drivers/media/video/samsung/tv20_ap/s5pc100/hdmi_s5pc100.c
./drivers/media/video/samsung/tv20_ap/s5pc100/tv_power_s5pc100.c
./drivers/media/video/samsung/tv20_ap/s5pc100/vmixer_s5pc100.c
./drivers/media/video/samsung/tv20_ap/s5pc100/tv_clock_s5pc100.c
./drivers/media/video/samsung/tv20_ap/s5pc100/regs/regs-sdaout.h
./drivers/media/video/samsung/tv20_ap/s5pc100/regs/regs-hdmi.h
./drivers/media/video/samsung/tv20_ap/s5pc100/regs/regs-vprocessor.h
./drivers/media/video/samsung/tv20_ap/s5pc100/regs/regs-clock_extra.h
./drivers/media/video/samsung/tv20_ap/s5pc100/regs/regs-vmx.h
./drivers/media/video/samsung/tv20_ap/s5pc100/hdcp_s5pc100.c
./drivers/media/video/samsung/tv20_ap/Makefile
./drivers/media/video/samsung/tv20_ap/s5p_stda_grp.c
./drivers/media/video/samsung/tv20_ap/s5p_tv.h
./drivers/media/video/samsung/fimc/fimc_v4l2.c
./drivers/media/video/samsung/fimc/fimc_capture.c
./drivers/media/video/samsung/fimc/fimc.h
./drivers/media/video/ce147.c
./drivers/media/video/Kconfig
./drivers/media/video/Makefile
./drivers/usb/gadget/composite.c
./drivers/usb/gadget/f_mtp.c
./drivers/usb/gadget/epautoconf.c
./drivers/usb/gadget/f_acm.c
./drivers/usb/gadget/fsa9480_i2c.c
./drivers/usb/gadget/f_rndis.h
./drivers/usb/gadget/f_adb.h
./drivers/usb/gadget/fsa9480_i2c.h
./drivers/usb/gadget/adb_ums_acm_lun.c
./drivers/usb/gadget/f_logging.h
./drivers/usb/gadget/f_acm.h
./drivers/usb/gadget/serial_acm.c
./drivers/usb/gadget/android.c
./drivers/usb/gadget/s3c_udc_otg.c
./drivers/usb/gadget/adb_ums_acm.c
./drivers/usb/gadget/rndis.h
./drivers/usb/gadget/u_serial.h
./drivers/usb/gadget/f_adb.c
./drivers/usb/gadget/f_rndis.c
./drivers/usb/gadget/f_mass_storage.c
./drivers/usb/gadget/adb_ums_acm_tmp.c
./drivers/usb/gadget/adb_ums_acm_mtp_rndis.c
./drivers/usb/gadget/u_serial.c
./drivers/usb/gadget/Makefile
./drivers/usb/gadget/f_logging.c
./drivers/usb/gadget/u_ether.c
./drivers/usb/gadget/f_mass_storage.h
./drivers/usb/gadget/u_ether.h
./drivers/usb/gadget/f_mtp.h
./drivers/usb/gadget/rndis.c
./drivers/i2c/busses/i2c-s3c2410.c
./drivers/i2c/busses/Kconfig
./drivers/Makefile
./include/linux/regulator/max8998.h
./include/linux/regulator/pmic_cam.h
./include/linux/android_power.h
./include/linux/fsr_if.h
./include/linux/timed_output.h
./include/linux/sched.h
./include/linux/mmc/sdio_func.h
./include/linux/videodev2_samsung.h
./include/linux/wakelock.h
./include/linux/usb/android.h
./include/linux/usb/composite.h
./include/linux/usb/gadget.h
./include/linux/earlysuspend.h
./include/linux/power_supply.h
./include/linux/input.h
./include/media/s5ka3dfx_platform.h
./lib/Kconfig.debug
./kernel/printk.c
./kernel/sched.c
./kernel/panic.c
./kernel/Makefile
./init/main.c

Too bad, he's not in a chatty mood anymore.

Now let's study this driver !

Still need help !