linux: add fbtft kernel extension

Tested with RaspberryPi B+ and PiTFT Mini Kit - 320x240 2.8" TFT
(see [1] and [2]) and the following target configuration changes:
- cmdline.txt: add 'fbcon=map:10 fbcon=font:VGA8x8'
- add /etc/modules-load.d/fbtft.conf with 'fbtft_device'
- add /etc/modprobe.d/00-fbtft.conf with 'options fbtft_device name=adafruit28 rotate=90 gpios=dc:25'

[1] http://h65951.serverkompetenz.net/PeterSeiderer/upload/PiTFT_2_8_ct/Image9893.jpg
[2] http://h65951.serverkompetenz.net/PeterSeiderer/upload/PiTFT_2_8_ct/Image9897.jpg

[Thomas:
  - Rename prompt of the Linux extension to "FB TFT drivers"
  - Remove the full name of the kernel config options in the help
    text. Giving their CONFIG_<foo> name is enough.
  - Remove the mention of CONFIG_SPI_BCM2708, since this makes the
    description RaspberryPi specific, while these drivers can work
    with any SPI controller.
  - Refactor the code in linux-ext-fbtft.mk to avoid duplication
    between the < 3.15 and >= 3.15 cases.
  - Make the fbtft package a promptless package, since there is no
    point in selecting only this package, without the kernel
    extension.
  - Change the license to GPLv2, since it's kernel code.]

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Peter Seiderer 2015-01-03 21:01:47 +01:00 committed by Thomas Petazzoni
parent ce36c35c42
commit 9b2bbe3422
5 changed files with 71 additions and 0 deletions

View File

@ -42,4 +42,22 @@ config BR2_LINUX_KERNEL_EXT_RTAI_PATCH
help
Optionally, explicitly specify the RTAI patch to use.
# fbtft
config BR2_LINUX_KERNEL_EXT_FBTFT
bool "FB TFT drivers"
select BR2_PACKAGE_FBTFT
help
Linux Framebuffer drivers for small TFT LCD display modules,
e.g. Adafruit PiTFT displays for Raspberry Pi.
To enable fbtft, e.g. for Adafruit 2.8 PiTFT, enable the
following kernel configurations:
- CONFIG_SPI
- CONFIG_GPIOLIB
- CONFIG_FB
- CONFIG_FB_TFT
- CONFIG_FB_TFT_ILI9341
https://github.com/notro/fbtft
endmenu

28
linux/linux-ext-fbtft.mk Normal file
View File

@ -0,0 +1,28 @@
################################################################################
# Linux fbtft extensions
#
# Patch the linux kernel with fbtft extension
################################################################################
ifeq ($(BR2_LINUX_KERNEL_EXT_FBTFT),y)
# Add dependency to fbtft package (download helper for the fbtft source)
LINUX_DEPENDENCIES += fbtft
# for linux >= 3.15 install to drivers/video/fbdev/fbtft
# for linux < 3.15 install to drivers/video/fbtft
define FBTFT_PREPARE_KERNEL
if [ -e $(LINUX_DIR)/drivers/video/fbdev ]; then \
dest=$(LINUX_DIR)/drivers/video/fbdev ; \
else \
dest=$(LINUX_DIR)/drivers/video/ ; \
fi ; \
mkdir -p $${dest}/fbtft; \
cp -dpfr $(FBTFT_DIR)/* $${dest}/fbtft/ ; \
echo 'source "drivers/video/fbdev/fbtft/Kconfig"' \
>> $${dest}/Kconfig ; \
echo 'obj-y += fbtft/' >> $${dest}/Makefile
endef
LINUX_PRE_PATCH_HOOKS += FBTFT_PREPARE_KERNEL
endif #BR2_LINUX_KERNEL_EXT_FBTFT

View File

@ -313,6 +313,7 @@ endif
source "package/evemu/Config.in"
source "package/evtest/Config.in"
source "package/fan-ctrl/Config.in"
source "package/fbtft/Config.in"
source "package/fconfig/Config.in"
source "package/fis/Config.in"
source "package/flashrom/Config.in"

13
package/fbtft/Config.in Normal file
View File

@ -0,0 +1,13 @@
# Prompt-less option, because this package is not doing anything
# except downloading the FB TFT sources. The real work is done by a
# Linux extension.
config BR2_PACKAGE_FBTFT
bool
depends on BR2_LINUX_KERNEL
help
Linux Framebuffer drivers for small TFT LCD display modules,
e.g. Adafruit PiTFT displays for Raspberry Pi.
This is only the download helper for the kernel patch.
https://github.com/notro/fbtft

11
package/fbtft/fbtft.mk Normal file
View File

@ -0,0 +1,11 @@
################################################################################
#
# fbtft
#
################################################################################
FBTFT_VERSION = 274035404701245e7491c0c6471c5b72ade4d491
FBTFT_SITE = $(call github,notro,fbtft,$(FBTFT_VERSION))
FBTFT_LICENSE = GPLv2
$(eval $(generic-package))