aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2014-09-26 16:29:52 +1000
committerinmarket <andrewh@inmarket.com.au>2014-09-26 16:29:52 +1000
commit72d04f891b5dd09ec4abdc8073a285b5d513946d (patch)
tree069d4db609c4ab9fa8ff0d234827caf0421d2bd5 /src
parent8b1666e72f327c49b75f1f4f59ba55fa24863b3c (diff)
downloaduGFX-72d04f891b5dd09ec4abdc8073a285b5d513946d.tar.gz
uGFX-72d04f891b5dd09ec4abdc8073a285b5d513946d.tar.bz2
uGFX-72d04f891b5dd09ec4abdc8073a285b5d513946d.zip
Change to GDriver to support an initialisation parameter
Diffstat (limited to 'src')
-rw-r--r--src/gdisp/driver.h2
-rw-r--r--src/gdisp/gdisp_gdisp.c9
-rw-r--r--src/gdriver/gdriver_gdriver.c4
-rw-r--r--src/gdriver/sys_defs.h5
4 files changed, 11 insertions, 9 deletions
diff --git a/src/gdisp/driver.h b/src/gdisp/driver.h
index 98bf64fc..8d22135d 100644
--- a/src/gdisp/driver.h
+++ b/src/gdisp/driver.h
@@ -620,7 +620,7 @@ typedef struct GDISPVMT {
#ifdef __cplusplus
extern "C" {
#endif
- bool_t _gdispInitDriver(GDriver *g, unsigned driverinstance, unsigned systeminstance);
+ bool_t _gdispInitDriver(GDriver *g, void *param, unsigned driverinstance, unsigned systeminstance);
void _gdispPostInitDriver(GDriver *g);
void _gdispDeInitDriver(GDriver *g);
#ifdef __cplusplus
diff --git a/src/gdisp/gdisp_gdisp.c b/src/gdisp/gdisp_gdisp.c
index 74cfb67e..1552cea6 100644
--- a/src/gdisp/gdisp_gdisp.c
+++ b/src/gdisp/gdisp_gdisp.c
@@ -572,7 +572,7 @@ void _gdispInit(void)
static const struct GDriverVMT const * dclist[] = {GDISP_DRIVER_LIST};
for(i = 0; i < sizeof(dclist)/sizeof(dclist[0]); i++)
- gdriverRegister(dclist[i]);
+ gdriverRegister(dclist[i], 0);
}
#elif GDISP_TOTAL_DISPLAYS > 1
{
@@ -580,13 +580,13 @@ void _gdispInit(void)
extern GDriverVMTList GDISPVMT_OnlyOne;
for(i = 0; i < GDISP_TOTAL_DISPLAYS; i++)
- gdriverRegister(GDISPVMT_OnlyOne);
+ gdriverRegister(GDISPVMT_OnlyOne, 0);
}
#else
{
extern GDriverVMTList GDISPVMT_OnlyOne;
- gdriverRegister(GDISPVMT_OnlyOne);
+ gdriverRegister(GDISPVMT_OnlyOne, 0);
}
#endif
@@ -620,9 +620,10 @@ void _gdispDeinit(void)
/* ToDo */
}
-bool_t _gdispInitDriver(GDriver *g, unsigned driverinstance, unsigned systeminstance) {
+bool_t _gdispInitDriver(GDriver *g, void *param, unsigned driverinstance, unsigned systeminstance) {
#define gd ((GDisplay *)g)
bool_t ret;
+ (void) param;
// Intialise fields
gd->systemdisplay = systeminstance;
diff --git a/src/gdriver/gdriver_gdriver.c b/src/gdriver/gdriver_gdriver.c
index 3c17fca0..d44d6f3c 100644
--- a/src/gdriver/gdriver_gdriver.c
+++ b/src/gdriver/gdriver_gdriver.c
@@ -27,7 +27,7 @@ void _gdriverDeinit(void) {
}
-GDriver *gdriverRegister(const GDriverVMT *vmt) {
+GDriver *gdriverRegister(const GDriverVMT *vmt, void *param) {
GDriver * pd;
GDriver * dtail;
unsigned dinstance, sinstance;
@@ -47,7 +47,7 @@ GDriver *gdriverRegister(const GDriverVMT *vmt) {
return 0;
memset(pd, 0, vmt->objsize);
pd->vmt = vmt;
- if (vmt->init && !vmt->init(pd, dinstance, sinstance)) {
+ if (vmt->init && !vmt->init(pd, param, dinstance, sinstance)) {
gfxFree(pd);
return 0;
}
diff --git a/src/gdriver/sys_defs.h b/src/gdriver/sys_defs.h
index d8de25fc..f7bf622e 100644
--- a/src/gdriver/sys_defs.h
+++ b/src/gdriver/sys_defs.h
@@ -67,7 +67,7 @@ typedef struct GDriverVMT {
uint16_t type; // @< What type of driver this is
uint16_t flags; // @< Flags for the driver. Meaning is specific to each driver type.
uint32_t objsize; // @< How big the runtime driver structure is
- bool_t (*init)(GDriver *driver, unsigned driverinstance, unsigned systeminstance); // @< Initialise the driver. Returns TRUE if OK.
+ bool_t (*init)(GDriver *driver, void *param, unsigned driverinstance, unsigned systeminstance); // @< Initialise the driver. Returns TRUE if OK.
// driverinstance is the instance 0..n of this driver.
// systeminstance is the instance 0..n of this type of device.
// The memory allocated is cleared before this call.
@@ -102,8 +102,9 @@ extern "C" {
* @return The runtime driver structure or NULL if it fails.
*
* @param[in] vmt The driver's vmt
+ * @param[in] param An arbitrary paramater passed to the driver init routine.
*/
- GDriver *gdriverRegister(const GDriverVMT *vmt);
+ GDriver *gdriverRegister(const GDriverVMT *vmt, void *param);
/**
* @brief UnRegister a driver instance.