The bleeding edge upstream development for linux-davinci is hosted at

The ev3dev kernel was originally based on Davinci PSP from TI.

Kernel Drivers

Most, if not all, of the customization of the ev3dev kernel is the addition and patching of hardware drivers for the EV3 specific hardware. TODO: add more about the ev3dev device driver philosophy - particularly in regard to attributes.

Be sure to check out the hardware pages for specifics on how the drivers interface with the hardware.

LMS2012 sources

Most of the EV3 specific drivers are based on the source code for the official LEGO firmware (aka LMS2012). The following table shows the relation of ev3dev drivers to LMS2012 drivers.

lms2012 ev3dev Notes
d_analog.c legoev3_analog.c Device1 portion of d_analog.c
legoev3_ports_in.c Input portion of Device3
legoev3_ports_out.c Output portion of Device3
d_bt.c legoev3_bluetooth.c d_bt.c Device1 is not implemented yet
Device2 is for firmware update, so is not needed in ev3dev
"slow clock" comes from board-da850-evm.c in the lms2012 kernel
d_iic.c legoev3_i2c.c Using standard linux kernel i2c
d_power.c legoev3_battery.c ev3dev power off is done in board-legoev3.c
d_pwm.c legoev3_motor.c
d_sound.c legoev3_sound.c Implemented as a ALSA sound driver for PCM playback and an input device for tone playback
d_uart_mod.c Using standard kernel drivers for the SoC UARTs. Ported omapl_pru from LEGO firmware for PRU UARTs.
d_ui.c Using standard kernel drivers, gpio-keys for buttons and leds-gpio for LEDs
d_usbdev.c Probably won't implement something like this in ev3dev
Using exiting USB gadget drivers
d_usbhost.c Not implementing because it does not do anything
board-da850-evm.c board-legoev3.c
davinci-iic.c [legoev3-fiq.c] lms2012 just uses this for i2c, ev3dev uses it for i2c and sound
st7586fb.c st7586fb.c

Where to find stuff

Most everything is in the lego-linux-drivers repository nowadays.