User:Trickygnome/Add driver to linux kernel sources
From Gentoo Wiki
Jump to:navigation
Jump to:search
1\ Choose *subdirectory* (e.g., drivers/, arch/<architecture>/, sound/).
- Create directory for your driver:
mkdir drivers/mydriver
2\ *Copy* driver source files to the new directory. 3\ Create and edit *Kconfig* file:
config MYDRIVER tristate "My custom driver" depends on <dependencies> help Driver description
4\ Create and edit *Makefile*:
obj-$(CONFIG_MYDRIVER) += mydriver.o
5\ *parent Kconfig*:
source "drivers/mydriver/Kconfig"
6\ *Parent Makefile*:
obj-$(CONFIG_MYDRIVER) += mydriver/
7\ Run make menuconfig, select your driver.
FILE
install_driver.sh
DRNAME=mydriver
DRIVER_TAR="/usr/share/driver/driver.tar.gz"
CONF_MOD=CONFIG_MYDRIVER
OLD_DRIVER=olddriver
parentMakefile="/usr/src/linux/drivers/net/wireless/realtek/Makefile"
parentKconfig="/usr/src/linux/drivers/net/wireless/realtek/Kconfig"
driverDir="/usr/src/linux/drivers/net/wireless/realtek/${RTL}"
backup_or_restore() {
local file="$1"
local backup="${file}.back"
if [ -e "$backup" ]; then
cp "$backup" "$file"
else
cp "$file" "$backup"
fi
}
# - Add driver to Kernel source tree
rm -r "$driverDir" &> /dev/null
mkdir "$driverDir"
tar xpf "$DRIVER_TAR" -C "$driverDir"
# - fix line in Makefile of driver
sed -i "s/export ${CONF_MOD} = m/export ${CONF_MOD} = y/" "$driverDir"/Makefile
# - add line to parent Makefile to our folder
backup_or_restore "$parentMakefile"
echo 'obj-$('${CONF_MOD}') += '"${DRNAME}/" >> "$parentMakefile"
# - parent Kconfig - add section to Kconfig with path to our Kconfig
backup_or_restore "$parentKconfig"
sed -i '$d' "$parentKconfig" # remove last line
{
echo "source \"drivers/${DRNAME}/Kconfig\""
echo
echo 'endif
} >> "$parentKconfig"
# - disable conflicting driver
backup_or_restore "/usr/src/linux/drivers/somedrivers/${OLD_DRIVER}/Kconfig"
backup_or_restore "/usr/src/linux/drivers/somedrivers/${OLD_DRIVER}/Makefile"
echo "" > "/usr/src/linux/drivers/somedrivers/${OLD_DRIVER}/Kconfig"
echo "" > "/usr/src/linux/drivers/somedrivers/${OLD_DRIVER}/Makefile"