RE: [PATCH 2/7] input: cyapa: add gen6 device module support in driver

2015-06-14 Thread Dudley Du
Jeremiah,

Thanks for the review.

I will correct all the spelling errors you helped pointed out, and I will 
double check the spell, space and black line issues again.

Thanks,
Dudley

> -Original Message-
> From: Jeremiah Mahler [mailto:jmmah...@gmail.com]
> Sent: 2015?6?13? 14:57
> To: Dudley Du
> Cc: dmitry.torok...@gmail.com; mark.rutl...@arm.com; robh...@kernel.org;
> rydb...@euromail.se; ble...@google.com; devicet...@vger.kernel.org;
> linux-in...@vger.kernel.org; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH 2/7] input: cyapa: add gen6 device module support in 
> driver
>
> Dudley,
>
> A few more spelling errors...
>
> On Fri, Jun 12, 2015 at 02:56:33PM +0800, Dudley Du wrote:
> > Based on the cyapa core, add the gen6 trackpad device's basic functions
> > supported, so gen6 trackpad device can work with kernel input system.
> > And also based on the state parse interface, the cyapa driver can
> > automatically determine the attached is gen3, gen5 or gen6 protocol
> > trackpad device, then set the correct protocol to work with the attached
> > trackpad device.
> > TEST=test on Chromebook.
> >
> > Signed-off-by: Dudley Du 
> > ---
> >  drivers/input/mouse/Makefile |   2 +-
> >  drivers/input/mouse/cyapa.c  |  22 ++
> >  drivers/input/mouse/cyapa.h  |  15 +
> >  drivers/input/mouse/cyapa_gen5.c |  69 +++-
> >  drivers/input/mouse/cyapa_gen6.c | 729
> +++
> [...]
> > +static int cyapa_get_pip_fixed_info(struct cyapa *cyapa,
> > +struct pip_fixed_info *pip_info, bool is_bootloader)
> > +{
> > +u8 resp_data[PIP_READ_SYS_INFO_RESP_LENGTH];
> > +int resp_len;
> > +u16 product_family;
> > +int error;
> > +
> > +if (is_bootloader) {
> > +/* Read Bootlaoder Inforamtion to determine Gen5 or Gen6. */
>sp: ^^^
>
> > +resp_len = sizeof(resp_data);
> > +error = cyapa_i2c_pip_cmd_irq_sync(cyapa,
> > +pip_get_bl_info, sizeof(pip_get_bl_info),
> > +resp_data, &resp_len,
> > +2000, cyapa_sort_tsg_pip_bl_resp_data,
> > +false);
> [...]
> > +
> > +product_family = get_unaligned_le16(&resp_data[7]);
> > +if ((product_family & PIP_PRODUCT_FAMILY_MASK) !=
> > +PIP_PRODUCT_FAMILY_TRACKPAD)
> > +return -EINVAL;
> > +
> > +pip_info->family_id = resp_data[19];
> > +pip_info->silicon_id_low = resp_data[21];
> > +pip_info->silicon_id_high = resp_data[22];
> > +
> > +return 0;
> > +
> > +}
> Why the extra blank line?
>
> > +
> > +int cyapa_pip_state_parse(struct cyapa *cyapa, u8 *reg_data, int len)
> > +{
> > +u8 cmd[] = { 0x01, 0x00};
> > +struct pip_fixed_info pip_info;
> > +u8 resp_data[PIP_HID_DESCRIPTOR_SIZE];
> > +int resp_len;
> > +bool is_bootloader;
> > +int error;
> > +
> > +cyapa->state = CYAPA_STATE_NO_DEVICE;
> > +
> > +/* Try to wake from it deep sleep state if it is. */
> > +cyapa_pip_deep_sleep(cyapa, PIP_DEEP_SLEEP_STATE_ON);
> > +
> > +/* Empty the buffer queue to get fresh data with later commands. */
> > +cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL);
> [...]
> > +static ssize_t cyapa_gen6_show_baseline(struct device *dev,
> > +struct device_attribute *attr, char *buf)
> > +{
> > +struct cyapa *cyapa = dev_get_drvdata(dev);
> > +u8 data[GEN6_MAX_RX_NUM];
> > +int data_len;
> > +int size = 0;
> > +int i;
> > +int error;
> > +int resume_error;
> > +
> > +if (!cyapa_is_pip_app_mode(cyapa))
> > +return -EBUSY;
> > +
> > +/* 1. Suspend Scanning*/
>   space? ^^^
>
> > +error = cyapa_pip_suspend_scanning(cyapa);
> > +if (error)
> > +return error;
> > +
> > +/* 2. IDAC and RX Attenuator Calibration Data (Center Frequency). */
> > +data_len = sizeof(data);
> > +error = cyapa_pip_reterive_data_structure(cyapa, 0, data_len,
> > +GEN6_RETERIVE_DATA_ID_RX_ATTENURATOR_IDAC,
> > +data, &data_len);
> > +if (error)
> > +goto resume_scanning;
> > +
> > +size = scnprintf(buf, PAGE_SIZE, "%d %d %d %d %d %d ",
> > +data[0],  /* RX Attenuator Mutal */
> > +data[1],  /* IDAC Mutual */
> > +data[2],  /* RX Attenuator Self RX */
> > +data[3],  /* IDAC Self RX */
> > +data[4],  /* RX Attenuator Self TX */
> > +data[5]  /* IDAC Self TX */
> > +);
> > +
> > +/* 3. Read Attenuator Trim. */
> > +data_len = sizeof(data);
> > +error = cyapa_pip_reterive_data_structure(cyapa, 0, data_len,
> > +GEN6_RETERIVE_DATA_ID_A

Re: [PATCH 2/7] input: cyapa: add gen6 device module support in driver

2015-06-12 Thread Jeremiah Mahler
Dudley,

A few more spelling errors...

On Fri, Jun 12, 2015 at 02:56:33PM +0800, Dudley Du wrote:
> Based on the cyapa core, add the gen6 trackpad device's basic functions
> supported, so gen6 trackpad device can work with kernel input system.
> And also based on the state parse interface, the cyapa driver can
> automatically determine the attached is gen3, gen5 or gen6 protocol
> trackpad device, then set the correct protocol to work with the attached
> trackpad device.
> TEST=test on Chromebook.
> 
> Signed-off-by: Dudley Du 
> ---
>  drivers/input/mouse/Makefile |   2 +-
>  drivers/input/mouse/cyapa.c  |  22 ++
>  drivers/input/mouse/cyapa.h  |  15 +
>  drivers/input/mouse/cyapa_gen5.c |  69 +++-
>  drivers/input/mouse/cyapa_gen6.c | 729 
> +++
[...]
> +static int cyapa_get_pip_fixed_info(struct cyapa *cyapa,
> + struct pip_fixed_info *pip_info, bool is_bootloader)
> +{
> + u8 resp_data[PIP_READ_SYS_INFO_RESP_LENGTH];
> + int resp_len;
> + u16 product_family;
> + int error;
> +
> + if (is_bootloader) {
> + /* Read Bootlaoder Inforamtion to determine Gen5 or Gen6. */
   sp: ^^^

> + resp_len = sizeof(resp_data);
> + error = cyapa_i2c_pip_cmd_irq_sync(cyapa,
> + pip_get_bl_info, sizeof(pip_get_bl_info),
> + resp_data, &resp_len,
> + 2000, cyapa_sort_tsg_pip_bl_resp_data,
> + false);
[...]
> +
> + product_family = get_unaligned_le16(&resp_data[7]);
> + if ((product_family & PIP_PRODUCT_FAMILY_MASK) !=
> + PIP_PRODUCT_FAMILY_TRACKPAD)
> + return -EINVAL;
> +
> + pip_info->family_id = resp_data[19];
> + pip_info->silicon_id_low = resp_data[21];
> + pip_info->silicon_id_high = resp_data[22];
> +
> + return 0;
> +
> +}
Why the extra blank line?

> +
> +int cyapa_pip_state_parse(struct cyapa *cyapa, u8 *reg_data, int len)
> +{
> + u8 cmd[] = { 0x01, 0x00};
> + struct pip_fixed_info pip_info;
> + u8 resp_data[PIP_HID_DESCRIPTOR_SIZE];
> + int resp_len;
> + bool is_bootloader;
> + int error;
> +
> + cyapa->state = CYAPA_STATE_NO_DEVICE;
> +
> + /* Try to wake from it deep sleep state if it is. */
> + cyapa_pip_deep_sleep(cyapa, PIP_DEEP_SLEEP_STATE_ON);
> +
> + /* Empty the buffer queue to get fresh data with later commands. */
> + cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL);
[...]
> +static ssize_t cyapa_gen6_show_baseline(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + struct cyapa *cyapa = dev_get_drvdata(dev);
> + u8 data[GEN6_MAX_RX_NUM];
> + int data_len;
> + int size = 0;
> + int i;
> + int error;
> + int resume_error;
> +
> + if (!cyapa_is_pip_app_mode(cyapa))
> + return -EBUSY;
> +
> + /* 1. Suspend Scanning*/
  space? ^^^

> + error = cyapa_pip_suspend_scanning(cyapa);
> + if (error)
> + return error;
> +
> + /* 2. IDAC and RX Attenuator Calibration Data (Center Frequency). */
> + data_len = sizeof(data);
> + error = cyapa_pip_reterive_data_structure(cyapa, 0, data_len,
> + GEN6_RETERIVE_DATA_ID_RX_ATTENURATOR_IDAC,
> + data, &data_len);
> + if (error)
> + goto resume_scanning;
> +
> + size = scnprintf(buf, PAGE_SIZE, "%d %d %d %d %d %d ",
> + data[0],  /* RX Attenuator Mutal */
> + data[1],  /* IDAC Mutual */
> + data[2],  /* RX Attenuator Self RX */
> + data[3],  /* IDAC Self RX */
> + data[4],  /* RX Attenuator Self TX */
> + data[5]   /* IDAC Self TX */
> + );
> +
> + /* 3. Read Attenuator Trim. */
> + data_len = sizeof(data);
> + error = cyapa_pip_reterive_data_structure(cyapa, 0, data_len,
> + GEN6_RETERIVE_DATA_ID_ATTENURATOR_TRIM,
> + data, &data_len);
> + if (error)
> + goto resume_scanning;
> +
> + /* set attenuator trim values. */
> + for (i = 0; i < data_len; i++)
> + size += scnprintf(buf + size, PAGE_SIZE - size, "%d ", data[i]);
> + size += scnprintf(buf + size, PAGE_SIZE - size, "\n");
> +
> +resume_scanning:
> + /* 4. Resume Scanning*/
  space? ^^^

> + resume_error = cyapa_pip_resume_scanning(cyapa);
> + if (resume_error || error) {
> + memset(buf, 0, PAGE_SIZE);
> + return resume_error ? resume_error : error;
> + }
> +
> + return size;
> +}
> +
> +static int cyapa_gen6_operational_check(struct cyapa *cyapa)
> +{
> + struct device *dev = &cyapa->client->dev;
> + int error;
> +
> + if (cyapa->gen != CYAPA_GEN6)
> + return -ENODEV;
> +