-
Notifications
You must be signed in to change notification settings - Fork 5k
Upstreaming
This document tries to track the difference between downstream and mainline.
Another status page: http://elinux.org/RPi_Upstreaming
For Raspberry Pi 1 and Zero, use bcm2835_defconfig
For Raspberry Pi 2, use multi_v7_defconfig
For Raspberry Pi 3, use defconfig
on arm64. Note that as of 4.8-rc1, the defconfig has not been updated to include Raspberry Pi support, so you'll need to include:
CONFIG_ARCH_BCM2835
CONFIG_SERIAL_8250_BCM2835AUX
CONFIG_I2C_BCM2835
CONFIG_BCM2835_WDT
CONFIG_SPI_BCM2835
CONFIG_SPI_BCM2835AUX
CONFIG_DRM_VC4
CONFIG_SND_BCM2835_SOC_I2S
CONFIG_USB_DWC2_HOST
CONFIG_DMA_BCM2835
CONFIG_BCM2835_MBOX
CONFIG_RASPBERRYPI_POWER
CONFIG_RASPBERRYPI_FIRMWARE
For Raspberry Pi 1, use bcmrpi_defconfig
For Raspberry Pi 2 and Pi 3, use bcm2709_defconfig
Downstream is now using ARCH_BCM2835 and has dropped ARCH_BCM2708 and ARCH_BCM2709.
Mainline hierarchy (arm64?):
bcm2835-rpi-*.dts bcm2836-rpi-2-b.dts
bcm2835-rpi.dtsi
bcm2835.dtsi bcm2836.dtsi
bcm283x.dtsi
Downstream hierarchy:
bcm2708-rpi*.dts bcm2709-rpi*.dts bcm2710-rpi*.dts
bcm2708.dtsi bcm2709.dtsi bcm2710.dtsi
bcm2708-rpi.dtsi bcm2708-rpi.dtsi bcm2708-rpi.dtsi
bcm270x.dtsi bcm270x.dtsi bcm270x.dtsi
bcm2835.dtsi bcm2836.dtsi bcm283x.dtsi
bcm283x.dtsi bcm283x.dtsi
The bootloader will choose 2835 dtb's if the kernel image is tagged in such a way using scripts/mkknlimg.
List of downstream drivers:
-
drivers/usb/host/dwc_otg
First commit: Add dwc_otg driver (3.1 - 17 Jan 2012)
Has support for fast interrupts (FIQ). FIQ support requires some changes to the irq drivers.
Mainline driver (used for OTG on Pi Zero): drivers/usb/dwc2 -
drivers/video/fbdev/bcm2708_fb.c
First commit: bcm2708 framebuffer driver (3.1 - 17 Jan 2012)
Mainline counterpart: drivers/gpu/drm/vc4/
Downstream alternative: drivers/gpu/drm/vc4/vc4_firmware_kms.c -
drivers/char/broadcom/vcio.c
First commit: Main bcm2708 linux port (3.1 - 17 Jan 2012)
Previously in arch/arm/mach-bcm2708/ -
drivers/char/broadcom/vc_mem.c
First commit: Main bcm2708 linux port (3.1 - 17 Jan 2012)
Previously in arch/arm/mach-bcm2708/
Helper for videocore memory access and total size allocation. Used by vcdbg. -
sound/arm/bcm2835.c
First commit: First pass at alsa sound driver. Some functionality, but also some underruns (3.1 - 26 Mar 2012) -
drivers/cpufreq/bcm2835-cpufreq.c
First commit: Add cpufreq driver (3.2 - 10 Sep 2012)
Upstreaming effort: [PATCH] cpufreq: Add Broadcom BCM2835 CPU frequency control driver -
drivers/staging/media/lirc/lirc_rpi.c
First commit: lirc: added support for RaspberryPi GPIO (3.2 - 16 Jun 2012) -
drivers/char/broadcom/vc_cma
First commit: Add missing CMA files (3.6 - 23 Oct 2012) -
drivers/media/platform/bcm2835/bcm2835-camera.c
First commit: bcm2835: add v4l2 camera device (3.10 - 30 Jan 2013) -
drivers/char/broadcom/vc_sm
First commit: vcsm: VideoCore shared memory service for BCM2835 (3.16 - 22 Jul 2014)
Support for the VC shared memory on the Broadcom reference design. Uses the VCHIQ stack. -
drivers/mmc/host/bcm2835-mmc.c
First commit: MMC: added alternative MMC driver (3.16 - 15 Aug 2014) -
drivers/input/joystick/rpisense-js.c
First commit: Add Raspberry Pi Sense HAT support (4.0 - 2 Jul 2015) -
drivers/input/touchscreen/rpi-ft5406.c
First commit: rpi-ft5406: Add touchscreen driver for pi LCD display (4.0 - 12 May 2015) -
drivers/video/backlight/rpi_backlight.c
First commit: rpi_display: add backlight driver and overlay (4.1 - 21 Oct 2015) -
drivers/misc/bcm2835_smi.c
First commit: Add SMI driver (4.1 - 5 Sep 2015) -
drivers/char/broadcom/bcm2835_smi_dev.c
First commit: Add SMI driver (4.1 - 5 Sep 2015) -
drivers/mtd/nand/bcm2835_smi_nand.c
First commit: Add SMI NAND driver (4.1 - 5 Sep 2015) -
drivers/char/broadcom/bcm2835-gpiomem.c
First commit: Add /dev/gpiomem device for rootless user GPIO access (4.1 - 22 Aug 2015) -
drivers/gpio/gpio-bcm-virt.c
First commit: bcm2835-virtgpio: Virtual GPIO driver (4.1 - 23 Feb 2016) -
drivers/gpu/drm/vc4/vc4_firmware_kms.c
First commit: drm/vc4: Add a mode for using the closed firmware for display. (4.4 - 14 Sep 2016) -
sound/soc/bcm
Several Raspberry Pi I2S sound card drivers -
drivers/i2c/busses/i2c-bcm2708.c
Will serve as a regression testing fallback for i2c-bcm2835 during 4.9 (next LTS).
Downstream Pi1 optimization: Improve __copy_to_user and __copy_from_user performance
This is an attempt to list Mainline efforts (new drivers) to support Raspberry Pi combined with Downstream efforts to close in on mainline. Stable downstream versions are also listed.
2020
2019
-
M: cpufreq: add driver for Raspberry Pi (5.3)
-
M: soc: bcm: bcm2835-pm: Add support for power domains under a new binding. (5.1)
-
M: Input: add official Raspberry Pi's touchscreen driver (5.0)
-
S: Linux 4.19 (forum post)
2018
-
M: gpio: raspberrypi-exp: Driver for RPi3 GPIO expander via mailbox service (4.17)
-
S: Linux 4.14 (forum post)
-
M: drm/panel: Add support for the Raspberry Pi 7" Touchscreen (4.15)
2017
-
M: thermal: bcm2835: add thermal driver for bcm2835 SoC (4.12)
-
M: mmc: bcm2835: Add new driver for the sdhost controller (4.12)
-
S: Linux 4.9 (forum post)
-
M: staging: bcm2835-audio: initial staging submission (4.11)
-
M: staging: Import the BCM2835 MMAL-based V4L2 camera driver. (4.11)
2016
-
D: [RFC] watchdog: bcm2835: Support setting reboot partition
-
D: BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi
-
M: staging: add bcm2708 vchiq driver (4.9)
-
D: rpi-4.7.y enable clock manager and modify all subsystems to use it
-
S: Linux 4.4 (forum post)
ATAGS booting is not supported anymore, Device Tree is mandatory.
2015
-
S: Linux 4.1 (forum post)
-
S: Linux 4.0 (forum post)
-
D: device-tree: spi: make spi-bcm2835 the default spi driver and prepare for dma
-
S: Linux 3.18 (forum post)
Device Tree enabled kernel, ATAGS booting is also supported. -
M: clk: bcm2835: Add a driver for the auxiliary peripheral clock gates (4.5)
-
M: irqchip: Add bcm2836 interrupt controller for Raspberry Pi 2 (4.3)
2014
-
S: Linux 3.12
-
M: pwm: Add BCM2835 PWM driver (3.19)
-
M: ASoC: Add support for BCM2835 (3.14)
-
M: dmaengine: Add support for BCM2835 (3.14)
2013
-
S: Linux 3.10
-
M: watchdog: Add Broadcom BCM2835 watchdog timer driver (3.11)
-
M: spi: add driver for BCM2835 (3.10)
-
M: i2c: add bcm2835 driver (3.9)
2012
-
S: Linux 3.6
-
M: pinctrl: add bcm2835 driver (3.7)
-
M: ARM: bcm2835: add stub clock driver (3.7)
-
M: ARM: bcm2835: add system timer (3.7)
-
M: ARM: add infra-structure for BCM2835 and Raspberry Pi (3.7)
-
S: Linux 3.2
-
S: Linux 3.1.9. First kernel released on https://github.com/raspberrypi/firmware
-
D: First downstream commit on 17 Jan 2012 in the rpi-patches branch (3.1.9)
Fork this repo, make your changes, then send us a pull request
One caveat. If you are making changes to upstream code (i.e. with no changes specific to Raspberry Pi devices), then it's best to submit your changes upstream, then when they are accepted, we can cherry-pick them back to our branches here.
- Shortcuts to other Raspberry Pi pages
- Official Website
- Official Forum
- Official Website Documentation
- Documentation Repository
-
Firmware Repository
- For reporting issues with the Raspberry Pi VC4/6 firmware.
-
Userland Repository
- For reporting issues with the Raspberry Pi supplied userland apps.
-
Raspbian distro Repository
- For reporting issues with the Raspbian distribution and desktop.