diff mbox

[RFC,v2] linux: add fbtft kernel extension

Message ID trinity-edc46a73-cac1-488c-9c86-599abc47450e-1419980458398@3capp-gmx-bs39
State Not Applicable
Headers show

Commit Message

Peter Seiderer Dec. 30, 2014, 11 p.m. UTC
Hello Yann,

> Gesendet: Dienstag, 30. Dezember 2014 um 23:36 Uhr
> Von: "Yann E. MORIN" <yann.morin.1998@free.fr>
> An: "Peter Seiderer" <ps.report@gmx.net>
> Cc: buildroot@busybox.net, loucrittenden63@gmail.com, "Thomas Petazzoni" <thomas.petazzoni@free-electrons.com>
> Betreff: Re: [RFC v2] linux: add fbtft kernel extension
>
> Peter, All,
> 
> On 2014-12-30 20:58 +0100, Peter Seiderer spake thusly:
> > ... sorry for the resend, file linux/linux-ext-fbtft.mk was missing.
> 
> No problem, I've marked the first iteration as "Syuperseded" in our
> Patchwork.
> 
> > First draft of a patch adding fbtft framebuffer drivers to buildroot.
> 
> Thanks! :-)
> 
> > My first attempt was using the out of tree kernel modules compile
> > (as suggested by Yann E. MORIN [1]) which is already (partly)
> > supported by the fbtft source, but I failed to enable some
> > needed kernel configurations e.g FB_DEFERRED_IO (did not survive
> > the oldconfig/silentoldconfig step when not referenced in tree,
> > workaround is to enable a built in feature with the same
> > preferences [2]).
> 
> OK, I'll be looking at it, to see why it fails. Don't expect much before
> next week-end (actually, that will be next year, too! :-) ) because,
> well, New Year celebrations, boring stuff like that, which I'm socially
> obliged to attend... ;-)
> 

...as a little help my patch file for the first attempt (after the duplication
of the KCONFIG_ENABLE_OPT calls after the call to oldconfig I gave up and tried the
second approach)...

Regards,
Peter

> Regards,
> Yann E. MORIN.
> 
> > The second attempt is the linux-ext approach (as presented here).
> > 
> > I am unsure if the enabling of CONFIG_SPI_BCM2708 belongs into
> > linux.mk or should go into raspberrypi_defconfig or belongs into
> > the appropriate Readme?
> > 
> > The second question is about the 25 submodules of fbtft
> > (at the moment only FB_TFT_ILI9340 and FB_TFT_ILI9341 are
> > enabled). Should every submodule be configurable or should all
> > submodules be enabled by default?
> > 
> > There is an adafruit fork of the fbtft repository [4] with some
> > adfruit specific enhancements...
> > 
> > Regards,
> > Peter
> > 
> > Tested with RaspberryPi B+ and PiTFT Mini Kit - 320x240 2.8" TFT
> > (see [5] and [6]) and the following 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://lists.busybox.net/pipermail/buildroot/2014-December/115770.html
> > [2] https://github.com/notro/fbtft/issues/209#issuecomment-68191514
> > [3] http://www.adafruit.com/products/1983
> > [4] https://github.com/adafruit/adafruit-rpi-fbtft
> > [5] http://h65951.serverkompetenz.net/PeterSeiderer/upload/PiTFT_2_8_ct/Image9893.jpg
> > [6] http://h65951.serverkompetenz.net/PeterSeiderer/upload/PiTFT_2_8_ct/Image9897.jpg
> > 
> > Peter Seiderer (1):
> >   linux: add fbtft kernel extension
> > 
> >  linux/Config.ext.in      | 10 ++++++++++
> >  linux/linux-ext-fbtft.mk | 25 +++++++++++++++++++++++++
> >  linux/linux.mk           |  9 +++++++++
> >  package/Config.in        |  1 +
> >  package/fbtft/Config.in  | 13 +++++++++++++
> >  package/fbtft/fbtft.mk   | 11 +++++++++++
> >  6 files changed, 69 insertions(+)
> >  create mode 100644 linux/linux-ext-fbtft.mk
> >  create mode 100644 package/fbtft/Config.in
> >  create mode 100644 package/fbtft/fbtft.mk
> > 
> > -- 
> > 2.1.2
> > 
> 
> -- 
> .-----------------.--------------------.------------------.--------------------.
> |  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
> | +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
> '------------------------------^-------^------------------^--------------------'
>
commit a3501eba4688d8438714c4dd9b0d99b4189f26b3
Author: Peter Seiderer <ps.report@gmx.net>
Date:   Tue Dec 30 14:52:05 2014 +0100

    fbtft: new package (out of tree compile)
diff mbox

Patch

diff --git a/linux/linux.mk b/linux/linux.mk
index 8256641..058f5cf 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -196,6 +196,17 @@  define LINUX_CONFIGURE_CMDS
 		$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS_MOUNT,$(@D)/.config))
 	$(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV),
 		$(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER,$(@D)/.config))
+	$(if $(BR2_PACKAGE_FBTFT),
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_SYS_FILLRECT,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_SYS_COPYAREA,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_SYS_IMAGEBLIT,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_SYS_FOPS,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_DEFERRED_IO,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_BACKLIGHT,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_SPI,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_GPIOLIB,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_SPI_BCM2708,$(@D)/.config))
 	$(if $(BR2_PACKAGE_KTAP),
 		$(call KCONFIG_ENABLE_OPT,CONFIG_DEBUG_FS,$(@D)/.config)
 		$(call KCONFIG_ENABLE_OPT,CONFIG_EVENT_TRACING,$(@D)/.config)
@@ -215,6 +226,17 @@  define LINUX_CONFIGURE_CMDS
 	$(if $(BR2_LINUX_KERNEL_APPENDED_DTB),
 		$(call KCONFIG_ENABLE_OPT,CONFIG_ARM_APPENDED_DTB,$(@D)/.config))
 	yes '' | $(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) oldconfig
+	$(if $(BR2_PACKAGE_FBTFT),
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_SYS_FILLRECT,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_SYS_COPYAREA,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_SYS_IMAGEBLIT,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_SYS_FOPS,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_DEFERRED_IO,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_FB_BACKLIGHT,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_SPI,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_GPIOLIB,$(@D)/.config)
+		$(call KCONFIG_ENABLE_OPT,CONFIG_SPI_BCM2708,$(@D)/.config))
 endef
 
 ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT),y)
diff --git a/package/Config.in b/package/Config.in
index 3b37bb2..c658a28 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -311,6 +311,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"
diff --git a/package/fbtft/Config.in b/package/fbtft/Config.in
new file mode 100644
index 0000000..c66b189
--- /dev/null
+++ b/package/fbtft/Config.in
@@ -0,0 +1,11 @@ 
+config BR2_PACKAGE_FBTFT
+	bool "fbtft"
+	depends on BR2_LINUX_KERNEL
+	help
+	  Linux Framebuffer drivers for small TFT LCD display modules,
+	  e.g. Adafruit PiTFT displays for Raspberry Pi.
+
+	  https://github.com/notro/fbtft
+
+comment "fbtft needs a Linux kernel to be built"
+	depends on !BR2_LINUX_KERNEL
diff --git a/package/fbtft/fbtft.mk b/package/fbtft/fbtft.mk
new file mode 100644
index 0000000..93b759c
--- /dev/null
+++ b/package/fbtft/fbtft.mk
@@ -0,0 +1,22 @@ 
+################################################################################
+#
+# fbtft
+#
+################################################################################
+
+FBTFT_VERSION = 274035404701245e7491c0c6471c5b72ade4d491
+FBTFT_SITE = $(call github,notro,fbtft,$(FBTFT_VERSION))
+FBTFT_LICENSE = GPLv2+
+
+FBTFT_DEPENDENCIES = linux
+
+define FBTFT_BUILD_CMDS
+	cd $(@D); $(MAKE) .config
+	$(MAKE) -C $(LINUX_DIR) $(LINUX_MAKE_FLAGS) M=$(@D)
+endef
+
+define FBTFT_INSTALL_TARGET_CMDS
+	$(MAKE) -C $(LINUX_DIR) $(LINUX_MAKE_FLAGS) M="$(@D)" modules_install
+endef
+
+$(eval $(generic-package))