setup config for tegra based arm boards, add device tree

patches for arm build tegra and omap kernel on arm
This commit is contained in:
Dennis Gilmore 2011-08-16 11:33:15 -05:00
parent bc12142e94
commit 986a9f3a2e
5 changed files with 272 additions and 4 deletions

View File

@ -9,7 +9,7 @@ CONFIGFILES = \
$(CFG)-i686-PAE.config $(CFG)-i686-PAEdebug.config \ $(CFG)-i686-PAE.config $(CFG)-i686-PAEdebug.config \
$(CFG)-x86_64.config $(CFG)-x86_64-debug.config \ $(CFG)-x86_64.config $(CFG)-x86_64-debug.config \
$(CFG)-s390x.config \ $(CFG)-s390x.config \
$(CFG)-arm.config $(CFG)-armv7l-omap.config \ $(CFG)-arm.config $(CFG)-armv7l-omap.config $(CFG)-armv7l-tegra.config \
$(CFG)-ppc.config $(CFG)-ppc-smp.config \ $(CFG)-ppc.config $(CFG)-ppc-smp.config \
$(CFG)-sparc64.config \ $(CFG)-sparc64.config \
$(CFG)-ppc64.config $(CFG)-ppc64-debug.config \ $(CFG)-ppc64.config $(CFG)-ppc64-debug.config \
@ -39,6 +39,9 @@ temp-arm-generic: config-arm-generic temp-generic
temp-armv7l-omap-generic: config-arm-omap-generic temp-arm-generic temp-armv7l-omap-generic: config-arm-omap-generic temp-arm-generic
perl merge.pl $^ > $@ perl merge.pl $^ > $@
temp-armv7l-tegra: config-arm-tegra temp-arm-generic
perl merge.pl $^ > $@
temp-x86-32: config-x86-32-generic config-x86-generic temp-x86-32: config-x86-32-generic config-x86-generic
perl merge.pl $^ > $@ perl merge.pl $^ > $@
@ -111,6 +114,9 @@ kernel-$(VERSION)-arm.config: /dev/null temp-arm-generic
kernel-$(VERSION)-armv7l-omap.config: /dev/null temp-armv7l-omap-generic kernel-$(VERSION)-armv7l-omap.config: /dev/null temp-armv7l-omap-generic
perl merge.pl $^ arm > $@ perl merge.pl $^ arm > $@
kernel-$(VERSION)-armv7l-tegra.config: /dev/null temp-armv7l-tegra
perl merge.pl $^ arm > $@
kernel-$(VERSION)-ppc.config: /dev/null temp-powerpc32-generic kernel-$(VERSION)-ppc.config: /dev/null temp-powerpc32-generic
perl merge.pl $^ powerpc > $@ perl merge.pl $^ powerpc > $@

42
arm-omap-dt-compat.patch Normal file
View File

@ -0,0 +1,42 @@
diff -up linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c.fdt linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c
--- linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c.fdt 2011-08-04 16:51:12.034188064 -0500
+++ linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap3beagle.c 2011-08-04 22:13:52.801156923 -0500
@@ -591,6 +591,11 @@ static void __init omap3_beagle_init(voi
beagle_opp_init();
}
+static const char *omap3_beagle_dt_match[] __initdata = {
+ "ti,omap3-beagle",
+ NULL
+};
+
MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
/* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
.boot_params = 0x80000100,
@@ -600,4 +605,5 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagl
.init_irq = omap3_beagle_init_irq,
.init_machine = omap3_beagle_init,
.timer = &omap_timer,
+ .dt_compat = omap3_beagle_dt_match,
MACHINE_END
diff -up linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c.fdt linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c
--- linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c.fdt 2011-08-04 16:51:12.092169023 -0500
+++ linux-2.6.39.armv7l/arch/arm/mach-omap2/board-omap4panda.c 2011-08-04 22:15:29.200157437 -0500
@@ -708,6 +708,11 @@ static void __init omap4_panda_map_io(vo
omap44xx_map_common_io();
}
+static const char *omap4_panda_match[] __initdata = {
+ "ti,omap4-panda",
+ NULL,
+};
+
MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
/* Maintainer: David Anders - Texas Instruments Inc */
.boot_params = 0x80000100,
@@ -717,4 +722,5 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda
.init_irq = gic_init_irq,
.init_machine = omap4_panda_init,
.timer = &omap_timer,
+ .dt_compat = omap4_panda_match,
MACHINE_END

View File

@ -0,0 +1,92 @@
From 0b608345e114681f66ca0a3cf9d9434728da62ce Mon Sep 17 00:00:00 2001
From: Ken Cox <ken@coxcampers.net>
Date: Thu, 23 Jun 2011 10:36:43 -0500
Subject: [PATCH] Support reading mac address from device tree.
If CONFIG_OF is enabled, we will try to read the mac address from the device tree. This enables us the ability to have a "static" mac address on arm boards such as the pandaboard and beagleboard which generate random mac addresses.
---
drivers/net/usb/smsc75xx.c | 17 +++++++++++++++++
drivers/net/usb/smsc95xx.c | 18 +++++++++++++++++-
2 files changed, 34 insertions(+), 1 deletions(-)
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
index 753ee6e..ac0a200 100644
--- a/drivers/net/usb/smsc75xx.c
+++ b/drivers/net/usb/smsc75xx.c
@@ -29,6 +29,7 @@
#include <linux/crc32.h>
#include <linux/usb/usbnet.h>
#include <linux/slab.h>
+#include <linux/of_device.h>
#include "smsc75xx.h"
#define SMSC_CHIPNAME "smsc75xx"
@@ -658,6 +659,22 @@ static int smsc75xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
static void smsc75xx_init_mac_address(struct usbnet *dev)
{
+ void *address;
+#ifdef CONFIG_OF
+ struct device_node *np;
+
+ /* try the device tree */
+ np = of_find_node_by_name(NULL, "smsc75xx");
+ if (np) {
+ address = of_get_property(np, "local-mac-address", NULL);
+ if (address) {
+ memcpy(dev->net->dev_addr, address, ETH_ALEN);
+ netif_dbg(dev, ifup, dev->net, "MAC address read from device tree\n");
+ return;
+ }
+ }
+#endif
+
/* try reading mac address from EEPROM */
if (smsc75xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
dev->net->dev_addr) == 0) {
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index bc86f4b..c83942d 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -29,6 +29,7 @@
#include <linux/crc32.h>
#include <linux/usb/usbnet.h>
#include <linux/slab.h>
+#include <linux/of_device.h>
#include "smsc95xx.h"
#define SMSC_CHIPNAME "smsc95xx"
@@ -639,6 +640,22 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
static void smsc95xx_init_mac_address(struct usbnet *dev)
{
+ void *address;
+#ifdef CONFIG_OF
+ struct device_node *np;
+
+ /* try the device tree */
+ np = of_find_node_by_name(NULL, "smsc95xx");
+ if (np) {
+ address = of_get_property(np, "local-mac-address", NULL);
+ if (address) {
+ memcpy(dev->net->dev_addr, address, ETH_ALEN);
+ netif_dbg(dev, ifup, dev->net, "MAC address read from device tree\n");
+ return;
+ }
+ }
+#endif
+
/* try reading mac address from EEPROM */
if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
dev->net->dev_addr) == 0) {
@@ -648,7 +665,6 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
return;
}
}
-
/* no eeprom, or eeprom values are invalid. generate random MAC */
random_ether_addr(dev->net->dev_addr);
netif_dbg(dev, ifup, dev->net, "MAC address set to random_ether_addr\n");
--
1.7.2.3

71
config-arm-tegra Normal file
View File

@ -0,0 +1,71 @@
CONFIG_ARCH_TEGRA=y
CONFIG_MACH_HARMONY=y
CONFIG_MACH_KAEN=y
CONFIG_MACH_PAZ00=y
CONFIG_MACH_TRIMSLICE=y
CONFIG_MACH_WARIO=y
CONFIG_TEGRA_DEBUG_UARTD=y
CONFIG_ARM_ERRATA_742230=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_SMP=y
CONFIG_NR_CPUS=2
CONFIG_PREEMPT=y
CONFIG_AEABI=y
CONFIG_I2C_TEGRA=y
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_TEGRA=y
# CONFIG_RCU_BOOST is not set
CONFIG_TEGRA_SYSTEM_DMA=y
CONFIG_TEGRA_EMC_SCALING_ENABLE=y
CONFIG_ARM_THUMBEE=y
CONFIG_SWP_EMULATE=y
# CONFIG_CPU_BPREDICT_DISABLE is not set
CONFIG_CACHE_L2X0=y
CONFIG_ARM_ERRATA_430973=y
# CONFIG_ARM_ERRATA_458693 is not set
# CONFIG_ARM_ERRATA_460075 is not set
# CONFIG_ARM_ERRATA_742231 is not set
CONFIG_PL310_ERRATA_588369=y
CONFIG_ARM_ERRATA_720789=y
# CONFIG_PL310_ERRATA_727915 is not set
# CONFIG_ARM_ERRATA_743622 is not set
# CONFIG_ARM_ERRATA_751472 is not set
# CONFIG_ARM_ERRATA_753970 is not set
# CONFIG_ARM_ERRATA_754322 is not set
# CONFIG_ARM_ERRATA_754327 is not set
CONFIG_SMP_ON_UP=y
CONFIG_LOCAL_TIMERS=y
# CONFIG_THUMB2_KERNEL is not set
CONFIG_HW_PERF_EVENTS=y
# CONFIG_NEON is not set
# CONFIG_RFKILL_GPIO is not set
CONFIG_KEYBOARD_TEGRA=y
# CONFIG_MPCORE_WATCHDOG is not set
CONFIG_USB_EHCI_TEGRA=y
CONFIG_RTC_DRV_TEGRA=m
CONFIG_MFD_NVEC=y
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_RCU_CPU_STALL_VERBOSE is not set
# CONFIG_PREEMPT_TRACER is not set
CONFIG_KEYBOARD_NVEC=y
CONFIG_SERIO_NVEC_PS2=y
CONFIG_NVEC_POWER=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_DEBUG=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_STAT_DETAILS=y

View File

@ -121,6 +121,10 @@ Summary: The Linux kernel
%define with_bootwrapper %{?_without_bootwrapper: 0} %{?!_without_bootwrapper: 1} %define with_bootwrapper %{?_without_bootwrapper: 0} %{?!_without_bootwrapper: 1}
# Want to build a the vsdo directories installed # Want to build a the vsdo directories installed
%define with_vdso_install %{?_without_vdso_install: 0} %{?!_without_vdso_install: 1} %define with_vdso_install %{?_without_vdso_install: 0} %{?!_without_vdso_install: 1}
# ARM OMAP (Beagle/Panda Board)
%define with_omap %{?_without_omap: 0} %{?!_without_omap: 1}
# kernel-tegra (only valid for arm)
%define with_tegra %{?_without_tegra: 0} %{?!_without_tegra: 1}
# Build the kernel-doc package, but don't fail the build if it botches. # Build the kernel-doc package, but don't fail the build if it botches.
# Here "true" means "continue" and "false" means "fail the build". # Here "true" means "continue" and "false" means "fail the build".
@ -229,6 +233,12 @@ Summary: The Linux kernel
%define with_pae 0 %define with_pae 0
%endif %endif
# kernel-tegra and omap is only built on arm
%ifnarch %{arm}
%define with_tegra 0
%define with_omap 0
%endif
# if requested, only build base kernel # if requested, only build base kernel
%if %{with_baseonly} %if %{with_baseonly}
%define with_smp 0 %define with_smp 0
@ -383,8 +393,10 @@ Summary: The Linux kernel
%define image_install_path boot %define image_install_path boot
%define asmarch arm %define asmarch arm
%define hdrarch arm %define hdrarch arm
%define make_target vmlinux %define make_target bzImage
%define kernel_image vmlinux %define kernel_image arch/arm/boot/zImage
%define with_up 0
%define with_perf 0
%endif %endif
%if %{nopatches} %if %{nopatches}
@ -407,7 +419,7 @@ Summary: The Linux kernel
# Which is a BadThing(tm). # Which is a BadThing(tm).
# We only build kernel-headers on the following... # We only build kernel-headers on the following...
%define nobuildarches i386 s390 sparc sparcv9 %{arm} %define nobuildarches i386 s390 sparc sparcv9
%ifarch %nobuildarches %ifarch %nobuildarches
%define with_up 0 %define with_up 0
@ -561,6 +573,7 @@ Source90: config-sparc64-generic
Source100: config-arm-generic Source100: config-arm-generic
Source110: config-arm-omap-generic Source110: config-arm-omap-generic
Source111: config-arm-tegra
# This file is intentionally left empty in the stock kernel. Its a nicety # This file is intentionally left empty in the stock kernel. Its a nicety
# added for those wanting to do custom rebuilds with altered config opts. # added for those wanting to do custom rebuilds with altered config opts.
@ -703,6 +716,9 @@ Patch13003: efi-dont-map-boot-services-on-32bit.patch
Patch20000: utrace.patch Patch20000: utrace.patch
# Flattened devicetree support
Patch21000: arm-omap-dt-compat.patch
Patch21001: arm-smsc-support-reading-mac-address-from-device-tree.patch
%endif %endif
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@ -895,6 +911,19 @@ It should only be installed when trying to gather additional information
on kernel bugs, as some of these options impact performance noticably. on kernel bugs, as some of these options impact performance noticably.
%define variant_summary The Linux kernel compiled for TI-OMAP boards
%kernel_variant_package omap
%description omap
This package includes a version of the Linux kernel with support for
TI-OMAP based systems, i.e., BeagleBoard-xM.
%define variant_summary The Linux kernel compiled for tegra boards
%kernel_variant_package tegra
%description tegra
This package includes a version of the Linux kernel with support for
nvidia tegra based systems, i.e., trimslice, ac-100.
%prep %prep
# do a few sanity-checks for --with *only builds # do a few sanity-checks for --with *only builds
%if %{with_baseonly} %if %{with_baseonly}
@ -1157,6 +1186,12 @@ ApplyOptionalPatch linux-2.6-upstream-reverts.patch -R
# #
ApplyPatch linux-2.6.29-sparc-IOC_TYPECHECK.patch ApplyPatch linux-2.6.29-sparc-IOC_TYPECHECK.patch
#
# ARM
#
ApplyPatch arm-omap-dt-compat.patch
ApplyPatch arm-smsc-support-reading-mac-address-from-device-tree.patch
# #
# Exec shield # Exec shield
# #
@ -1595,6 +1630,14 @@ BuildKernel %make_target %kernel_image PAEdebug
BuildKernel %make_target %kernel_image PAE BuildKernel %make_target %kernel_image PAE
%endif %endif
%if %{with_omap}
BuildKernel %make_target %kernel_image omap
%endif
%if %{with_tegra}
BuildKernel %make_target %kernel_image tegra
%endif
%if %{with_up} %if %{with_up}
BuildKernel %make_target %kernel_image BuildKernel %make_target %kernel_image
%endif %endif
@ -1787,6 +1830,12 @@ fi}\
%kernel_variant_post -v PAEdebug -r (kernel|kernel-smp) %kernel_variant_post -v PAEdebug -r (kernel|kernel-smp)
%kernel_variant_preun PAEdebug %kernel_variant_preun PAEdebug
%kernel_variant_preun omap
%kernel_variant_post -v omap
%kernel_variant_preun tegra
%kernel_variant_post -v tegra
if [ -x /sbin/ldconfig ] if [ -x /sbin/ldconfig ]
then then
/sbin/ldconfig -X || exit $? /sbin/ldconfig -X || exit $?
@ -1897,6 +1946,8 @@ fi
%kernel_variant_files %{with_debug} debug %kernel_variant_files %{with_debug} debug
%kernel_variant_files %{with_pae} PAE %kernel_variant_files %{with_pae} PAE
%kernel_variant_files %{with_pae_debug} PAEdebug %kernel_variant_files %{with_pae_debug} PAEdebug
%kernel_variant_files %{with_omap} omap
%kernel_variant_files %{with_tegra} tegra
# plz don't put in a version string unless you're going to tag # plz don't put in a version string unless you're going to tag
# and build. # and build.
@ -1911,6 +1962,12 @@ fi
# ||----w | # ||----w |
# || || # || ||
%changelog %changelog
* Tue Aug 16 2011 Dennis Gilmore <dennis@ausil.us>
+- add config for arm tegra devices
+- setup kernel to build omap image (patch from David Marlin)
+- setup kernel to build tegra image based on omap work
+- add arm device tree patches
* Tue Aug 16 2011 Josh Boyer <jwboyer@redhat.com> * Tue Aug 16 2011 Josh Boyer <jwboyer@redhat.com>
- Bring ARM config changes from David Marlin forward - Bring ARM config changes from David Marlin forward
- Sync a handful of patches from f16 - Sync a handful of patches from f16