aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic-2.6/files-2.6.28/include
diff options
context:
space:
mode:
authorImre Kaloz <kaloz@openwrt.org>2008-12-08 13:23:09 +0000
committerImre Kaloz <kaloz@openwrt.org>2008-12-08 13:23:09 +0000
commite5206f9754e62fdbdb54d1998e74cf0d921359f6 (patch)
tree0cb3e4ccf62f00cbc257d6b2d4156e02c342b551 /target/linux/generic-2.6/files-2.6.28/include
parentdf84ce6c3a2f713403d8cc3cb679d4619302464c (diff)
downloadmaster-187ad058-e5206f9754e62fdbdb54d1998e74cf0d921359f6.tar.gz
master-187ad058-e5206f9754e62fdbdb54d1998e74cf0d921359f6.tar.bz2
master-187ad058-e5206f9754e62fdbdb54d1998e74cf0d921359f6.zip
add generic 2.6.28 patches
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13546 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic-2.6/files-2.6.28/include')
-rw-r--r--target/linux/generic-2.6/files-2.6.28/include/linux/gpio_buttons.h35
-rw-r--r--target/linux/generic-2.6/files-2.6.28/include/linux/gpio_dev.h11
-rw-r--r--target/linux/generic-2.6/files-2.6.28/include/linux/switch.h168
3 files changed, 214 insertions, 0 deletions
diff --git a/target/linux/generic-2.6/files-2.6.28/include/linux/gpio_buttons.h b/target/linux/generic-2.6/files-2.6.28/include/linux/gpio_buttons.h
new file mode 100644
index 0000000000..f5e6297258
--- /dev/null
+++ b/target/linux/generic-2.6/files-2.6.28/include/linux/gpio_buttons.h
@@ -0,0 +1,35 @@
+/*
+ * Definitions for the GPIO buttons interface driver
+ *
+ * Copyright (C) 2007,2008 Gabor Juhos <juhosg at openwrt.org>
+ *
+ * This file was based on: /include/linux/gpio_keys.h
+ * The original gpio_keys.h seems not to have a license.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#ifndef _GPIO_BUTTONS_H_
+#define _GPIO_BUTTONS_H_
+
+struct gpio_button {
+ int gpio; /* GPIO line number */
+ int active_low;
+ char *desc; /* button description */
+ int type; /* input event type (EV_KEY, EV_SW) */
+ int code; /* input event code (KEY_*, SW_*) */
+ int count;
+ int threshold; /* count threshold */
+};
+
+struct gpio_buttons_platform_data {
+ struct gpio_button *buttons;
+ int nbuttons; /* number of buttons */
+ int poll_interval; /* polling interval */
+};
+
+#endif /* _GPIO_BUTTONS_H_ */
+
diff --git a/target/linux/generic-2.6/files-2.6.28/include/linux/gpio_dev.h b/target/linux/generic-2.6/files-2.6.28/include/linux/gpio_dev.h
new file mode 100644
index 0000000000..3f3c9c772c
--- /dev/null
+++ b/target/linux/generic-2.6/files-2.6.28/include/linux/gpio_dev.h
@@ -0,0 +1,11 @@
+#ifndef _GPIODEV_H__
+#define _GPIODEV_H__
+
+#define IOC_GPIODEV_MAGIC 'B'
+#define GPIO_GET _IO(IOC_GPIODEV_MAGIC, 10)
+#define GPIO_SET _IO(IOC_GPIODEV_MAGIC, 11)
+#define GPIO_CLEAR _IO(IOC_GPIODEV_MAGIC, 12)
+#define GPIO_DIR_IN _IO(IOC_GPIODEV_MAGIC, 13)
+#define GPIO_DIR_OUT _IO(IOC_GPIODEV_MAGIC, 14)
+
+#endif
diff --git a/target/linux/generic-2.6/files-2.6.28/include/linux/switch.h b/target/linux/generic-2.6/files-2.6.28/include/linux/switch.h
new file mode 100644
index 0000000000..9411e84bc2
--- /dev/null
+++ b/target/linux/generic-2.6/files-2.6.28/include/linux/switch.h
@@ -0,0 +1,168 @@
+/*
+ * switch.h: Switch configuration API
+ *
+ * Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
+ *
+ * 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.
+ */
+
+#ifndef __LINUX_SWITCH_H
+#define __LINUX_SWITCH_H
+
+#include <linux/types.h>
+#include <linux/netdevice.h>
+#include <linux/netlink.h>
+#include <linux/genetlink.h>
+#ifndef __KERNEL__
+#include <netlink/netlink.h>
+#include <netlink/genl/genl.h>
+#include <netlink/genl/ctrl.h>
+#else
+#include <net/genetlink.h>
+#endif
+
+/* main attributes */
+enum {
+ SWITCH_ATTR_UNSPEC,
+ /* global */
+ SWITCH_ATTR_TYPE,
+ /* device */
+ SWITCH_ATTR_ID,
+ SWITCH_ATTR_NAME,
+ SWITCH_ATTR_DEV_NAME,
+ SWITCH_ATTR_VLANS,
+ SWITCH_ATTR_PORTS,
+ /* attributes */
+ SWITCH_ATTR_OP_ID,
+ SWITCH_ATTR_OP_TYPE,
+ SWITCH_ATTR_OP_NAME,
+ SWITCH_ATTR_OP_PORT,
+ SWITCH_ATTR_OP_VLAN,
+ SWITCH_ATTR_OP_VALUE_INT,
+ SWITCH_ATTR_OP_VALUE_STR,
+ SWITCH_ATTR_OP_VALUE_PORTS,
+ SWITCH_ATTR_OP_DESCRIPTION,
+ /* port lists */
+ SWITCH_ATTR_PORT,
+ SWITCH_ATTR_MAX
+};
+
+/* commands */
+enum {
+ SWITCH_CMD_UNSPEC,
+ SWITCH_CMD_GET_SWITCH,
+ SWITCH_CMD_NEW_ATTR,
+ SWITCH_CMD_LIST_GLOBAL,
+ SWITCH_CMD_GET_GLOBAL,
+ SWITCH_CMD_SET_GLOBAL,
+ SWITCH_CMD_LIST_PORT,
+ SWITCH_CMD_GET_PORT,
+ SWITCH_CMD_SET_PORT,
+ SWITCH_CMD_LIST_VLAN,
+ SWITCH_CMD_GET_VLAN,
+ SWITCH_CMD_SET_VLAN
+};
+
+/* data types */
+enum switch_val_type {
+ SWITCH_TYPE_UNSPEC,
+ SWITCH_TYPE_INT,
+ SWITCH_TYPE_STRING,
+ SWITCH_TYPE_PORTS,
+ SWITCH_TYPE_NOVAL,
+};
+
+/* port nested attributes */
+enum {
+ SWITCH_PORT_UNSPEC,
+ SWITCH_PORT_ID,
+ SWITCH_PORT_FLAG_TAGGED,
+ SWITCH_PORT_ATTR_MAX
+};
+
+#define SWITCH_ATTR_DEFAULTS_OFFSET 0x1000
+
+#ifdef __KERNEL__
+
+struct switch_dev;
+struct switch_op;
+struct switch_val;
+struct switch_attr;
+struct switch_attrlist;
+
+int register_switch(struct switch_dev *dev, struct net_device *netdev);
+void unregister_switch(struct switch_dev *dev);
+
+struct switch_attrlist {
+ /* filled in by the driver */
+ int n_attr;
+ struct switch_attr *attr;
+};
+
+
+struct switch_dev {
+ int id;
+ void *priv;
+ const char *name;
+
+ /* NB: either devname or netdev must be set */
+ const char *devname;
+ struct net_device *netdev;
+
+ int ports;
+ int vlans;
+ int cpu_port;
+ struct switch_attrlist attr_global, attr_port, attr_vlan;
+
+ spinlock_t lock;
+ struct switch_port *portbuf;
+ struct list_head dev_list;
+ unsigned long def_global, def_port, def_vlan;
+
+ int (*get_vlan_ports)(struct switch_dev *dev, struct switch_val *val);
+ int (*set_vlan_ports)(struct switch_dev *dev, struct switch_val *val);
+ int (*apply_config)(struct switch_dev *dev);
+};
+
+struct switch_port {
+ u32 id;
+ u32 flags;
+};
+
+struct switch_val {
+ struct switch_attr *attr;
+ int port_vlan;
+ int len;
+ union {
+ const char *s;
+ u32 i;
+ struct switch_port *ports;
+ } value;
+};
+
+struct switch_attr {
+ int disabled;
+ int type;
+ const char *name;
+ const char *description;
+
+ int (*set)(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val);
+ int (*get)(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val);
+
+ /* for driver internal use */
+ int id;
+ int ofs;
+ int max;
+};
+
+#endif
+
+#endif