2016-12-14 14:49:55

by Pali Rohár

[permalink] [raw]
Subject: [PATCH] usb: musb: debugfs: allow forcing host mode together with speed in testmode

Signed-off-by: Pali Rohár <[email protected]>
---
drivers/usb/musb/musb_debugfs.c | 44 +++++++++++++++++++++++++--------------
1 file changed, 28 insertions(+), 16 deletions(-)

diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
index 9b22d94..62c13a2 100644
--- a/drivers/usb/musb/musb_debugfs.c
+++ b/drivers/usb/musb/musb_debugfs.c
@@ -147,28 +147,34 @@ static int musb_test_mode_show(struct seq_file *s, void *unused)

test = musb_readb(musb->mregs, MUSB_TESTMODE);

- if (test & MUSB_TEST_FORCE_HOST)
+ if (test & (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS))
+ seq_printf(s, "force host full-speed\n");
+
+ else if (test & (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS))
+ seq_printf(s, "force host high-speed\n");
+
+ else if (test & MUSB_TEST_FORCE_HOST)
seq_printf(s, "force host\n");

- if (test & MUSB_TEST_FIFO_ACCESS)
+ else if (test & MUSB_TEST_FIFO_ACCESS)
seq_printf(s, "fifo access\n");

- if (test & MUSB_TEST_FORCE_FS)
+ else if (test & MUSB_TEST_FORCE_FS)
seq_printf(s, "force full-speed\n");

- if (test & MUSB_TEST_FORCE_HS)
+ else if (test & MUSB_TEST_FORCE_HS)
seq_printf(s, "force high-speed\n");

- if (test & MUSB_TEST_PACKET)
+ else if (test & MUSB_TEST_PACKET)
seq_printf(s, "test packet\n");

- if (test & MUSB_TEST_K)
+ else if (test & MUSB_TEST_K)
seq_printf(s, "test K\n");

- if (test & MUSB_TEST_J)
+ else if (test & MUSB_TEST_J)
seq_printf(s, "test J\n");

- if (test & MUSB_TEST_SE0_NAK)
+ else if (test & MUSB_TEST_SE0_NAK)
seq_printf(s, "test SE0 NAK\n");

return 0;
@@ -206,30 +212,36 @@ static ssize_t musb_test_mode_write(struct file *file,
if (copy_from_user(buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))
return -EFAULT;

- if (strstarts(buf, "force host"))
+ if (strstarts(buf, "force host full-speed"))
+ test = MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS;
+
+ else if (strstarts(buf, "force host high-speed"))
+ test = MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS;
+
+ else if (strstarts(buf, "force host"))
test = MUSB_TEST_FORCE_HOST;

- if (strstarts(buf, "fifo access"))
+ else if (strstarts(buf, "fifo access"))
test = MUSB_TEST_FIFO_ACCESS;

- if (strstarts(buf, "force full-speed"))
+ else if (strstarts(buf, "force full-speed"))
test = MUSB_TEST_FORCE_FS;

- if (strstarts(buf, "force high-speed"))
+ else if (strstarts(buf, "force high-speed"))
test = MUSB_TEST_FORCE_HS;

- if (strstarts(buf, "test packet")) {
+ else if (strstarts(buf, "test packet")) {
test = MUSB_TEST_PACKET;
musb_load_testpacket(musb);
}

- if (strstarts(buf, "test K"))
+ else if (strstarts(buf, "test K"))
test = MUSB_TEST_K;

- if (strstarts(buf, "test J"))
+ else if (strstarts(buf, "test J"))
test = MUSB_TEST_J;

- if (strstarts(buf, "test SE0 NAK"))
+ else if (strstarts(buf, "test SE0 NAK"))
test = MUSB_TEST_SE0_NAK;

musb_writeb(musb->mregs, MUSB_TESTMODE, test);
--
1.7.9.5


2016-12-14 15:34:39

by Tony Lindgren

[permalink] [raw]
Subject: Re: [PATCH] usb: musb: debugfs: allow forcing host mode together with speed in testmode

* Pali Rohár <[email protected]> [161214 06:48]:

We need this because .... and this allows debugging problems related to
...?

Regards,

Tony

2016-12-14 15:42:47

by Pali Rohár

[permalink] [raw]
Subject: Re: [PATCH] usb: musb: debugfs: allow forcing host mode together with speed in testmode

On Wednesday 14 December 2016 16:34:31 Tony Lindgren wrote:
> * Pali Rohár <[email protected]> [161214 06:48]:
>
> We need this because .... and this allows debugging problems related
> to ...?

Hi! We have already discussion about it, search for older email with
Message-Id: <201601231357.32629@pali>

After that in June, Bin wanted from me to resend patch with changed
subject... but after that I forgot. Now I resent it.

--
Pali Rohár
[email protected]


Attachments:
signature.asc (198.00 B)
This is a digitally signed message part.

2016-12-14 15:50:34

by Tony Lindgren

[permalink] [raw]
Subject: Re: [PATCH] usb: musb: debugfs: allow forcing host mode together with speed in testmode

* Pali Rohár <[email protected]> [161214 07:40]:
> On Wednesday 14 December 2016 16:34:31 Tony Lindgren wrote:
> > * Pali Rohár <[email protected]> [161214 06:48]:
> >
> > We need this because .... and this allows debugging problems related
> > to ...?
>
> Hi! We have already discussion about it, search for older email with
> Message-Id: <201601231357.32629@pali>
>
> After that in June, Bin wanted from me to resend patch with changed
> subject... but after that I forgot. Now I resent it.

What I meant is that the patch description is missing :)

Tony

2016-12-14 16:56:27

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] usb: musb: debugfs: allow forcing host mode together with speed in testmode

On Wed, Dec 14, 2016 at 03:47:57PM +0100, Pali Roh?r wrote:
> Signed-off-by: Pali Roh?r <[email protected]>
> ---
> drivers/usb/musb/musb_debugfs.c | 44 +++++++++++++++++++++++++--------------
> 1 file changed, 28 insertions(+), 16 deletions(-)

I don't accept patches without any changelog information, nor would I
ever expect any other maintainer to do so. Please read
Documentation/SubmittingPatches for how to write a good changelog
message.

thanks,

greg k-h

2016-12-14 19:26:53

by Pali Rohár

[permalink] [raw]
Subject: [PATCH] usb: musb: debugfs: allow forcing host mode together with speed in testmode

Based on the musb ug, force_host bit is allowed to be set along with
force_hs or force_fs bit.

It could help to implement forced host mode via testmode on Nokia N900.

Signed-off-by: Pali Rohár <[email protected]>
---
drivers/usb/musb/musb_debugfs.c | 44 +++++++++++++++++++++++++--------------
1 file changed, 28 insertions(+), 16 deletions(-)

diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
index 9b22d94..62c13a2 100644
--- a/drivers/usb/musb/musb_debugfs.c
+++ b/drivers/usb/musb/musb_debugfs.c
@@ -147,28 +147,34 @@ static int musb_test_mode_show(struct seq_file *s, void *unused)

test = musb_readb(musb->mregs, MUSB_TESTMODE);

- if (test & MUSB_TEST_FORCE_HOST)
+ if (test & (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS))
+ seq_printf(s, "force host full-speed\n");
+
+ else if (test & (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS))
+ seq_printf(s, "force host high-speed\n");
+
+ else if (test & MUSB_TEST_FORCE_HOST)
seq_printf(s, "force host\n");

- if (test & MUSB_TEST_FIFO_ACCESS)
+ else if (test & MUSB_TEST_FIFO_ACCESS)
seq_printf(s, "fifo access\n");

- if (test & MUSB_TEST_FORCE_FS)
+ else if (test & MUSB_TEST_FORCE_FS)
seq_printf(s, "force full-speed\n");

- if (test & MUSB_TEST_FORCE_HS)
+ else if (test & MUSB_TEST_FORCE_HS)
seq_printf(s, "force high-speed\n");

- if (test & MUSB_TEST_PACKET)
+ else if (test & MUSB_TEST_PACKET)
seq_printf(s, "test packet\n");

- if (test & MUSB_TEST_K)
+ else if (test & MUSB_TEST_K)
seq_printf(s, "test K\n");

- if (test & MUSB_TEST_J)
+ else if (test & MUSB_TEST_J)
seq_printf(s, "test J\n");

- if (test & MUSB_TEST_SE0_NAK)
+ else if (test & MUSB_TEST_SE0_NAK)
seq_printf(s, "test SE0 NAK\n");

return 0;
@@ -206,30 +212,36 @@ static ssize_t musb_test_mode_write(struct file *file,
if (copy_from_user(buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))
return -EFAULT;

- if (strstarts(buf, "force host"))
+ if (strstarts(buf, "force host full-speed"))
+ test = MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS;
+
+ else if (strstarts(buf, "force host high-speed"))
+ test = MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS;
+
+ else if (strstarts(buf, "force host"))
test = MUSB_TEST_FORCE_HOST;

- if (strstarts(buf, "fifo access"))
+ else if (strstarts(buf, "fifo access"))
test = MUSB_TEST_FIFO_ACCESS;

- if (strstarts(buf, "force full-speed"))
+ else if (strstarts(buf, "force full-speed"))
test = MUSB_TEST_FORCE_FS;

- if (strstarts(buf, "force high-speed"))
+ else if (strstarts(buf, "force high-speed"))
test = MUSB_TEST_FORCE_HS;

- if (strstarts(buf, "test packet")) {
+ else if (strstarts(buf, "test packet")) {
test = MUSB_TEST_PACKET;
musb_load_testpacket(musb);
}

- if (strstarts(buf, "test K"))
+ else if (strstarts(buf, "test K"))
test = MUSB_TEST_K;

- if (strstarts(buf, "test J"))
+ else if (strstarts(buf, "test J"))
test = MUSB_TEST_J;

- if (strstarts(buf, "test SE0 NAK"))
+ else if (strstarts(buf, "test SE0 NAK"))
test = MUSB_TEST_SE0_NAK;

musb_writeb(musb->mregs, MUSB_TESTMODE, test);
--
1.7.9.5

2016-12-16 04:03:57

by Bin Liu

[permalink] [raw]
Subject: Re: [PATCH] usb: musb: debugfs: allow forcing host mode together with speed in testmode

On Wed, Dec 14, 2016 at 08:23:45PM +0100, Pali Roh?r wrote:
> Based on the musb ug, force_host bit is allowed to be set along with
> force_hs or force_fs bit.
>
> It could help to implement forced host mode via testmode on Nokia N900.
>
> Signed-off-by: Pali Roh?r <[email protected]>
> ---
> drivers/usb/musb/musb_debugfs.c | 44 +++++++++++++++++++++++++--------------
> 1 file changed, 28 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
> index 9b22d94..62c13a2 100644
> --- a/drivers/usb/musb/musb_debugfs.c
> +++ b/drivers/usb/musb/musb_debugfs.c
> @@ -147,28 +147,34 @@ static int musb_test_mode_show(struct seq_file *s, void *unused)
>
> test = musb_readb(musb->mregs, MUSB_TESTMODE);
>
> - if (test & MUSB_TEST_FORCE_HOST)
> + if (test & (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS))

if (test & (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS) ==
MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS)

or even simpler:

if (test == MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS)

since multiple tests at the same time are not allowed.

> + seq_printf(s, "force host full-speed\n");
> +
> + else if (test & (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS))

else if (test == MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS)

Regards,
-Bin.

2016-12-18 00:03:08

by Pali Rohár

[permalink] [raw]
Subject: [PATCH v2] usb: musb: debugfs: allow forcing host mode together with speed in testmode

Based on the musb ug, force_host bit is allowed to be set along with
force_hs or force_fs bit.

It could help to implement forced host mode via testmode on Nokia N900.

Signed-off-by: Pali Rohár <[email protected]>
---
Changes in v2:
* Use == instead of & for comparison of testmode
---
drivers/usb/musb/musb_debugfs.c | 44 +++++++++++++++++++++++++--------------
1 file changed, 28 insertions(+), 16 deletions(-)

diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
index 9b22d94..5308cea 100644
--- a/drivers/usb/musb/musb_debugfs.c
+++ b/drivers/usb/musb/musb_debugfs.c
@@ -147,28 +147,34 @@ static int musb_test_mode_show(struct seq_file *s, void *unused)

test = musb_readb(musb->mregs, MUSB_TESTMODE);

- if (test & MUSB_TEST_FORCE_HOST)
+ if (test == (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS))
+ seq_printf(s, "force host full-speed\n");
+
+ else if (test == (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS))
+ seq_printf(s, "force host high-speed\n");
+
+ else if (test == MUSB_TEST_FORCE_HOST)
seq_printf(s, "force host\n");

- if (test & MUSB_TEST_FIFO_ACCESS)
+ else if (test == MUSB_TEST_FIFO_ACCESS)
seq_printf(s, "fifo access\n");

- if (test & MUSB_TEST_FORCE_FS)
+ else if (test == MUSB_TEST_FORCE_FS)
seq_printf(s, "force full-speed\n");

- if (test & MUSB_TEST_FORCE_HS)
+ else if (test == MUSB_TEST_FORCE_HS)
seq_printf(s, "force high-speed\n");

- if (test & MUSB_TEST_PACKET)
+ else if (test == MUSB_TEST_PACKET)
seq_printf(s, "test packet\n");

- if (test & MUSB_TEST_K)
+ else if (test == MUSB_TEST_K)
seq_printf(s, "test K\n");

- if (test & MUSB_TEST_J)
+ else if (test == MUSB_TEST_J)
seq_printf(s, "test J\n");

- if (test & MUSB_TEST_SE0_NAK)
+ else if (test == MUSB_TEST_SE0_NAK)
seq_printf(s, "test SE0 NAK\n");

return 0;
@@ -206,30 +212,36 @@ static ssize_t musb_test_mode_write(struct file *file,
if (copy_from_user(buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))
return -EFAULT;

- if (strstarts(buf, "force host"))
+ if (strstarts(buf, "force host full-speed"))
+ test = MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS;
+
+ else if (strstarts(buf, "force host high-speed"))
+ test = MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS;
+
+ else if (strstarts(buf, "force host"))
test = MUSB_TEST_FORCE_HOST;

- if (strstarts(buf, "fifo access"))
+ else if (strstarts(buf, "fifo access"))
test = MUSB_TEST_FIFO_ACCESS;

- if (strstarts(buf, "force full-speed"))
+ else if (strstarts(buf, "force full-speed"))
test = MUSB_TEST_FORCE_FS;

- if (strstarts(buf, "force high-speed"))
+ else if (strstarts(buf, "force high-speed"))
test = MUSB_TEST_FORCE_HS;

- if (strstarts(buf, "test packet")) {
+ else if (strstarts(buf, "test packet")) {
test = MUSB_TEST_PACKET;
musb_load_testpacket(musb);
}

- if (strstarts(buf, "test K"))
+ else if (strstarts(buf, "test K"))
test = MUSB_TEST_K;

- if (strstarts(buf, "test J"))
+ else if (strstarts(buf, "test J"))
test = MUSB_TEST_J;

- if (strstarts(buf, "test SE0 NAK"))
+ else if (strstarts(buf, "test SE0 NAK"))
test = MUSB_TEST_SE0_NAK;

musb_writeb(musb->mregs, MUSB_TESTMODE, test);
--
1.7.9.5

2016-12-19 15:11:46

by Bin Liu

[permalink] [raw]
Subject: Re: [PATCH v2] usb: musb: debugfs: allow forcing host mode together with speed in testmode

On Sun, Dec 18, 2016 at 12:54:40AM +0100, Pali Roh?r wrote:
> Based on the musb ug, force_host bit is allowed to be set along with
> force_hs or force_fs bit.
>
> It could help to implement forced host mode via testmode on Nokia N900.
>
> Signed-off-by: Pali Roh?r <[email protected]>
> ---
> Changes in v2:
> * Use == instead of & for comparison of testmode
> ---
> drivers/usb/musb/musb_debugfs.c | 44 +++++++++++++++++++++++++--------------
> 1 file changed, 28 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
> index 9b22d94..5308cea 100644
> --- a/drivers/usb/musb/musb_debugfs.c
> +++ b/drivers/usb/musb/musb_debugfs.c
> @@ -147,28 +147,34 @@ static int musb_test_mode_show(struct seq_file *s, void *unused)
>
> test = musb_readb(musb->mregs, MUSB_TESTMODE);
>
> - if (test & MUSB_TEST_FORCE_HOST)
> + if (test == (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS))
> + seq_printf(s, "force host full-speed\n");
> +
> + else if (test == (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS))
> + seq_printf(s, "force host high-speed\n");
> +
> + else if (test == MUSB_TEST_FORCE_HOST)
> seq_printf(s, "force host\n");
>
> - if (test & MUSB_TEST_FIFO_ACCESS)
> + else if (test == MUSB_TEST_FIFO_ACCESS)
> seq_printf(s, "fifo access\n");
>
> - if (test & MUSB_TEST_FORCE_FS)
> + else if (test == MUSB_TEST_FORCE_FS)
> seq_printf(s, "force full-speed\n");
>
> - if (test & MUSB_TEST_FORCE_HS)
> + else if (test == MUSB_TEST_FORCE_HS)
> seq_printf(s, "force high-speed\n");
>
> - if (test & MUSB_TEST_PACKET)
> + else if (test == MUSB_TEST_PACKET)
> seq_printf(s, "test packet\n");
>
> - if (test & MUSB_TEST_K)
> + else if (test == MUSB_TEST_K)
> seq_printf(s, "test K\n");
>
> - if (test & MUSB_TEST_J)
> + else if (test == MUSB_TEST_J)
> seq_printf(s, "test J\n");
>
> - if (test & MUSB_TEST_SE0_NAK)
> + else if (test == MUSB_TEST_SE0_NAK)
> seq_printf(s, "test SE0 NAK\n");
>
> return 0;
> @@ -206,30 +212,36 @@ static ssize_t musb_test_mode_write(struct file *file,
> if (copy_from_user(buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))
> return -EFAULT;
>
> - if (strstarts(buf, "force host"))
> + if (strstarts(buf, "force host full-speed"))

buf is only 18 bytes long, the string is not fully compared.
You might have to increase buf[] to 24 bytes.

Regards,
-Bin.


2016-12-19 15:24:10

by Pali Rohár

[permalink] [raw]
Subject: [PATCH v3] usb: musb: debugfs: allow forcing host mode together with speed in testmode

Based on the musb ug, force_host bit is allowed to be set along with
force_hs or force_fs bit.

It could help to implement forced host mode via testmode on Nokia N900.

Signed-off-by: Pali Rohár <[email protected]>
---
Changes in v2:
* Use == instead of & for comparison of testmode
Changes in v3:
* Increase buf[] to 24 bytes
---
drivers/usb/musb/musb_debugfs.c | 46 ++++++++++++++++++++++++---------------
1 file changed, 29 insertions(+), 17 deletions(-)

diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
index 9b22d94..4d6c505 100644
--- a/drivers/usb/musb/musb_debugfs.c
+++ b/drivers/usb/musb/musb_debugfs.c
@@ -147,28 +147,34 @@ static int musb_test_mode_show(struct seq_file *s, void *unused)

test = musb_readb(musb->mregs, MUSB_TESTMODE);

- if (test & MUSB_TEST_FORCE_HOST)
+ if (test == (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS))
+ seq_printf(s, "force host full-speed\n");
+
+ else if (test == (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS))
+ seq_printf(s, "force host high-speed\n");
+
+ else if (test == MUSB_TEST_FORCE_HOST)
seq_printf(s, "force host\n");

- if (test & MUSB_TEST_FIFO_ACCESS)
+ else if (test == MUSB_TEST_FIFO_ACCESS)
seq_printf(s, "fifo access\n");

- if (test & MUSB_TEST_FORCE_FS)
+ else if (test == MUSB_TEST_FORCE_FS)
seq_printf(s, "force full-speed\n");

- if (test & MUSB_TEST_FORCE_HS)
+ else if (test == MUSB_TEST_FORCE_HS)
seq_printf(s, "force high-speed\n");

- if (test & MUSB_TEST_PACKET)
+ else if (test == MUSB_TEST_PACKET)
seq_printf(s, "test packet\n");

- if (test & MUSB_TEST_K)
+ else if (test == MUSB_TEST_K)
seq_printf(s, "test K\n");

- if (test & MUSB_TEST_J)
+ else if (test == MUSB_TEST_J)
seq_printf(s, "test J\n");

- if (test & MUSB_TEST_SE0_NAK)
+ else if (test == MUSB_TEST_SE0_NAK)
seq_printf(s, "test SE0 NAK\n");

return 0;
@@ -192,7 +198,7 @@ static ssize_t musb_test_mode_write(struct file *file,
struct seq_file *s = file->private_data;
struct musb *musb = s->private;
u8 test;
- char buf[18];
+ char buf[24];

test = musb_readb(musb->mregs, MUSB_TESTMODE);
if (test) {
@@ -206,30 +212,36 @@ static ssize_t musb_test_mode_write(struct file *file,
if (copy_from_user(buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))
return -EFAULT;

- if (strstarts(buf, "force host"))
+ if (strstarts(buf, "force host full-speed"))
+ test = MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS;
+
+ else if (strstarts(buf, "force host high-speed"))
+ test = MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS;
+
+ else if (strstarts(buf, "force host"))
test = MUSB_TEST_FORCE_HOST;

- if (strstarts(buf, "fifo access"))
+ else if (strstarts(buf, "fifo access"))
test = MUSB_TEST_FIFO_ACCESS;

- if (strstarts(buf, "force full-speed"))
+ else if (strstarts(buf, "force full-speed"))
test = MUSB_TEST_FORCE_FS;

- if (strstarts(buf, "force high-speed"))
+ else if (strstarts(buf, "force high-speed"))
test = MUSB_TEST_FORCE_HS;

- if (strstarts(buf, "test packet")) {
+ else if (strstarts(buf, "test packet")) {
test = MUSB_TEST_PACKET;
musb_load_testpacket(musb);
}

- if (strstarts(buf, "test K"))
+ else if (strstarts(buf, "test K"))
test = MUSB_TEST_K;

- if (strstarts(buf, "test J"))
+ else if (strstarts(buf, "test J"))
test = MUSB_TEST_J;

- if (strstarts(buf, "test SE0 NAK"))
+ else if (strstarts(buf, "test SE0 NAK"))
test = MUSB_TEST_SE0_NAK;

musb_writeb(musb->mregs, MUSB_TESTMODE, test);
--
1.7.9.5

2016-12-19 20:46:53

by Bin Liu

[permalink] [raw]
Subject: Re: [PATCH v3] usb: musb: debugfs: allow forcing host mode together with speed in testmode

On Mon, Dec 19, 2016 at 04:23:47PM +0100, Pali Roh?r wrote:
> Based on the musb ug, force_host bit is allowed to be set along with
> force_hs or force_fs bit.
>
> It could help to implement forced host mode via testmode on Nokia N900.
>
> Signed-off-by: Pali Roh?r <[email protected]>

Applied. Thanks.
-Bin.

> ---
> Changes in v2:
> * Use == instead of & for comparison of testmode
> Changes in v3:
> * Increase buf[] to 24 bytes
> ---
> drivers/usb/musb/musb_debugfs.c | 46 ++++++++++++++++++++++++---------------
> 1 file changed, 29 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
> index 9b22d94..4d6c505 100644
> --- a/drivers/usb/musb/musb_debugfs.c
> +++ b/drivers/usb/musb/musb_debugfs.c
> @@ -147,28 +147,34 @@ static int musb_test_mode_show(struct seq_file *s, void *unused)
>
> test = musb_readb(musb->mregs, MUSB_TESTMODE);
>
> - if (test & MUSB_TEST_FORCE_HOST)
> + if (test == (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS))
> + seq_printf(s, "force host full-speed\n");
> +
> + else if (test == (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS))
> + seq_printf(s, "force host high-speed\n");
> +
> + else if (test == MUSB_TEST_FORCE_HOST)
> seq_printf(s, "force host\n");
>
> - if (test & MUSB_TEST_FIFO_ACCESS)
> + else if (test == MUSB_TEST_FIFO_ACCESS)
> seq_printf(s, "fifo access\n");
>
> - if (test & MUSB_TEST_FORCE_FS)
> + else if (test == MUSB_TEST_FORCE_FS)
> seq_printf(s, "force full-speed\n");
>
> - if (test & MUSB_TEST_FORCE_HS)
> + else if (test == MUSB_TEST_FORCE_HS)
> seq_printf(s, "force high-speed\n");
>
> - if (test & MUSB_TEST_PACKET)
> + else if (test == MUSB_TEST_PACKET)
> seq_printf(s, "test packet\n");
>
> - if (test & MUSB_TEST_K)
> + else if (test == MUSB_TEST_K)
> seq_printf(s, "test K\n");
>
> - if (test & MUSB_TEST_J)
> + else if (test == MUSB_TEST_J)
> seq_printf(s, "test J\n");
>
> - if (test & MUSB_TEST_SE0_NAK)
> + else if (test == MUSB_TEST_SE0_NAK)
> seq_printf(s, "test SE0 NAK\n");
>
> return 0;
> @@ -192,7 +198,7 @@ static ssize_t musb_test_mode_write(struct file *file,
> struct seq_file *s = file->private_data;
> struct musb *musb = s->private;
> u8 test;
> - char buf[18];
> + char buf[24];
>
> test = musb_readb(musb->mregs, MUSB_TESTMODE);
> if (test) {
> @@ -206,30 +212,36 @@ static ssize_t musb_test_mode_write(struct file *file,
> if (copy_from_user(buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))
> return -EFAULT;
>
> - if (strstarts(buf, "force host"))
> + if (strstarts(buf, "force host full-speed"))
> + test = MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS;
> +
> + else if (strstarts(buf, "force host high-speed"))
> + test = MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_HS;
> +
> + else if (strstarts(buf, "force host"))
> test = MUSB_TEST_FORCE_HOST;
>
> - if (strstarts(buf, "fifo access"))
> + else if (strstarts(buf, "fifo access"))
> test = MUSB_TEST_FIFO_ACCESS;
>
> - if (strstarts(buf, "force full-speed"))
> + else if (strstarts(buf, "force full-speed"))
> test = MUSB_TEST_FORCE_FS;
>
> - if (strstarts(buf, "force high-speed"))
> + else if (strstarts(buf, "force high-speed"))
> test = MUSB_TEST_FORCE_HS;
>
> - if (strstarts(buf, "test packet")) {
> + else if (strstarts(buf, "test packet")) {
> test = MUSB_TEST_PACKET;
> musb_load_testpacket(musb);
> }
>
> - if (strstarts(buf, "test K"))
> + else if (strstarts(buf, "test K"))
> test = MUSB_TEST_K;
>
> - if (strstarts(buf, "test J"))
> + else if (strstarts(buf, "test J"))
> test = MUSB_TEST_J;
>
> - if (strstarts(buf, "test SE0 NAK"))
> + else if (strstarts(buf, "test SE0 NAK"))
> test = MUSB_TEST_SE0_NAK;
>
> musb_writeb(musb->mregs, MUSB_TESTMODE, test);
> --
> 1.7.9.5
>