Für jedes eingebettete System muss ein spezielles Linux System erzeugt werden. Dieses Linux System wird auch BSP (Board-Support-Package) genannt. Ein BSP enthält einen speziell angepassten Linux Kernel, Firmware und Software für das Userland. Im Regelfall liefert der Hersteller des Prozessors bzw. der SOC einen angepassten Linux-Kernel aus, der die Treiber für die einzelnen Bausteine ansprechen kann. Hersteller wie NXP oder Microchip schicken ihre Änderungen Upstream an den Linux-Kernel (Beispiel: NXP), aber dort dauert die Integration lange, weswegen sie ihre Version schon vorab ausliefern und Module, die noch nicht das Code-Review durchlaufen haben oder im Staging-Bereich des Kernels feststecken, als Kernelmodul zur Verfügung stellen.
Ein weiterer Grund ist, dass der Kernel gegenüber einer Toolchain zertifiziert wird und entsprechende Anpassungen erhält. Damit kann der Hersteller sicherstellen, dass der Kernel sich genauso verhält wie gewünscht. Der Grad an Kontrolle ist im Mainline Kernel geringer und damit eine Zertifizierung nicht möglich.
Beispiel ist hier der Raspberry-Pi, die Foundation hinter dem Pi entwickelt die Kernelmodule von Broadcom weiter und veröffentlicht diese in einem eigenen Repository. Auch wenn die Foundation sich bemüht, die Module Upstream zu veröffentlichen, liegen viele Module im Staging-Bereich, da ihre Codequalität nicht dem Anspruch der Linux Kernel Community genügt. Ebenso die Raspberry-Pi Community entwickelt fleissig Module, die im Kernel landen (Quelle).
Diese Einschränkung führt dazu, dass viele Funktionen des Linux Kernels im Mainline beim Raspberry Pi nicht vorhanden sind oder schlechter arbeiten. Durch den kontinuierlichen Upstream werden diese Probleme mit der Zeit gelöst. Allerdings ist die Situation stark abhängig von den Freiwilligen, die kontinuierliche Wartung ist daher ungewiss. (Quelle)
Bildquelle: Wikipedia