Google
  Web www.spinics.net

xorg/xserver - [PATCH] Rework code deferencing return value of LoaderSymbol as a function call.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


>From c900c4787ee0f2b7f1dcb74777f041d66d62e3bf Mon Sep 17 00:00:00 2001
From: Paulo Cesar Pereira de Andrade <pcpa@xxxxxxxxxxxx>
Date: Fri, 1 Feb 2008 03:54:47 -0200
Subject: [PATCH] Rework code deferencing return value of LoaderSymbol as a function call.

This is not a complete patch to enable compiling i2c with hidden symbols.
Instead it corrects problems that are not easily detectable by automated
tools that check for missing symbols.
The patch removes all macros in the format
  define xf86_sym  ((type (*)(argument-list))LoaderSymbol("sym"))
creates a new macro in the format
  define xf86_sym  sym
and ensures sym is a public symbol.
---
 hw/xfree86/i2c/bt829.c   |   22 ++++++++++----------
 hw/xfree86/i2c/bt829.h   |   48 +++++++++++++++++++++++----------------------
 hw/xfree86/i2c/fi1236.c  |   12 +++++-----
 hw/xfree86/i2c/fi1236.h  |   25 ++++++++++++-----------
 hw/xfree86/i2c/i2c_def.h |   10 +--------
 hw/xfree86/i2c/msp3430.c |    8 +++---
 hw/xfree86/i2c/msp3430.h |   21 +++++++++----------
 hw/xfree86/i2c/tda8425.c |    8 +++---
 hw/xfree86/i2c/tda8425.h |   17 +++++++--------
 hw/xfree86/i2c/tda9850.c |   12 +++++-----
 hw/xfree86/i2c/tda9850.h |   25 +++++++++++------------
 hw/xfree86/i2c/tda9885.c |   10 ++++----
 hw/xfree86/i2c/tda9885.h |   21 +++++++++----------
 hw/xfree86/i2c/uda1380.c |   16 +++++++-------
 hw/xfree86/i2c/uda1380.h |   33 +++++++++++++++----------------
 hw/xfree86/i2c/xf86i2c.c |   14 ++++++------
 hw/xfree86/i2c/xf86i2c.h |   24 ++++++++++++++++------
 17 files changed, 163 insertions(+), 163 deletions(-)

diff --git a/hw/xfree86/i2c/bt829.c b/hw/xfree86/i2c/bt829.c
index 3963ecf..5b70587 100644
--- a/hw/xfree86/i2c/bt829.c
+++ b/hw/xfree86/i2c/bt829.c
@@ -456,7 +456,7 @@ static void write_all(BT829Ptr bt)
 /*
  * Public functions
  */
-BT829Ptr bt829_Detect(I2CBusPtr b, I2CSlaveAddr addr)
+_X_EXPORT BT829Ptr bt829_Detect(I2CBusPtr b, I2CSlaveAddr addr)
 {
   BT829Ptr bt;
   I2CByte a;
@@ -542,7 +542,7 @@ BT829Ptr bt829_Detect(I2CBusPtr b, I2CSlaveAddr addr)
   return bt;
 }
 
-int bt829_ATIInit(BT829Ptr bt)
+_X_EXPORT int bt829_ATIInit(BT829Ptr bt)
 {
   bt->code = 1;
   bt->len = 0;
@@ -555,7 +555,7 @@ int bt829_ATIInit(BT829Ptr bt)
   return 0;
 }
 
-int bt829_SetFormat(BT829Ptr bt, CARD8 format)
+_X_EXPORT int bt829_SetFormat(BT829Ptr bt, CARD8 format)
 {
   if ((format < 1) || (format > 7)) return -1;
   if ((BTVERSION <= BT819) &&
@@ -571,7 +571,7 @@ int bt829_SetFormat(BT829Ptr bt, CARD8 format)
   return 0;
 }
 
-int bt829_SetMux(BT829Ptr bt, CARD8 mux)
+_X_EXPORT int bt829_SetMux(BT829Ptr bt, CARD8 mux)
 {
   if ((mux < 1) || (mux > 3)) return -1;
   if (mux == bt->mux) return 0;
@@ -583,7 +583,7 @@ int bt829_SetMux(BT829Ptr bt, CARD8 mux)
   return 0;
 }
 
-void bt829_SetBrightness(BT829Ptr bt, int brightness)
+_X_EXPORT void bt829_SetBrightness(BT829Ptr bt, int brightness)
 {
   brightness = LIMIT(brightness,-1000,999); /* ensure -128 <= brightness <= 127 below */
   brightness = (128*brightness)/1000;
@@ -593,7 +593,7 @@ void bt829_SetBrightness(BT829Ptr bt, int brightness)
   btwrite_bright(bt);
 }
 
-void bt829_SetContrast(BT829Ptr bt, int contrast)
+_X_EXPORT void bt829_SetContrast(BT829Ptr bt, int contrast)
 {
   contrast = LIMIT(contrast,-1000,1000);
   contrast = (216*(contrast+1000))/1000;
@@ -604,7 +604,7 @@ void bt829_SetContrast(BT829Ptr bt, int contrast)
   btwrite_contrast_lo(bt);
 }
 
-void bt829_SetSaturation(BT829Ptr bt, int saturation)
+_X_EXPORT void bt829_SetSaturation(BT829Ptr bt, int saturation)
 {
   CARD16 sat_u, sat_v;
 
@@ -620,7 +620,7 @@ void bt829_SetSaturation(BT829Ptr bt, int saturation)
   btwrite_sat_v_lo(bt);
 }
 
-void bt829_SetTint(BT829Ptr bt, int hue)
+_X_EXPORT void bt829_SetTint(BT829Ptr bt, int hue)
 {
   hue = LIMIT(hue,-1000,999); /* ensure -128 <= hue <= 127 below */
   hue = (128*hue)/1000;
@@ -630,7 +630,7 @@ void bt829_SetTint(BT829Ptr bt, int hue)
   btwrite_hue(bt);
 }
 
-int bt829_SetCaptSize(BT829Ptr bt, int width, int height)
+_X_EXPORT int bt829_SetCaptSize(BT829Ptr bt, int width, int height)
 {
   if ((width > bt->htotal - 2 * HCROP) ||
       (16 * width < bt->htotal - 32 * HCROP)) return -1;
@@ -656,7 +656,7 @@ int bt829_SetCC(BT829Ptr bt) /* FIXME: should take ccmode as a parameter */
   return 0;
 }
 
-void bt829_SetOUT_EN(BT829Ptr bt, BOOL out_en)
+_X_EXPORT void bt829_SetOUT_EN(BT829Ptr bt, BOOL out_en)
 {
   out_en = (out_en != 0);
   if (out_en == bt->out_en) return;
@@ -665,7 +665,7 @@ void bt829_SetOUT_EN(BT829Ptr bt, BOOL out_en)
   btwrite_vpole(bt);
 }
 
-void bt829_SetP_IO(BT829Ptr bt, CARD8 p_io)
+_X_EXPORT void bt829_SetP_IO(BT829Ptr bt, CARD8 p_io)
 {
   if (p_io == bt->p_io) return;
   bt->p_io = p_io;
diff --git a/hw/xfree86/i2c/bt829.h b/hw/xfree86/i2c/bt829.h
index bca9d37..da0a912 100644
--- a/hw/xfree86/i2c/bt829.h
+++ b/hw/xfree86/i2c/bt829.h
@@ -36,12 +36,15 @@ typedef struct {
     	CARD8		svideo_mux;
 } BT829Rec, *BT829Ptr;
 
-BT829Ptr bt829_Detect(I2CBusPtr b, I2CSlaveAddr addr);
+#define xf86_bt829_Detect	bt829_Detect
+_X_EXPORT BT829Ptr bt829_Detect(I2CBusPtr b, I2CSlaveAddr addr);
 
 /* ATI card specific initialization */
 #define BT829_ATI_ADDR_1	0x8A
 #define BT829_ATI_ADDR_2	0x88
-int bt829_ATIInit(BT829Ptr bt);
+
+#define xf86_bt829_ATIInit	bt829_ATIInit
+_X_EXPORT int bt829_ATIInit(BT829Ptr bt);
 
 #define BT829_NTSC		1	/* NTSC-M */
 #define BT829_NTSC_JAPAN	2	/* NTSC-Japan */
@@ -50,22 +53,33 @@ int bt829_ATIInit(BT829Ptr bt);
 #define BT829_PAL_N		5	/* PAL-N */
 #define BT829_SECAM		6	/* SECAM */
 #define BT829_PAL_N_COMB	7	/* PAL-N combination */
-int bt829_SetFormat(BT829Ptr bt, CARD8 format);
+
+#define xf86_bt829_SetFormat	bt829_SetFormat
+_X_EXPORT int bt829_SetFormat(BT829Ptr bt, CARD8 format);
 
 #define BT829_MUX2	1	/* ATI -> composite video */
 #define BT829_MUX0	2	/* ATI -> tv tuner */
 #define BT829_MUX1	3	/* ATI -> s-video */
-int bt829_SetMux(BT829Ptr bt, CARD8 mux);
 
-int bt829_SetCaptSize(BT829Ptr bt, int width, int height);
+#define xf86_bt829_SetMux	bt829_SetMux
+_X_EXPORT int bt829_SetMux(BT829Ptr bt, CARD8 mux);
 
-void bt829_SetBrightness(BT829Ptr bt, int brightness);
-void bt829_SetContrast(BT829Ptr bt, int contrast);
-void bt829_SetSaturation(BT829Ptr bt, int saturation);
-void bt829_SetTint(BT829Ptr bt, int hue);	/* Hue */
+#define xf86_bt829_SetCaptSize		bt829_SetCaptSize
+_X_EXPORT int bt829_SetCaptSize(BT829Ptr bt, int width, int height);
 
-void bt829_SetOUT_EN(BT829Ptr bt, BOOL out_en);	/* VPOLE register */
-void bt829_SetP_IO(BT829Ptr bt, CARD8 p_io);	/* P_IO register */
+#define xf86_bt829_SetBrightness	bt829_SetBrightness
+_X_EXPORT void bt829_SetBrightness(BT829Ptr bt, int brightness);
+#define xf86_bt829_SetContrast		bt829_SetContrast
+_X_EXPORT void bt829_SetContrast(BT829Ptr bt, int contrast);
+#define xf86_bt829_SetSaturation	bt829_SetSaturation
+_X_EXPORT void bt829_SetSaturation(BT829Ptr bt, int saturation);
+#define xf86_bt829_SetTint		bt829_SetTint
+_X_EXPORT void bt829_SetTint(BT829Ptr bt, int hue);	 /* Hue */
+
+#define xf86_bt829_SetOUT_EN		bt829_SetOUT_EN
+_X_EXPORT void bt829_SetOUT_EN(BT829Ptr bt, BOOL out_en);/* VPOLE register */
+#define xf86_bt829_SetP_IO		bt829_SetP_IO
+_X_EXPORT void bt829_SetP_IO(BT829Ptr bt, CARD8 p_io);	 /* P_IO register */
 
 int bt829_SetCC(BT829Ptr bt);
 
@@ -82,16 +96,4 @@ int bt829_SetCC(BT829Ptr bt);
 		"bt829_SetOUT_EN", \
 		"bt829_SetP_IO"
 
-#define xf86_bt829_Detect		((BT829Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("bt829_Detect"))
-#define xf86_bt829_ATIInit		((int (*)(BT829Ptr))LoaderSymbol("bt829_ATIInit"))
-#define xf86_bt829_SetFormat		((int (*)(BT829Ptr, CARD8))LoaderSymbol("bt829_SetFormat"))
-#define xf86_bt829_SetMux		((int (*)(BT829Ptr, CARD8))LoaderSymbol("bt829_SetMux"))
-#define xf86_bt829_SetCaptSize		((int (*)(BT829Ptr, int, int))LoaderSymbol("bt829_SetCaptSize"))
-#define xf86_bt829_SetBrightness	((void (*)(BT829Ptr, int))LoaderSymbol("bt829_SetBrightness"))
-#define xf86_bt829_SetContrast		((void (*)(BT829Ptr, int))LoaderSymbol("bt829_SetContrast"))
-#define xf86_bt829_SetSaturation	((void (*)(BT829Ptr, int))LoaderSymbol("bt829_SetSaturation"))
-#define xf86_bt829_SetTint		((void (*)(BT829Ptr, int))LoaderSymbol("bt829_SetTint"))
-#define xf86_bt829_SetOUT_EN		((void (*)(BT829Ptr, Bool))LoaderSymbol("bt829_SetOUT_EN"))
-#define xf86_bt829_SetP_IO		((void (*)(BT829Ptr, CARD8))LoaderSymbol("bt829_SetP_IO"))
-
 #endif
diff --git a/hw/xfree86/i2c/fi1236.c b/hw/xfree86/i2c/fi1236.c
index 110563e..950bb5b 100644
--- a/hw/xfree86/i2c/fi1236.c
+++ b/hw/xfree86/i2c/fi1236.c
@@ -41,7 +41,7 @@ const FI1236_parameters tuner_parms[NUM_TUNERS] =
 };
 
 
-FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr)
+_X_EXPORT FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr)
 {
    FI1236Ptr f;
    I2CByte a;
@@ -394,7 +394,7 @@ return TUNER_OFF;
 }
 
 /* this function is for external use only */
-int TUNER_get_afc_hint(FI1236Ptr f)
+_X_EXPORT int TUNER_get_afc_hint(FI1236Ptr f)
 {
 if(f->afc_timer_installed)return TUNER_STILL_TUNING;
 return f->last_afc_hint;
@@ -465,7 +465,7 @@ for(i=0;i<3;i++){
 xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: failed to set frequency\n");
 }
 
-void FI1236_set_tuner_type(FI1236Ptr f, int type)
+_X_EXPORT void FI1236_set_tuner_type(FI1236Ptr f, int type)
 {
 f->type=type;
 if(type>=NUM_TUNERS)type = NUM_TUNERS-1;
@@ -532,7 +532,7 @@ void FI1236_tune(FI1236Ptr f, CARD32 frequency)
 				I2C_WriteRead(&(f->d), (I2CByte *)&(f->tuner_data), 4, NULL, 0);
 }
 
-void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency)
+_X_EXPORT void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency)
 {
     if(frequency < f->parm.min_freq) frequency = f->parm.min_freq;
     if(frequency > f->parm.max_freq) frequency = f->parm.max_freq;
@@ -558,7 +558,7 @@ void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency)
 }
 
 
-int FI1236_AFC(FI1236Ptr f)
+_X_EXPORT int FI1236_AFC(FI1236Ptr f)
 {
     #if 0
     xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: f=%p f->count=%d f->original_frequency=%d f->afc_delta=%d\n", f, f->afc_count, f->original_frequency, f->afc_delta);
@@ -601,7 +601,7 @@ int FI1236_AFC(FI1236Ptr f)
     return 0; /* done */
 }
 
-void fi1236_dump_status(FI1236Ptr f)
+_X_EXPORT void fi1236_dump_status(FI1236Ptr f)
 {
 if(f->type==TUNER_TYPE_MT2032){
 	MT2032_dump_status(f);
diff --git a/hw/xfree86/i2c/fi1236.h b/hw/xfree86/i2c/fi1236.h
index eda1c78..d73b205 100644
--- a/hw/xfree86/i2c/fi1236.h
+++ b/hw/xfree86/i2c/fi1236.h
@@ -87,24 +87,25 @@ typedef struct {
 #define TUNER_STILL_TUNING      5
 
 
-FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr);
-void FI1236_set_tuner_type(FI1236Ptr f, int type);
-void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency);
 void FI1236_tune(FI1236Ptr f, CARD32 frequency);
-int FI1236_AFC(FI1236Ptr f);
-int TUNER_get_afc_hint(FI1236Ptr f);
-void fi1236_dump_status(FI1236Ptr f);
 
 #define FI1236SymbolsList  \
 		"Detect_FI1236", \
 		"FI1236_set_tuner_type", \
 		"TUNER_set_frequency"
 
-#define xf86_Detect_FI1236         ((FI1236Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("Detect_FI1236"))
-#define xf86_FI1236_set_tuner_type ((void (*)(FI1236Ptr, int))LoaderSymbol("FI1236_set_tuner_type"))
-#define xf86_TUNER_set_frequency           ((void (*)(FI1236Ptr, CARD32))LoaderSymbol("TUNER_set_frequency"))
-#define xf86_FI1236_AFC           ((int (*)(FI1236Ptr))LoaderSymbol("FI1236_AFC"))
-#define xf86_TUNER_get_afc_hint   ((int (*)(FI1236Ptr))LoaderSymbol("TUNER_get_afc_hint"))
-#define xf86_fi1236_dump_status   ((void (*)(FI1236Ptr))LoaderSymbol("fi1236_dump_status"))
+#define xf86_Detect_FI1236		Detect_FI1236
+_X_EXPORT FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr);
+#define xf86_FI1236_set_tuner_type	FI1236_set_tuner_type
+_X_EXPORT void FI1236_set_tuner_type(FI1236Ptr f, int type);
+#define xf86_TUNER_set_frequency	TUNER_set_frequency
+_X_EXPORT void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency);
+
+#define xf86_FI1236_AFC			FI1236_AFC
+_X_EXPORT int FI1236_AFC(FI1236Ptr f);
+#define xf86_TUNER_get_afc_hint		TUNER_get_afc_hint
+_X_EXPORT int TUNER_get_afc_hint(FI1236Ptr f);
+#define xf86_fi1236_dump_status		fi1236_dump_status
+_X_EXPORT void fi1236_dump_status(FI1236Ptr f);
 
 #endif
diff --git a/hw/xfree86/i2c/i2c_def.h b/hw/xfree86/i2c/i2c_def.h
index 6e119e4..140a071 100644
--- a/hw/xfree86/i2c/i2c_def.h
+++ b/hw/xfree86/i2c/i2c_def.h
@@ -1,14 +1,6 @@
 #ifndef __I2C_DEF_H__
 #define __I2C_DEF_H__
 
-/* the following are a workaround for possible loader bug.. 
-   WATCH function types ! */
-#define CreateI2CBusRec    ((pointer (*)(void))LoaderSymbol("xf86CreateI2CBusRec"))
-#define DestroyI2CBusRec   ((pointer (*)(I2CBusPtr, Bool, Bool))LoaderSymbol("xf86DestroyI2CBusRec"))
-#define I2CBusInit         ((Bool (*)(pointer))LoaderSymbol("xf86I2CBusInit"))
-#define I2C_WriteRead      ((Bool (*)(I2CDevPtr, I2CByte *, int, I2CByte *, int))LoaderSymbol("xf86I2CWriteRead"))
-#define CreateI2CDevRec    ((pointer (*)(void))LoaderSymbol("xf86CreateI2CDevRec"))
-#define I2CDevInit         ((Bool (*)(I2CDevPtr))LoaderSymbol("xf86I2CDevInit"))
-#define I2CProbeAddress    ((Bool (*)(I2CBusPtr,I2CSlaveAddr))LoaderSymbol("xf86I2CProbeAddress"))
+#include "xf86i2c.h"
 
 #endif
diff --git a/hw/xfree86/i2c/msp3430.c b/hw/xfree86/i2c/msp3430.c
index 4bd3a71..e19dda3 100644
--- a/hw/xfree86/i2c/msp3430.c
+++ b/hw/xfree86/i2c/msp3430.c
@@ -129,7 +129,7 @@ void InitMSP3430(MSP3430Ptr m)
 | common functions for all MSP34xx chips 
 |----------------------------------------------------------------*/
 
-MSP3430Ptr DetectMSP3430(I2CBusPtr b, I2CSlaveAddr addr)
+_X_EXPORT MSP3430Ptr DetectMSP3430(I2CBusPtr b, I2CSlaveAddr addr)
 {
    MSP3430Ptr m;
    I2CByte a;
@@ -249,7 +249,7 @@ MSP3430Ptr DetectMSP3430(I2CBusPtr b, I2CSlaveAddr addr)
    return m;  
 }
 
-void ResetMSP3430(MSP3430Ptr m)
+_X_EXPORT void ResetMSP3430(MSP3430Ptr m)
 {
     /* Reset the MSP3430 */
     SetMSP3430Control(m, 0x00, 0x80, 0x00);
@@ -262,7 +262,7 @@ void ResetMSP3430(MSP3430Ptr m)
 	m->volume=0;
 }   
 
-void MSP3430SetVolume (MSP3430Ptr m, CARD8 value)
+_X_EXPORT void MSP3430SetVolume (MSP3430Ptr m, CARD8 value)
 {
     CARD8 result;
 #if 0
@@ -287,7 +287,7 @@ void MSP3430SetVolume (MSP3430Ptr m, CARD8 value)
 }
 
 
-void MSP3430SetSAP (MSP3430Ptr m, int mode)
+_X_EXPORT void MSP3430SetSAP (MSP3430Ptr m, int mode)
 {
 	xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO, "Put actual code to change SAP here\n");
 
diff --git a/hw/xfree86/i2c/msp3430.h b/hw/xfree86/i2c/msp3430.h
index 1cb9b86..07c58d3 100644
--- a/hw/xfree86/i2c/msp3430.h
+++ b/hw/xfree86/i2c/msp3430.h
@@ -92,11 +92,16 @@ typedef struct {
 #define MSPMODE_B			8
 /*----------------------------------------------------------*/
 
-void InitMSP3430(MSP3430Ptr m);
-MSP3430Ptr DetectMSP3430(I2CBusPtr b, I2CSlaveAddr addr);
-void ResetMSP3430(MSP3430Ptr m);
-void MSP3430SetVolume (MSP3430Ptr m, CARD8 value);
-void MSP3430SetSAP (MSP3430Ptr m, int mode);
+#define xf86_InitMSP3430	InitMSP3430
+_X_EXPORT void InitMSP3430(MSP3430Ptr m);
+#define xf86_DetectMSP3430	DetectMSP3430
+_X_EXPORT MSP3430Ptr DetectMSP3430(I2CBusPtr b, I2CSlaveAddr addr);
+#define xf86_ResetMSP3430	ResetMSP3430
+_X_EXPORT void ResetMSP3430(MSP3430Ptr m);
+#define xf86_MSP3430SetVolume	MSP3430SetVolume
+_X_EXPORT void MSP3430SetVolume (MSP3430Ptr m, CARD8 value);
+#define xf86_MSP3430SetSAP	MSP3430SetSAP
+_X_EXPORT void MSP3430SetSAP (MSP3430Ptr m, int mode);
 
 #define MSP3430SymbolsList \
 		"InitMSP3430", \
@@ -105,10 +110,4 @@ void MSP3430SetSAP (MSP3430Ptr m, int mode);
 		"MSP3430SetVolume", \
 		"MSP3430SetSAP"
 
-#define xf86_DetectMSP3430     ((MSP3430Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("DetectMSP3430"))
-#define xf86_ResetMSP3430      ((void (*)(MSP3430Ptr))LoaderSymbol("ResetMSP3430"))
-#define xf86_MSP3430SetVolume  ((void (*)(MSP3430Ptr, CARD8))LoaderSymbol("MSP3430SetVolume"))
-#define xf86_MSP3430SetSAP     ((void (*)(MSP3430Ptr, int))LoaderSymbol("MSP3430SetSAP"))
-#define xf86_InitMSP3430       ((void (*)(MSP3430Ptr))LoaderSymbol("InitMSP3430"))
-
 #endif
diff --git a/hw/xfree86/i2c/tda8425.c b/hw/xfree86/i2c/tda8425.c
index 7631a08..6ca10e3 100644
--- a/hw/xfree86/i2c/tda8425.c
+++ b/hw/xfree86/i2c/tda8425.c
@@ -13,7 +13,7 @@
 		I2C_WriteRead(&(t->d), data, 2, NULL, 0); \
 		}
 
-TDA8425Ptr Detect_tda8425(I2CBusPtr b, I2CSlaveAddr addr, Bool force)
+_X_EXPORT TDA8425Ptr Detect_tda8425(I2CBusPtr b, I2CSlaveAddr addr, Bool force)
 {
   TDA8425Ptr t;
   
@@ -44,7 +44,7 @@ TDA8425Ptr Detect_tda8425(I2CBusPtr b, I2CSlaveAddr addr, Bool force)
   return t;  
 }
 
-Bool tda8425_init(TDA8425Ptr t)
+_X_EXPORT Bool tda8425_init(TDA8425Ptr t)
 {
   t->stereo = 3; 	/* 3 = Spacial 2 = Linear 1 = Pseudo 0 = Forced mono */
   t->v_left = 0xFF; 	/* FF - C0 */
@@ -59,7 +59,7 @@ Bool tda8425_init(TDA8425Ptr t)
   return TRUE;
 }
 
-void tda8425_setaudio(TDA8425Ptr t)
+_X_EXPORT void tda8425_setaudio(TDA8425Ptr t)
 {
     I2CByte data[2];
 
@@ -71,7 +71,7 @@ void tda8425_setaudio(TDA8425Ptr t)
 	    t->mux); 
 }
 
-void tda8425_mute(TDA8425Ptr t, Bool mute)
+_X_EXPORT void tda8425_mute(TDA8425Ptr t, Bool mute)
 {
    t->mute = mute;
    tda8425_setaudio(t);
diff --git a/hw/xfree86/i2c/tda8425.h b/hw/xfree86/i2c/tda8425.h
index 4abb417..afac61b 100644
--- a/hw/xfree86/i2c/tda8425.h
+++ b/hw/xfree86/i2c/tda8425.h
@@ -23,10 +23,14 @@ typedef struct {
    of I2C protocol is not always available. Besides address there is no good
    way to autodetect it so we have to _know_ it is there anyway */
    
-TDA8425Ptr Detect_tda8425(I2CBusPtr b, I2CSlaveAddr addr,Bool force);
-Bool tda8425_init(TDA8425Ptr t);
-void tda8425_setaudio(TDA8425Ptr t);
-void tda8425_mute(TDA8425Ptr t, Bool mute);
+#define xf86_Detect_tda8425	Detect_tda8425
+_X_EXPORT TDA8425Ptr Detect_tda8425(I2CBusPtr b, I2CSlaveAddr addr,Bool force);
+#define xf86_tda8425_init	tda8425_init
+_X_EXPORT Bool tda8425_init(TDA8425Ptr t);
+#define xf86_tda8425_setaudio	tda8425_setaudio
+_X_EXPORT void tda8425_setaudio(TDA8425Ptr t);
+#define xf86_tda8425_mute	tda8425_mute
+_X_EXPORT void tda8425_mute(TDA8425Ptr t, Bool mute);
 
 #define TDA8425SymbolsList  \
 		"Detect_tda8425", \
@@ -34,9 +38,4 @@ void tda8425_mute(TDA8425Ptr t, Bool mute);
 		"tda8425_setaudio", \
 		"tda8425_mute"
 
-#define xf86_Detect_tda8425   ((TDA8425Ptr (*)(I2CBusPtr, I2CSlaveAddr,Bool))LoaderSymbol("Detect_tda8425"))
-#define xf86_tda8425_init     ((Bool (*)(TDA8425Ptr))LoaderSymbol("tda8425_init"))
-#define xf86_tda8425_setaudio ((void (*)(TDA8425Ptr))LoaderSymbol("tda8425_setaudio"))
-#define xf86_tda8425_mute     ((void (*)(TDA8425Ptr, Bool))LoaderSymbol("tda8425_mute"))
-
 #endif
diff --git a/hw/xfree86/i2c/tda9850.c b/hw/xfree86/i2c/tda9850.c
index 5b0c581..7566012 100644
--- a/hw/xfree86/i2c/tda9850.c
+++ b/hw/xfree86/i2c/tda9850.c
@@ -13,7 +13,7 @@
 		I2C_WriteRead(&(t->d), data, 2, NULL, 0); \
 		}
 
-TDA9850Ptr Detect_tda9850(I2CBusPtr b, I2CSlaveAddr addr)
+_X_EXPORT TDA9850Ptr Detect_tda9850(I2CBusPtr b, I2CSlaveAddr addr)
 {
   TDA9850Ptr t;
   I2CByte a;
@@ -53,7 +53,7 @@ TDA9850Ptr Detect_tda9850(I2CBusPtr b, I2CSlaveAddr addr)
   return t;  
 }
 
-Bool tda9850_init(TDA9850Ptr t)
+_X_EXPORT Bool tda9850_init(TDA9850Ptr t)
 {
   t->stereo = 1;
   t->sap = 0;
@@ -63,7 +63,7 @@ Bool tda9850_init(TDA9850Ptr t)
   return TRUE;
 }
 
-void tda9850_setaudio(TDA9850Ptr t)
+_X_EXPORT void tda9850_setaudio(TDA9850Ptr t)
 {
 CARD8 data[2];
 
@@ -83,7 +83,7 @@ if(t->mux==2)
 TDA9850(0x06,(t->stereo<<6)|(t->sap<<7)|(t->mute?0x8:0)|(t->sap_mute?0x10:0x0)); 
 }
 
-void tda9850_mute(TDA9850Ptr t, Bool mute)
+_X_EXPORT void tda9850_mute(TDA9850Ptr t, Bool mute)
 {
 CARD8 data[2];
 
@@ -93,7 +93,7 @@ t->mute = mute;
 TDA9850(0x06,(t->stereo<<6)|(t->sap<<7)|(t->mute?0x8:0x0)|(t->sap_mute?0x10:0x0)); 
 }
 
-void tda9850_sap_mute(TDA9850Ptr t, Bool sap_mute)
+_X_EXPORT void tda9850_sap_mute(TDA9850Ptr t, Bool sap_mute)
 {
 CARD8 data[2];
 
@@ -103,7 +103,7 @@ t->sap_mute = sap_mute;
 TDA9850(0x06,(t->stereo<<6)|(t->sap<<7)|(t->mute?0x8:0x0)|(t->sap_mute?0x10:0x0)); 
 }
 
-CARD16 tda9850_getstatus(TDA9850Ptr t)
+_X_EXPORT CARD16 tda9850_getstatus(TDA9850Ptr t)
 {
 CARD16 status;
 
diff --git a/hw/xfree86/i2c/tda9850.h b/hw/xfree86/i2c/tda9850.h
index d5dec36..6e5b75a 100644
--- a/hw/xfree86/i2c/tda9850.h
+++ b/hw/xfree86/i2c/tda9850.h
@@ -15,12 +15,18 @@ typedef struct {
 
 #define TDA9850_ADDR_1   0xB4
 
-TDA9850Ptr Detect_tda9850(I2CBusPtr b, I2CSlaveAddr addr);
-Bool tda9850_init(TDA9850Ptr t);
-void tda9850_setaudio(TDA9850Ptr t);
-void tda9850_mute(TDA9850Ptr t, Bool mute);
-void tda9850_sap_mute(TDA9850Ptr t, Bool sap_mute);
-CARD16 tda9850_getstatus(TDA9850Ptr t);
+#define xf86_Detect_tda9850	Detect_tda9850
+_X_EXPORT TDA9850Ptr Detect_tda9850(I2CBusPtr b, I2CSlaveAddr addr);
+#define xf86_tda9850_init	tda9850_init
+_X_EXPORT Bool tda9850_init(TDA9850Ptr t);
+#define xf86_tda9850_setaudio	tda9850_setaudio
+_X_EXPORT void tda9850_setaudio(TDA9850Ptr t);
+#define xf86_tda9850_mute	tda9850_mute
+_X_EXPORT void tda9850_mute(TDA9850Ptr t, Bool mute);
+#define xf86_tda9850_sap_mute	tda9850_sap_mute
+_X_EXPORT void tda9850_sap_mute(TDA9850Ptr t, Bool sap_mute);
+#define xf86_tda9850_getstatus	tda9850_getstatus
+_X_EXPORT CARD16 tda9850_getstatus(TDA9850Ptr t);
 
 #define TDA9850SymbolsList  \
 		"Detect_tda9850", \
@@ -29,11 +35,4 @@ CARD16 tda9850_getstatus(TDA9850Ptr t);
 		"tda9850_mute", \
 		"tda9850_sap_mute"
 
-#define xf86_Detect_tda9850       ((TDA9850Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("Detect_tda9850"))
-#define xf86_tda9850_init         ((Bool (*)(TDA9850Ptr))LoaderSymbol("tda9850_init"))
-#define xf86_tda9850_setaudio     ((void (*)(TDA9850Ptr))LoaderSymbol("tda9850_setaudio"))
-#define xf86_tda9850_mute         ((void (*)(TDA9850Ptr, Bool))LoaderSymbol("tda9850_mute"))
-#define xf86_tda9850_sap_mute     ((void (*)(TDA9850Ptr, Bool))LoaderSymbol("tda9850_sap_mute"))
-#define xf86_tda9850_getstatus    ((CARD16 (*)(TDA9850Ptr))LoaderSymbol("tda9850_getstatus"))
-
 #endif
diff --git a/hw/xfree86/i2c/tda9885.c b/hw/xfree86/i2c/tda9885.c
index 4147dfd..ad5aad1 100644
--- a/hw/xfree86/i2c/tda9885.c
+++ b/hw/xfree86/i2c/tda9885.c
@@ -8,7 +8,7 @@
 #include "i2c_def.h"
 
 
-TDA9885Ptr Detect_tda9885(I2CBusPtr b, I2CSlaveAddr addr)
+_X_EXPORT TDA9885Ptr Detect_tda9885(I2CBusPtr b, I2CSlaveAddr addr)
 {
   TDA9885Ptr t;
   I2CByte a;
@@ -51,13 +51,13 @@ TDA9885Ptr Detect_tda9885(I2CBusPtr b, I2CSlaveAddr addr)
   return t;  
 }
 
-Bool tda9885_init(TDA9885Ptr t)
+_X_EXPORT Bool tda9885_init(TDA9885Ptr t)
 {
   t->forced_mute_audio=1;
   return TRUE;
 }
 
-void tda9885_getstatus(TDA9885Ptr t)
+_X_EXPORT void tda9885_getstatus(TDA9885Ptr t)
 {
 CARD8 value;
 
@@ -69,7 +69,7 @@ t->vif_level=(value >>6) & 1;
 t->afc_win=(value >> 7)&1;
 }
 
-void tda9885_setparameters(TDA9885Ptr t)
+_X_EXPORT void tda9885_setparameters(TDA9885Ptr t)
 {
 CARD8 data[4];
 
@@ -95,7 +95,7 @@ I2C_WriteRead(&(t->d), data, 4, NULL, 0);
 xf86DrvMsg(t->d.pI2CBus->scrnIndex,X_INFO,"TDA9885 setparam: B data: %x, C data: %x, E data: %x\n", data[1], data[2], data[3]);
 }
 
-void tda9885_dumpstatus(TDA9885Ptr t)
+_X_EXPORT void tda9885_dumpstatus(TDA9885Ptr t)
 {
 xf86DrvMsg(t->d.pI2CBus->scrnIndex,X_INFO,"TDA9885 status: after_reset=%d afc_status=%d (%3.1f kHz off) fm_carrier=%d vif_level=%d afc_win=%d %s\n",
 		t->after_reset, t->afc_status, 
diff --git a/hw/xfree86/i2c/tda9885.h b/hw/xfree86/i2c/tda9885.h
index 46ae9fc..131c982 100644
--- a/hw/xfree86/i2c/tda9885.h
+++ b/hw/xfree86/i2c/tda9885.h
@@ -39,11 +39,16 @@ typedef struct {
 #define TDA9885_ADDR_3   0x96
 #define TDA9885_ADDR_4   0x94
 
-TDA9885Ptr Detect_tda9885(I2CBusPtr b, I2CSlaveAddr addr);
-Bool tda9885_init(TDA9885Ptr t);
-void tda9885_setparameters(TDA9885Ptr t);
-void tda9885_getstatus(TDA9885Ptr t);
-void tda9885_dumpstatus(TDA9885Ptr t);
+#define xf86_Detect_tda9885		Detect_tda9885
+_X_EXPORT TDA9885Ptr Detect_tda9885(I2CBusPtr b, I2CSlaveAddr addr);
+#define xf86_tda9885_init		tda9885_init
+_X_EXPORT Bool tda9885_init(TDA9885Ptr t);
+#define xf86_tda9885_setparameters	tda9885_setparameters
+_X_EXPORT void tda9885_setparameters(TDA9885Ptr t);
+#define xf86_tda9885_getstatus		tda9885_getstatus
+_X_EXPORT void tda9885_getstatus(TDA9885Ptr t);
+#define xf86_tda9885_dumpstatus		tda9885_dumpstatus
+_X_EXPORT void tda9885_dumpstatus(TDA9885Ptr t);
 
 #define TDA9885SymbolsList  \
 		"Detect_tda9885", \
@@ -51,10 +56,4 @@ void tda9885_dumpstatus(TDA9885Ptr t);
 		"tda9885_setaudio", \
 		"tda9885_mute"
 
-#define xf86_Detect_tda9885       ((TDA9885Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("Detect_tda9885"))
-#define xf86_tda9885_init         ((Bool (*)(TDA9885Ptr))LoaderSymbol("tda9885_init"))
-#define xf86_tda9885_setparameters     ((void (*)(TDA9885Ptr))LoaderSymbol("tda9885_setparameters"))
-#define xf86_tda9885_getstatus    ((void (*)(TDA9885Ptr))LoaderSymbol("tda9885_getstatus"))
-#define xf86_tda9885_dumpstatus    ((void (*)(TDA9885Ptr))LoaderSymbol("tda9885_dumpstatus"))
-
 #endif
diff --git a/hw/xfree86/i2c/uda1380.c b/hw/xfree86/i2c/uda1380.c
index defda3c..deb4bc9 100644
--- a/hw/xfree86/i2c/uda1380.c
+++ b/hw/xfree86/i2c/uda1380.c
@@ -31,7 +31,7 @@
 #include "uda1380.h"
 #include "i2c_def.h"
 
-UDA1380Ptr Detect_uda1380(I2CBusPtr b, I2CSlaveAddr addr)
+_X_EXPORT UDA1380Ptr Detect_uda1380(I2CBusPtr b, I2CSlaveAddr addr)
 {
 	UDA1380Ptr t;
 	I2CByte a;
@@ -74,7 +74,7 @@ UDA1380Ptr Detect_uda1380(I2CBusPtr b, I2CSlaveAddr addr)
 	return t;  
 }
 
-Bool uda1380_init(UDA1380Ptr t)
+_X_EXPORT Bool uda1380_init(UDA1380Ptr t)
 {
 	CARD8 data[3];
 	CARD16 tmp;
@@ -109,7 +109,7 @@ Bool uda1380_init(UDA1380Ptr t)
 	return TRUE;
 }
 
-void uda1380_shutdown(UDA1380Ptr t)
+_X_EXPORT void uda1380_shutdown(UDA1380Ptr t)
 {
 	CARD8 data[3];
 	Bool ret;
@@ -123,7 +123,7 @@ void uda1380_shutdown(UDA1380Ptr t)
 		xf86DrvMsg(t->d.pI2CBus->scrnIndex,X_INFO,"UDA1380 failed to shutdown\n");
 }
 
-void uda1380_setvolume(UDA1380Ptr t, INT32 value)
+_X_EXPORT void uda1380_setvolume(UDA1380Ptr t, INT32 value)
 {
 	CARD8 data[3];
 	/*
@@ -143,7 +143,7 @@ void uda1380_setvolume(UDA1380Ptr t, INT32 value)
 		xf86DrvMsg(t->d.pI2CBus->scrnIndex,X_INFO,"UDA1380 failed to set volume\n");
 }
 
-void uda1380_mute(UDA1380Ptr t, Bool mute)
+_X_EXPORT void uda1380_mute(UDA1380Ptr t, Bool mute)
 {
 	CARD8 data[3];
 	Bool ret;
@@ -170,14 +170,14 @@ void uda1380_mute(UDA1380Ptr t, Bool mute)
 	}
 }
 
-void uda1380_getstatus(UDA1380Ptr t)
+_X_EXPORT void uda1380_getstatus(UDA1380Ptr t)
 {
 }
 
-void uda1380_setparameters(UDA1380Ptr t)
+_X_EXPORT void uda1380_setparameters(UDA1380Ptr t)
 {
 }
 
-void uda1380_dumpstatus(UDA1380Ptr t)
+_X_EXPORT void uda1380_dumpstatus(UDA1380Ptr t)
 {
 }
diff --git a/hw/xfree86/i2c/uda1380.h b/hw/xfree86/i2c/uda1380.h
index e671d66..035447f 100644
--- a/hw/xfree86/i2c/uda1380.h
+++ b/hw/xfree86/i2c/uda1380.h
@@ -44,14 +44,22 @@ typedef struct {
 #define UDA1380_ADDR_1   0x30
 #define UDA1380_ADDR_2   0x34
 
-UDA1380Ptr Detect_uda1380(I2CBusPtr b, I2CSlaveAddr addr);
-Bool uda1380_init(UDA1380Ptr t);
-void uda1380_shutdown(UDA1380Ptr t);
-void uda1380_setvolume(UDA1380Ptr t, INT32);
-void uda1380_mute(UDA1380Ptr t, Bool);
-void uda1380_setparameters(UDA1380Ptr t);
-void uda1380_getstatus(UDA1380Ptr t);
-void uda1380_dumpstatus(UDA1380Ptr t);
+#define xf86_Detect_uda1380		Detect_uda1380
+_X_EXPORT UDA1380Ptr Detect_uda1380(I2CBusPtr b, I2CSlaveAddr addr);
+#define xf86_uda1380_init		uda1380_init
+_X_EXPORT Bool uda1380_init(UDA1380Ptr t);
+#define xf86_uda1380_shutdown		uda1380_shutdown
+_X_EXPORT void uda1380_shutdown(UDA1380Ptr t);
+#define xf86_uda1380_setvolume		uda1380_setvolume
+_X_EXPORT void uda1380_setvolume(UDA1380Ptr t, INT32);
+#define xf86_uda1380_mute		uda1380_mute
+_X_EXPORT void uda1380_mute(UDA1380Ptr t, Bool);
+#define xf86_uda1380_setparameters	uda1380_setparameters
+_X_EXPORT void uda1380_setparameters(UDA1380Ptr t);
+#define xf86_uda1380_getstatus		uda1380_getstatus
+_X_EXPORT void uda1380_getstatus(UDA1380Ptr t);
+#define xf86_uda1380_dumpstatus		uda1380_dumpstatus
+_X_EXPORT void uda1380_dumpstatus(UDA1380Ptr t);
 
 #define UDA1380SymbolsList  \
 		"Detect_uda1380", \
@@ -63,13 +71,4 @@ void uda1380_dumpstatus(UDA1380Ptr t);
 		"uda1380_getstatus", \
 		"uda1380_dumpstatus"
 
-#define xf86_Detect_uda1380       ((UDA1380Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("Detect_uda1380"))
-#define xf86_uda1380_init         ((Bool (*)(UDA1380Ptr))LoaderSymbol("uda1380_init"))
-#define xf86_uda1380_shutdown     ((void (*)(UDA1380Ptr))LoaderSymbol("uda1380_shutdown"))
-#define xf86_uda1380_setvolume         ((void (*)(UDA1380Ptr, CARD16))LoaderSymbol("uda1380_setvolume"))
-#define xf86_uda1380_mute         ((void (*)(UDA1380Ptr, Bool))LoaderSymbol("uda1380_mute"))
-#define xf86_uda1380_setparameters     ((void (*)(UDA1380Ptr))LoaderSymbol("uda1380_setparameters"))
-#define xf86_uda1380_getstatus    ((void (*)(UDA1380Ptr))LoaderSymbol("uda1380_getstatus"))
-#define xf86_uda1380_dumpstatus    ((void (*)(UDA1380Ptr))LoaderSymbol("uda1380_dumpstatus"))
-
 #endif
diff --git a/hw/xfree86/i2c/xf86i2c.c b/hw/xfree86/i2c/xf86i2c.c
index 5cc83fa..7581ebd 100644
--- a/hw/xfree86/i2c/xf86i2c.c
+++ b/hw/xfree86/i2c/xf86i2c.c
@@ -382,7 +382,7 @@ I2CAddress(I2CDevPtr d, I2CSlaveAddr addr)
  * Don't expect a read- or write-only device will respond otherwise.
  */
 
-Bool
+_X_EXPORT Bool
 xf86I2CProbeAddress(I2CBusPtr b, I2CSlaveAddr addr)
 {
     int r;
@@ -463,7 +463,7 @@ I2CWriteRead(I2CDevPtr d,
 
 /* wrapper - for compatibility and convinience */
 
-Bool
+_X_EXPORT Bool
 xf86I2CWriteRead(I2CDevPtr d,
 		 I2CByte *WriteBuffer, int nWrite,
 		 I2CByte *ReadBuffer,  int nRead) 
@@ -619,7 +619,7 @@ xf86I2CWriteVec(I2CDevPtr d, I2CByte *vec, int nValues)
  * the least significant bit, indicating a read or write access, to zero.
  */
 
-I2CDevPtr
+_X_EXPORT I2CDevPtr
 xf86CreateI2CDevRec(void) 
 {
     return xcalloc(1, sizeof(I2CDevRec));
@@ -664,7 +664,7 @@ xf86DestroyI2CDevRec(I2CDevPtr d, Bool unalloc)
  * the bus-wide defaults. The function returns TRUE on success.
  */
 
-Bool
+_X_EXPORT Bool
 xf86I2CDevInit(I2CDevPtr d) 
 {
     I2CBusPtr b;
@@ -714,7 +714,7 @@ static I2CBusPtr I2CBusList;
  * with safe defaults.
  */
 
-I2CBusPtr
+_X_EXPORT I2CBusPtr
 xf86CreateI2CBusRec(void) 
 {
     I2CBusPtr b;
@@ -740,7 +740,7 @@ xf86CreateI2CBusRec(void)
  * first, passing down the <unalloc> option.
  */
 
-void
+_X_EXPORT void
 xf86DestroyI2CBusRec(I2CBusPtr b, Bool unalloc, Bool devs_too) 
 {
     if (b) {
@@ -787,7 +787,7 @@ xf86DestroyI2CBusRec(I2CBusPtr b, Bool unalloc, Bool devs_too)
  * At this point there won't be any traffic on the I2C bus.
  */
 
-Bool
+_X_EXPORT Bool
 xf86I2CBusInit(I2CBusPtr b) 
 {
     /* I2C buses must be identified by a unique scrnIndex 
diff --git a/hw/xfree86/i2c/xf86i2c.h b/hw/xfree86/i2c/xf86i2c.h
index 76d2ebf..8705e67 100644
--- a/hw/xfree86/i2c/xf86i2c.h
+++ b/hw/xfree86/i2c/xf86i2c.h
@@ -49,9 +49,13 @@ typedef struct _I2CBusRec {
 		                   I2CByte *ReadBuffer,  int nRead);
 } I2CBusRec;
 
-I2CBusPtr 	xf86CreateI2CBusRec(void);
-void      	xf86DestroyI2CBusRec(I2CBusPtr pI2CBus, Bool unalloc, Bool devs_too);
-Bool      	xf86I2CBusInit(I2CBusPtr pI2CBus);
+#define CreateI2CBusRec		xf86CreateI2CBusRec
+_X_EXPORT I2CBusPtr xf86CreateI2CBusRec(void);
+#define DestroyI2CBusRec	xf86DestroyI2CBusRec
+_X_EXPORT void xf86DestroyI2CBusRec(I2CBusPtr pI2CBus, Bool unalloc, Bool devs_too);
+#define I2CBusInit		xf86I2CBusInit
+_X_EXPORT Bool xf86I2CBusInit(I2CBusPtr pI2CBus);
+
 I2CBusPtr 	xf86I2CFindBus(int scrnIndex, char *name);
 int		xf86I2CGetScreenBuses(int scrnIndex, I2CBusPtr **pppI2CBus);
 
@@ -72,17 +76,23 @@ typedef struct _I2CDevRec {
     DevUnion		DriverPrivate;
 } I2CDevRec;
 
-I2CDevPtr 	xf86CreateI2CDevRec(void);
+#define CreateI2CDevRec		xf86CreateI2CDevRec
+_X_EXPORT I2CDevPtr xf86CreateI2CDevRec(void);
 void      	xf86DestroyI2CDevRec(I2CDevPtr pI2CDev, Bool unalloc);
-Bool      	xf86I2CDevInit(I2CDevPtr pI2CDev);
+#define I2CDevInit		xf86I2CDevInit
+_X_EXPORT Bool	xf86I2CDevInit(I2CDevPtr pI2CDev);
 I2CDevPtr 	xf86I2CFindDev(I2CBusPtr, I2CSlaveAddr);
 
 /* See descriptions of these functions in xf86i2c.c */
 
-Bool	  	xf86I2CProbeAddress(I2CBusPtr pI2CBus, I2CSlaveAddr);
-Bool 		xf86I2CWriteRead(I2CDevPtr d, I2CByte *WriteBuffer, int nWrite,
+#define I2CProbeAddress		xf86I2CProbeAddress
+_X_EXPORT Bool	xf86I2CProbeAddress(I2CBusPtr pI2CBus, I2CSlaveAddr);
+
+#define		I2C_WriteRead xf86I2CWriteRead
+_X_EXPORT Bool	xf86I2CWriteRead(I2CDevPtr d, I2CByte *WriteBuffer, int nWrite,
 		                   I2CByte *ReadBuffer,  int nRead);
 #define 	xf86I2CRead(d, rb, nr) xf86I2CWriteRead(d, NULL, 0, rb, nr)
+
 Bool 		xf86I2CReadStatus(I2CDevPtr d, I2CByte *pbyte);
 Bool 		xf86I2CReadByte(I2CDevPtr d, I2CByte subaddr, I2CByte *pbyte);
 Bool 		xf86I2CReadBytes(I2CDevPtr d, I2CByte subaddr, I2CByte *pbyte, int n);
-- 
1.5.3.2

_______________________________________________
xorg mailing list
xorg@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/xorg

[X Forum]     [Devices]     [XFree86]     [XFree86 Newbie]     [Site Home]     [IETF Annouce]     [Security]     [Fontconfig]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Video for Linux]     [Linux RAID]     [Linux Resources]

Powered by Linux