Add support for Ed Wildgoose's alix platform driver plus my enhancement to add 
GPIO soft button support.

Redux: fix parameters for gpio_keys, add hotplug button script.

Signed-off-by: Philip Prindeville <[email protected]>


Index: target/linux/generic/patches-2.6.39/105-alix_platform2.patch
===================================================================
--- target/linux/generic/patches-2.6.39/105-alix_platform2.patch        
(revision 0)
+++ target/linux/generic/patches-2.6.39/105-alix_platform2.patch        
(revision 0)
@@ -0,0 +1,106 @@
+--- a/arch/x86/platform/geode/alix.c   2011-08-13 15:51:30.892956346 -0600
++++ b/arch/x86/platform/geode/alix.c   2011-08-13 16:14:58.082329961 -0600
+@@ -6,6 +6,7 @@
+  *
+  * Copyright (C) 2008 Constantin Baranov <[email protected]>
+  * Copyright (C) 2011 Ed Wildgoose <[email protected]>
++ *                and Philip Prindeville <[email protected]>
+  *
+  * TODO: There are large similarities with leds-net5501.c
+  * by Alessandro Zummo <[email protected]>
+@@ -24,14 +25,48 @@
+ #include <linux/leds.h>
+ #include <linux/platform_device.h>
+ #include <linux/gpio.h>
++#include <linux/input.h>
++#include <linux/gpio_keys.h>
+ 
+ #include <asm/geode.h>
+ 
++#define BIOS_SIGNATURE_TINYBIOS       0x000f0000
++#define BIOS_SIGNATURE_COREBOOT       0x00000050
++#define BIOS_REGION_SIZE              0x00010000
++
++static int model = 0;
++
+ static int force = 0;
+ module_param(force, bool, 0444);
+ /* FIXME: Award bios is not automatically detected as Alix platform */
+ MODULE_PARM_DESC(force, "Force detection as ALIX.2/ALIX.3 platform");
+ 
++static struct gpio_keys_button alix_gpio_buttons[] = {
++      {
++              .code = KEY_RESTART,
++              .gpio = 24,
++              .active_low = 1,
++              .desc = "Reset button",
++              .type = EV_KEY,
++              .wakeup = 0,
++              .debounce_interval = 100,
++              .can_disable = 0,
++      }
++};
++static struct gpio_keys_platform_data alix_buttons_data = {
++      .buttons = alix_gpio_buttons,
++      .nbuttons = ARRAY_SIZE(alix_gpio_buttons),
++      .poll_interval = 20,
++};
++
++static struct platform_device alix_buttons_dev = {
++      .name = "gpio-polled-keys",
++      .id = 1,
++      .dev = {
++              .platform_data = &alix_buttons_data,
++      }
++};
++
+ static struct gpio_led alix_leds[] = {
+       {
+               .name = "alix:1",
+@@ -64,17 +98,22 @@
+       .dev.platform_data = &alix_leds_data,
+ };
+ 
++static struct __initdata platform_device *alix_devs[] = {
++      &alix_buttons_dev,
++      &alix_leds_dev,
++};
++
+ static void __init register_alix(void)
+ {
+       /* Setup LED control through leds-gpio driver */
+-      platform_device_register(&alix_leds_dev);
++      platform_add_devices(alix_devs, ARRAY_SIZE(alix_devs));
+ }
+ 
+ static int __init alix_present(unsigned long bios_phys,
+                               const char *alix_sig,
+                               size_t alix_sig_len)
+ {
+-      const size_t bios_len = 0x00010000;
++      const size_t bios_len = BIOS_REGION_SIZE;
+       const char *bios_virt;
+       const char *scan_end;
+       const char *p;
+@@ -109,7 +148,9 @@
+                       *a = '\0';
+ 
+               tail = p + alix_sig_len;
+-              if ((tail[0] == '2' || tail[0] == '3')) {
++              if ((tail[0] == '2' || tail[0] == '3' || tail[0] == '6')) {
++                      model = tail[0] - '0';
++
+                       printk(KERN_INFO
+                              "%s: system is recognized as \"%s\"\n",
+                              KBUILD_MODNAME, name);
+@@ -128,8 +169,8 @@
+       if (!is_geode())
+               return 0;
+ 
+-      if (alix_present(0xf0000, tinybios_sig, sizeof(tinybios_sig) - 1) ||
+-          alix_present(0x500, coreboot_sig, sizeof(coreboot_sig) - 1))
++      if (alix_present(BIOS_SIGNATURE_TINYBIOS, tinybios_sig, 
sizeof(tinybios_sig) - 1) ||
++          alix_present(BIOS_SIGNATURE_COREBOOT, coreboot_sig, 
sizeof(coreboot_sig) - 1))
+               register_alix();
+ 
+       return 0;
Index: target/linux/x86/alix2/base-files/etc/hotplug.d/button/50-reboot
===================================================================
--- target/linux/x86/alix2/base-files/etc/hotplug.d/button/50-reboot    
(revision 0)
+++ target/linux/x86/alix2/base-files/etc/hotplug.d/button/50-reboot    
(revision 0)
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+logger -t button -p daemon.info "$BUTTON/$ACTION"
+
+case "$BUTTON/$ACTION" in
+
+reset/released)
+  reboot -f
+  ;;
+
+esac
+
+exit 0

Property changes on: 
target/linux/x86/alix2/base-files/etc/hotplug.d/button/50-reboot
___________________________________________________________________
Added: svn:executable
   + *

Index: target/linux/x86/alix2/base-files/etc/config/system
===================================================================
--- target/linux/x86/alix2/base-files/etc/config/system (revision 0)
+++ target/linux/x86/alix2/base-files/etc/config/system (revision 0)
@@ -0,0 +1,26 @@
+config system
+       option hostname OpenWrt
+       option timezone UTC
+
+config rdate
+       option interface        wan
+
+config led
+       option default  1
+       option name     LAN
+       option sysfs    'alix:1'
+       option trigger  netdev
+       option mode     'tx rx'
+       option dev      'br-lan'
+
+config led
+       option default  1
+       option name     WiFi
+       option sysfs    'alix:2'
+       option trigger  'phy0tpt'
+
+config led
+       option default  0
+       option name     Heartbeat
+       option sysfs    'alix:3'
+       option trigger  'heartbeat'
Index: target/linux/x86/alix2/target.mk
===================================================================
--- target/linux/x86/alix2/target.mk    (revision 27984)
+++ target/linux/x86/alix2/target.mk    (working copy)
@@ -15,7 +15,8 @@
                        kmod-cfg80211 kmod-mac80211 \
                        kmod-mppe kmod-pppoe kmod-pppo2ltp \
                        kmod-ath kmod-ath5k kmod-ath9k \
-                       kmod-leds-gpio kmod-input-gpio-buttons \
+                       kmod-leds-gpio kmod-input-gpio-keys-polled \
+                       kmod-button-hotplug \
                        kmod-ledtrig-heartbeat kmod-ledtrig-gpio \
                        kmod-ledtrig-netdev kmod-ledtrig-netfilter \
                        kmod-cpu-msr \
Index: target/linux/x86/config-default
===================================================================
--- target/linux/x86/config-default     (revision 27984)
+++ target/linux/x86/config-default     (working copy)
@@ -452,3 +452,4 @@
 # CONFIG_ZONE_DMA32 is not set
 # CONFIG_BATTERY_BQ20Z75 is not set
 # CONFIG_TRANSPARENT_HUGEPAGE is not set
+# CONFIG_ALIX is not set
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to