Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Cilyan/6096694 to your computer and use it in GitHub Desktop.
Save Cilyan/6096694 to your computer and use it in GitHub Desktop.
Add support for Excito B3 (Bubba) CONFIG_MACH_BUBBA3 added to config plus some extra modules that are suitable for the device (more modem support, better IPv6 and filtering capabilities, more remote control support) The board file has been added in bubba3.patch: Board configuration + special LED support The PKGBUILD was modified to include the p…
From 863ccb3df64f676237c5a6f63da62b1df2c02921 Mon Sep 17 00:00:00 2001
From: Cilyan Olowen <gaknar@gmail.com>
Date: Sun, 28 Jul 2013 01:07:38 +0200
Subject: [PATCH] Add support for Excito B3 (Bubba)
CONFIG_MACH_BUBBA3 added to config plus some extra modules that are suitable for the device (more modem support, better IPv6 and filtering capabilities, more remote control support)
The board file has been added in bubba3.patch: Board configuration + special LED support
The PKGBUILD was modified to include the patch
Signed-off-by: Cilyan Olowen <gaknar@gmail.com>
---
core/linux/PKGBUILD | 17 +-
core/linux/bubba3.patch | 1378 +++++++++++++++++++++++++++++++++++++++++++++++
core/linux/config | 40 +-
3 files changed, 1422 insertions(+), 13 deletions(-)
create mode 100644 core/linux/bubba3.patch
diff --git a/core/linux/PKGBUILD b/core/linux/PKGBUILD
index 1b0fd85..07c07f8 100644
--- a/core/linux/PKGBUILD
+++ b/core/linux/PKGBUILD
@@ -35,7 +35,8 @@ source=("ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-${_basekernel}.tar.bz2
"http://algo.ing.unimo.it/people/paolo/disk_sched/patches/${_basekernel}.0-${bfqver}/0002-block-cgroups-kconfig-build-bits-for-BFQ-${bfqver}-${_basekernel}.patch"
"http://algo.ing.unimo.it/people/paolo/disk_sched/patches/${_basekernel}.0-${bfqver}/0003-block-introduce-the-BFQ-${bfqver}-I-O-sched-for-${_basekernel}.patch"
"http://algo.ing.unimo.it/people/paolo/disk_sched/patches/${_basekernel}.0-${bfqver}/0004-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-${bfqver}-for-${_basekernel}.0.patch"
- "http://download.gna.org/cryptodev-linux/cryptodev-linux-${cryptover}.tar.gz")
+ "http://download.gna.org/cryptodev-linux/cryptodev-linux-${cryptover}.tar.gz"
+ 'bubba3.patch')
md5sums=('8d43453f8159b2332ad410b19d86a931'
'a8e1c25a93a685ec2a1c3a808715fe9d'
@@ -46,7 +47,7 @@ md5sums=('8d43453f8159b2332ad410b19d86a931'
'29628745258df910abfb8cb24ca3ccd9'
'c9e6e8bb0774a89f7f9bd30a13be7532'
'55b04499a4578e586cf5a4d0b69fc5aa'
- '35c7a7463dcd438b7b2ede45915345a6'
+ 'ca308562684e0a5d74b351f2bd667f6b'
'b7d1b8fd444141a562505b768264b1a4'
'9d3c56a4b999c8bfbd4018089a62f662'
'd00814b57448895e65fbbc800e8a58ba'
@@ -54,7 +55,8 @@ md5sums=('8d43453f8159b2332ad410b19d86a931'
'c194f165a59266e764683439a6068c66'
'efeb99dd8ff6f619ecc0e399deef833e'
'ea737ea7e9986ea3ba9325ba265055e4'
- 'eade38998313c25fd7934719cdf8a2ea')
+ 'eade38998313c25fd7934719cdf8a2ea'
+ '50975053d343471c16106db637f32e0a')
build() {
msg "Patches:"
@@ -88,6 +90,9 @@ msg2 "Add AUFS3 patches"
patch -Np1 -i "${srcdir}/aufs3-standalone.patch"
patch -Np1 -i "${srcdir}/aufs3-git-extras.patch"
+msg2 "Patching for Bubba3"
+ patch -Np1 -i "${srcdir}/bubba3.patch"
+
# add latest fixes from stable queue, if needed
# http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
@@ -103,7 +108,9 @@ msg2 "Set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
# don't run depmod on 'make install'. We'll do this ourselves in packaging
sed -i '2iexit 0' scripts/depmod.sh
-
+
+ #make menuconfig # CLI menu for configuration
+
# get kernel version
make prepare
@@ -116,7 +123,7 @@ msg2 "Set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
# ... or manually edit .config
# Copy back our configuration (use with new kernel version)
- #cp ./.config ../${_basekernel}.config
+ cp ./.config ../${_basekernel}.config
####################
# stop here
diff --git a/core/linux/bubba3.patch b/core/linux/bubba3.patch
new file mode 100644
index 0000000..74218c1
--- /dev/null
+++ b/core/linux/bubba3.patch
@@ -0,0 +1,1378 @@
+diff -urNBbd linux-3.1-orig/arch/arm/configs/bubba3_defconfig linux-3.1/arch/arm/configs/bubba3_defconfig
+--- linux-3.1-orig/arch/arm/configs/bubba3_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.1/arch/arm/configs/bubba3_defconfig 2013-07-27 22:17:49.994930053 +0200
+@@ -0,0 +1,664 @@
++CONFIG_EXPERIMENTAL=y
++CONFIG_SYSVIPC=y
++CONFIG_POSIX_MQUEUE=y
++CONFIG_TASKSTATS=y
++CONFIG_TASK_DELAY_ACCT=y
++CONFIG_TASK_XACCT=y
++CONFIG_TASK_IO_ACCOUNTING=y
++CONFIG_IKCONFIG=y
++CONFIG_IKCONFIG_PROC=y
++CONFIG_LOG_BUF_SHIFT=15
++CONFIG_BLK_DEV_INITRD=y
++# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
++CONFIG_EMBEDDED=y
++CONFIG_MODULES=y
++CONFIG_MODULE_UNLOAD=y
++CONFIG_IOSCHED_DEADLINE=m
++CONFIG_ARCH_KIRKWOOD=y
++CONFIG_MACH_BUBBA3=y
++# CONFIG_CPU_FEROCEON_OLD_ID is not set
++CONFIG_NO_HZ=y
++CONFIG_HIGH_RES_TIMERS=y
++CONFIG_AEABI=y
++# CONFIG_OABI_COMPAT is not set
++# CONFIG_UACCESS_WITH_MEMCPY is not set
++CONFIG_ZBOOT_ROM_TEXT=0x0
++CONFIG_ZBOOT_ROM_BSS=0x0
++CONFIG_CPU_IDLE=y
++# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
++CONFIG_PM_RUNTIME=y
++CONFIG_NET=y
++CONFIG_PACKET=y
++CONFIG_UNIX=y
++CONFIG_XFRM_USER=y
++CONFIG_NET_KEY=y
++CONFIG_INET=y
++CONFIG_IP_MULTICAST=y
++CONFIG_IP_PNP=y
++CONFIG_IP_PNP_DHCP=y
++CONFIG_IP_PNP_BOOTP=y
++CONFIG_NET_IPIP=m
++CONFIG_IP_MROUTE=y
++CONFIG_IP_PIMSM_V1=y
++CONFIG_SYN_COOKIES=y
++CONFIG_INET_AH=m
++CONFIG_INET_ESP=m
++CONFIG_INET_IPCOMP=m
++CONFIG_INET_XFRM_MODE_TRANSPORT=m
++CONFIG_INET_XFRM_MODE_TUNNEL=m
++CONFIG_INET_XFRM_MODE_BEET=m
++CONFIG_IPV6_PRIVACY=y
++CONFIG_IPV6_ROUTER_PREF=y
++CONFIG_INET6_AH=m
++CONFIG_INET6_ESP=m
++CONFIG_INET6_IPCOMP=m
++CONFIG_IPV6_MIP6=m
++CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
++CONFIG_NETFILTER=y
++CONFIG_NF_CONNTRACK=m
++CONFIG_NF_CONNTRACK_EVENTS=y
++CONFIG_NF_CT_PROTO_DCCP=m
++CONFIG_NF_CT_PROTO_SCTP=m
++CONFIG_NF_CT_PROTO_UDPLITE=m
++CONFIG_NF_CONNTRACK_AMANDA=m
++CONFIG_NF_CONNTRACK_FTP=m
++CONFIG_NF_CONNTRACK_H323=m
++CONFIG_NF_CONNTRACK_IRC=m
++CONFIG_NF_CONNTRACK_NETBIOS_NS=m
++CONFIG_NF_CONNTRACK_PPTP=m
++CONFIG_NF_CONNTRACK_SANE=m
++CONFIG_NF_CONNTRACK_SIP=m
++CONFIG_NF_CONNTRACK_TFTP=m
++CONFIG_NF_CT_NETLINK=m
++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
++CONFIG_NETFILTER_XT_TARGET_MARK=m
++CONFIG_NETFILTER_XT_TARGET_NFLOG=m
++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
++CONFIG_NETFILTER_XT_MATCH_COMMENT=m
++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
++CONFIG_NETFILTER_XT_MATCH_DCCP=m
++CONFIG_NETFILTER_XT_MATCH_DSCP=m
++CONFIG_NETFILTER_XT_MATCH_ESP=m
++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
++CONFIG_NETFILTER_XT_MATCH_HELPER=m
++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
++CONFIG_NETFILTER_XT_MATCH_LENGTH=m
++CONFIG_NETFILTER_XT_MATCH_LIMIT=m
++CONFIG_NETFILTER_XT_MATCH_MAC=m
++CONFIG_NETFILTER_XT_MATCH_MARK=m
++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
++CONFIG_NETFILTER_XT_MATCH_OSF=m
++CONFIG_NETFILTER_XT_MATCH_OWNER=m
++CONFIG_NETFILTER_XT_MATCH_POLICY=m
++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
++CONFIG_NETFILTER_XT_MATCH_QUOTA=m
++CONFIG_NETFILTER_XT_MATCH_RATEEST=m
++CONFIG_NETFILTER_XT_MATCH_REALM=m
++CONFIG_NETFILTER_XT_MATCH_RECENT=m
++CONFIG_NETFILTER_XT_MATCH_SCTP=m
++CONFIG_NETFILTER_XT_MATCH_STATE=m
++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
++CONFIG_NETFILTER_XT_MATCH_STRING=m
++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
++CONFIG_NETFILTER_XT_MATCH_TIME=m
++CONFIG_NETFILTER_XT_MATCH_U32=m
++CONFIG_NF_CONNTRACK_IPV4=m
++CONFIG_IP_NF_IPTABLES=m
++CONFIG_IP_NF_MATCH_AH=m
++CONFIG_IP_NF_MATCH_ECN=m
++CONFIG_IP_NF_MATCH_TTL=m
++CONFIG_IP_NF_FILTER=m
++CONFIG_IP_NF_TARGET_REJECT=m
++CONFIG_IP_NF_TARGET_LOG=m
++CONFIG_IP_NF_TARGET_ULOG=m
++CONFIG_NF_NAT=m
++CONFIG_IP_NF_TARGET_MASQUERADE=m
++CONFIG_IP_NF_TARGET_NETMAP=m
++CONFIG_IP_NF_TARGET_REDIRECT=m
++CONFIG_IP_NF_MANGLE=m
++CONFIG_IP_NF_TARGET_CLUSTERIP=m
++CONFIG_IP_NF_TARGET_ECN=m
++CONFIG_IP_NF_TARGET_TTL=m
++CONFIG_IP_NF_RAW=m
++CONFIG_IP_NF_ARPTABLES=m
++CONFIG_IP_NF_ARPFILTER=m
++CONFIG_IP_NF_ARP_MANGLE=m
++CONFIG_NF_CONNTRACK_IPV6=m
++CONFIG_IP6_NF_IPTABLES=m
++CONFIG_IP6_NF_MATCH_AH=m
++CONFIG_IP6_NF_MATCH_EUI64=m
++CONFIG_IP6_NF_MATCH_FRAG=m
++CONFIG_IP6_NF_MATCH_OPTS=m
++CONFIG_IP6_NF_MATCH_HL=m
++CONFIG_IP6_NF_MATCH_IPV6HEADER=m
++CONFIG_IP6_NF_MATCH_MH=m
++CONFIG_IP6_NF_MATCH_RT=m
++CONFIG_IP6_NF_TARGET_HL=m
++CONFIG_IP6_NF_TARGET_LOG=m
++CONFIG_IP6_NF_FILTER=m
++CONFIG_IP6_NF_TARGET_REJECT=m
++CONFIG_IP6_NF_MANGLE=m
++CONFIG_IP6_NF_RAW=m
++CONFIG_BRIDGE_NF_EBTABLES=m
++CONFIG_BRIDGE_EBT_BROUTE=m
++CONFIG_BRIDGE_EBT_T_FILTER=m
++CONFIG_BRIDGE_EBT_T_NAT=m
++CONFIG_BRIDGE_EBT_802_3=m
++CONFIG_BRIDGE_EBT_AMONG=m
++CONFIG_BRIDGE_EBT_ARP=m
++CONFIG_BRIDGE_EBT_IP=m
++CONFIG_BRIDGE_EBT_IP6=m
++CONFIG_BRIDGE_EBT_LIMIT=m
++CONFIG_BRIDGE_EBT_MARK=m
++CONFIG_BRIDGE_EBT_PKTTYPE=m
++CONFIG_BRIDGE_EBT_STP=m
++CONFIG_BRIDGE_EBT_VLAN=m
++CONFIG_BRIDGE_EBT_ARPREPLY=m
++CONFIG_BRIDGE_EBT_DNAT=m
++CONFIG_BRIDGE_EBT_MARK_T=m
++CONFIG_BRIDGE_EBT_REDIRECT=m
++CONFIG_BRIDGE_EBT_SNAT=m
++CONFIG_BRIDGE_EBT_LOG=m
++CONFIG_BRIDGE_EBT_NFLOG=m
++CONFIG_ATM=m
++CONFIG_ATM_CLIP=m
++CONFIG_ATM_BR2684=m
++CONFIG_BRIDGE=m
++CONFIG_VLAN_8021Q=m
++CONFIG_NET_SCHED=y
++CONFIG_NET_SCH_CBQ=m
++CONFIG_NET_SCH_HTB=m
++CONFIG_NET_SCH_HFSC=m
++CONFIG_NET_SCH_ATM=m
++CONFIG_NET_SCH_PRIO=m
++CONFIG_NET_SCH_MULTIQ=m
++CONFIG_NET_SCH_RED=m
++CONFIG_NET_SCH_SFQ=m
++CONFIG_NET_SCH_TEQL=m
++CONFIG_NET_SCH_TBF=m
++CONFIG_NET_SCH_GRED=m
++CONFIG_NET_SCH_DSMARK=m
++CONFIG_NET_SCH_NETEM=m
++CONFIG_NET_SCH_DRR=m
++CONFIG_NET_CLS_BASIC=m
++CONFIG_NET_CLS_TCINDEX=m
++CONFIG_NET_CLS_ROUTE4=m
++CONFIG_NET_CLS_FW=m
++CONFIG_NET_CLS_RSVP=m
++CONFIG_NET_CLS_RSVP6=m
++CONFIG_NET_CLS_FLOW=m
++CONFIG_BT=m
++CONFIG_BT_HCIBTUSB=m
++CONFIG_BT_HCIUART=m
++CONFIG_BT_HCIUART_H4=y
++CONFIG_BT_HCIUART_BCSP=y
++CONFIG_BT_HCIUART_LL=y
++CONFIG_BT_HCIBCM203X=m
++CONFIG_BT_HCIBPA10X=m
++CONFIG_BT_HCIBFUSB=m
++CONFIG_BT_HCIVHCI=m
++CONFIG_CFG80211=m
++CONFIG_MAC80211=m
++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
++CONFIG_DEVTMPFS=y
++CONFIG_CONNECTOR=m
++CONFIG_MTD=y
++CONFIG_MTD_PARTITIONS=y
++CONFIG_MTD_CMDLINE_PARTS=y
++CONFIG_MTD_CHAR=y
++CONFIG_MTD_BLOCK=y
++CONFIG_MTD_CFI=y
++CONFIG_MTD_JEDECPROBE=y
++CONFIG_MTD_CFI_ADV_OPTIONS=y
++CONFIG_MTD_CFI_GEOMETRY=y
++# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
++# CONFIG_MTD_CFI_I2 is not set
++CONFIG_MTD_M25P80=y
++CONFIG_BLK_DEV_LOOP=y
++CONFIG_BLK_DEV_CRYPTOLOOP=m
++CONFIG_BLK_DEV_NBD=m
++CONFIG_BLK_DEV_RAM=y
++CONFIG_CDROM_PKTCDVD=m
++CONFIG_ATA_OVER_ETH=m
++CONFIG_MISC_DEVICES=y
++CONFIG_ENCLOSURE_SERVICES=m
++CONFIG_BLK_DEV_SD=y
++CONFIG_CHR_DEV_ST=m
++CONFIG_BLK_DEV_SR=y
++CONFIG_BLK_DEV_SR_VENDOR=y
++CONFIG_CHR_DEV_SG=y
++CONFIG_CHR_DEV_SCH=m
++CONFIG_SCSI_ENCLOSURE=m
++CONFIG_SCSI_MULTI_LUN=y
++CONFIG_SCSI_SPI_ATTRS=m
++# CONFIG_SCSI_LOWLEVEL is not set
++CONFIG_ATA=y
++CONFIG_SATA_MV=y
++CONFIG_MD=y
++CONFIG_BLK_DEV_MD=y
++CONFIG_MD_LINEAR=m
++CONFIG_MD_RAID0=y
++CONFIG_MD_RAID1=y
++CONFIG_MD_RAID10=m
++CONFIG_MD_RAID456=m
++CONFIG_BLK_DEV_DM=y
++CONFIG_DM_CRYPT=m
++CONFIG_DM_SNAPSHOT=m
++CONFIG_DM_MIRROR=m
++CONFIG_DM_ZERO=m
++CONFIG_DM_MULTIPATH=m
++CONFIG_NETDEVICES=y
++CONFIG_BONDING=m
++CONFIG_EQUALIZER=m
++CONFIG_TUN=m
++CONFIG_VETH=m
++CONFIG_MARVELL_PHY=y
++CONFIG_MARVELL_PHY_REVERSE=y
++CONFIG_MV643XX_ETH=y
++# CONFIG_NETDEV_10000 is not set
++CONFIG_AT76C50X_USB=m
++CONFIG_USB_ZD1201=m
++CONFIG_USB_NET_RNDIS_WLAN=m
++CONFIG_RTL8187=m
++CONFIG_ATH_COMMON=m
++CONFIG_ATH_USER_REGD=y
++CONFIG_ATH5K=m
++CONFIG_ATH9K=m
++CONFIG_ATH9K_HTC=m
++CONFIG_AR9170_USB=m
++CONFIG_CARL9170=m
++CONFIG_IPW2100=m
++CONFIG_IPW2200=m
++CONFIG_IWLAGN=m
++CONFIG_IWL4965=m
++CONFIG_RT2X00=m
++CONFIG_RT2800PCI=m
++CONFIG_RT2800PCI_RT35XX=y
++CONFIG_RT2500USB=m
++CONFIG_RT73USB=m
++CONFIG_RT2800USB=m
++CONFIG_RT2800USB_RT35XX=y
++CONFIG_RT2800USB_UNKNOWN=y
++CONFIG_ZD1211RW=m
++CONFIG_USB_CATC=m
++CONFIG_USB_KAWETH=m
++CONFIG_USB_PEGASUS=m
++CONFIG_USB_RTL8150=m
++CONFIG_USB_NET_CDC_EEM=m
++CONFIG_USB_NET_DM9601=m
++CONFIG_USB_NET_SMSC75XX=m
++CONFIG_USB_NET_SMSC95XX=m
++CONFIG_USB_NET_GL620A=m
++CONFIG_USB_NET_PLUSB=m
++CONFIG_USB_NET_MCS7830=m
++CONFIG_USB_ALI_M5632=y
++CONFIG_USB_AN2720=y
++CONFIG_USB_EPSON2888=y
++CONFIG_USB_KC2190=y
++CONFIG_USB_NET_CX82310_ETH=m
++CONFIG_USB_NET_INT51X1=m
++CONFIG_USB_IPHETH=m
++CONFIG_USB_SIERRA_NET=m
++CONFIG_PPP=m
++CONFIG_PPP_MULTILINK=y
++CONFIG_PPP_FILTER=y
++CONFIG_PPP_ASYNC=m
++CONFIG_PPP_SYNC_TTY=m
++CONFIG_PPP_DEFLATE=m
++CONFIG_PPP_BSDCOMP=m
++CONFIG_PPP_MPPE=m
++CONFIG_PPPOE=m
++CONFIG_PPPOATM=m
++CONFIG_INPUT_MOUSEDEV=m
++CONFIG_INPUT_JOYDEV=m
++CONFIG_INPUT_EVDEV=m
++CONFIG_INPUT_EVBUG=m
++# CONFIG_KEYBOARD_ATKBD is not set
++CONFIG_KEYBOARD_GPIO=m
++# CONFIG_MOUSE_PS2 is not set
++CONFIG_INPUT_MISC=y
++CONFIG_INPUT_ATI_REMOTE=m
++CONFIG_INPUT_ATI_REMOTE2=m
++CONFIG_INPUT_KEYSPAN_REMOTE=m
++CONFIG_INPUT_POWERMATE=m
++CONFIG_INPUT_YEALINK=m
++CONFIG_INPUT_CM109=m
++CONFIG_INPUT_UINPUT=m
++# CONFIG_SERIO is not set
++# CONFIG_VT is not set
++CONFIG_LEGACY_PTY_COUNT=16
++# CONFIG_DEVKMEM is not set
++CONFIG_SERIAL_8250=y
++CONFIG_SERIAL_8250_CONSOLE=y
++CONFIG_SERIAL_8250_RUNTIME_UARTS=2
++CONFIG_I2C=y
++CONFIG_I2C_CHARDEV=y
++CONFIG_I2C_MV64XXX=y
++CONFIG_SPI=y
++CONFIG_SPI_ORION=y
++CONFIG_GPIO_SYSFS=y
++# CONFIG_HWMON is not set
++CONFIG_WATCHDOG=y
++CONFIG_ORION_WATCHDOG=y
++CONFIG_MEDIA_SUPPORT=m
++CONFIG_VIDEO_DEV=m
++CONFIG_DVB_CORE=m
++CONFIG_MEDIA_ATTACH=y
++# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
++CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
++CONFIG_USB_VIDEO_CLASS=m
++CONFIG_USB_M5602=m
++CONFIG_USB_STV06XX=m
++CONFIG_USB_GL860=m
++CONFIG_USB_GSPCA_BENQ=m
++CONFIG_USB_GSPCA_CONEX=m
++CONFIG_USB_GSPCA_CPIA1=m
++CONFIG_USB_GSPCA_ETOMS=m
++CONFIG_USB_GSPCA_FINEPIX=m
++CONFIG_USB_GSPCA_JEILINJ=m
++CONFIG_USB_GSPCA_MARS=m
++CONFIG_USB_GSPCA_MR97310A=m
++CONFIG_USB_GSPCA_OV519=m
++CONFIG_USB_GSPCA_OV534=m
++CONFIG_USB_GSPCA_OV534_9=m
++CONFIG_USB_GSPCA_PAC207=m
++CONFIG_USB_GSPCA_PAC7302=m
++CONFIG_USB_GSPCA_PAC7311=m
++CONFIG_USB_GSPCA_SN9C2028=m
++CONFIG_USB_GSPCA_SN9C20X=m
++CONFIG_USB_GSPCA_SONIXB=m
++CONFIG_USB_GSPCA_SONIXJ=m
++CONFIG_USB_GSPCA_SPCA500=m
++CONFIG_USB_GSPCA_SPCA501=m
++CONFIG_USB_GSPCA_SPCA505=m
++CONFIG_USB_GSPCA_SPCA506=m
++CONFIG_USB_GSPCA_SPCA508=m
++CONFIG_USB_GSPCA_SPCA561=m
++CONFIG_USB_GSPCA_SQ905=m
++CONFIG_USB_GSPCA_SQ905C=m
++CONFIG_USB_GSPCA_STK014=m
++CONFIG_USB_GSPCA_STV0680=m
++CONFIG_USB_GSPCA_SUNPLUS=m
++CONFIG_USB_GSPCA_T613=m
++CONFIG_USB_GSPCA_TV8532=m
++CONFIG_USB_GSPCA_VC032X=m
++CONFIG_USB_GSPCA_ZC3XX=m
++CONFIG_VIDEO_PVRUSB2=m
++CONFIG_VIDEO_HDPVR=m
++CONFIG_VIDEO_EM28XX=m
++CONFIG_VIDEO_EM28XX_ALSA=m
++CONFIG_VIDEO_EM28XX_DVB=m
++CONFIG_VIDEO_TLG2300=m
++CONFIG_VIDEO_CX231XX=m
++CONFIG_VIDEO_CX231XX_ALSA=m
++CONFIG_VIDEO_CX231XX_DVB=m
++CONFIG_VIDEO_USBVISION=m
++CONFIG_USB_PWC=m
++CONFIG_USB_ZR364XX=m
++CONFIG_USB_STKWEBCAM=m
++CONFIG_USB_S2255=m
++CONFIG_DVB_USB=m
++CONFIG_DVB_USB_A800=m
++CONFIG_DVB_USB_DIBUSB_MB=m
++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
++CONFIG_DVB_USB_DIBUSB_MC=m
++CONFIG_DVB_USB_DIB0700=m
++CONFIG_DVB_USB_UMT_010=m
++CONFIG_DVB_USB_CXUSB=m
++CONFIG_DVB_USB_M920X=m
++CONFIG_DVB_USB_GL861=m
++CONFIG_DVB_USB_AU6610=m
++CONFIG_DVB_USB_DIGITV=m
++CONFIG_DVB_USB_VP7045=m
++CONFIG_DVB_USB_VP702X=m
++CONFIG_DVB_USB_GP8PSK=m
++CONFIG_DVB_USB_NOVA_T_USB2=m
++CONFIG_DVB_USB_TTUSB2=m
++CONFIG_DVB_USB_DTT200U=m
++CONFIG_DVB_USB_OPERA1=m
++CONFIG_DVB_USB_AF9005=m
++CONFIG_DVB_USB_AF9005_REMOTE=m
++CONFIG_DVB_USB_DW2102=m
++CONFIG_DVB_USB_CINERGY_T2=m
++CONFIG_DVB_USB_ANYSEE=m
++CONFIG_DVB_USB_DTV5100=m
++CONFIG_DVB_USB_AF9015=m
++CONFIG_DVB_USB_CE6230=m
++CONFIG_DVB_USB_FRIIO=m
++CONFIG_DVB_USB_EC168=m
++CONFIG_DVB_USB_AZ6027=m
++CONFIG_DVB_TTUSB_BUDGET=m
++CONFIG_DVB_TTUSB_DEC=m
++CONFIG_SMS_SIANO_MDTV=m
++CONFIG_SMS_USB_DRV=m
++# CONFIG_DVB_FE_CUSTOMISE is not set
++CONFIG_SOUND=m
++CONFIG_SND=m
++CONFIG_SND_SEQUENCER=m
++CONFIG_SND_MIXER_OSS=m
++CONFIG_SND_PCM_OSS=m
++CONFIG_SND_SEQUENCER_OSS=y
++# CONFIG_SND_DRIVERS is not set
++# CONFIG_SND_PCI is not set
++# CONFIG_SND_ARM is not set
++# CONFIG_SND_SPI is not set
++CONFIG_SND_USB_AUDIO=m
++CONFIG_HIDRAW=y
++CONFIG_USB_HIDDEV=y
++CONFIG_HID_3M_PCT=m
++CONFIG_HID_A4TECH=m
++CONFIG_HID_APPLE=m
++CONFIG_HID_BELKIN=m
++CONFIG_HID_CHERRY=m
++CONFIG_HID_CHICONY=m
++CONFIG_HID_CYPRESS=m
++CONFIG_HID_DRAGONRISE=m
++CONFIG_HID_EZKEY=m
++CONFIG_HID_KYE=m
++CONFIG_HID_GYRATION=m
++CONFIG_HID_TWINHAN=m
++CONFIG_HID_KENSINGTON=m
++CONFIG_HID_LOGITECH=m
++CONFIG_HID_MICROSOFT=m
++CONFIG_HID_MOSART=m
++CONFIG_HID_MONTEREY=m
++CONFIG_HID_NTRIG=m
++CONFIG_HID_ORTEK=m
++CONFIG_HID_PANTHERLORD=m
++CONFIG_HID_PETALYNX=m
++CONFIG_HID_QUANTA=m
++CONFIG_HID_SAMSUNG=m
++CONFIG_HID_SONY=m
++CONFIG_HID_STANTUM=m
++CONFIG_HID_SUNPLUS=m
++CONFIG_HID_GREENASIA=m
++CONFIG_HID_SMARTJOYPLUS=m
++CONFIG_HID_TOPSEED=m
++CONFIG_HID_THRUSTMASTER=m
++CONFIG_HID_ZEROPLUS=m
++CONFIG_USB=y
++CONFIG_USB_DEVICEFS=y
++CONFIG_USB_MON=m
++CONFIG_USB_EHCI_HCD=y
++CONFIG_USB_EHCI_ROOT_HUB_TT=y
++CONFIG_USB_ACM=m
++CONFIG_USB_PRINTER=m
++CONFIG_USB_WDM=m
++CONFIG_USB_STORAGE=y
++CONFIG_USB_STORAGE_DATAFAB=m
++CONFIG_USB_STORAGE_FREECOM=m
++CONFIG_USB_STORAGE_ISD200=m
++CONFIG_USB_STORAGE_USBAT=m
++CONFIG_USB_STORAGE_SDDR09=m
++CONFIG_USB_STORAGE_SDDR55=m
++CONFIG_USB_STORAGE_JUMPSHOT=m
++CONFIG_USB_STORAGE_ALAUDA=m
++CONFIG_USB_STORAGE_ONETOUCH=m
++CONFIG_USB_STORAGE_KARMA=m
++CONFIG_USB_STORAGE_CYPRESS_ATACB=m
++CONFIG_USB_LIBUSUAL=y
++CONFIG_USB_MDC800=m
++CONFIG_USB_MICROTEK=m
++CONFIG_USB_SERIAL=m
++CONFIG_USB_SERIAL_GENERIC=y
++CONFIG_USB_SERIAL_AIRCABLE=m
++CONFIG_USB_SERIAL_ARK3116=m
++CONFIG_USB_SERIAL_BELKIN=m
++CONFIG_USB_SERIAL_CH341=m
++CONFIG_USB_SERIAL_WHITEHEAT=m
++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
++CONFIG_USB_SERIAL_CP210X=m
++CONFIG_USB_SERIAL_CYPRESS_M8=m
++CONFIG_USB_SERIAL_EMPEG=m
++CONFIG_USB_SERIAL_FTDI_SIO=m
++CONFIG_USB_SERIAL_FUNSOFT=m
++CONFIG_USB_SERIAL_VISOR=m
++CONFIG_USB_SERIAL_IPAQ=m
++CONFIG_USB_SERIAL_IR=m
++CONFIG_USB_SERIAL_EDGEPORT=m
++CONFIG_USB_SERIAL_EDGEPORT_TI=m
++CONFIG_USB_SERIAL_GARMIN=m
++CONFIG_USB_SERIAL_IPW=m
++CONFIG_USB_SERIAL_IUU=m
++CONFIG_USB_SERIAL_KEYSPAN_PDA=m
++CONFIG_USB_SERIAL_KLSI=m
++CONFIG_USB_SERIAL_KOBIL_SCT=m
++CONFIG_USB_SERIAL_MCT_U232=m
++CONFIG_USB_SERIAL_MOS7720=m
++CONFIG_USB_SERIAL_MOS7840=m
++CONFIG_USB_SERIAL_MOTOROLA=m
++CONFIG_USB_SERIAL_NAVMAN=m
++CONFIG_USB_SERIAL_PL2303=m
++CONFIG_USB_SERIAL_OTI6858=m
++CONFIG_USB_SERIAL_QCAUX=m
++CONFIG_USB_SERIAL_QUALCOMM=m
++CONFIG_USB_SERIAL_SPCP8X5=m
++CONFIG_USB_SERIAL_HP4X=m
++CONFIG_USB_SERIAL_SIEMENS_MPI=m
++CONFIG_USB_SERIAL_SIERRAWIRELESS=m
++CONFIG_USB_SERIAL_SYMBOL=m
++CONFIG_USB_SERIAL_TI=m
++CONFIG_USB_SERIAL_CYBERJACK=m
++CONFIG_USB_SERIAL_XIRCOM=m
++CONFIG_USB_SERIAL_OPTION=m
++CONFIG_USB_SERIAL_OMNINET=m
++CONFIG_USB_SERIAL_OPTICON=m
++CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
++CONFIG_USB_EMI62=m
++CONFIG_USB_EMI26=m
++CONFIG_USB_ADUTUX=m
++CONFIG_USB_SEVSEG=m
++CONFIG_USB_RIO500=m
++CONFIG_USB_LEGOTOWER=m
++CONFIG_USB_LCD=m
++CONFIG_USB_LED=m
++CONFIG_USB_CYPRESS_CY7C63=m
++CONFIG_USB_CYTHERM=m
++CONFIG_USB_IDMOUSE=m
++CONFIG_USB_FTDI_ELAN=m
++CONFIG_USB_SISUSBVGA=m
++CONFIG_USB_LD=m
++CONFIG_USB_IOWARRIOR=m
++CONFIG_USB_ATM=m
++CONFIG_USB_SPEEDTOUCH=m
++CONFIG_USB_CXACRU=m
++CONFIG_USB_UEAGLEATM=m
++CONFIG_USB_XUSBATM=m
++CONFIG_LEDS_GPIO=y
++CONFIG_LEDS_TRIGGER_TIMER=y
++CONFIG_LEDS_TRIGGER_HEARTBEAT=y
++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
++CONFIG_RTC_CLASS=y
++CONFIG_RTC_DRV_MV=y
++CONFIG_DMADEVICES=y
++CONFIG_MV_XOR=y
++CONFIG_ASYNC_TX_DMA=y
++CONFIG_EXT2_FS=y
++CONFIG_EXT3_FS=y
++# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
++CONFIG_EXT3_FS_POSIX_ACL=y
++CONFIG_EXT3_FS_SECURITY=y
++CONFIG_EXT4_FS=m
++CONFIG_EXT4_FS_POSIX_ACL=y
++CONFIG_EXT4_FS_SECURITY=y
++CONFIG_REISERFS_FS=m
++CONFIG_BTRFS_FS=m
++CONFIG_BTRFS_FS_POSIX_ACL=y
++CONFIG_FUSE_FS=m
++CONFIG_CUSE=m
++CONFIG_FSCACHE=y
++CONFIG_ISO9660_FS=y
++CONFIG_JOLIET=y
++CONFIG_ZISOFS=y
++CONFIG_UDF_FS=y
++CONFIG_MSDOS_FS=y
++CONFIG_VFAT_FS=y
++CONFIG_FAT_DEFAULT_CODEPAGE=850
++CONFIG_NTFS_FS=m
++CONFIG_NTFS_RW=y
++CONFIG_TMPFS=y
++CONFIG_ECRYPT_FS=m
++CONFIG_HFS_FS=m
++CONFIG_HFSPLUS_FS=m
++CONFIG_NFS_FS=y
++CONFIG_NFS_V3=y
++CONFIG_NFS_V4=y
++CONFIG_NFS_V4_1=y
++CONFIG_ROOT_NFS=y
++CONFIG_NFS_FSCACHE=y
++CONFIG_NFSD=y
++CONFIG_NFSD_V3_ACL=y
++CONFIG_NFSD_V4=y
++CONFIG_CIFS=m
++CONFIG_CIFS_XATTR=y
++CONFIG_CIFS_POSIX=y
++CONFIG_PARTITION_ADVANCED=y
++CONFIG_EFI_PARTITION=y
++CONFIG_NLS_CODEPAGE_437=y
++CONFIG_NLS_CODEPAGE_850=y
++CONFIG_NLS_ISO8859_1=y
++CONFIG_PRINTK_TIME=y
++# CONFIG_ENABLE_WARN_DEPRECATED is not set
++# CONFIG_ENABLE_MUST_CHECK is not set
++CONFIG_MAGIC_SYSRQ=y
++# CONFIG_ARM_UNWIND is not set
++CONFIG_CRYPTO_CRYPTD=m
++CONFIG_CRYPTO_CCM=m
++CONFIG_CRYPTO_GCM=m
++CONFIG_CRYPTO_CBC=y
++CONFIG_CRYPTO_CTS=m
++CONFIG_CRYPTO_LRW=m
++CONFIG_CRYPTO_PCBC=m
++CONFIG_CRYPTO_XTS=m
++CONFIG_CRYPTO_XCBC=m
++CONFIG_CRYPTO_VMAC=m
++CONFIG_CRYPTO_MD5=y
++CONFIG_CRYPTO_RMD128=m
++CONFIG_CRYPTO_RMD160=m
++CONFIG_CRYPTO_RMD256=m
++CONFIG_CRYPTO_RMD320=m
++CONFIG_CRYPTO_SHA256=m
++CONFIG_CRYPTO_SHA512=m
++CONFIG_CRYPTO_TGR192=m
++CONFIG_CRYPTO_WP512=m
++CONFIG_CRYPTO_ANUBIS=m
++CONFIG_CRYPTO_BLOWFISH=m
++CONFIG_CRYPTO_CAMELLIA=m
++CONFIG_CRYPTO_CAST5=m
++CONFIG_CRYPTO_CAST6=m
++CONFIG_CRYPTO_DES=y
++CONFIG_CRYPTO_FCRYPT=m
++CONFIG_CRYPTO_KHAZAD=m
++CONFIG_CRYPTO_SALSA20=m
++CONFIG_CRYPTO_SEED=m
++CONFIG_CRYPTO_SERPENT=m
++CONFIG_CRYPTO_TEA=m
++CONFIG_CRYPTO_TWOFISH=m
++CONFIG_CRYPTO_ZLIB=m
++CONFIG_CRYPTO_LZO=m
++CONFIG_CRYPTO_DEV_MV_CESA=m
+diff -urNBbd linux-3.1-orig/arch/arm/mach-kirkwood/bubba3-gpio.c linux-3.1/arch/arm/mach-kirkwood/bubba3-gpio.c
+--- linux-3.1-orig/arch/arm/mach-kirkwood/bubba3-gpio.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.1/arch/arm/mach-kirkwood/bubba3-gpio.c 2013-07-27 21:43:49.553695615 +0200
+@@ -0,0 +1,387 @@
++/*
++ * Excito BUBBA|3 led driver.
++ *
++ * Copyright (C) 2010 Excito Elektronik i Skåne AB
++ * Author: "Tor Krill" <tor@excito.com>
++ *
++ * 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.
++ *
++ * This driver provides an interface to the GPIO functionality on BUBBA|3
++ */
++
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/gpio.h>
++#include <linux/kernel.h>
++#include <linux/delay.h>
++
++#include "bubba3.h"
++
++/* Mark this file for ident */
++static char* ver="0.1";
++static char* build=__DATE__ " " __TIME__;
++
++#define DEVNAME "bubbatwo"
++#define LED_DEFAULT_FREQ 0x8000
++
++/* Meta information for this module */
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Tor Krill <tor@excito.com>");
++MODULE_DESCRIPTION("BUBBA|3 led driver");
++
++/* Forwards */
++static int b3_probe(struct platform_device *dev);
++static int b3_remove(struct platform_device *dev);
++static void b3_led_on(void);
++
++#define MODE_OFF 0
++#define MODE_BLINK 1
++#define MODE_LIT 2
++#define BUZZ_OFF 0
++#define BUZZ_ON 1
++#define LED_BLUE 0
++#define LED_RED 1
++#define LED_GREEN 2
++#define LED_BOOT 3
++#define LED_INSTALL LED_GREEN
++
++struct b3_stateinfo{
++ u32 mode;
++ u32 freq;
++ u32 buzz;
++ u32 color;
++};
++
++static struct b3_stateinfo b3_data;
++
++static void b3_led_reset(void)
++{
++ gpio_set_value(B3_LED_INTERVAL,0);
++ udelay(1800);
++ gpio_set_value(B3_LED_INTERVAL,1);
++ udelay(10);
++ gpio_set_value(B3_LED_INTERVAL,0);
++ udelay(1800);
++}
++
++static void b3_led_train_start(void)
++{
++ gpio_set_value(B3_LED_INTERVAL,1);
++ udelay(10);
++ gpio_set_value(B3_LED_INTERVAL,0);
++ udelay(10);
++ gpio_set_value(B3_LED_INTERVAL,1);
++ udelay(10);
++ gpio_set_value(B3_LED_INTERVAL,0);
++ udelay(1800);
++}
++
++static void b3_led_train_end(void)
++{
++ gpio_set_value(B3_LED_INTERVAL,1);
++ udelay(10);
++ gpio_set_value(B3_LED_INTERVAL,0);
++ udelay(10);
++ gpio_set_value(B3_LED_INTERVAL,1);
++ udelay(10);
++ gpio_set_value(B3_LED_INTERVAL,0);
++ udelay(10);
++ gpio_set_value(B3_LED_INTERVAL,1);
++ udelay(10);
++ gpio_set_value(B3_LED_INTERVAL,0);
++ udelay(1800);
++}
++
++static void b3_led_color(u32 color){
++ gpio_set_value(B3_FRONT_LED_RED,0);
++ gpio_set_value(B3_FRONT_LED_BLUE,0);
++ gpio_set_value(B3_FRONT_LED_GREEN,0);
++
++ switch(color){
++ case LED_BOOT:
++ gpio_set_value(B3_FRONT_LED_RED,1);
++ gpio_set_value(B3_FRONT_LED_BLUE,1);
++ break;
++ case LED_RED:
++ gpio_set_value(B3_FRONT_LED_RED,1);
++ break;
++ case LED_GREEN:
++ gpio_set_value(B3_FRONT_LED_GREEN,1);
++ break;
++ case LED_BLUE:
++ default:
++ gpio_set_value(B3_FRONT_LED_BLUE,1);
++ break;
++ }
++}
++
++static void b3_led_on(void)
++{
++ b3_led_color(b3_data.color);
++
++ b3_led_reset();
++
++ b3_led_train_start();
++ /* NOOP, pass through mode */
++ b3_led_train_end();
++
++ gpio_set_value(B3_LED_INTERVAL,1);
++}
++
++static void b3_led_off(void)
++{
++ gpio_set_value(B3_FRONT_LED_RED,0);
++ gpio_set_value(B3_FRONT_LED_BLUE,0);
++ gpio_set_value(B3_FRONT_LED_GREEN,0);
++
++ b3_led_reset();
++}
++
++static void b3_buzz_on(void)
++{
++ gpio_set_value(B3_BUZZER_ENABLE,1);
++}
++
++static void b3_buzz_off(void)
++{
++ gpio_set_value(B3_BUZZER_ENABLE,0);
++}
++
++
++static struct platform_device *b3_device;
++
++static struct platform_driver b3_driver = {
++ .driver = {
++ .name = DEVNAME,
++ .owner = THIS_MODULE,
++ },
++ .probe = b3_probe,
++ .remove = b3_remove,
++};
++
++static ssize_t b3_show_ledmode(struct device *dev, struct device_attribute *attr, char *buffer)
++{
++ ssize_t len = 0;
++ switch(b3_data.mode){
++ case MODE_OFF:
++ len = sprintf (buffer+len, "off");
++ break;
++ case MODE_BLINK:
++ len = sprintf (buffer+len, "blink");
++ break;
++ case MODE_LIT:
++ len = sprintf (buffer+len, "lit");
++ break;
++ default:
++ len = sprintf (buffer+len, "unknown");
++ }
++
++ return len;
++}
++
++static ssize_t b3_store_ledmode(struct device *dev, struct device_attribute *attr,const char *buffer, size_t size)
++{
++
++ if(size<1){
++ return -EINVAL;
++ }
++ /* Do a nasty shortcut here only look at first char */
++ switch(buffer[0]){
++ case 'o':
++ b3_data.mode=MODE_OFF;
++ b3_led_off ();
++ break;
++ case 'b':
++ /* For now we dont allow blink. */
++ case 'l':
++ b3_data.mode=MODE_LIT;
++ b3_led_on ();
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ return size;
++}
++
++static ssize_t b3_show_ledfreq(struct device *dev, struct device_attribute *attr, char *buffer)
++{
++ ssize_t len = 0;
++
++ len = sprintf (buffer+len, "%u", b3_data.freq);
++
++ return len;
++}
++
++static ssize_t b3_store_ledfreq(struct device *dev, struct device_attribute *attr,const char *buffer, size_t size)
++{
++
++ b3_data.freq = simple_strtoul(buffer,NULL,0);
++
++ return size;
++}
++
++static ssize_t b3_show_buzzer(struct device *dev, struct device_attribute *attr, char *buffer)
++{
++ ssize_t len = 0;
++
++ len = sprintf (buffer+len, "%u", b3_data.buzz);
++
++ return len;
++}
++
++static ssize_t b3_store_buzzer(struct device *dev, struct device_attribute *attr,const char *buffer, size_t size)
++{
++
++ b3_data.buzz = simple_strtoul(buffer,NULL,0);
++
++ b3_data.buzz = (b3_data.buzz>0) ? BUZZ_ON : BUZZ_OFF;
++
++ if(b3_data.buzz==BUZZ_ON){
++ b3_buzz_on();
++ }else{
++ b3_buzz_off();
++ }
++
++ return size;
++}
++
++static ssize_t b3_show_color(struct device *dev, struct device_attribute *attr, char *buffer)
++{
++ ssize_t len = 0;
++
++ len = sprintf (buffer+len, "%u", b3_data.color);
++
++ return len;
++}
++
++static ssize_t b3_store_color(struct device *dev, struct device_attribute *attr,const char *buffer, size_t size)
++{
++
++ b3_data.color = simple_strtoul(buffer,NULL,0);
++
++ b3_data.color = (b3_data.color>LED_BOOT) ? LED_BOOT : b3_data.color;
++
++ b3_led_color(b3_data.color);
++
++ return size;
++}
++
++static struct gpio bubba_gpios[] = {
++#ifdef CONFIG_BUBBA3_INSTALL
++ { B3_FRONT_LED_RED, GPIOF_OUT_INIT_LOW, "Red LED"},
++ { B3_FRONT_LED_BLUE, GPIOF_OUT_INIT_LOW, "Blue LED"},
++ { B3_FRONT_LED_GREEN, GPIOF_OUT_INIT_HIGH, "Green LED"},
++#else
++ { B3_FRONT_LED_RED, GPIOF_OUT_INIT_HIGH, "Red LED"},
++ { B3_FRONT_LED_BLUE, GPIOF_OUT_INIT_HIGH, "Blue LED"},
++ { B3_FRONT_LED_GREEN, GPIOF_OUT_INIT_LOW, "Green LED"},
++#endif
++ { B3_LED_INTERVAL, GPIOF_OUT_INIT_HIGH, "LED interval"},
++ { B3_BUZZER_ENABLE, GPIOF_OUT_INIT_LOW, "Buzzer"}
++};
++
++static int request_ioresources(void)
++{
++
++ if(gpio_request_array(bubba_gpios, ARRAY_SIZE(bubba_gpios))<0){
++ return -EINVAL;
++ }
++
++ return 0;
++}
++
++DEVICE_ATTR(ledmode, 0644, b3_show_ledmode, b3_store_ledmode);
++DEVICE_ATTR(ledfreq, 0644, b3_show_ledfreq, b3_store_ledfreq);
++DEVICE_ATTR(buzzer, 0644, b3_show_buzzer, b3_store_buzzer);
++DEVICE_ATTR(color, 0644, b3_show_color, b3_store_color);
++
++static int b3_probe(struct platform_device *dev)
++{
++ int ret=0;
++
++ if(request_ioresources()){
++ return -EINVAL;
++ }
++
++ ret = device_create_file(&b3_device->dev, &dev_attr_ledmode);
++ if(ret){
++ return -EINVAL;
++ }
++
++ ret = device_create_file(&b3_device->dev, &dev_attr_ledfreq);
++ if(ret){
++ device_remove_file(&b3_device->dev, &dev_attr_ledmode);
++ return -EINVAL;
++ }
++
++ ret = device_create_file(&b3_device->dev, &dev_attr_buzzer);
++ if(ret){
++ device_remove_file(&b3_device->dev, &dev_attr_ledfreq);
++ device_remove_file(&b3_device->dev, &dev_attr_ledmode);
++ return -EINVAL;
++ }
++
++ ret = device_create_file(&b3_device->dev, &dev_attr_color);
++ if(ret){
++ device_remove_file(&b3_device->dev, &dev_attr_buzzer);
++ device_remove_file(&b3_device->dev, &dev_attr_ledfreq);
++ device_remove_file(&b3_device->dev, &dev_attr_ledmode);
++ return -EINVAL;
++ }
++
++ b3_data.mode = MODE_LIT;
++ b3_data.freq = LED_DEFAULT_FREQ;
++ b3_data.buzz = BUZZ_OFF;
++#ifdef CONFIG_BUBBA3_INSTALL
++ b3_data.color = LED_INSTALL;
++#else
++ b3_data.color = LED_BOOT;
++#endif
++ return ret;
++}
++
++static int b3_remove(struct platform_device *dev)
++{
++
++ device_remove_file (&b3_device->dev, &dev_attr_ledmode);
++ device_remove_file (&b3_device->dev, &dev_attr_ledfreq);
++ device_remove_file(&b3_device->dev, &dev_attr_buzzer);
++ device_remove_file(&b3_device->dev, &dev_attr_color);
++
++ gpio_free_array(bubba_gpios, ARRAY_SIZE(bubba_gpios));
++ return 0;
++}
++
++static int __init bubba3_init(void){
++ int result;
++
++ result = platform_driver_register(&b3_driver);
++ if (result < 0) {
++ printk(KERN_ERR "bubba3: Failed to register driver\n");
++ return result;
++ }
++
++ b3_device = platform_device_alloc(DEVNAME,-1);
++ platform_device_add(b3_device);
++
++ printk(KERN_INFO "BUBBA3: driver ver %s (build %s) loaded\n",ver,build);
++
++ return result;
++
++}
++
++static void __exit bubba3_cleanup(void){
++
++ platform_device_del(b3_device);
++ platform_driver_unregister(&b3_driver);
++
++ printk(KERN_INFO "bubba3 driver removed\n");
++
++}
++/* register init and cleanup functions */
++module_init(bubba3_init);
++module_exit(bubba3_cleanup);
+diff -urNBbd linux-3.1-orig/arch/arm/mach-kirkwood/bubba3.h linux-3.1/arch/arm/mach-kirkwood/bubba3.h
+--- linux-3.1-orig/arch/arm/mach-kirkwood/bubba3.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.1/arch/arm/mach-kirkwood/bubba3.h 2013-07-27 21:43:49.553695615 +0200
+@@ -0,0 +1,41 @@
++/*
++ * (C) Copyright 2010
++ * Excito elektronik i Skåne AB <www.excito.com>
++ * by: Tor Krill <tor@excito.com>
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
++ * MA 02110-1301 USA
++ */
++
++#ifndef __BUBBA3_H
++#define __BUBBA3_H
++
++/*
++ * GPIO definitions
++ */
++#define B3_LED_INTERVAL (37)
++#define B3_FRONT_LED_GREEN (38)
++#define B3_POWER_BUTTON (39)
++#define B3_BUZZER_ENABLE (40)
++#define B3_FRONT_LED_RED (41)
++#define B3_FRONT_LED_BLUE (42)
++#define B3_HW_ID0 (43)
++#define B3_HW_ID1 (44)
++#define B3_HW_ID2 (45)
++#define B3_BUZ_4KHZ (46)
++
++#endif
+diff -urNBbd linux-3.1-orig/arch/arm/mach-kirkwood/bubba3-setup.c linux-3.1/arch/arm/mach-kirkwood/bubba3-setup.c
+--- linux-3.1-orig/arch/arm/mach-kirkwood/bubba3-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.1/arch/arm/mach-kirkwood/bubba3-setup.c 2013-07-27 21:43:49.553695615 +0200
+@@ -0,0 +1,243 @@
++/*
++ * arch/arm/mach-kirkwood/bubba3-setup.c
++ * based on
++ * arch/arm/mach-kirkwood/rd88f6281-setup.c
++ *
++ * For Bubba3 miniserver from Excito
++ *
++ * This file is licensed under the terms of the GNU General Public
++ * License version 2. This program is licensed "as is" without any
++ * warranty of any kind, whether express or implied.
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/physmap.h>
++#include <linux/spi/flash.h>
++#include <linux/spi/spi.h>
++#include <linux/irq.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/input.h>
++#include <linux/gpio_keys.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/mach/time.h>
++#include <mach/kirkwood.h>
++#include <mach/bridge-regs.h>
++#include <plat/time.h>
++#include "common.h"
++#include "mpp.h"
++#include "bubba3.h"
++
++/*****************************************************************************
++ * 2048KB SPI Flash on Boot Device (Numonyx MP25P16)
++ ****************************************************************************/
++
++static struct mtd_partition bubba3_flash_parts[] = {
++ {
++ .name = "u-boot",
++ .size = SZ_512K+SZ_256K,
++ .offset = 0,
++ },
++ {
++ .name = "env",
++ .size = SZ_128K,
++ .offset = MTDPART_OFS_NXTBLK,
++ },
++ {
++ .name = "data",
++ .size = MTDPART_SIZ_FULL,
++ .offset = MTDPART_OFS_NXTBLK,
++ },
++};
++
++static const struct flash_platform_data bubba3_flash = {
++ .type = "m25p16",
++ .name = "spi_flash",
++ .parts = bubba3_flash_parts,
++ .nr_parts = ARRAY_SIZE(bubba3_flash_parts),
++};
++
++static struct spi_board_info __initdata bubba3_spi_slave_info[] = {
++ {
++ .modalias = "m25p80",
++ .platform_data = &bubba3_flash,
++ .irq = -1,
++ .max_speed_hz = 40000000,
++ .bus_num = 0,
++ .chip_select = 0,
++ },
++};
++
++/*****************************************************************************
++ * GPIO and keys
++ ****************************************************************************/
++
++static struct gpio_keys_button bubba3_buttons[] = {
++ [0] = {
++ .code = KEY_POWER,
++ .gpio = B3_POWER_BUTTON,
++ .desc = "Power button",
++ .active_low = 1,
++ },
++};
++
++static struct gpio_keys_platform_data bubba3_button_data = {
++ .buttons = bubba3_buttons,
++ .nbuttons = ARRAY_SIZE(bubba3_buttons),
++};
++
++static struct platform_device bubba3_gpio_buttons = {
++ .name = "gpio-keys",
++ .id = -1,
++ .dev = {
++ .platform_data = &bubba3_button_data,
++ },
++};
++
++
++/*****************************************************************************
++ * Ethernet
++ ****************************************************************************/
++
++static struct mv643xx_eth_platform_data bubba3_ge00_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(0x08),
++ /* in case a hardcoded MAC address is needed uncomment next line */
++ /* .mac_addr = {0x00, 0x0c, 0xc6, 0x76, 0x76, 0x2b}, */
++};
++
++static struct mv643xx_eth_platform_data bubba3_ge01_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(0x18),
++ /* in case a hardcoded MAC address is needed uncomment next line */
++ /* .mac_addr = {0x00, 0x0c, 0xc6, 0x76, 0x76, 0x2c}, */
++};
++
++static struct mv_sata_platform_data bubba3_sata_data = {
++ .n_ports = 2,
++};
++
++/*****************************************************************************
++ * Timer
++ ****************************************************************************/
++
++static void bubba3_timer_init(void)
++{
++ kirkwood_tclk = 166666667;
++ orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
++ IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk);
++}
++
++struct sys_timer bubba3_timer = {
++ .init = bubba3_timer_init,
++};
++
++static unsigned int bubba3_mpp_config[] __initdata = {
++ MPP0_SPI_SCn,
++ MPP1_SPI_MOSI,
++ MPP2_SPI_SCK,
++ MPP3_SPI_MISO,
++ MPP4_NF_IO6,
++ MPP5_NF_IO7,
++ MPP6_SYSRST_OUTn,
++ MPP7_PEX_RST_OUTn,
++ MPP8_TW0_SDA,
++ MPP9_TW0_SCK,
++ MPP10_UART0_TXD,
++ MPP11_UART0_RXD,
++ MPP12_GPO,
++ MPP13_UART1_TXD,
++ MPP14_UART1_RXD,
++ MPP15_SATA0_ACTn,
++ MPP16_SATA1_ACTn,
++ MPP17_SATA0_PRESENTn,
++ MPP18_GPO,
++ MPP19_GPO,
++ MPP20_GE1_TXD0,
++ MPP21_GE1_TXD1,
++ MPP22_GE1_TXD2,
++ MPP23_GE1_TXD3,
++ MPP24_GE1_RXD0,
++ MPP25_GE1_RXD1,
++ MPP26_GE1_RXD2,
++ MPP27_GE1_RXD3,
++ MPP28_GPIO,
++ MPP29_GPIO,
++ MPP30_GE1_RXCTL,
++ MPP31_GE1_RXCLK,
++ MPP32_GE1_TCLKOUT,
++ MPP33_GE1_TXCTL,
++ MPP34_GPIO,
++ MPP35_GPIO,
++ MPP36_GPIO,
++ MPP37_GPIO,
++ MPP38_GPIO,
++ MPP39_GPIO,
++ MPP40_GPIO,
++ MPP41_GPIO,
++ MPP42_GPIO,
++ MPP43_GPIO,
++ MPP44_GPIO,
++ MPP45_GPIO,
++ MPP46_GPIO,
++ MPP47_GPIO,
++ MPP48_GPIO,
++ MPP49_GPIO,
++ 0
++};
++
++static void __init bubba3_init(void)
++{
++ /*
++ * Basic setup. Needs to be called early.
++ */
++ kirkwood_init();
++
++ kirkwood_mpp_conf(bubba3_mpp_config);
++
++ kirkwood_uart0_init();
++
++ spi_register_board_info(bubba3_spi_slave_info,
++ ARRAY_SIZE(bubba3_spi_slave_info));
++ kirkwood_spi_init();
++
++ kirkwood_i2c_init();
++
++ platform_device_register(&bubba3_gpio_buttons);
++
++ /* eth0 */
++ kirkwood_ge00_init(&bubba3_ge00_data);
++
++ /* eth1 */
++ if (gpio_request(28, "PHY2 reset") != 0 ||
++ gpio_direction_input(28) != 0) // high-z
++ printk(KERN_ERR "can't deassert GPIO 28 (PHY2 reset)\n");
++ else
++ kirkwood_ge01_init(&bubba3_ge01_data);
++
++ kirkwood_sata_init(&bubba3_sata_data);
++
++ kirkwood_ehci_init();
++
++}
++
++static int __init bubba3_pci_init(void)
++{
++ if (machine_is_bubba3())
++ kirkwood_pcie_init( KW_PCIE0 | KW_PCIE1 );
++
++ return 0;
++}
++subsys_initcall(bubba3_pci_init);
++
++MACHINE_START(BUBBA3, "BUBBA3 Kirkwood based miniserver")
++ /* Maintainer: Tor Krill <tor@excito.com> */
++ .boot_params = 0x00000100,
++ .init_machine = bubba3_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .timer = &bubba3_timer,
++MACHINE_END
+diff -urNBbd linux-3.1-orig/arch/arm/mach-kirkwood/Kconfig linux-3.1/arch/arm/mach-kirkwood/Kconfig
+--- linux-3.1-orig/arch/arm/mach-kirkwood/Kconfig 2011-10-24 09:10:05.000000000 +0200
++++ linux-3.1/arch/arm/mach-kirkwood/Kconfig 2013-07-27 23:27:52.751097077 +0200
+@@ -88,6 +88,12 @@
+ Say 'Y' here if you want your kernel to support the
+ Marvell OpenRD Ultimate Board.
+
++config MACH_BUBBA3
++ bool "Bubba3 miniserver"
++ help
++ Say 'Y' here if you want your kernel to support the
++ Bubba3 miniserver.
++
+ config MACH_NETSPACE_V2
+ bool "LaCie Network Space v2 NAS Board"
+ help
+diff -urNBbd linux-3.1-orig/arch/arm/mach-kirkwood/Makefile linux-3.1/arch/arm/mach-kirkwood/Makefile
+--- linux-3.1-orig/arch/arm/mach-kirkwood/Makefile 2011-10-24 09:10:05.000000000 +0200
++++ linux-3.1/arch/arm/mach-kirkwood/Makefile 2013-07-27 21:43:49.553695615 +0200
+@@ -17,6 +17,7 @@
+ obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o
+ obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o
+ obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o
++obj-$(CONFIG_MACH_BUBBA3) += bubba3-setup.o bubba3-gpio.o
+ obj-$(CONFIG_MACH_T5325) += t5325-setup.o
+
+ obj-$(CONFIG_CPU_IDLE) += cpuidle.o
diff --git a/core/linux/config b/core/linux/config
index 20f19ce..4840789 100644
--- a/core/linux/config
+++ b/core/linux/config
@@ -316,6 +316,7 @@ CONFIG_MACH_OPENRD=y
CONFIG_MACH_OPENRD_BASE=y
CONFIG_MACH_OPENRD_CLIENT=y
CONFIG_MACH_OPENRD_ULTIMATE=y
+CONFIG_MACH_BUBBA3=y
CONFIG_MACH_NETSPACE_V2=y
CONFIG_MACH_INETSPACE_V2=y
CONFIG_MACH_NETSPACE_MAX_V2=y
@@ -515,13 +516,13 @@ CONFIG_IPV6_ROUTER_PREF=y
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
+CONFIG_IPV6_MIP6=m
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
CONFIG_INET6_XFRM_MODE_TUNNEL=m
CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
CONFIG_IPV6_SIT=m
# CONFIG_IPV6_SIT_6RD is not set
CONFIG_IPV6_NDISC_NODETYPE=y
@@ -687,7 +688,7 @@ CONFIG_NF_NAT_PPTP=m
CONFIG_NF_NAT_H323=m
CONFIG_NF_NAT_SIP=m
CONFIG_IP_NF_MANGLE=m
-# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_RAW=m
@@ -1433,7 +1434,7 @@ CONFIG_I2O_EXT_ADAPTEC=y
CONFIG_NETDEVICES=y
# CONFIG_IFB is not set
# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
+CONFIG_BONDING=m
CONFIG_MACVLAN=m
CONFIG_MACVTAP=m
# CONFIG_EQUALIZER is not set
@@ -1826,7 +1827,22 @@ CONFIG_TOUCHSCREEN_USB_NEXIO=y
CONFIG_TOUCHSCREEN_TSC2007=m
# CONFIG_TOUCHSCREEN_ST1232 is not set
CONFIG_TOUCHSCREEN_TPS6507X=m
-# CONFIG_INPUT_MISC is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_MPU3050 is not set
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_KXTJ9 is not set
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_UINPUT=m
+# CONFIG_INPUT_PCF8574 is not set
+# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
+# CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_CMA3000 is not set
#
# Hardware I/O ports
@@ -2822,7 +2838,7 @@ CONFIG_SND_USB_CAIAQ=m
# CONFIG_SOUND_PRIME is not set
CONFIG_HID_SUPPORT=y
CONFIG_HID=m
-# CONFIG_HIDRAW is not set
+CONFIG_HIDRAW=y
#
# USB Input Devices
@@ -3029,7 +3045,7 @@ CONFIG_USB_SERIAL_MOTOROLA=m
CONFIG_USB_SERIAL_NAVMAN=m
CONFIG_USB_SERIAL_PL2303=m
CONFIG_USB_SERIAL_OTI6858=m
-# CONFIG_USB_SERIAL_QCAUX is not set
+CONFIG_USB_SERIAL_QCAUX=m
CONFIG_USB_SERIAL_QUALCOMM=m
CONFIG_USB_SERIAL_SPCP8X5=m
CONFIG_USB_SERIAL_HP4X=m
@@ -3074,6 +3090,11 @@ CONFIG_USB_SISUSBVGA_CON=y
# CONFIG_USB_TEST is not set
CONFIG_USB_ISIGHTFW=m
# CONFIG_USB_YUREX is not set
+CONFIG_USB_ATM=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_CXACRU=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_XUSBATM=m
# CONFIG_USB_GADGET is not set
#
@@ -3489,7 +3510,10 @@ CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
-# CONFIG_NFS_V4_1 is not set
+CONFIG_NFS_V4_1=y
+CONFIG_PNFS_FILE_LAYOUT=m
+CONFIG_PNFS_BLOCK=m
+CONFIG_ROOT_NFS=y
CONFIG_NFS_FSCACHE=y
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
--
1.8.3.4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment