adds target used by rapsberry pi
Add support for Raspberry Pi / brcm2708 / 2835 Signed-off-by: Ian Ridge <ianridge [at] gmail.com> SVN-Revision: 32825
This commit is contained in:
parent
25482a60b3
commit
0e9e7dcd10
46
package/brcm2708-gpu-fw/Makefile
Normal file
46
package/brcm2708-gpu-fw/Makefile
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2012 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
|
PKG_NAME:=brcm2708-gpu-fw
|
||||||
|
PKG_REV:=29ce6bcf278e7e79cd8a2b84c6aa9db9864ca91d
|
||||||
|
PKG_VERSION:=20120529
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||||
|
PKG_SOURCE_URL:=git://github.com/raspberrypi/firmware.git
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
PKG_SOURCE_VERSION:=$(PKG_REV)
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/brcm2708-gpu-fw
|
||||||
|
SECTION:=boot
|
||||||
|
CATEGORY:=Boot Loaders
|
||||||
|
DEPENDS:=@TARGET_brcm2708
|
||||||
|
TITLE:=brcm2708-gpu-fw
|
||||||
|
DEFAULT:=y if (TARGET_brcm2708)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/brcm2708-gpu-fw/description
|
||||||
|
GPU and kernel boot firmware for brcm2708.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(INSTALL_DIR) $(BUILD_DIR)/brcm2708-gpu-fw-boot
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/boot/* $(BUILD_DIR)/brcm2708-gpu-fw-boot
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,brcm2708-gpu-fw))
|
||||||
|
|
28
target/linux/brcm2708/Makefile
Normal file
28
target/linux/brcm2708/Makefile
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2012 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
include $(INCLUDE_DIR)/host.mk
|
||||||
|
|
||||||
|
ARCH:=arm
|
||||||
|
BOARD:=brcm2708
|
||||||
|
BOARDNAME:=Broadcom BCM2708/BCM2835
|
||||||
|
FEATURES:=ext4 audio usb usbgadget display gpio
|
||||||
|
MAINTAINER:=Ian Ridge <ianridge[at]gmail.com>
|
||||||
|
|
||||||
|
LINUX_VERSION:=3.3.8
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/target.mk
|
||||||
|
DEFAULT_PACKAGES += brcm2708-gpu-fw kmod-usb-hid kmod-sound-core kmod-sound-arm-bcm2835
|
||||||
|
|
||||||
|
define Target/Description
|
||||||
|
Build firmware image for Broadcom BCM2708/BCM2835 SoC devices.
|
||||||
|
Currently produces SD Card image for Raspberry Pi.
|
||||||
|
endef
|
||||||
|
|
||||||
|
CFLAGS:=-pipe -march=armv6 -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=softfp -marm
|
||||||
|
|
||||||
|
$(eval $(call BuildTarget))
|
13
target/linux/brcm2708/base-files/etc/config/network
Normal file
13
target/linux/brcm2708/base-files/etc/config/network
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Copyright (C) 2006 OpenWrt.org
|
||||||
|
|
||||||
|
config interface loopback
|
||||||
|
option ifname lo
|
||||||
|
option proto static
|
||||||
|
option ipaddr 127.0.0.1
|
||||||
|
option netmask 255.0.0.0
|
||||||
|
|
||||||
|
config interface lan
|
||||||
|
option ifname eth0
|
||||||
|
option proto static
|
||||||
|
option ipaddr 192.168.1.1
|
||||||
|
option netmask 255.255.255.0
|
5
target/linux/brcm2708/base-files/etc/inittab
Normal file
5
target/linux/brcm2708/base-files/etc/inittab
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
::sysinit:/etc/init.d/rcS S boot
|
||||||
|
::shutdown:/etc/init.d/rcS K shutdown
|
||||||
|
tts/0::askfirst:/bin/ash --login
|
||||||
|
ttyAMA0::askfirst:/bin/ash --login
|
||||||
|
tty1::askfirst:/bin/ash --login
|
308
target/linux/brcm2708/config-3.3
Normal file
308
target/linux/brcm2708/config-3.3
Normal file
@ -0,0 +1,308 @@
|
|||||||
|
# CONFIG_AIO is not set
|
||||||
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
# CONFIG_APM_EMULATION is not set
|
||||||
|
CONFIG_ARCH_BCM2708=y
|
||||||
|
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
|
||||||
|
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
|
||||||
|
CONFIG_ARCH_NR_GPIO=0
|
||||||
|
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||||
|
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
|
||||||
|
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
|
||||||
|
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||||
|
# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
|
||||||
|
CONFIG_ARM=y
|
||||||
|
CONFIG_ARM_AMBA=y
|
||||||
|
CONFIG_ARM_CPU_SUSPEND=y
|
||||||
|
# CONFIG_ARM_ERRATA_326103 is not set
|
||||||
|
# CONFIG_ARM_ERRATA_364296 is not set
|
||||||
|
CONFIG_ARM_ERRATA_411920=y
|
||||||
|
CONFIG_ARM_L1_CACHE_SHIFT=5
|
||||||
|
CONFIG_ARM_NR_BANKS=8
|
||||||
|
# CONFIG_ARM_SP805_WATCHDOG is not set
|
||||||
|
CONFIG_ARM_THUMB=y
|
||||||
|
CONFIG_ARM_UNWIND=y
|
||||||
|
CONFIG_AVERAGE=y
|
||||||
|
CONFIG_BACKLIGHT_CLASS_DEVICE=m
|
||||||
|
CONFIG_BACKLIGHT_GENERIC=m
|
||||||
|
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||||
|
CONFIG_BCM2708_GPIO=y
|
||||||
|
# CONFIG_BCM2708_NOL2CACHE is not set
|
||||||
|
CONFIG_BCM2708_VCHIQ=y
|
||||||
|
CONFIG_BCM2708_VCMEM=y
|
||||||
|
CONFIG_BCM2708_WDT=y
|
||||||
|
CONFIG_BCMA_POSSIBLE=y
|
||||||
|
CONFIG_BINFMT_MISC=m
|
||||||
|
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||||
|
# CONFIG_BLK_DEV_INITRD is not set
|
||||||
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
|
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||||
|
CONFIG_BLK_DEV_SD=y
|
||||||
|
# CONFIG_CACHE_L2X0 is not set
|
||||||
|
CONFIG_CDROM_PKTCDVD=m
|
||||||
|
CONFIG_CDROM_PKTCDVD_BUFFERS=8
|
||||||
|
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
|
||||||
|
CONFIG_CLKDEV_LOOKUP=y
|
||||||
|
CONFIG_CMDLINE="dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext3 rootwait"
|
||||||
|
CONFIG_CMDLINE_FROM_BOOTLOADER=y
|
||||||
|
CONFIG_CONFIGFS_FS=y
|
||||||
|
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||||
|
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||||
|
CONFIG_CPU_32v6=y
|
||||||
|
CONFIG_CPU_ABRT_EV6=y
|
||||||
|
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||||
|
CONFIG_CPU_CACHE_V6=y
|
||||||
|
CONFIG_CPU_CACHE_VIPT=y
|
||||||
|
CONFIG_CPU_COPY_V6=y
|
||||||
|
CONFIG_CPU_CP15=y
|
||||||
|
CONFIG_CPU_CP15_MMU=y
|
||||||
|
CONFIG_CPU_HAS_ASID=y
|
||||||
|
CONFIG_CPU_HAS_PMU=y
|
||||||
|
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||||
|
CONFIG_CPU_IDLE=y
|
||||||
|
CONFIG_CPU_IDLE_GOV_LADDER=y
|
||||||
|
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||||
|
CONFIG_CPU_PABRT_V6=y
|
||||||
|
CONFIG_CPU_PM=y
|
||||||
|
CONFIG_CPU_TLB_V6=y
|
||||||
|
CONFIG_CPU_USE_DOMAINS=y
|
||||||
|
CONFIG_CPU_V6=y
|
||||||
|
CONFIG_CRC16=y
|
||||||
|
CONFIG_CRYPTO_AEAD2=m
|
||||||
|
CONFIG_CRYPTO_ALGAPI=m
|
||||||
|
CONFIG_CRYPTO_ALGAPI2=m
|
||||||
|
CONFIG_CRYPTO_BLKCIPHER=m
|
||||||
|
CONFIG_CRYPTO_BLKCIPHER2=m
|
||||||
|
CONFIG_CRYPTO_CBC=m
|
||||||
|
CONFIG_CRYPTO_HASH2=m
|
||||||
|
CONFIG_CRYPTO_MANAGER=m
|
||||||
|
CONFIG_CRYPTO_MANAGER2=m
|
||||||
|
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
||||||
|
CONFIG_CRYPTO_PCOMP2=m
|
||||||
|
CONFIG_CRYPTO_RNG2=m
|
||||||
|
CONFIG_CRYPTO_WORKQUEUE=m
|
||||||
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
|
CONFIG_DEBUG_INFO=y
|
||||||
|
# CONFIG_DEBUG_USER is not set
|
||||||
|
CONFIG_DEFAULT_CFQ=y
|
||||||
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
|
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
|
CONFIG_DNOTIFY=y
|
||||||
|
CONFIG_DUMMY_CONSOLE=y
|
||||||
|
CONFIG_EEPROM_93CX6=m
|
||||||
|
CONFIG_ELF_CORE=y
|
||||||
|
CONFIG_ENABLE_MUST_CHECK=y
|
||||||
|
CONFIG_EXT4_FS=y
|
||||||
|
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||||
|
CONFIG_EXT4_FS_SECURITY=y
|
||||||
|
CONFIG_FB=y
|
||||||
|
# CONFIG_FB_ARMCLCD is not set
|
||||||
|
CONFIG_FB_BCM2708=y
|
||||||
|
CONFIG_FB_CFB_COPYAREA=y
|
||||||
|
CONFIG_FB_CFB_FILLRECT=y
|
||||||
|
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||||
|
# CONFIG_FB_WMT_GE_ROPS is not set
|
||||||
|
# CONFIG_FIRMWARE_EDID is not set
|
||||||
|
CONFIG_FIRMWARE_IN_KERNEL=y
|
||||||
|
# CONFIG_FONTS is not set
|
||||||
|
CONFIG_FONT_8x16=y
|
||||||
|
CONFIG_FONT_8x8=y
|
||||||
|
# CONFIG_FPE_FASTFPE is not set
|
||||||
|
# CONFIG_FPE_NWFPE is not set
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
|
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
|
||||||
|
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||||
|
CONFIG_FREEZER=y
|
||||||
|
CONFIG_FS_MBCACHE=y
|
||||||
|
CONFIG_FS_POSIX_ACL=y
|
||||||
|
CONFIG_GAMEPORT=m
|
||||||
|
CONFIG_GAMEPORT_L4=m
|
||||||
|
CONFIG_GAMEPORT_NS558=m
|
||||||
|
CONFIG_GENERIC_ACL=y
|
||||||
|
CONFIG_GENERIC_ATOMIC64=y
|
||||||
|
CONFIG_GENERIC_BUG=y
|
||||||
|
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||||
|
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
||||||
|
CONFIG_GENERIC_GPIO=y
|
||||||
|
CONFIG_GENERIC_IRQ_SHOW=y
|
||||||
|
CONFIG_GENERIC_PCI_IOMAP=y
|
||||||
|
CONFIG_GPIOLIB=y
|
||||||
|
# CONFIG_GPIO_PL061 is not set
|
||||||
|
CONFIG_GPIO_SYSFS=y
|
||||||
|
# CONFIG_HAMRADIO is not set
|
||||||
|
CONFIG_HARDIRQS_SW_RESEND=y
|
||||||
|
CONFIG_HAS_DMA=y
|
||||||
|
CONFIG_HAS_IOMEM=y
|
||||||
|
CONFIG_HAS_IOPORT=y
|
||||||
|
CONFIG_HAVE_AOUT=y
|
||||||
|
CONFIG_HAVE_ARCH_KGDB=y
|
||||||
|
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||||
|
CONFIG_HAVE_CLK=y
|
||||||
|
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||||
|
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||||
|
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||||
|
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||||
|
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
||||||
|
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||||
|
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||||
|
CONFIG_HAVE_GENERIC_HARDIRQS=y
|
||||||
|
CONFIG_HAVE_IRQ_WORK=y
|
||||||
|
CONFIG_HAVE_KERNEL_GZIP=y
|
||||||
|
CONFIG_HAVE_KERNEL_LZMA=y
|
||||||
|
CONFIG_HAVE_KERNEL_LZO=y
|
||||||
|
CONFIG_HAVE_KERNEL_XZ=y
|
||||||
|
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
|
||||||
|
CONFIG_HAVE_MEMBLOCK=y
|
||||||
|
CONFIG_HAVE_OPROFILE=y
|
||||||
|
CONFIG_HAVE_PERF_EVENTS=y
|
||||||
|
CONFIG_HAVE_PROC_CPU=y
|
||||||
|
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||||
|
CONFIG_HAVE_SPARSE_IRQ=y
|
||||||
|
CONFIG_HW_CONSOLE=y
|
||||||
|
CONFIG_IKCONFIG=y
|
||||||
|
CONFIG_IKCONFIG_PROC=y
|
||||||
|
CONFIG_INPUT=y
|
||||||
|
CONFIG_INPUT_AD714X=m
|
||||||
|
CONFIG_INPUT_ADXL34X=m
|
||||||
|
CONFIG_INPUT_ATI_REMOTE2=m
|
||||||
|
CONFIG_INPUT_CMA3000=m
|
||||||
|
CONFIG_INPUT_FF_MEMLESS=m
|
||||||
|
CONFIG_INPUT_KEYSPAN_REMOTE=m
|
||||||
|
CONFIG_INPUT_MOUSEDEV=y
|
||||||
|
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||||
|
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||||
|
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||||
|
CONFIG_INPUT_POWERMATE=m
|
||||||
|
CONFIG_INPUT_UINPUT=m
|
||||||
|
CONFIG_IOSCHED_CFQ=y
|
||||||
|
CONFIG_IWMC3200TOP=m
|
||||||
|
# CONFIG_IWMC3200TOP_DEBUG is not set
|
||||||
|
# CONFIG_IWMC3200TOP_DEBUGFS is not set
|
||||||
|
CONFIG_JBD2=y
|
||||||
|
CONFIG_KERNEL_GZIP=y
|
||||||
|
# CONFIG_KERNEL_XZ is not set
|
||||||
|
CONFIG_KTIME_SCALAR=y
|
||||||
|
CONFIG_LCD_CLASS_DEVICE=m
|
||||||
|
# CONFIG_LCD_PLATFORM is not set
|
||||||
|
CONFIG_LEDS_GPIO=y
|
||||||
|
# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
|
||||||
|
# CONFIG_LEDS_TRIGGER_TIMER is not set
|
||||||
|
CONFIG_LOGO=y
|
||||||
|
CONFIG_LOGO_LINUX_CLUT224=y
|
||||||
|
# CONFIG_LOGO_LINUX_MONO is not set
|
||||||
|
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||||
|
CONFIG_LOG_BUF_SHIFT=17
|
||||||
|
CONFIG_MACH_BCM2708=y
|
||||||
|
CONFIG_MAC_PARTITION=y
|
||||||
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_MAX_RAW_DEVS=256
|
||||||
|
# CONFIG_MFD_T7L66XB is not set
|
||||||
|
CONFIG_MMC=y
|
||||||
|
# CONFIG_MMC_BCM2708 is not set
|
||||||
|
CONFIG_MMC_BLOCK=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_BCM2708=y
|
||||||
|
CONFIG_MMC_SDHCI_BCM2708_DMA=y
|
||||||
|
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
|
||||||
|
CONFIG_MMC_SDHCI_PLTFM=y
|
||||||
|
# CONFIG_MTD is not set
|
||||||
|
CONFIG_NEED_DMA_MAP_STATE=y
|
||||||
|
CONFIG_NEED_MACH_MEMORY_H=y
|
||||||
|
CONFIG_NEED_PER_CPU_KM=y
|
||||||
|
CONFIG_NLS=y
|
||||||
|
CONFIG_NLS_ASCII=y
|
||||||
|
CONFIG_NLS_DEFAULT="utf8"
|
||||||
|
CONFIG_NO_HZ=y
|
||||||
|
CONFIG_OABI_COMPAT=y
|
||||||
|
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||||
|
CONFIG_PAGE_OFFSET=0xC0000000
|
||||||
|
# CONFIG_PCI_SYSCALL is not set
|
||||||
|
# CONFIG_PDA_POWER is not set
|
||||||
|
CONFIG_PERF_USE_VMALLOC=y
|
||||||
|
CONFIG_PM=y
|
||||||
|
CONFIG_PM_CLK=y
|
||||||
|
# CONFIG_PM_DEBUG is not set
|
||||||
|
CONFIG_PM_SLEEP=y
|
||||||
|
CONFIG_POWER_SUPPLY=y
|
||||||
|
# CONFIG_PREEMPT_RCU is not set
|
||||||
|
CONFIG_PRINTK_TIME=y
|
||||||
|
CONFIG_PROC_PAGE_MONITOR=y
|
||||||
|
CONFIG_RAW_DRIVER=y
|
||||||
|
CONFIG_SCSI=y
|
||||||
|
# CONFIG_SCSI_LOWLEVEL is not set
|
||||||
|
# CONFIG_SCSI_PROC_FS is not set
|
||||||
|
# CONFIG_SERIAL_8250 is not set
|
||||||
|
# CONFIG_SERIAL_AMBA_PL010 is not set
|
||||||
|
CONFIG_SERIAL_AMBA_PL011=y
|
||||||
|
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||||
|
CONFIG_SERIO=m
|
||||||
|
CONFIG_SERIO_RAW=m
|
||||||
|
CONFIG_SERIO_SERPORT=m
|
||||||
|
# CONFIG_SQUASHFS is not set
|
||||||
|
CONFIG_SSB=m
|
||||||
|
CONFIG_SSB_BLOCKIO=y
|
||||||
|
CONFIG_SSB_SDIOHOST_POSSIBLE=y
|
||||||
|
# CONFIG_STAGING is not set
|
||||||
|
# CONFIG_STRIP_ASM_SYMS is not set
|
||||||
|
CONFIG_SUSPEND=y
|
||||||
|
CONFIG_SUSPEND_FREEZER=y
|
||||||
|
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||||
|
# CONFIG_TEXTSEARCH is not set
|
||||||
|
CONFIG_TMPFS_POSIX_ACL=y
|
||||||
|
CONFIG_UEVENT_HELPER_PATH=""
|
||||||
|
# CONFIG_UID16 is not set
|
||||||
|
CONFIG_UIO=m
|
||||||
|
CONFIG_UIO_PDRV=m
|
||||||
|
CONFIG_UIO_PDRV_GENIRQ=m
|
||||||
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_ACM=m
|
||||||
|
CONFIG_USB_ADUTUX=m
|
||||||
|
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
||||||
|
CONFIG_USB_APPLEDISPLAY=m
|
||||||
|
# CONFIG_USB_ARCH_HAS_EHCI is not set
|
||||||
|
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||||
|
# CONFIG_USB_ARCH_HAS_XHCI is not set
|
||||||
|
CONFIG_USB_COMMON=y
|
||||||
|
CONFIG_USB_CYPRESS_CY7C63=m
|
||||||
|
CONFIG_USB_CYTHERM=m
|
||||||
|
# CONFIG_USB_DEVICEFS is not set
|
||||||
|
CONFIG_USB_DEVICE_CLASS=y
|
||||||
|
CONFIG_USB_DWCOTG=y
|
||||||
|
CONFIG_USB_EMI26=m
|
||||||
|
CONFIG_USB_EMI62=m
|
||||||
|
CONFIG_USB_FTDI_ELAN=m
|
||||||
|
CONFIG_USB_IDMOUSE=m
|
||||||
|
CONFIG_USB_IOWARRIOR=m
|
||||||
|
CONFIG_USB_ISIGHTFW=m
|
||||||
|
CONFIG_USB_LCD=m
|
||||||
|
CONFIG_USB_LD=m
|
||||||
|
CONFIG_USB_LED=m
|
||||||
|
CONFIG_USB_LEGOTOWER=m
|
||||||
|
CONFIG_USB_LIBUSUAL=y
|
||||||
|
CONFIG_USB_MDC800=m
|
||||||
|
CONFIG_USB_MICROTEK=m
|
||||||
|
CONFIG_USB_MON=m
|
||||||
|
CONFIG_USB_NET_SMSC95XX=y
|
||||||
|
CONFIG_USB_RIO500=m
|
||||||
|
CONFIG_USB_SEVSEG=m
|
||||||
|
CONFIG_USB_STORAGE=y
|
||||||
|
CONFIG_USB_STORAGE_ENE_UB6250=m
|
||||||
|
CONFIG_USB_STORAGE_ONETOUCH=m
|
||||||
|
CONFIG_USB_STORAGE_REALTEK=m
|
||||||
|
CONFIG_USB_SUPPORT=y
|
||||||
|
CONFIG_USB_TRANCEVIBRATOR=m
|
||||||
|
# CONFIG_USB_U132_HCD is not set
|
||||||
|
CONFIG_USB_UAS=y
|
||||||
|
CONFIG_USB_USBNET=y
|
||||||
|
CONFIG_USB_YUREX=m
|
||||||
|
CONFIG_VECTORS_BASE=0xffff0000
|
||||||
|
CONFIG_VFP=y
|
||||||
|
CONFIG_VT=y
|
||||||
|
CONFIG_VT_CONSOLE=y
|
||||||
|
CONFIG_VT_CONSOLE_SLEEP=y
|
||||||
|
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||||
|
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||||
|
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||||
|
CONFIG_ZONE_DMA_FLAG=0
|
5
target/linux/brcm2708/image/Config.in
Normal file
5
target/linux/brcm2708/image/Config.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
config BRCM2708_SD_BOOT_PARTSIZE
|
||||||
|
int "Boot (SD Card) filesystem partition size (in MB)"
|
||||||
|
depends TARGET_brcm2708
|
||||||
|
default 20
|
||||||
|
|
46
target/linux/brcm2708/image/Makefile
Normal file
46
target/linux/brcm2708/image/Makefile
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2012 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
include $(INCLUDE_DIR)/image.mk
|
||||||
|
include $(INCLUDE_DIR)/host.mk
|
||||||
|
|
||||||
|
define Image/Prepare
|
||||||
|
cp $(LINUX_DIR)/arch/arm/boot/Image $(KDIR)/Image
|
||||||
|
endef
|
||||||
|
|
||||||
|
FAT32_BLOCK_SIZE=1024
|
||||||
|
FAT32_BLOCKS=$(shell echo $$(($(CONFIG_BRCM2708_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE))))
|
||||||
|
|
||||||
|
define Image/Build/RaspberryPi
|
||||||
|
rm -f $(KDIR)/boot.img
|
||||||
|
|
||||||
|
mkdosfs $(KDIR)/boot.img -C $(FAT32_BLOCKS)
|
||||||
|
# Raspberry Pi has no bootloader, instead the GPU loads and starts the kernel
|
||||||
|
mcopy -i $(KDIR)/boot.img $(BUILD_DIR)/brcm2708-gpu-fw-boot/arm128_start.elf ::
|
||||||
|
mcopy -i $(KDIR)/boot.img $(BUILD_DIR)/brcm2708-gpu-fw-boot/arm192_start.elf ::
|
||||||
|
mcopy -i $(KDIR)/boot.img $(BUILD_DIR)/brcm2708-gpu-fw-boot/arm224_start.elf ::
|
||||||
|
mcopy -i $(KDIR)/boot.img $(BUILD_DIR)/brcm2708-gpu-fw-boot/bootcode.bin ::
|
||||||
|
mcopy -i $(KDIR)/boot.img $(BUILD_DIR)/brcm2708-gpu-fw-boot/COPYING.linux ::
|
||||||
|
mcopy -i $(KDIR)/boot.img $(BUILD_DIR)/brcm2708-gpu-fw-boot/LICENCE.broadcom ::
|
||||||
|
mcopy -i $(KDIR)/boot.img $(BUILD_DIR)/brcm2708-gpu-fw-boot/loader.bin ::
|
||||||
|
mcopy -i $(KDIR)/boot.img $(BUILD_DIR)/brcm2708-gpu-fw-boot/arm$(2)_start.elf ::start.elf #Copy file for memory/gpu division
|
||||||
|
mcopy -i $(KDIR)/boot.img cmdline.txt ::
|
||||||
|
mcopy -i $(KDIR)/boot.img $(KDIR)/Image ::kernel.img # Copy OpenWrt built kernel
|
||||||
|
./gen_rpi_sdcard_img.sh $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1)_$(2).img $(KDIR)/boot.img $(KDIR)/root.$(1) \
|
||||||
|
$(CONFIG_BRCM2708_SD_BOOT_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Image/Build
|
||||||
|
$(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).img
|
||||||
|
$(CP) $(KDIR)/Image $(BIN_DIR)/$(IMG_PREFIX)-Image
|
||||||
|
|
||||||
|
$(call Image/Build/RaspberryPi,$(1),128)
|
||||||
|
$(call Image/Build/RaspberryPi,$(1),192)
|
||||||
|
$(call Image/Build/RaspberryPi,$(1),224)
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildImage))
|
1
target/linux/brcm2708/image/cmdline.txt
Normal file
1
target/linux/brcm2708/image/cmdline.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
dwc_otg.lpm_enable=0 rpitestmode=1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
|
29
target/linux/brcm2708/image/gen_rpi_sdcard_img.sh
Executable file
29
target/linux/brcm2708/image/gen_rpi_sdcard_img.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -x
|
||||||
|
[ $# == 5 ] || {
|
||||||
|
echo "SYNTAX: $0 <file> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
OUTPUT="$1"
|
||||||
|
BOOTFS="$2"
|
||||||
|
ROOTFS="$3"
|
||||||
|
BOOTFSSIZE="$4"
|
||||||
|
ROOTFSSIZE="$5"
|
||||||
|
|
||||||
|
head=4
|
||||||
|
sect=63
|
||||||
|
|
||||||
|
set `ptgen -o $OUTPUT -h $head -s $sect -t c -p ${BOOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M`
|
||||||
|
|
||||||
|
BOOTOFFSET="$(($1 / 512))"
|
||||||
|
BOOTSIZE="$(($2 / 512))"
|
||||||
|
ROOTFSOFFSET="$(($3 / 512))"
|
||||||
|
ROOTFSSIZE="$(($4 / 512))"
|
||||||
|
|
||||||
|
dd bs=512 if="$BOOTFS" of="$OUTPUT" seek="$BOOTOFFSET" conv=notrunc
|
||||||
|
dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc
|
||||||
|
|
||||||
|
|
||||||
|
|
26
target/linux/brcm2708/modules.mk
Normal file
26
target/linux/brcm2708/modules.mk
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2012 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
define KernelPackage/sound-arm-bcm2835
|
||||||
|
TITLE:=Broadcom 2708,2835 SoC sound support
|
||||||
|
KCONFIG:= \
|
||||||
|
CONFIG_SND_ARM=y \
|
||||||
|
CONFIG_SND_BCM2835 \
|
||||||
|
CONFIG_SND_ARMAACI=n
|
||||||
|
FILES:= \
|
||||||
|
$(LINUX_DIR)/sound/arm/snd-bcm2835.ko
|
||||||
|
AUTOLOAD:=$(call AutoLoad,68,snd-bcm2835)
|
||||||
|
DEPENDS:=@TARGET_brcm2708
|
||||||
|
$(call AddDepends/sound)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define KernelPackage/sound-arm-bcm2835/description
|
||||||
|
This package contains the Broadcom 2708/2835 sound driver
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call KernelPackage,sound-arm-bcm2835))
|
||||||
|
|
43253
target/linux/brcm2708/patches-3.3/0001-Add-dwc_otg-driver.patch
Normal file
43253
target/linux/brcm2708/patches-3.3/0001-Add-dwc_otg-driver.patch
Normal file
File diff suppressed because it is too large
Load Diff
11023
target/linux/brcm2708/patches-3.3/0002-Main-bcm2708-linux-port.patch
Normal file
11023
target/linux/brcm2708/patches-3.3/0002-Main-bcm2708-linux-port.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,436 @@
|
|||||||
|
From ed8c2d720954efc5a440912292ed11da2f50aaea Mon Sep 17 00:00:00 2001
|
||||||
|
From: popcornmix <popcornmix@gmail.com>
|
||||||
|
Date: Tue, 17 Jan 2012 19:20:57 +0000
|
||||||
|
Subject: [PATCH 3/7] bcm2708 watchdog driver
|
||||||
|
|
||||||
|
Signed-off-by: popcornmix <popcornmix@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/watchdog/Kconfig | 6 +
|
||||||
|
drivers/watchdog/Makefile | 1 +
|
||||||
|
drivers/watchdog/bcm2708_wdog.c | 385 +++++++++++++++++++++++++++++++++++++++
|
||||||
|
3 files changed, 392 insertions(+), 0 deletions(-)
|
||||||
|
create mode 100644 drivers/watchdog/bcm2708_wdog.c
|
||||||
|
|
||||||
|
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
|
||||||
|
index 86b0735..7675ebc 100644
|
||||||
|
--- a/drivers/watchdog/Kconfig
|
||||||
|
+++ b/drivers/watchdog/Kconfig
|
||||||
|
@@ -348,6 +348,12 @@ config IMX2_WDT
|
||||||
|
To compile this driver as a module, choose M here: the
|
||||||
|
module will be called imx2_wdt.
|
||||||
|
|
||||||
|
+config BCM2708_WDT
|
||||||
|
+ tristate "BCM2708 Watchdog"
|
||||||
|
+ depends on ARCH_BCM2708
|
||||||
|
+ help
|
||||||
|
+ Enables BCM2708 watchdog support.
|
||||||
|
+
|
||||||
|
# AVR32 Architecture
|
||||||
|
|
||||||
|
config AT32AP700X_WDT
|
||||||
|
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
|
||||||
|
index 55bd574..803f0bc 100644
|
||||||
|
--- a/drivers/watchdog/Makefile
|
||||||
|
+++ b/drivers/watchdog/Makefile
|
||||||
|
@@ -54,6 +54,7 @@ obj-$(CONFIG_NUC900_WATCHDOG) += nuc900_wdt.o
|
||||||
|
obj-$(CONFIG_ADX_WATCHDOG) += adx_wdt.o
|
||||||
|
obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o
|
||||||
|
obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o
|
||||||
|
+obj-$(CONFIG_BCM2708_WDT) += bcm2708_wdog.o
|
||||||
|
|
||||||
|
# AVR32 Architecture
|
||||||
|
obj-$(CONFIG_AT32AP700X_WDT) += at32ap700x_wdt.o
|
||||||
|
diff --git a/drivers/watchdog/bcm2708_wdog.c b/drivers/watchdog/bcm2708_wdog.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..dd33c35
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/drivers/watchdog/bcm2708_wdog.c
|
||||||
|
@@ -0,0 +1,385 @@
|
||||||
|
+/*
|
||||||
|
+ * Broadcom BCM2708 watchdog driver.
|
||||||
|
+ *
|
||||||
|
+ * (c) Copyright 2010 Broadcom Europe Ltd
|
||||||
|
+ *
|
||||||
|
+ * This program is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU General Public License
|
||||||
|
+ * as published by the Free Software Foundation; either version
|
||||||
|
+ * 2 of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * BCM2708 watchdog driver. Loosely based on wdt driver.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <linux/interrupt.h>
|
||||||
|
+#include <linux/module.h>
|
||||||
|
+#include <linux/moduleparam.h>
|
||||||
|
+#include <linux/types.h>
|
||||||
|
+#include <linux/miscdevice.h>
|
||||||
|
+#include <linux/watchdog.h>
|
||||||
|
+#include <linux/fs.h>
|
||||||
|
+#include <linux/ioport.h>
|
||||||
|
+#include <linux/notifier.h>
|
||||||
|
+#include <linux/reboot.h>
|
||||||
|
+#include <linux/init.h>
|
||||||
|
+#include <linux/io.h>
|
||||||
|
+#include <linux/uaccess.h>
|
||||||
|
+#include <mach/platform.h>
|
||||||
|
+
|
||||||
|
+#include <asm/system.h>
|
||||||
|
+
|
||||||
|
+#define SECS_TO_WDOG_TICKS(x) ((x) << 16)
|
||||||
|
+#define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
|
||||||
|
+
|
||||||
|
+static unsigned long wdog_is_open;
|
||||||
|
+static uint32_t wdog_ticks; /* Ticks to load into wdog timer */
|
||||||
|
+static char expect_close;
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Module parameters
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#define WD_TIMO 10 /* Default heartbeat = 60 seconds */
|
||||||
|
+static int heartbeat = WD_TIMO; /* Heartbeat in seconds */
|
||||||
|
+
|
||||||
|
+module_param(heartbeat, int, 0);
|
||||||
|
+MODULE_PARM_DESC(heartbeat,
|
||||||
|
+ "Watchdog heartbeat in seconds. (0 < heartbeat < 65536, default="
|
||||||
|
+ __MODULE_STRING(WD_TIMO) ")");
|
||||||
|
+
|
||||||
|
+static int nowayout = WATCHDOG_NOWAYOUT;
|
||||||
|
+module_param(nowayout, int, 0);
|
||||||
|
+MODULE_PARM_DESC(nowayout,
|
||||||
|
+ "Watchdog cannot be stopped once started (default="
|
||||||
|
+ __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
|
||||||
|
+
|
||||||
|
+static DEFINE_SPINLOCK(wdog_lock);
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * Start the watchdog driver.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static int wdog_start(unsigned long timeout)
|
||||||
|
+{
|
||||||
|
+ uint32_t cur;
|
||||||
|
+ unsigned long flags;
|
||||||
|
+ spin_lock_irqsave(&wdog_lock, flags);
|
||||||
|
+
|
||||||
|
+ /* enable the watchdog */
|
||||||
|
+ iowrite32(PM_PASSWORD | (timeout & PM_WDOG_TIME_SET),
|
||||||
|
+ __io_address(PM_WDOG));
|
||||||
|
+ cur = ioread32(__io_address(PM_RSTC));
|
||||||
|
+ iowrite32(PM_PASSWORD | (cur & PM_RSTC_WRCFG_CLR) |
|
||||||
|
+ PM_RSTC_WRCFG_FULL_RESET, __io_address(PM_RSTC));
|
||||||
|
+
|
||||||
|
+ spin_unlock_irqrestore(&wdog_lock, flags);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * Stop the watchdog driver.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static int wdog_stop(void)
|
||||||
|
+{
|
||||||
|
+ iowrite32(PM_PASSWORD | PM_RSTC_RESET, __io_address(PM_RSTC));
|
||||||
|
+ printk(KERN_INFO "watchdog stopped\n");
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * Reload counter one with the watchdog heartbeat. We don't bother
|
||||||
|
+ * reloading the cascade counter.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static void wdog_ping(void)
|
||||||
|
+{
|
||||||
|
+ wdog_start(wdog_ticks);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * @t: the new heartbeat value that needs to be set.
|
||||||
|
+ *
|
||||||
|
+ * Set a new heartbeat value for the watchdog device. If the heartbeat
|
||||||
|
+ * value is incorrect we keep the old value and return -EINVAL. If
|
||||||
|
+ * successful we return 0.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static int wdog_set_heartbeat(int t)
|
||||||
|
+{
|
||||||
|
+ if (t < 1 || t > WDOG_TICKS_TO_SECS(PM_WDOG_TIME_SET))
|
||||||
|
+ return -EINVAL;
|
||||||
|
+
|
||||||
|
+ heartbeat = t;
|
||||||
|
+ wdog_ticks = SECS_TO_WDOG_TICKS(t);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * @file: file handle to the watchdog
|
||||||
|
+ * @buf: buffer to write (unused as data does not matter here
|
||||||
|
+ * @count: count of bytes
|
||||||
|
+ * @ppos: pointer to the position to write. No seeks allowed
|
||||||
|
+ *
|
||||||
|
+ * A write to a watchdog device is defined as a keepalive signal.
|
||||||
|
+ *
|
||||||
|
+ * if 'nowayout' is set then normally a close() is ignored. But
|
||||||
|
+ * if you write 'V' first then the close() will stop the timer.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static ssize_t wdog_write(struct file *file, const char __user *buf,
|
||||||
|
+ size_t count, loff_t *ppos)
|
||||||
|
+{
|
||||||
|
+ if (count) {
|
||||||
|
+ if (!nowayout) {
|
||||||
|
+ size_t i;
|
||||||
|
+
|
||||||
|
+ /* In case it was set long ago */
|
||||||
|
+ expect_close = 0;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i != count; i++) {
|
||||||
|
+ char c;
|
||||||
|
+ if (get_user(c, buf + i))
|
||||||
|
+ return -EFAULT;
|
||||||
|
+ if (c == 'V')
|
||||||
|
+ expect_close = 42;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ wdog_ping();
|
||||||
|
+ }
|
||||||
|
+ return count;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int wdog_get_status(void)
|
||||||
|
+{
|
||||||
|
+ unsigned long flags;
|
||||||
|
+ int status = 0;
|
||||||
|
+ spin_lock_irqsave(&wdog_lock, flags);
|
||||||
|
+ /* FIXME: readback reset reason */
|
||||||
|
+ spin_unlock_irqrestore(&wdog_lock, flags);
|
||||||
|
+ return status;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static uint32_t wdog_get_remaining(void)
|
||||||
|
+{
|
||||||
|
+ uint32_t ret = ioread32(__io_address(PM_WDOG));
|
||||||
|
+ return ret & PM_WDOG_TIME_SET;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * @file: file handle to the device
|
||||||
|
+ * @cmd: watchdog command
|
||||||
|
+ * @arg: argument pointer
|
||||||
|
+ *
|
||||||
|
+ * The watchdog API defines a common set of functions for all watchdogs
|
||||||
|
+ * according to their available features. We only actually usefully support
|
||||||
|
+ * querying capabilities and current status.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static long wdog_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||||
|
+{
|
||||||
|
+ void __user *argp = (void __user *)arg;
|
||||||
|
+ int __user *p = argp;
|
||||||
|
+ int new_heartbeat;
|
||||||
|
+ int status;
|
||||||
|
+ int options;
|
||||||
|
+ uint32_t remaining;
|
||||||
|
+
|
||||||
|
+ struct watchdog_info ident = {
|
||||||
|
+ .options = WDIOF_SETTIMEOUT|
|
||||||
|
+ WDIOF_MAGICCLOSE|
|
||||||
|
+ WDIOF_KEEPALIVEPING,
|
||||||
|
+ .firmware_version = 1,
|
||||||
|
+ .identity = "BCM2708",
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ switch (cmd) {
|
||||||
|
+ case WDIOC_GETSUPPORT:
|
||||||
|
+ return copy_to_user(argp, &ident, sizeof(ident)) ? -EFAULT : 0;
|
||||||
|
+ case WDIOC_GETSTATUS:
|
||||||
|
+ status = wdog_get_status();
|
||||||
|
+ return put_user(status, p);
|
||||||
|
+ case WDIOC_GETBOOTSTATUS:
|
||||||
|
+ return put_user(0, p);
|
||||||
|
+ case WDIOC_KEEPALIVE:
|
||||||
|
+ wdog_ping();
|
||||||
|
+ return 0;
|
||||||
|
+ case WDIOC_SETTIMEOUT:
|
||||||
|
+ if (get_user(new_heartbeat, p))
|
||||||
|
+ return -EFAULT;
|
||||||
|
+ if (wdog_set_heartbeat(new_heartbeat))
|
||||||
|
+ return -EINVAL;
|
||||||
|
+ wdog_ping();
|
||||||
|
+ /* Fall */
|
||||||
|
+ case WDIOC_GETTIMEOUT:
|
||||||
|
+ return put_user(heartbeat, p);
|
||||||
|
+ case WDIOC_GETTIMELEFT:
|
||||||
|
+ remaining = WDOG_TICKS_TO_SECS(wdog_get_remaining());
|
||||||
|
+ return put_user(remaining, p);
|
||||||
|
+ case WDIOC_SETOPTIONS:
|
||||||
|
+ if (get_user(options, p))
|
||||||
|
+ return -EFAULT;
|
||||||
|
+ if (options & WDIOS_DISABLECARD)
|
||||||
|
+ wdog_stop();
|
||||||
|
+ if (options & WDIOS_ENABLECARD)
|
||||||
|
+ wdog_start(wdog_ticks);
|
||||||
|
+ return 0;
|
||||||
|
+ default:
|
||||||
|
+ return -ENOTTY;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * @inode: inode of device
|
||||||
|
+ * @file: file handle to device
|
||||||
|
+ *
|
||||||
|
+ * The watchdog device has been opened. The watchdog device is single
|
||||||
|
+ * open and on opening we load the counters.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static int wdog_open(struct inode *inode, struct file *file)
|
||||||
|
+{
|
||||||
|
+ if (test_and_set_bit(0, &wdog_is_open))
|
||||||
|
+ return -EBUSY;
|
||||||
|
+ /*
|
||||||
|
+ * Activate
|
||||||
|
+ */
|
||||||
|
+ wdog_start(wdog_ticks);
|
||||||
|
+ return nonseekable_open(inode, file);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * @inode: inode to board
|
||||||
|
+ * @file: file handle to board
|
||||||
|
+ *
|
||||||
|
+ * The watchdog has a configurable API. There is a religious dispute
|
||||||
|
+ * between people who want their watchdog to be able to shut down and
|
||||||
|
+ * those who want to be sure if the watchdog manager dies the machine
|
||||||
|
+ * reboots. In the former case we disable the counters, in the latter
|
||||||
|
+ * case you have to open it again very soon.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static int wdog_release(struct inode *inode, struct file *file)
|
||||||
|
+{
|
||||||
|
+ if (expect_close == 42) {
|
||||||
|
+ wdog_stop();
|
||||||
|
+ } else {
|
||||||
|
+ printk(KERN_CRIT
|
||||||
|
+ "wdt: WDT device closed unexpectedly. WDT will not stop!\n");
|
||||||
|
+ wdog_ping();
|
||||||
|
+ }
|
||||||
|
+ clear_bit(0, &wdog_is_open);
|
||||||
|
+ expect_close = 0;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * @this: our notifier block
|
||||||
|
+ * @code: the event being reported
|
||||||
|
+ * @unused: unused
|
||||||
|
+ *
|
||||||
|
+ * Our notifier is called on system shutdowns. Turn the watchdog
|
||||||
|
+ * off so that it does not fire during the next reboot.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static int wdog_notify_sys(struct notifier_block *this, unsigned long code,
|
||||||
|
+ void *unused)
|
||||||
|
+{
|
||||||
|
+ if (code == SYS_DOWN || code == SYS_HALT)
|
||||||
|
+ wdog_stop();
|
||||||
|
+ return NOTIFY_DONE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Kernel Interfaces
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+static const struct file_operations wdog_fops = {
|
||||||
|
+ .owner = THIS_MODULE,
|
||||||
|
+ .llseek = no_llseek,
|
||||||
|
+ .write = wdog_write,
|
||||||
|
+ .unlocked_ioctl = wdog_ioctl,
|
||||||
|
+ .open = wdog_open,
|
||||||
|
+ .release = wdog_release,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static struct miscdevice wdog_miscdev = {
|
||||||
|
+ .minor = WATCHDOG_MINOR,
|
||||||
|
+ .name = "watchdog",
|
||||||
|
+ .fops = &wdog_fops,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * The WDT card needs to learn about soft shutdowns in order to
|
||||||
|
+ * turn the timebomb registers off.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static struct notifier_block wdog_notifier = {
|
||||||
|
+ .notifier_call = wdog_notify_sys,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * cleanup_module:
|
||||||
|
+ *
|
||||||
|
+ * Unload the watchdog. You cannot do this with any file handles open.
|
||||||
|
+ * If your watchdog is set to continue ticking on close and you unload
|
||||||
|
+ * it, well it keeps ticking. We won't get the interrupt but the board
|
||||||
|
+ * will not touch PC memory so all is fine. You just have to load a new
|
||||||
|
+ * module in 60 seconds or reboot.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static void __exit wdog_exit(void)
|
||||||
|
+{
|
||||||
|
+ misc_deregister(&wdog_miscdev);
|
||||||
|
+ unregister_reboot_notifier(&wdog_notifier);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int __init wdog_init(void)
|
||||||
|
+{
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ /* Check that the heartbeat value is within it's range;
|
||||||
|
+ if not reset to the default */
|
||||||
|
+ if (wdog_set_heartbeat(heartbeat)) {
|
||||||
|
+ wdog_set_heartbeat(WD_TIMO);
|
||||||
|
+ printk(KERN_INFO "bcm2708_wdog: heartbeat value must be "
|
||||||
|
+ "0 < heartbeat < %d, using %d\n",
|
||||||
|
+ WDOG_TICKS_TO_SECS(PM_WDOG_TIME_SET),
|
||||||
|
+ WD_TIMO);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = register_reboot_notifier(&wdog_notifier);
|
||||||
|
+ if (ret) {
|
||||||
|
+ printk(KERN_ERR
|
||||||
|
+ "wdt: cannot register reboot notifier (err=%d)\n", ret);
|
||||||
|
+ goto out_reboot;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = misc_register(&wdog_miscdev);
|
||||||
|
+ if (ret) {
|
||||||
|
+ printk(KERN_ERR
|
||||||
|
+ "wdt: cannot register miscdev on minor=%d (err=%d)\n",
|
||||||
|
+ WATCHDOG_MINOR, ret);
|
||||||
|
+ goto out_misc;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ printk(KERN_INFO "bcm2708 watchdog, heartbeat=%d sec (nowayout=%d)\n",
|
||||||
|
+ heartbeat, nowayout);
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+out_misc:
|
||||||
|
+ unregister_reboot_notifier(&wdog_notifier);
|
||||||
|
+out_reboot:
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+module_init(wdog_init);
|
||||||
|
+module_exit(wdog_exit);
|
||||||
|
+
|
||||||
|
+MODULE_AUTHOR("Luke Diamand");
|
||||||
|
+MODULE_DESCRIPTION("Driver for BCM2708 watchdog");
|
||||||
|
+MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
|
||||||
|
+MODULE_ALIAS_MISCDEV(TEMP_MINOR);
|
||||||
|
+MODULE_LICENSE("GPL");
|
||||||
|
+
|
||||||
|
--
|
||||||
|
1.7.5.4
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
16383
target/linux/brcm2708/patches-3.3/0005-bcm2708-vchiq-driver.patch
Normal file
16383
target/linux/brcm2708/patches-3.3/0005-bcm2708-vchiq-driver.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,96 @@
|
|||||||
|
From dd6079fc871e99e4b0345d3fe27701dce5dcc7d0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: popcornmix <popcornmix@gmail.com>
|
||||||
|
Date: Tue, 17 Jan 2012 19:22:59 +0000
|
||||||
|
Subject: [PATCH 6/7] Allow mac address to be set in smsc95xx
|
||||||
|
|
||||||
|
Signed-off-by: popcornmix <popcornmix@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
1 files changed, 56 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
|
||||||
|
index f74f3ce..5a2e12b 100644
|
||||||
|
--- a/drivers/net/usb/smsc95xx.c
|
||||||
|
+++ b/drivers/net/usb/smsc95xx.c
|
||||||
|
@@ -46,6 +46,7 @@
|
||||||
|
#define SMSC95XX_INTERNAL_PHY_ID (1)
|
||||||
|
#define SMSC95XX_TX_OVERHEAD (8)
|
||||||
|
#define SMSC95XX_TX_OVERHEAD_CSUM (12)
|
||||||
|
+#define MAC_ADDR_LEN (6)
|
||||||
|
|
||||||
|
struct smsc95xx_priv {
|
||||||
|
u32 mac_cr;
|
||||||
|
@@ -63,6 +64,10 @@ static int turbo_mode = true;
|
||||||
|
module_param(turbo_mode, bool, 0644);
|
||||||
|
MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
|
||||||
|
|
||||||
|
+static char *macaddr = ":";
|
||||||
|
+module_param(macaddr, charp, 0);
|
||||||
|
+MODULE_PARM_DESC(macaddr, "MAC address");
|
||||||
|
+
|
||||||
|
static int smsc95xx_read_reg(struct usbnet *dev, u32 index, u32 *data)
|
||||||
|
{
|
||||||
|
u32 *buf = kmalloc(4, GFP_KERNEL);
|
||||||
|
@@ -600,8 +605,59 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
|
||||||
|
return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Check the macaddr module parameter for a MAC address */
|
||||||
|
+static int smsc95xx_is_macaddr_param(struct usbnet *dev, u8 *dev_mac)
|
||||||
|
+{
|
||||||
|
+ int i, j, got_num, num;
|
||||||
|
+ u8 mtbl[MAC_ADDR_LEN];
|
||||||
|
+
|
||||||
|
+ if (macaddr[0] == ':')
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ i = 0;
|
||||||
|
+ j = 0;
|
||||||
|
+ num = 0;
|
||||||
|
+ got_num = 0;
|
||||||
|
+ while (j < MAC_ADDR_LEN) {
|
||||||
|
+ if (macaddr[i] && macaddr[i] != ':') {
|
||||||
|
+ got_num++;
|
||||||
|
+ if ('0' <= macaddr[i] && macaddr[i] <= '9')
|
||||||
|
+ num = num * 16 + macaddr[i] - '0';
|
||||||
|
+ else if ('A' <= macaddr[i] && macaddr[i] <= 'F')
|
||||||
|
+ num = num * 16 + 10 + macaddr[i] - 'A';
|
||||||
|
+ else if ('a' <= macaddr[i] && macaddr[i] <= 'f')
|
||||||
|
+ num = num * 16 + 10 + macaddr[i] - 'a';
|
||||||
|
+ else
|
||||||
|
+ break;
|
||||||
|
+ i++;
|
||||||
|
+ } else if (got_num == 2) {
|
||||||
|
+ mtbl[j++] = (u8) num;
|
||||||
|
+ num = 0;
|
||||||
|
+ got_num = 0;
|
||||||
|
+ i++;
|
||||||
|
+ } else {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (j == MAC_ADDR_LEN) {
|
||||||
|
+ netif_dbg(dev, ifup, dev->net, "Overriding MAC address with: "
|
||||||
|
+ "%02x:%02x:%02x:%02x:%02x:%02x\n", mtbl[0], mtbl[1], mtbl[2],
|
||||||
|
+ mtbl[3], mtbl[4], mtbl[5]);
|
||||||
|
+ for (i = 0; i < MAC_ADDR_LEN; i++)
|
||||||
|
+ dev_mac[i] = mtbl[i];
|
||||||
|
+ return 1;
|
||||||
|
+ } else {
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void smsc95xx_init_mac_address(struct usbnet *dev)
|
||||||
|
{
|
||||||
|
+ /* Check module parameters */
|
||||||
|
+ if (smsc95xx_is_macaddr_param(dev, dev->net->dev_addr))
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
/* try reading mac address from EEPROM */
|
||||||
|
if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
|
||||||
|
dev->net->dev_addr) == 0) {
|
||||||
|
--
|
||||||
|
1.7.5.4
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
11
target/linux/brcm2708/patches-3.3/0510-fix_divdi3.patch
Normal file
11
target/linux/brcm2708/patches-3.3/0510-fix_divdi3.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- a/arch/arm/lib/Makefile
|
||||||
|
+++ b/arch/arm/lib/Makefile
|
||||||
|
@@ -14,7 +14,7 @@ lib-y := backtrace.o changebit.o csumip
|
||||||
|
ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \
|
||||||
|
ucmpdi2.o lib1funcs.o div64.o \
|
||||||
|
io-readsb.o io-writesb.o io-readsl.o io-writesl.o \
|
||||||
|
- call_with_stack.o
|
||||||
|
+ call_with_stack.o divdi3.o
|
||||||
|
|
||||||
|
mmu-y := clear_user.o copy_page.o getuser.o putuser.o
|
||||||
|
|
17
target/linux/brcm2708/profiles/100-RaspberryPi.mk
Normal file
17
target/linux/brcm2708/profiles/100-RaspberryPi.mk
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2012 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
define Profile/RaspberryPi
|
||||||
|
NAME:=RaspberryPi
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Profile/RaspberryPi/Description
|
||||||
|
RaspberryPi board
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call Profile,RaspberryPi))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user