353 lines
7.0 KiB
C
353 lines
7.0 KiB
C
#ifndef _FEATURE_LIST_H
|
|
#define _FEATURE_LIST_H
|
|
|
|
/*
|
|
This file comes from:
|
|
http://gitorious.org/archos/archos-gpl-gen9-kernel-ics/blobs/raw/master/
|
|
arch/arm/include/asm/feature_list.h
|
|
*/
|
|
|
|
#define FEATURE_LIST_MAGIC 0xFEA01234
|
|
|
|
#define FEATURE_LIST_REV 0x00000001
|
|
|
|
struct feature_tag_header {
|
|
u32 size;
|
|
u32 tag;
|
|
};
|
|
|
|
struct feature_tag_generic {
|
|
u32 vendor;
|
|
u32 product;
|
|
u32 type;
|
|
u32 revision;
|
|
u32 flags;
|
|
};
|
|
|
|
#define FTAG_NONE 0x00000000
|
|
|
|
#define FTAG_CORE 0x00000001
|
|
struct feature_tag_core {
|
|
u32 magic;
|
|
u32 list_revision;
|
|
u32 flags;
|
|
};
|
|
|
|
/* product specific */
|
|
#define FTAG_PRODUCT_NAME 0x00000002
|
|
struct feature_tag_product_name {
|
|
char name[64];
|
|
u32 id;
|
|
};
|
|
#define FTAG_PRODUCT_SERIAL_NUMBER 0x00000003
|
|
struct feature_tag_product_serial {
|
|
u32 serial[4];
|
|
};
|
|
|
|
#define FTAG_PRODUCT_MAC_ADDRESS 0x00000004
|
|
struct feature_tag_product_mac_address {
|
|
u8 addr[6];
|
|
u8 reserved1;
|
|
u8 reserved2;
|
|
};
|
|
|
|
#define FTAG_PRODUCT_OEM 0x00000005
|
|
struct feature_tag_product_oem {
|
|
char name[16];
|
|
u32 id;
|
|
};
|
|
|
|
#define FTAG_PRODUCT_ZONE 0x00000006
|
|
struct feature_tag_product_zone {
|
|
char name[16];
|
|
u32 id;
|
|
};
|
|
|
|
/* board pcb specific */
|
|
#define FTAG_BOARD_PCB_REVISION 0x00000010
|
|
struct feature_tag_board_revision {
|
|
u32 revision;
|
|
};
|
|
|
|
/* clock and ram setup */
|
|
#define FTAG_CLOCK 0x00000011
|
|
struct feature_tag_clock {
|
|
u32 clock;
|
|
};
|
|
|
|
#define FTAG_SDRAM 0x00000012
|
|
struct feature_tag_sdram {
|
|
char vendor[16];
|
|
char product[32];
|
|
u32 type;
|
|
u32 revision;
|
|
u32 flags;
|
|
u32 clock;
|
|
/* custom params */
|
|
u32 param_0;
|
|
u32 param_1;
|
|
u32 param_2;
|
|
u32 param_3;
|
|
u32 param_4;
|
|
u32 param_5;
|
|
u32 param_6;
|
|
u32 param_7;
|
|
};
|
|
|
|
/* PMIC */
|
|
#define FTAG_PMIC 0x00000013
|
|
#define FTAG_PMIC_TPS62361 0x00000001
|
|
struct feature_tag_pmic {
|
|
u32 flags;
|
|
};
|
|
|
|
/* serial port */
|
|
#define FTAG_SERIAL_PORT 0x00000020
|
|
struct feature_tag_serial_port {
|
|
u32 uart_id;
|
|
u32 speed;
|
|
};
|
|
|
|
/* turbo bit */
|
|
#define FTAG_TURBO 0x00000014
|
|
struct feature_tag_turbo {
|
|
u32 flag;
|
|
};
|
|
|
|
/*** features ****/
|
|
#define FTAG_HAS_GPIO_VOLUME_KEYS 0x00010001
|
|
struct feature_tag_gpio_volume_keys {
|
|
u32 gpio_vol_up;
|
|
u32 gpio_vol_down;
|
|
u32 flags;
|
|
};
|
|
|
|
#define FTAG_HAS_ELECTRICAL_SHORTCUT 0x00010002
|
|
#define FTAG_HAS_DCIN 0x00010003
|
|
struct feature_tag_dcin {
|
|
u32 autodetect;
|
|
};
|
|
|
|
/* external screen support */
|
|
#define FTAG_HAS_EXT_SCREEN 0x00010004
|
|
|
|
#define EXT_SCREEN_TYPE_TVOUT 0x00000001
|
|
#define EXT_SCREEN_TYPE_HDMI 0x00000002
|
|
#define EXT_SCREEN_TYPE_VGA 0x00000004
|
|
struct feature_tag_ext_screen {
|
|
u32 type;
|
|
u32 revision;
|
|
};
|
|
|
|
/* wireless lan */
|
|
#define FTAG_HAS_WIFI 0x00010005
|
|
|
|
#define WIFI_TYPE_TIWLAN 0x00000001
|
|
struct feature_tag_wifi {
|
|
u32 vendor;
|
|
u32 product;
|
|
u32 type;
|
|
u32 revision;
|
|
u32 flags;
|
|
};
|
|
|
|
/* bluetooth */
|
|
#define FTAG_HAS_BLUETOOTH 0x00010006
|
|
|
|
#define BLUETOOTH_TYPE_TIWLAN 0x00000001
|
|
struct feature_tag_bluetooth {
|
|
u32 vendor;
|
|
u32 product;
|
|
u32 type;
|
|
u32 revision;
|
|
u32 flags;
|
|
};
|
|
|
|
/* accelerometer */
|
|
#define FTAG_HAS_ACCELEROMETER 0x00010007
|
|
struct feature_tag_accelerometer {
|
|
u32 vendor;
|
|
u32 product;
|
|
u32 type;
|
|
u32 revision;
|
|
u32 flags;
|
|
};
|
|
|
|
/* gyroscope */
|
|
#define FTAG_HAS_GYROSCOPE 0x00010008
|
|
|
|
/* compass */
|
|
#define FTAG_HAS_COMPASS 0x00010009
|
|
|
|
/* gps */
|
|
#define FTAG_HAS_GPS 0x0001000a
|
|
#define GPS_FLAG_DISABLED 0x00000001
|
|
struct feature_tag_gps {
|
|
u32 vendor;
|
|
u32 product;
|
|
u32 revision;
|
|
u32 flags;
|
|
};
|
|
|
|
/* camera */
|
|
#define FTAG_HAS_CAMERA 0x0001000b
|
|
|
|
/* harddisk controller */
|
|
#define FTAG_HAS_HARDDISK_CONTROLLER 0x0001000c
|
|
#define HDCONTROLLER_TYPE_SATA 0x00000001
|
|
struct feature_tag_harddisk_controller {
|
|
u32 vendor;
|
|
u32 product;
|
|
u32 type;
|
|
u32 revision;
|
|
u32 flags;
|
|
};
|
|
|
|
/* harddisk */
|
|
#define FTAG_HAS_HARDDISK 0x0001000d
|
|
|
|
#define HARDDISK_TYPE_SATA 0x00000001
|
|
#define HARDDISK_TYPE_PATA 0x00000002
|
|
struct feature_tag_harddisk {
|
|
u32 vendor;
|
|
u32 product;
|
|
u32 type;
|
|
u32 revision;
|
|
u32 flags;
|
|
};
|
|
|
|
/* touchscreen */
|
|
#define FTAG_HAS_TOUCHSCREEN 0x0001000e
|
|
|
|
#define TOUCHSCREEN_TYPE_CAPACITIVE 0x00000001
|
|
#define TOUCHSCREEN_TYPE_RESISTIVE 0x00000002
|
|
|
|
#define TOUCHSCREEN_FLAG_MULTITOUCH 0x00000001
|
|
struct feature_tag_touchscreen {
|
|
u32 vendor;
|
|
u32 product;
|
|
u32 type;
|
|
u32 revision;
|
|
u32 flags;
|
|
};
|
|
|
|
/* microphone */
|
|
#define FTAG_HAS_MICROPHONE 0x0001000f
|
|
|
|
/* external SDMMC slot */
|
|
#define FTAG_HAS_EXT_MMCSD_SLOT 0x00010010
|
|
#define MMCSD_FLAG_CARDDETECT 0x00000001
|
|
#define MMCSD_FLAG_CARDPREDETECT 0x00000002
|
|
|
|
struct feature_tag_mmcsd {
|
|
u32 width;
|
|
u32 voltagemask;
|
|
u32 revision;
|
|
u32 flags;
|
|
};
|
|
|
|
/* ambient light sensor */
|
|
#define FTAG_HAS_AMBIENT_LIGHT_SENSOR 0x00010011
|
|
|
|
/* proximity sensor */
|
|
#define FTAG_HAS_PROXIMITY_SENSOR 0x00010012
|
|
|
|
/* gps */
|
|
#define FTAG_HAS_GSM 0x00010013
|
|
|
|
/* dect */
|
|
#define FTAG_HAS_DECT 0x00010014
|
|
|
|
/* hsdpa data modem */
|
|
#define FTAG_HAS_HSDPA 0x00010015
|
|
|
|
/* near field communication */
|
|
#define FTAG_HAS_NFC 0x00010016
|
|
|
|
#define FTAG_GPIO_KEYS 0x00010017
|
|
struct feature_tag_gpio_keys {
|
|
#define GPIO_KEYS_LONG_PRESS 0x00010000
|
|
u32 vol_up;
|
|
u32 vol_down;
|
|
u32 ok;
|
|
u32 reserved[5];
|
|
};
|
|
|
|
#define FTAG_SCREEN 0x00010018
|
|
struct feature_tag_screen {
|
|
char vendor[16];
|
|
u32 type;
|
|
u32 revision;
|
|
u32 vcom;
|
|
u32 backlight;
|
|
u32 reserved[5];
|
|
};
|
|
|
|
#define FTAG_WIFI_PA 0x00010019
|
|
struct feature_tag_wifi_pa {
|
|
char vendor[16];
|
|
u32 type;
|
|
};
|
|
|
|
/* loudspeaker */
|
|
#define FTAG_HAS_SPEAKER 0x0001001a
|
|
|
|
#define SPEAKER_FLAG_STEREO 0x00000001
|
|
#define SPEAKER_FLAG_OWN_VOLCTRL 0x00000002
|
|
struct feature_tag_speaker {
|
|
u32 flags;
|
|
};
|
|
|
|
#define FTAG_BATTERY 0x0001001b
|
|
struct feature_tag_battery {
|
|
u32 type;
|
|
};
|
|
#define BATTERY_TYPE_HIGHRS 0x00000000
|
|
#define BATTERY_TYPE_LOWRS 0x00000001
|
|
|
|
|
|
#define feature_tag_next(t) \
|
|
((struct feature_tag *)((u32 *)(t) + (t)->hdr.size))
|
|
#define feature_tag_size(type) \
|
|
((sizeof(struct feature_tag_header) + sizeof(struct type)) >> 2)
|
|
#define for_each_feature_tag(t, base) \
|
|
for (t = base; t->hdr.size; t = feature_tag_next(t))
|
|
|
|
|
|
struct feature_tag {
|
|
struct feature_tag_header hdr;
|
|
union {
|
|
struct feature_tag_core core;
|
|
struct feature_tag_generic generic;
|
|
struct feature_tag_product_name product_name;
|
|
struct feature_tag_product_serial product_serial;
|
|
struct feature_tag_product_oem product_oem;
|
|
struct feature_tag_product_zone product_zone;
|
|
struct feature_tag_product_mac_address mac_address;
|
|
struct feature_tag_board_revision board_revision;
|
|
struct feature_tag_clock clock;
|
|
struct feature_tag_sdram sdram;
|
|
struct feature_tag_pmic pmic;
|
|
struct feature_tag_turbo turbo;
|
|
struct feature_tag_serial_port serial_port;
|
|
struct feature_tag_gpio_volume_keys gpio_volume_keys;
|
|
struct feature_tag_dcin dcin;
|
|
struct feature_tag_ext_screen ext_screen;
|
|
struct feature_tag_wifi wifi;
|
|
struct feature_tag_bluetooth bluetooth;
|
|
struct feature_tag_accelerometer accelerometer;
|
|
struct feature_tag_harddisk_controller harddisk_controller;
|
|
struct feature_tag_harddisk harddisk;
|
|
struct feature_tag_touchscreen touchscreen;
|
|
struct feature_tag_gps gps;
|
|
struct feature_tag_speaker speaker;
|
|
struct feature_tag_mmcsd mmcsd;
|
|
struct feature_tag_gpio_keys gpio_keys;
|
|
struct feature_tag_screen screen;
|
|
struct feature_tag_wifi_pa wifi_pa;
|
|
struct feature_tag_battery battery;
|
|
} u;
|
|
};
|
|
|
|
#endif /* _FEATURE_LIST_H */
|