Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 306610
b: refs/heads/master
c: d3132c5
h: refs/heads/master
v: v3
  • Loading branch information
Tai-hwa Liang authored and Dmitry Torokhov committed May 11, 2012
1 parent 8550a81 commit 94262da
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9ac7b1a36c729ce88eee7370da3c9992d7b40590
refs/heads/master: d3132c5c95507d570987712d037d184c637171bb
34 changes: 30 additions & 4 deletions trunk/drivers/input/mouse/sentelic.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
#define GET_ABS_Y(packet) ((packet[2] << 2) | (packet[3] & 0x03))

/** Driver version. */
static const char fsp_drv_ver[] = "1.0.0-K";
static const char fsp_drv_ver[] = "1.1.0-K";

/*
* Make sure that the value being sent to FSP will not conflict with
Expand Down Expand Up @@ -303,6 +303,27 @@ static int fsp_get_revision(struct psmouse *psmouse, int *rev)
return 0;
}

static int fsp_get_sn(struct psmouse *psmouse, int *sn)
{
int v0, v1, v2;
int rc = -EIO;

/* production number since Cx is available at: 0x0b40 ~ 0x0b42 */
if (fsp_page_reg_write(psmouse, FSP_PAGE_0B))
goto out;
if (fsp_reg_read(psmouse, FSP_REG_SN0, &v0))
goto out;
if (fsp_reg_read(psmouse, FSP_REG_SN1, &v1))
goto out;
if (fsp_reg_read(psmouse, FSP_REG_SN2, &v2))
goto out;
*sn = (v0 << 16) | (v1 << 8) | v2;
rc = 0;
out:
fsp_page_reg_write(psmouse, FSP_PAGE_DEFAULT);
return rc;
}

static int fsp_get_buttons(struct psmouse *psmouse, int *btn)
{
static const int buttons[] = {
Expand Down Expand Up @@ -1000,16 +1021,21 @@ static int fsp_reconnect(struct psmouse *psmouse)
int fsp_init(struct psmouse *psmouse)
{
struct fsp_data *priv;
int ver, rev;
int ver, rev, sn = 0;
int error;

if (fsp_get_version(psmouse, &ver) ||
fsp_get_revision(psmouse, &rev)) {
return -ENODEV;
}
if (ver >= FSP_VER_STL3888_C0) {
/* firmware information is only available since C0 */
fsp_get_sn(psmouse, &sn);
}

psmouse_info(psmouse, "Finger Sensing Pad, hw: %d.%d.%d, sw: %s\n",
ver >> 4, ver & 0x0F, rev, fsp_drv_ver);
psmouse_info(psmouse,
"Finger Sensing Pad, hw: %d.%d.%d, sn: %x, sw: %s\n",
ver >> 4, ver & 0x0F, rev, sn, fsp_drv_ver);

psmouse->private = priv = kzalloc(sizeof(struct fsp_data), GFP_KERNEL);
if (!priv)
Expand Down
8 changes: 8 additions & 0 deletions trunk/drivers/input/mouse/sentelic.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@
#define FSP_BIT_SWC1_GST_GRP1 BIT(6)
#define FSP_BIT_SWC1_BX_COMPAT BIT(7)

#define FSP_PAGE_0B (0x0b)
#define FSP_PAGE_82 (0x82)
#define FSP_PAGE_DEFAULT FSP_PAGE_82

#define FSP_REG_SN0 (0x40)
#define FSP_REG_SN1 (0x41)
#define FSP_REG_SN2 (0x42)

/* Finger-sensing Pad packet formating related definitions */

/* absolute packet type */
Expand Down

0 comments on commit 94262da

Please sign in to comment.