linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] driver: input: touchscreen: modify Raydium i2c touchscreen driver
@ 2021-04-15  8:58 simba.hsu
  2021-04-15 16:05 ` Raul Rangel
  2021-04-15 19:17 ` Dmitry Torokhov
  0 siblings, 2 replies; 4+ messages in thread
From: simba.hsu @ 2021-04-15  8:58 UTC (permalink / raw)
  To: dmitry.torokhov, furquan, seanpaul, rrangel, simba.hsu
  Cc: jeffrey.lin, KP.li, linux-input, linux-kernel, simba.hsu

This path makes auto-update available when IC's status is
Recovery mode.

Signed-off-by: simba.hsu@raydium.corp-partner.google.com
Change-Id: I5ae54896a201b949eba7514500a7e75574f5726b
---
 drivers/input/touchscreen/raydium_i2c_ts.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/input/touchscreen/raydium_i2c_ts.c b/drivers/input/touchscreen/raydium_i2c_ts.c
index 444479ef699e..a97403c55f75 100644
--- a/drivers/input/touchscreen/raydium_i2c_ts.c
+++ b/drivers/input/touchscreen/raydium_i2c_ts.c
@@ -298,6 +298,7 @@ static int raydium_i2c_query_ts_BL_info(struct raydium_data *ts)
 					 0x10, 0xc0, 0x01, 0x00, 0x04, 0x00};
 	int error;
 	u8 rbuf[5] = {0, 0, 0, 0, 0};
+	u32 tmpdata = 0;
 
 	error = raydium_i2c_send(client,
 				 RM_CMD_BOOT_WRT, get_hwid, sizeof(get_hwid));
@@ -315,7 +316,8 @@ static int raydium_i2c_query_ts_BL_info(struct raydium_data *ts)
 	error = raydium_i2c_read(client,
 				 RM_CMD_BOOT_CHK, rbuf, sizeof(rbuf));
 	if (!error) {
-		ts->info.hw_ver = cpu_to_le32(rbuf[1]<<24|rbuf[2]<<16|rbuf[3]<<8|rbuf[4]);
+		tmpdata = (rbuf[1]<<24|rbuf[2]<<16|rbuf[3]<<8|rbuf[4]);
+		ts->info.hw_ver = cpu_to_le32(tmpdata);
 		dev_err(&client->dev, "HWID %08X\n", ts->info.hw_ver);
 	} else {
 		ts->info.hw_ver = cpu_to_le32(0xffffffffUL);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] driver: input: touchscreen: modify Raydium i2c touchscreen driver
  2021-04-15  8:58 [PATCH] driver: input: touchscreen: modify Raydium i2c touchscreen driver simba.hsu
@ 2021-04-15 16:05 ` Raul Rangel
  2021-04-15 19:17 ` Dmitry Torokhov
  1 sibling, 0 replies; 4+ messages in thread
From: Raul Rangel @ 2021-04-15 16:05 UTC (permalink / raw)
  To: simba.hsu
  Cc: Dmitry Torokhov, Furquan Shaikh, Sean Paul, simba.hsu,
	jeffrey.lin, KP.li, linux-input, linux-kernel

On Thu, Apr 15, 2021 at 2:58 AM simba.hsu
<simba.hsu@raydium.corp-partner.google.com> wrote:
>
> This path makes auto-update available when IC's status is
> Recovery mode.
>
> Signed-off-by: simba.hsu@raydium.corp-partner.google.com
> Change-Id: I5ae54896a201b949eba7514500a7e75574f5726b
> ---
>  drivers/input/touchscreen/raydium_i2c_ts.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/input/touchscreen/raydium_i2c_ts.c b/drivers/input/touchscreen/raydium_i2c_ts.c
> index 444479ef699e..a97403c55f75 100644
> --- a/drivers/input/touchscreen/raydium_i2c_ts.c
> +++ b/drivers/input/touchscreen/raydium_i2c_ts.c
> @@ -298,6 +298,7 @@ static int raydium_i2c_query_ts_BL_info(struct raydium_data *ts)
>                                          0x10, 0xc0, 0x01, 0x00, 0x04, 0x00};
>         int error;
>         u8 rbuf[5] = {0, 0, 0, 0, 0};
> +       u32 tmpdata = 0;
>
>         error = raydium_i2c_send(client,
>                                  RM_CMD_BOOT_WRT, get_hwid, sizeof(get_hwid));
> @@ -315,7 +316,8 @@ static int raydium_i2c_query_ts_BL_info(struct raydium_data *ts)
>         error = raydium_i2c_read(client,
>                                  RM_CMD_BOOT_CHK, rbuf, sizeof(rbuf));
>         if (!error) {
> -               ts->info.hw_ver = cpu_to_le32(rbuf[1]<<24|rbuf[2]<<16|rbuf[3]<<8|rbuf[4]);
> +               tmpdata = (rbuf[1]<<24|rbuf[2]<<16|rbuf[3]<<8|rbuf[4]);
Can you use be32_to_cpup instead?

> +               ts->info.hw_ver = cpu_to_le32(tmpdata);
>                 dev_err(&client->dev, "HWID %08X\n", ts->info.hw_ver);
>         } else {
>                 ts->info.hw_ver = cpu_to_le32(0xffffffffUL);
> --
> 2.25.1
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] driver: input: touchscreen: modify Raydium i2c touchscreen driver
  2021-04-15  8:58 [PATCH] driver: input: touchscreen: modify Raydium i2c touchscreen driver simba.hsu
  2021-04-15 16:05 ` Raul Rangel
@ 2021-04-15 19:17 ` Dmitry Torokhov
  1 sibling, 0 replies; 4+ messages in thread
From: Dmitry Torokhov @ 2021-04-15 19:17 UTC (permalink / raw)
  To: simba.hsu
  Cc: furquan, seanpaul, rrangel, simba.hsu, jeffrey.lin, KP.li,
	linux-input, linux-kernel

HI,

On Thu, Apr 15, 2021 at 04:58:29PM +0800, simba.hsu wrote:
> This path makes auto-update available when IC's status is
> Recovery mode.

Could you please explain in more detail what the issue is. Also please
improve the patch subject, as "modify Raydium i2c touchscreen driver"
does not really convey the substance of the patch.

Also, the patch does not apply to my tree, was it based on some other
tree?

> 
> Signed-off-by: simba.hsu@raydium.corp-partner.google.com

Please use your Raydium email for signoff.

> Change-Id: I5ae54896a201b949eba7514500a7e75574f5726b

No need to send change-id tags, they are not used in mainline kernel.

> ---
>  drivers/input/touchscreen/raydium_i2c_ts.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/input/touchscreen/raydium_i2c_ts.c b/drivers/input/touchscreen/raydium_i2c_ts.c
> index 444479ef699e..a97403c55f75 100644
> --- a/drivers/input/touchscreen/raydium_i2c_ts.c
> +++ b/drivers/input/touchscreen/raydium_i2c_ts.c
> @@ -298,6 +298,7 @@ static int raydium_i2c_query_ts_BL_info(struct raydium_data *ts)
>  					 0x10, 0xc0, 0x01, 0x00, 0x04, 0x00};
>  	int error;
>  	u8 rbuf[5] = {0, 0, 0, 0, 0};
> +	u32 tmpdata = 0;
>  
>  	error = raydium_i2c_send(client,
>  				 RM_CMD_BOOT_WRT, get_hwid, sizeof(get_hwid));
> @@ -315,7 +316,8 @@ static int raydium_i2c_query_ts_BL_info(struct raydium_data *ts)
>  	error = raydium_i2c_read(client,
>  				 RM_CMD_BOOT_CHK, rbuf, sizeof(rbuf));
>  	if (!error) {
> -		ts->info.hw_ver = cpu_to_le32(rbuf[1]<<24|rbuf[2]<<16|rbuf[3]<<8|rbuf[4]);
> +		tmpdata = (rbuf[1]<<24|rbuf[2]<<16|rbuf[3]<<8|rbuf[4]);
> +		ts->info.hw_ver = cpu_to_le32(tmpdata);

On the face of it I can't see why the code would behave differently,
nut then there is no raydium_i2c_query_ts_BL_info() in the copy of the
driver I have here.

>  		dev_err(&client->dev, "HWID %08X\n", ts->info.hw_ver);
>  	} else {
>  		ts->info.hw_ver = cpu_to_le32(0xffffffffUL);
> -- 
> 2.25.1
> 

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] driver: input: touchscreen: modify Raydium i2c touchscreen driver
@ 2021-04-15  9:14 simba.hsu
  0 siblings, 0 replies; 4+ messages in thread
From: simba.hsu @ 2021-04-15  9:14 UTC (permalink / raw)
  To: dmitry.torokhov, furquan, seanpaul, rrangel, simba.hsu
  Cc: jeffrey.lin, KP.li, linux-input, linux-kernel, simba.hsu

This path makes auto-update available when IC's status is
Recovery mode

Signed-off-by: simba.hsu <simba.hsu@raydium.corp-partner.google.com>
Change-Id: Icf974d59f7717da0de8bd97a06c496a32dafa1ff
---
 drivers/input/touchscreen/raydium_i2c_ts.c | 53 ++++++++++++++++++----
 1 file changed, 45 insertions(+), 8 deletions(-)

diff --git a/drivers/input/touchscreen/raydium_i2c_ts.c b/drivers/input/touchscreen/raydium_i2c_ts.c
index 4d2d22a86977..a97403c55f75 100644
--- a/drivers/input/touchscreen/raydium_i2c_ts.c
+++ b/drivers/input/touchscreen/raydium_i2c_ts.c
@@ -36,7 +36,8 @@
 #define RM_CMD_BOOT_CHK		0x33		/* send data check */
 #define RM_CMD_BOOT_READ	0x44		/* send wait bl data ready*/
 
-#define RM_BOOT_RDY		0xFF		/* bl data ready */
+#define RM_BOOT_RDY		0xFF			/* bl data ready */
+#define RM_BOOT_CMD_READHWID	0x0E	/* read hwid */
 
 /* I2C main commands */
 #define RM_CMD_QUERY_BANK	0x2B
@@ -155,6 +156,7 @@ static int raydium_i2c_xfer(struct i2c_client *client, u32 addr,
 	 * sent first. Else, skip the header i.e. xfer[0].
 	 */
 	int xfer_start_idx = (addr > 0xff) ? 0 : 1;
+
 	xfer_count -= xfer_start_idx;
 
 	ret = i2c_transfer(client->adapter, &xfer[xfer_start_idx], xfer_count);
@@ -289,6 +291,44 @@ static int raydium_i2c_sw_reset(struct i2c_client *client)
 
 	return 0;
 }
+static int raydium_i2c_query_ts_BL_info(struct raydium_data *ts)
+{
+	struct i2c_client *client = ts->client;
+	static const u8 get_hwid[7] = {RM_BOOT_CMD_READHWID,
+					 0x10, 0xc0, 0x01, 0x00, 0x04, 0x00};
+	int error;
+	u8 rbuf[5] = {0, 0, 0, 0, 0};
+	u32 tmpdata = 0;
+
+	error = raydium_i2c_send(client,
+				 RM_CMD_BOOT_WRT, get_hwid, sizeof(get_hwid));
+	if (error) {
+		dev_err(&client->dev, "WRT HWID command failed: %d\n", error);
+		return error;
+	}
+
+	error = raydium_i2c_send(client, RM_CMD_BOOT_ACK, rbuf, 1);
+	if (error) {
+		dev_err(&client->dev, "Ack HWID command failed: %d\n", error);
+		return error;
+	}
+
+	error = raydium_i2c_read(client,
+				 RM_CMD_BOOT_CHK, rbuf, sizeof(rbuf));
+	if (!error) {
+		tmpdata = (rbuf[1]<<24|rbuf[2]<<16|rbuf[3]<<8|rbuf[4]);
+		ts->info.hw_ver = cpu_to_le32(tmpdata);
+		dev_err(&client->dev, "HWID %08X\n", ts->info.hw_ver);
+	} else {
+		ts->info.hw_ver = cpu_to_le32(0xffffffffUL);
+		dev_err(&client->dev, "raydium_i2c_read HWID failed, %X, %X, %X, %X\n",
+					 rbuf[1], rbuf[2], rbuf[3], rbuf[4]);
+	}
+	ts->info.main_ver = 0xff;
+	ts->info.sub_ver = 0xff;
+
+	return error;
+}
 
 static int raydium_i2c_query_ts_info(struct raydium_data *ts)
 {
@@ -388,13 +428,10 @@ static int raydium_i2c_initialize(struct raydium_data *ts)
 	if (error)
 		ts->boot_mode = RAYDIUM_TS_BLDR;
 
-	if (ts->boot_mode == RAYDIUM_TS_BLDR) {
-		ts->info.hw_ver = cpu_to_le32(0xffffffffUL);
-		ts->info.main_ver = 0xff;
-		ts->info.sub_ver = 0xff;
-	} else {
+	if (ts->boot_mode == RAYDIUM_TS_BLDR)
+		raydium_i2c_query_ts_BL_info(ts);
+	else
 		raydium_i2c_query_ts_info(ts);
-	}
 
 	return error;
 }
@@ -1218,7 +1255,7 @@ static SIMPLE_DEV_PM_OPS(raydium_i2c_pm_ops,
 			 raydium_i2c_suspend, raydium_i2c_resume);
 
 static const struct i2c_device_id raydium_i2c_id[] = {
-	{ "raydium_i2c" , 0 },
+	{ "raydium_i2c", 0 },
 	{ "rm32380", 0 },
 	{ /* sentinel */ }
 };
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-04-15 19:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-15  8:58 [PATCH] driver: input: touchscreen: modify Raydium i2c touchscreen driver simba.hsu
2021-04-15 16:05 ` Raul Rangel
2021-04-15 19:17 ` Dmitry Torokhov
2021-04-15  9:14 simba.hsu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).