00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _ABLE_CLIB_ABLE_PROPERTIES_H
00030 #define _ABLE_CLIB_ABLE_PROPERTIES_H 1
00031
00032 typedef unsigned int property_id_t;
00033
00034 union property_val_u {
00035 unsigned int u_int;
00036 int s_int;
00037 void *ptr;
00038 char *str;
00039 const char *cstr;
00040 const int *ciptr;
00041 const unsigned int *cuptr;
00042 const void *cptr;
00043 int *iptr;
00044 };
00045
00046 typedef union property_val_u property_val_t;
00047
00048 #define PROPERTY_MAKETYPE(x) ((x) << 28)
00049
00050 #define PROPERTY_TYPE_INT PROPERTY_MAKETYPE(0x00)
00051 #define PROPERTY_TYPE_UINT PROPERTY_MAKETYPE(0x01)
00052 #define PROPERTY_TYPE_STR PROPERTY_MAKETYPE(0x02)
00053 #define PROPERTY_TYPE_PTR PROPERTY_MAKETYPE(0x03)
00054 #define PROPERTY_TYPE_IPTR PROPERTY_MAKETYPE(0x04)
00055
00056 #define PROPERTY_GET_TYPE(x) ((x) & (0xf << 28))
00057
00058 struct property_ent {
00059 property_id_t id;
00060 property_val_t val;
00061 };
00062
00063 #define PROPERTY_ENT_EMPTY { (property_id_t)0, { 0 } }
00064
00065 #define PROPERTY_ENT_ISEMPTY(ent) ((ent)->id == (property_id_t)0)
00066
00067
00068 #define PROPERTY_ENTRY_IPTR(ent, val) { (ent), { .iptr = (val) } }
00069 #define PROPERTY_ENTRY_CSTR(ent, val) { (ent), { .cstr = (val) } }
00070
00071 typedef struct property_ent property_ent_t;
00072
00073
00074
00075 struct property_table {
00076 property_id_t flags;
00077 struct property_ent *properties;
00078 };
00079
00080 #define PROPERTY_TABLE_STATIC (0x000000001)
00081 #define PROPERTY_TABLE_DYNAMIC (0x000000002)
00082
00083 #define PROPERTY_TABLE_END { 0, NULL }
00084
00085 #define PROPERTY_TABLE_ISEND(tab) ((tab)->properties == NULL)
00086
00087 typedef struct property_table property_table_t;
00088
00089
00090
00091 extern property_table_t * property_table_create(void);
00092
00093 extern int property_table_add(property_table_t **table,
00094 int flags, property_ent_t *set);
00095
00096 extern property_ent_t *property_find(property_table_t *table,
00097 property_id_t id, int no);
00098
00099
00100
00101 extern int property_get_int(property_table_t *table, property_id_t id,
00102 int defaultval, int *result);
00103
00104 extern unsigned int property_get_uint(property_table_t *table,
00105 property_id_t id,
00106 unsigned int defaultval, int *result);
00107
00108
00109 extern char * property_get_str(property_table_t *table,
00110 property_id_t id,
00111 char *defaultval, int *result);
00112
00113 extern int * property_get_iptr(property_table_t *table,
00114 property_id_t id,
00115 int *defaultval, int *result);
00116
00117 extern void * property_get_ptr(property_table_t *table,
00118 property_id_t id,
00119 void *defval,
00120 int *result);
00121
00122 #define PROPERTY(type,index) ((type) | (index))
00123
00124 #define SYS_PROPERTY_VERSION PROPERTY(PROPERTY_TYPE_INT, 0x000001)
00125 #define SYS_PROPERTY_LINUXID PROPERTY(PROPERTY_TYPE_INT, 0x000002)
00126 #define SYS_PROPERTY_ARCHNAME PROPERTY(PROPERTY_TYPE_STR, 0x000003)
00127 #define SYS_PROPERTY_MACHNAME PROPERTY(PROPERTY_TYPE_STR, 0x000004)
00128 #define SYS_PROPERTY_RELEASE PROPERTY(PROPERTY_TYPE_INT, 0x000005)
00129 #define SYS_PROPERTY_NETBSDID PROPERTY(PROPERTY_TYPE_INT, 0x000006)
00130 #define SYS_PROPERTY_ABLEID PROPERTY(PROPERTY_TYPE_INT, 0x000007)
00131
00132
00133 #define SYS_PROPERTY_ALIUDMACLK PROPERTY(PROPERTY_TYPE_IPTR, 0x000008)
00134
00135 #define SYS_PROPERTY_MEMCLK PROPERTY(PROPERTY_TYPE_IPTR, 0x00000A)
00136
00137 #define SYS_PROPERTY_FOOTBRIDGE_FCLK PROPERTY(PROPERTY_TYPE_IPTR, 0x09)
00138
00139 #define SYS_PROPERTY_ROMBASE PROPERTY(PROPERTY_TYPE_PTR, 0x00000C)
00140 #define SYS_PROPERTY_ROMMAXSIZE PROPERTY(PROPERTY_TYPE_INT, 0x00000D)
00141
00142
00143 #define SYS_PROPERTY_CLOCK PROPERTY(PROPERTY_TYPE_IPTR, 0x00000E)
00144
00145
00146 #define CPU_PROPERTY_NAME PROPERTY(PROPERTY_TYPE_STR, 0x00000F)
00147 #define CPU_PROPERTY_VERSION PROPERTY(PROPERTY_TYPE_INT, 0x000010)
00148 #define CPU_PROPERTY_SPEEDS PROPERTY(PROPERTY_TYPE_IPTR, 0x000011)
00149 #define CPU_PROPERTY_DEFSPEED PROPERTY(PROPERTY_TYPE_INT, 0x000012)
00150 #define CPU_PROPERTY_IOTIMING PROPERTY(PROPERTY_TYPE_PTR, 0x000013)
00151
00152
00153 #define DRV_PROPERTY_FBMODE PROPERTY(PROPERTY_TYPE_PTR, 0x004000)
00154 #define DRV_PROPERTY_FBHW PROPERTY(PROPERTY_TYPE_PTR, 0x004001)
00155 #define DRV_PROPERTY_FBBACKLIGHT PROPERTY(PROPERTY_TYPE_PTR, 0x004002)
00156 #define DRV_PROPERTY_FBOUTPUT PROPERTY(PROPERTY_TYPE_PTR, 0x004003)
00157
00158
00159 #define S3C24XX_PROPERTY_PLLTAB PROPERTY(PROPERTY_TYPE_PTR, 0x008000)
00160
00161
00162 #define PROPERTY_SHADOW_BASE (0x200)
00163
00164
00165
00166 #define SYS_PROPERTY_STATICPART PROPERTY(PROPERTY_TYPE_PTR, 0x000400)
00167
00168
00169 #endif