Signed-off-by: Peter Hutterer <[email protected]>
---
src/wcmCommon.c | 4 ++--
src/wcmConfig.c | 2 --
src/wcmISDV4.c | 39 ++++++++++++++++++++++++++++-----------
src/xf86WacomDefs.h | 1 -
4 files changed, 30 insertions(+), 16 deletions(-)
diff --git a/src/wcmCommon.c b/src/wcmCommon.c
index 6e485be..22be0a9 100644
--- a/src/wcmCommon.c
+++ b/src/wcmCommon.c
@@ -1630,10 +1630,10 @@ int wcmInitTablet(LocalDevicePtr local, const char* id,
float version)
}
/* output tablet state as probed */
- xf86Msg(X_PROBED, "%s: Wacom %s tablet speed=%d maxX=%d maxY=%d maxZ=%d
"
+ xf86Msg(X_PROBED, "%s: Wacom %s tablet maxX=%d maxY=%d maxZ=%d "
"resX=%d resY=%d tilt=%s\n",
local->name,
- model->name, common->wcmISDV4Speed,
+ model->name,
common->wcmMaxX, common->wcmMaxY, common->wcmMaxZ,
common->wcmResolX, common->wcmResolY,
HANDLE_TILT(common) ? "enabled" : "disabled");
diff --git a/src/wcmConfig.c b/src/wcmConfig.c
index c46eabf..e5025ea 100644
--- a/src/wcmConfig.c
+++ b/src/wcmConfig.c
@@ -109,8 +109,6 @@ static int wcmAllocate(LocalDevicePtr local)
common->wcmFlags = RAW_FILTERING_FLAG; /* various flags */
common->wcmDevices = priv;
common->wcmProtocolLevel = 4; /* protocol level */
- common->wcmISDV4Speed = 38400; /* serial ISDV4 link speed */
-
common->wcmDevCls = &gWacomUSBDevice; /* device-specific functions */
common->wcmTPCButton =
common->wcmTPCButtonDefault; /* set Tablet PC button on/off */
diff --git a/src/wcmISDV4.c b/src/wcmISDV4.c
index 041e6c8..2b85070 100644
--- a/src/wcmISDV4.c
+++ b/src/wcmISDV4.c
@@ -34,6 +34,10 @@
#define RESET_RELATIVE(ds) do { (ds).relwheel = 0; } while (0)
+typedef struct {
+ int baudrate;
+} wcmISDV4Data;
+
static Bool isdv4Detect(LocalDevicePtr);
static Bool isdv4ParseOptions(LocalDevicePtr local);
static Bool isdv4Init(LocalDevicePtr, char* id, float *version);
@@ -163,6 +167,7 @@ static Bool isdv4ParseOptions(LocalDevicePtr local)
{
WacomDevicePtr priv = (WacomDevicePtr)local->private;
WacomCommonPtr common = priv->common;
+ wcmISDV4Data *isdv4data;
int baud;
baud = xf86SetIntOption(local->options, "BaudRate", 38400);
@@ -171,7 +176,6 @@ static Bool isdv4ParseOptions(LocalDevicePtr local)
{
case 38400:
case 19200:
- common->wcmISDV4Speed = baud;
break;
default:
xf86Msg(X_ERROR, "%s: Illegal speed value "
@@ -180,6 +184,16 @@ static Bool isdv4ParseOptions(LocalDevicePtr local)
return FALSE;
}
+ if (!common->private &&
+ !(common->private = malloc(sizeof(wcmISDV4Data))))
+ {
+ xf86Msg(X_ERROR, "%s: failed to alloc backend-specific data.\n",
+ local->name);
+ }
+
+ isdv4data = common->private;
+ isdv4data->baudrate = baud;
+
return TRUE;
}
@@ -191,11 +205,12 @@ static Bool isdv4Init(LocalDevicePtr local, char* id,
float *version)
{
WacomDevicePtr priv = (WacomDevicePtr)local->private;
WacomCommonPtr common = priv->common;
+ wcmISDV4Data *isdv4data = common->private;
DBG(1, priv, "initializing ISDV4 tablet\n");
/* Initial baudrate is 38400 */
- if (xf86SetSerialSpeed(local->fd, common->wcmISDV4Speed) < 0)
+ if (xf86SetSerialSpeed(local->fd, isdv4data->baudrate) < 0)
return !Success;
if(id)
@@ -217,6 +232,7 @@ static int isdv4Query(LocalDevicePtr local, const char*
query, char* data)
{
WacomDevicePtr priv = (WacomDevicePtr)local->private;
WacomCommonPtr common = priv->common;
+ wcmISDV4Data *isdv4data = common->private;
DBG(1, priv, "Querying ISDV4 tablet\n");
@@ -231,10 +247,10 @@ static int isdv4Query(LocalDevicePtr local, const char*
query, char* data)
if (!wcmWaitForTablet(local, data, ISDV4_PKGLEN_TPCCTL))
{
/* Try 19200 if it is not a touch query */
- if (common->wcmISDV4Speed != 19200 && strcmp(query,
ISDV4_TOUCH_QUERY))
+ if (isdv4data->baudrate != 19200 && strcmp(query,
ISDV4_TOUCH_QUERY))
{
- common->wcmISDV4Speed = 19200;
- if (xf86SetSerialSpeed(local->fd,
common->wcmISDV4Speed) < 0)
+ isdv4data->baudrate = 19200;
+ if (xf86SetSerialSpeed(local->fd, isdv4data->baudrate)
< 0)
return !Success;
return isdv4Query(local, query, data);
}
@@ -246,10 +262,10 @@ static int isdv4Query(LocalDevicePtr local, const char*
query, char* data)
if ( !(data[0] & 0x40) )
{
/* Try 19200 if it is not a touch query */
- if (common->wcmISDV4Speed != 19200 && strcmp(query,
ISDV4_TOUCH_QUERY))
+ if (isdv4data->baudrate != 19200 && strcmp(query,
ISDV4_TOUCH_QUERY))
{
- common->wcmISDV4Speed = 19200;
- if (xf86SetSerialSpeed(local->fd,
common->wcmISDV4Speed) < 0)
+ isdv4data->baudrate = 19200;
+ if (xf86SetSerialSpeed(local->fd, isdv4data->baudrate)
< 0)
return !Success;
return isdv4Query(local, query, data);
}
@@ -297,6 +313,7 @@ static int isdv4GetRanges(LocalDevicePtr local)
char data[BUFFER_SIZE];
WacomDevicePtr priv = (WacomDevicePtr)local->private;
WacomCommonPtr common = priv->common;
+ wcmISDV4Data *isdv4data = common->private;
int ret = Success;
DBG(2, priv, "getting ISDV4 Ranges\n");
@@ -335,12 +352,12 @@ static int isdv4GetRanges(LocalDevicePtr local)
DBG(2, priv, "Pen speed=%d "
"maxX=%d maxY=%d maxZ=%d resX=%d resY=%d \n",
- common->wcmISDV4Speed, common->wcmMaxX, common->wcmMaxY,
+ isdv4data->baudrate, common->wcmMaxX, common->wcmMaxY,
common->wcmMaxZ, common->wcmResolX, common->wcmResolY);
}
/* Touch might be supported. Send a touch query command */
- common->wcmISDV4Speed = 38400;
+ isdv4data->baudrate = 38400;
if (isdv4Query(local, ISDV4_TOUCH_QUERY, data) == Success)
{
ISDV4TouchQueryReply reply;
@@ -430,7 +447,7 @@ static int isdv4GetRanges(LocalDevicePtr local)
DBG(2, priv, "touch speed=%d "
"maxTouchX=%d maxTouchY=%d TouchresX=%d TouchresY=%d
\n",
- common->wcmISDV4Speed, common->wcmMaxTouchX,
+ isdv4data->baudrate, common->wcmMaxTouchX,
common->wcmMaxTouchY, common->wcmTouchResolX,
common->wcmTouchResolY);
}
diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h
index 4c61856..75e1c2c 100644
--- a/src/xf86WacomDefs.h
+++ b/src/xf86WacomDefs.h
@@ -411,7 +411,6 @@ struct _WacomCommonRec
int wcmRotate; /* rotate screen (for TabletPC) */
int wcmThreshold; /* Threshold for button pressure */
WacomChannel wcmChannel[MAX_CHANNELS]; /* channel device state */
- unsigned int wcmISDV4Speed; /* serial ISDV4 link speed */
WacomDeviceClassPtr wcmDevCls; /* device class functions */
WacomModelPtr wcmModel; /* model-specific functions */
--
1.7.0.1
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel