rename target/linux/generic-2.6 to generic
SVN-Revision: 21952
This commit is contained in:
27
target/linux/generic/files/include/linux/glamo-engine.h
Normal file
27
target/linux/generic/files/include/linux/glamo-engine.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#ifndef __GLAMO_ENGINE_H
|
||||
#define __GLAMO_ENGINE_H
|
||||
|
||||
enum glamo_engine {
|
||||
GLAMO_ENGINE_CAPTURE = 0,
|
||||
GLAMO_ENGINE_ISP = 1,
|
||||
GLAMO_ENGINE_JPEG = 2,
|
||||
GLAMO_ENGINE_MPEG_ENC = 3,
|
||||
GLAMO_ENGINE_MPEG_DEC = 4,
|
||||
GLAMO_ENGINE_LCD = 5,
|
||||
GLAMO_ENGINE_CMDQ = 6,
|
||||
GLAMO_ENGINE_2D = 7,
|
||||
GLAMO_ENGINE_3D = 8,
|
||||
GLAMO_ENGINE_MMC = 9,
|
||||
GLAMO_ENGINE_MICROP0 = 10,
|
||||
GLAMO_ENGINE_RISC = 11,
|
||||
GLAMO_ENGINE_MICROP1_MPEG_ENC = 12,
|
||||
GLAMO_ENGINE_MICROP1_MPEG_DEC = 13,
|
||||
#if 0
|
||||
GLAMO_ENGINE_H264_DEC = 14,
|
||||
GLAMO_ENGINE_RISC1 = 15,
|
||||
GLAMO_ENGINE_SPI = 16,
|
||||
#endif
|
||||
__NUM_GLAMO_ENGINES
|
||||
};
|
||||
|
||||
#endif
|
||||
35
target/linux/generic/files/include/linux/glamofb.h
Normal file
35
target/linux/generic/files/include/linux/glamofb.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef _LINUX_GLAMOFB_H
|
||||
#define _LINUX_GLAMOFB_H
|
||||
|
||||
#include <linux/fb.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
struct glamo_core;
|
||||
struct glamofb_handle;
|
||||
|
||||
struct glamo_fb_platform_data {
|
||||
int width, height;
|
||||
|
||||
int num_modes;
|
||||
struct fb_videomode *modes;
|
||||
|
||||
struct glamo_core *core;
|
||||
};
|
||||
|
||||
int glamofb_cmd_mode(struct glamofb_handle *gfb, int on);
|
||||
int glamofb_cmd_write(struct glamofb_handle *gfb, u_int16_t val);
|
||||
|
||||
#ifdef CONFIG_MFD_GLAMO
|
||||
void glamo_lcm_reset(struct platform_device *pdev, int level);
|
||||
#else
|
||||
#define glamo_lcm_reset(...) do {} while (0)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#define GLAMOFB_ENGINE_ENABLE _IOW('F', 0x1, __u32)
|
||||
#define GLAMOFB_ENGINE_DISABLE _IOW('F', 0x2, __u32)
|
||||
#define GLAMOFB_ENGINE_RESET _IOW('F', 0x3, __u32)
|
||||
|
||||
#endif
|
||||
33
target/linux/generic/files/include/linux/gpio_buttons.h
Normal file
33
target/linux/generic/files/include/linux/gpio_buttons.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Definitions for the GPIO buttons interface driver
|
||||
*
|
||||
* Copyright (C) 2007-2010 Gabor Juhos <juhosg@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 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_ */
|
||||
42
target/linux/generic/files/include/linux/gpio_dev.h
Normal file
42
target/linux/generic/files/include/linux/gpio_dev.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef _GPIO_DEV_H__
|
||||
#define _GPIO_DEV_H__
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* This Linux kernel header is expanded from the original driver
|
||||
* (gpio_dev) by John Crispin. It provides an ioctl based interface to
|
||||
* GPIO pins via the /dev/gpio char device and gpiolib within the kernel.
|
||||
* The third argument to each ioctl is the GPIO pin number.
|
||||
*
|
||||
* This driver has been tested with lk 2.6.31 and works. The original
|
||||
* driver fails quietly with this version. The protocol is now a bit
|
||||
* different: the ioctl(fd, GPIO_REQUEST, <pin>) should be called
|
||||
* after the open("/dev/gpio", O_RDWR) to determine if the <pin> is
|
||||
* already in use. If the ioctl is successful (i.e. returns 0 for not
|
||||
* in use) then the <pin> is claimed by this driver and
|
||||
* ioctl(fd, GPIO_FREE, <pin>) should be called prior to close(fd) .
|
||||
*
|
||||
* See <kernel_source>/Documentation/gpio.txt
|
||||
* Note that kernel designers prefer the use of the sysfs gpio interface.
|
||||
* This char driver is easier to use from code and faster.
|
||||
********************************************************************/
|
||||
|
||||
/* This header can be included in both the user and kernel spaces */
|
||||
/* The _IO macro is defined in sys/ioctl.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)
|
||||
/* Sets the direction out and clears the <pin> (low) */
|
||||
|
||||
#define GPIO_DIR_HIGH _IO(IOC_GPIODEV_MAGIC, 15)
|
||||
/* Sets the direction out and sets the <pin> (high) */
|
||||
#define GPIO_REQUEST _IO(IOC_GPIODEV_MAGIC, 16)
|
||||
#define GPIO_FREE _IO(IOC_GPIODEV_MAGIC, 17)
|
||||
#define GPIO_CAN_SLEEP _IO(IOC_GPIODEV_MAGIC, 18)
|
||||
|
||||
#endif
|
||||
120
target/linux/generic/files/include/linux/myloader.h
Normal file
120
target/linux/generic/files/include/linux/myloader.h
Normal file
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
* Compex's MyLoader specific definitions
|
||||
*
|
||||
* Copyright (C) 2006-2008 Gabor Juhos <juhosg@openwrt.org>
|
||||
*
|
||||
* 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 _MYLOADER_H_
|
||||
#define _MYLOADER_H_
|
||||
|
||||
/* Myloader specific magic numbers */
|
||||
#define MYLO_MAGIC_SYS_PARAMS 0x20021107
|
||||
#define MYLO_MAGIC_PARTITIONS 0x20021103
|
||||
#define MYLO_MAGIC_BOARD_PARAMS 0x20021103
|
||||
|
||||
/* Vendor ID's (seems to be same as the PCI vendor ID's) */
|
||||
#define VENID_COMPEX 0x11F6
|
||||
|
||||
/* Devices based on the ADM5120 */
|
||||
#define DEVID_COMPEX_NP27G 0x0078
|
||||
#define DEVID_COMPEX_NP28G 0x044C
|
||||
#define DEVID_COMPEX_NP28GHS 0x044E
|
||||
#define DEVID_COMPEX_WP54Gv1C 0x0514
|
||||
#define DEVID_COMPEX_WP54G 0x0515
|
||||
#define DEVID_COMPEX_WP54AG 0x0546
|
||||
#define DEVID_COMPEX_WPP54AG 0x0550
|
||||
#define DEVID_COMPEX_WPP54G 0x0555
|
||||
|
||||
/* Devices based on the Atheros AR2317 */
|
||||
#define DEVID_COMPEX_NP25G 0x05E6
|
||||
#define DEVID_COMPEX_WPE53G 0x05DC
|
||||
|
||||
/* Devices based on the Atheros AR71xx */
|
||||
#define DEVID_COMPEX_WP543 0x0640
|
||||
|
||||
/* Devices based on the IXP422 */
|
||||
#define DEVID_COMPEX_WP18 0x047E
|
||||
#define DEVID_COMPEX_NP18A 0x0489
|
||||
|
||||
/* Other devices */
|
||||
#define DEVID_COMPEX_NP26G8M 0x03E8
|
||||
#define DEVID_COMPEX_NP26G16M 0x03E9
|
||||
|
||||
struct mylo_partition {
|
||||
uint16_t flags; /* partition flags */
|
||||
uint16_t type; /* type of the partition */
|
||||
uint32_t addr; /* relative address of the partition from the
|
||||
flash start */
|
||||
uint32_t size; /* size of the partition in bytes */
|
||||
uint32_t param; /* if this is the active partition, the
|
||||
MyLoader load code to this address */
|
||||
};
|
||||
|
||||
#define PARTITION_FLAG_ACTIVE 0x8000 /* this is the active partition,
|
||||
* MyLoader loads firmware from here */
|
||||
#define PARTITION_FLAG_ISRAM 0x2000 /* FIXME: this is a RAM partition? */
|
||||
#define PARTIIION_FLAG_RAMLOAD 0x1000 /* FIXME: load this partition into the RAM? */
|
||||
#define PARTITION_FLAG_PRELOAD 0x0800 /* the partition data preloaded to RAM
|
||||
* before decompression */
|
||||
#define PARTITION_FLAG_LZMA 0x0100 /* partition data compressed by LZMA */
|
||||
#define PARTITION_FLAG_HAVEHDR 0x0002 /* the partition data have a header */
|
||||
|
||||
#define PARTITION_TYPE_FREE 0
|
||||
#define PARTITION_TYPE_USED 1
|
||||
|
||||
#define MYLO_MAX_PARTITIONS 8 /* maximum number of partitions in the
|
||||
partition table */
|
||||
|
||||
struct mylo_partition_table {
|
||||
uint32_t magic; /* must be MYLO_MAGIC_PARTITIONS */
|
||||
uint32_t res0; /* unknown/unused */
|
||||
uint32_t res1; /* unknown/unused */
|
||||
uint32_t res2; /* unknown/unused */
|
||||
struct mylo_partition partitions[MYLO_MAX_PARTITIONS];
|
||||
};
|
||||
|
||||
struct mylo_partition_header {
|
||||
uint32_t len; /* length of the partition data */
|
||||
uint32_t crc; /* CRC value of the partition data */
|
||||
};
|
||||
|
||||
struct mylo_system_params {
|
||||
uint32_t magic; /* must be MYLO_MAGIC_SYS_PARAMS */
|
||||
uint32_t res0;
|
||||
uint32_t res1;
|
||||
uint32_t mylo_ver;
|
||||
uint16_t vid; /* Vendor ID */
|
||||
uint16_t did; /* Device ID */
|
||||
uint16_t svid; /* Sub Vendor ID */
|
||||
uint16_t sdid; /* Sub Device ID */
|
||||
uint32_t rev; /* device revision */
|
||||
uint32_t fwhi;
|
||||
uint32_t fwlo;
|
||||
uint32_t tftp_addr;
|
||||
uint32_t prog_start;
|
||||
uint32_t flash_size; /* size of boot FLASH in bytes */
|
||||
uint32_t dram_size; /* size of onboard RAM in bytes */
|
||||
};
|
||||
|
||||
struct mylo_eth_addr {
|
||||
uint8_t mac[6];
|
||||
uint8_t csum[2];
|
||||
};
|
||||
|
||||
#define MYLO_ETHADDR_COUNT 8 /* maximum number of ethernet address
|
||||
in the board parameters */
|
||||
|
||||
struct mylo_board_params {
|
||||
uint32_t magic; /* must be MYLO_MAGIC_BOARD_PARAMS */
|
||||
uint32_t res0;
|
||||
uint32_t res1;
|
||||
uint32_t res2;
|
||||
struct mylo_eth_addr addr[MYLO_ETHADDR_COUNT];
|
||||
};
|
||||
|
||||
#endif /* _MYLOADER_H_*/
|
||||
165
target/linux/generic/files/include/linux/pwm/pwm.h
Normal file
165
target/linux/generic/files/include/linux/pwm/pwm.h
Normal file
@@ -0,0 +1,165 @@
|
||||
/*
|
||||
* include/linux/pwm.h
|
||||
*
|
||||
* Copyright (C) 2008 Bill Gatliff < bgat@billgatliff.com>
|
||||
*
|
||||
* This program is free software; you may redistribute and/or modify
|
||||
* it under the terms of the GNU General Public License version 2, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||
* USA
|
||||
*/
|
||||
#ifndef __LINUX_PWM_H
|
||||
#define __LINUX_PWM_H
|
||||
|
||||
enum {
|
||||
PWM_CONFIG_DUTY_TICKS = BIT(0),
|
||||
PWM_CONFIG_PERIOD_TICKS = BIT(1),
|
||||
PWM_CONFIG_POLARITY = BIT(2),
|
||||
PWM_CONFIG_START = BIT(3),
|
||||
PWM_CONFIG_STOP = BIT(4),
|
||||
|
||||
PWM_CONFIG_HANDLER = BIT(5),
|
||||
|
||||
PWM_CONFIG_DUTY_NS = BIT(6),
|
||||
PWM_CONFIG_DUTY_PERCENT = BIT(7),
|
||||
PWM_CONFIG_PERIOD_NS = BIT(8),
|
||||
};
|
||||
|
||||
struct pwm_channel;
|
||||
struct work_struct;
|
||||
|
||||
typedef int (*pwm_handler_t)(struct pwm_channel *p, void *data);
|
||||
typedef void (*pwm_callback_t)(struct pwm_channel *p);
|
||||
|
||||
struct pwm_channel_config {
|
||||
int config_mask;
|
||||
unsigned long duty_ticks;
|
||||
unsigned long period_ticks;
|
||||
int polarity;
|
||||
|
||||
pwm_handler_t handler;
|
||||
|
||||
unsigned long duty_ns;
|
||||
unsigned long period_ns;
|
||||
int duty_percent;
|
||||
};
|
||||
|
||||
struct pwm_device {
|
||||
struct list_head list;
|
||||
spinlock_t list_lock;
|
||||
struct device *dev;
|
||||
struct module *owner;
|
||||
struct pwm_channel *channels;
|
||||
|
||||
const char *bus_id;
|
||||
int nchan;
|
||||
|
||||
int (*request) (struct pwm_channel *p);
|
||||
void (*free) (struct pwm_channel *p);
|
||||
int (*config) (struct pwm_channel *p,
|
||||
struct pwm_channel_config *c);
|
||||
int (*config_nosleep)(struct pwm_channel *p,
|
||||
struct pwm_channel_config *c);
|
||||
int (*synchronize) (struct pwm_channel *p,
|
||||
struct pwm_channel *to_p);
|
||||
int (*unsynchronize)(struct pwm_channel *p,
|
||||
struct pwm_channel *from_p);
|
||||
int (*set_callback) (struct pwm_channel *p,
|
||||
pwm_callback_t callback);
|
||||
};
|
||||
|
||||
int pwm_register(struct pwm_device *pwm);
|
||||
int pwm_unregister(struct pwm_device *pwm);
|
||||
|
||||
enum {
|
||||
FLAG_REQUESTED = 0,
|
||||
FLAG_STOP = 1,
|
||||
};
|
||||
|
||||
struct pwm_channel {
|
||||
struct list_head list;
|
||||
struct pwm_device *pwm;
|
||||
const char *requester;
|
||||
pid_t pid;
|
||||
int chan;
|
||||
unsigned long flags;
|
||||
unsigned long tick_hz;
|
||||
|
||||
spinlock_t lock;
|
||||
struct completion complete;
|
||||
|
||||
pwm_callback_t callback;
|
||||
|
||||
struct work_struct handler_work;
|
||||
pwm_handler_t handler;
|
||||
void *handler_data;
|
||||
|
||||
int active_high;
|
||||
unsigned long period_ticks;
|
||||
unsigned long duty_ticks;
|
||||
};
|
||||
|
||||
struct gpio_pwm_platform_data {
|
||||
int gpio;
|
||||
};
|
||||
|
||||
struct pwm_channel *
|
||||
pwm_request(const char *bus_id, int chan,
|
||||
const char *requester);
|
||||
|
||||
void pwm_free(struct pwm_channel *pwm);
|
||||
|
||||
int pwm_config_nosleep(struct pwm_channel *pwm,
|
||||
struct pwm_channel_config *c);
|
||||
|
||||
int pwm_config(struct pwm_channel *pwm,
|
||||
struct pwm_channel_config *c);
|
||||
|
||||
unsigned long pwm_ns_to_ticks(struct pwm_channel *pwm,
|
||||
unsigned long nsecs);
|
||||
|
||||
unsigned long pwm_ticks_to_ns(struct pwm_channel *pwm,
|
||||
unsigned long ticks);
|
||||
|
||||
int pwm_set_period_ns(struct pwm_channel *pwm,
|
||||
unsigned long period_ns);
|
||||
|
||||
unsigned long int pwm_get_period_ns(struct pwm_channel *pwm);
|
||||
|
||||
int pwm_set_duty_ns(struct pwm_channel *pwm,
|
||||
unsigned long duty_ns);
|
||||
|
||||
int pwm_set_duty_percent(struct pwm_channel *pwm,
|
||||
int percent);
|
||||
|
||||
unsigned long pwm_get_duty_ns(struct pwm_channel *pwm);
|
||||
|
||||
int pwm_set_polarity(struct pwm_channel *pwm,
|
||||
int active_high);
|
||||
|
||||
int pwm_start(struct pwm_channel *pwm);
|
||||
|
||||
int pwm_stop(struct pwm_channel *pwm);
|
||||
|
||||
int pwm_set_handler(struct pwm_channel *pwm,
|
||||
pwm_handler_t handler,
|
||||
void *data);
|
||||
|
||||
int pwm_synchronize(struct pwm_channel *p,
|
||||
struct pwm_channel *to_p);
|
||||
|
||||
|
||||
int pwm_unsynchronize(struct pwm_channel *p,
|
||||
struct pwm_channel *from_p);
|
||||
|
||||
|
||||
#endif /* __LINUX_PWM_H */
|
||||
21
target/linux/generic/files/include/linux/rtl8366rb.h
Normal file
21
target/linux/generic/files/include/linux/rtl8366rb.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Platform data definition for the Realtek RTL8366S ethernet switch driver
|
||||
*
|
||||
* Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
|
||||
*
|
||||
* 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 _RTL8366RB_H
|
||||
#define _RTL8366RB_H
|
||||
|
||||
#define RTL8366RB_DRIVER_NAME "rtl8366rb"
|
||||
|
||||
struct rtl8366rb_platform_data {
|
||||
unsigned gpio_sda;
|
||||
unsigned gpio_sck;
|
||||
};
|
||||
|
||||
#endif /* _RTL8366RB_SMI_H */
|
||||
21
target/linux/generic/files/include/linux/rtl8366s.h
Normal file
21
target/linux/generic/files/include/linux/rtl8366s.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Platform data definition for the Realtek RTL8366S ethernet switch driver
|
||||
*
|
||||
* Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
|
||||
*
|
||||
* 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 _RTL8366S_H
|
||||
#define _RTL8366S_H
|
||||
|
||||
#define RTL8366S_DRIVER_NAME "rtl8366s"
|
||||
|
||||
struct rtl8366s_platform_data {
|
||||
unsigned gpio_sda;
|
||||
unsigned gpio_sck;
|
||||
};
|
||||
|
||||
#endif /* _RTL8366_SMI_H */
|
||||
172
target/linux/generic/files/include/linux/switch.h
Normal file
172
target/linux/generic/files/include/linux/switch.h
Normal file
@@ -0,0 +1,172 @@
|
||||
/*
|
||||
* 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,
|
||||
SWITCH_ATTR_CPU_PORT,
|
||||
/* 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;
|
||||
const 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 (*get_port_pvid)(struct switch_dev *dev, int port, int *val);
|
||||
int (*set_port_pvid)(struct switch_dev *dev, int port, int val);
|
||||
int (*apply_config)(struct switch_dev *dev);
|
||||
int (*reset_switch)(struct switch_dev *dev);
|
||||
};
|
||||
|
||||
struct switch_port {
|
||||
u32 id;
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
struct switch_val {
|
||||
const 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, const struct switch_attr *attr, struct switch_val *val);
|
||||
int (*get)(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val);
|
||||
|
||||
/* for driver internal use */
|
||||
int id;
|
||||
int ofs;
|
||||
int max;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user