2015-11-25 20:00:39

by Jin Qian

[permalink] [raw]
Subject: [PATCH v2 1/1] platform: goldfish: pipe: add devicetree bindings

From: Greg Hackmann <[email protected]>

Signed-off-by: Greg Hackmann <[email protected]>
(cherry picked from commit 3c56d07eb796066530e93a40e74dea3bc59bf4cf)
Signed-off-by: Jin Qian <[email protected]>
---
Documentation/devicetree/bindings/goldfish/pipe.txt | 17 +++++++++++++++++
drivers/platform/goldfish/goldfish_pipe.c | 10 +++++++++-
2 files changed, 26 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/goldfish/pipe.txt

diff --git a/Documentation/devicetree/bindings/goldfish/pipe.txt b/Documentation/devicetree/bindings/goldfish/pipe.txt
new file mode 100644
index 0000000..6d3801e
--- /dev/null
+++ b/Documentation/devicetree/bindings/goldfish/pipe.txt
@@ -0,0 +1,17 @@
+Android Goldfish QEMU Pipe
+
+Andorid pipe virtual device generated by android emulator.
+
+Required properties:
+
+- compatible : should contain "generic,android-pipe" to match emulator
+- reg : <registers mapping>
+- interrupts : <interrupt mapping>
+
+Example:
+
+ android_pipe@a010000 {
+ compatible = "generic,android-pipe";
+ reg = <ff018000 0x2000>;
+ interrupts = <0x12>;
+ };
diff --git a/drivers/platform/goldfish/goldfish_pipe.c b/drivers/platform/goldfish/goldfish_pipe.c
index 20a9337..86cc57f 100644
--- a/drivers/platform/goldfish/goldfish_pipe.c
+++ b/drivers/platform/goldfish/goldfish_pipe.c
@@ -624,11 +624,19 @@ static int goldfish_pipe_remove(struct platform_device *pdev)
return 0;
}

+static const struct of_device_id goldfish_pipe_of_match[] = {
+ { .compatible = "generic,android-pipe", },
+ {},
+};
+MODULE_DEVICE_TABLE(of, goldfish_pipe_of_match);
+
static struct platform_driver goldfish_pipe = {
.probe = goldfish_pipe_probe,
.remove = goldfish_pipe_remove,
.driver = {
- .name = "goldfish_pipe"
+ .name = "goldfish_pipe",
+ .owner = THIS_MODULE,
+ .of_match_table = goldfish_pipe_of_match,
}
};

--
2.6.0.rc2.230.g3dd15c0


2015-11-25 20:24:23

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 1/1] platform: goldfish: pipe: add devicetree bindings

On Wed, Nov 25, 2015 at 11:59:37AM -0800, Jin Qian wrote:
> From: Greg Hackmann <[email protected]>
>
> Signed-off-by: Greg Hackmann <[email protected]>
> (cherry picked from commit 3c56d07eb796066530e93a40e74dea3bc59bf4cf)
> Signed-off-by: Jin Qian <[email protected]>
> ---
> Documentation/devicetree/bindings/goldfish/pipe.txt | 17 +++++++++++++++++
> drivers/platform/goldfish/goldfish_pipe.c | 10 +++++++++-
> 2 files changed, 26 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/devicetree/bindings/goldfish/pipe.txt
>
> diff --git a/Documentation/devicetree/bindings/goldfish/pipe.txt b/Documentation/devicetree/bindings/goldfish/pipe.txt
> new file mode 100644
> index 0000000..6d3801e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/goldfish/pipe.txt
> @@ -0,0 +1,17 @@
> +Android Goldfish QEMU Pipe
> +
> +Andorid pipe virtual device generated by android emulator.

The binding may be trivial, but there's a bigger question of whether
this is the right long term direction. For example is upstream QEMU
going to take all the Android pipe stuff? Couldn't virtio be used here
as the transport?

Rob

> +
> +Required properties:
> +
> +- compatible : should contain "generic,android-pipe" to match emulator
> +- reg : <registers mapping>
> +- interrupts : <interrupt mapping>
> +
> +Example:
> +
> + android_pipe@a010000 {
> + compatible = "generic,android-pipe";
> + reg = <ff018000 0x2000>;
> + interrupts = <0x12>;
> + };
> diff --git a/drivers/platform/goldfish/goldfish_pipe.c b/drivers/platform/goldfish/goldfish_pipe.c
> index 20a9337..86cc57f 100644
> --- a/drivers/platform/goldfish/goldfish_pipe.c
> +++ b/drivers/platform/goldfish/goldfish_pipe.c
> @@ -624,11 +624,19 @@ static int goldfish_pipe_remove(struct platform_device *pdev)
> return 0;
> }
>
> +static const struct of_device_id goldfish_pipe_of_match[] = {
> + { .compatible = "generic,android-pipe", },
> + {},
> +};
> +MODULE_DEVICE_TABLE(of, goldfish_pipe_of_match);
> +
> static struct platform_driver goldfish_pipe = {
> .probe = goldfish_pipe_probe,
> .remove = goldfish_pipe_remove,
> .driver = {
> - .name = "goldfish_pipe"
> + .name = "goldfish_pipe",
> + .owner = THIS_MODULE,
> + .of_match_table = goldfish_pipe_of_match,
> }
> };
>
> --
> 2.6.0.rc2.230.g3dd15c0
>

2015-11-26 08:34:15

by Christoffer Dall

[permalink] [raw]
Subject: Re: [PATCH v2 1/1] platform: goldfish: pipe: add devicetree bindings

On Wed, Nov 25, 2015 at 02:24:16PM -0600, Rob Herring wrote:
> On Wed, Nov 25, 2015 at 11:59:37AM -0800, Jin Qian wrote:
> > From: Greg Hackmann <[email protected]>
> >
> > Signed-off-by: Greg Hackmann <[email protected]>
> > (cherry picked from commit 3c56d07eb796066530e93a40e74dea3bc59bf4cf)
> > Signed-off-by: Jin Qian <[email protected]>
> > ---
> > Documentation/devicetree/bindings/goldfish/pipe.txt | 17 +++++++++++++++++
> > drivers/platform/goldfish/goldfish_pipe.c | 10 +++++++++-
> > 2 files changed, 26 insertions(+), 1 deletion(-)
> > create mode 100644 Documentation/devicetree/bindings/goldfish/pipe.txt
> >
> > diff --git a/Documentation/devicetree/bindings/goldfish/pipe.txt b/Documentation/devicetree/bindings/goldfish/pipe.txt
> > new file mode 100644
> > index 0000000..6d3801e
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/goldfish/pipe.txt
> > @@ -0,0 +1,17 @@
> > +Android Goldfish QEMU Pipe
> > +
> > +Andorid pipe virtual device generated by android emulator.
>
> The binding may be trivial, but there's a bigger question of whether
> this is the right long term direction. For example is upstream QEMU
> going to take all the Android pipe stuff? Couldn't virtio be used here
> as the transport?
>
The Android Pipe is not a very likely candidate for upstream QEMU, no.
We are working on a TCG implementation of virtio-vsock
(http://qemu-project.org/Features/VirtioVsock) which we think should be
a suitable drop-in replacement for the Android pipe. We have yet to
measure performance differences between the two, especially in the
context of 3D graphics, though.

But I wonder if that should really block this from being merged? The
support may not be in QEMU but it's in the Android emulator and it would
be a less broken implementation with these patches in the kernel than
without, I think.

-Christoffer

2015-11-27 18:17:51

by Greg Hackmann

[permalink] [raw]
Subject: Re: [PATCH v2 1/1] platform: goldfish: pipe: add devicetree bindings

On 11/26/15 12:34 AM, Christoffer Dall wrote:
> On Wed, Nov 25, 2015 at 02:24:16PM -0600, Rob Herring wrote:
>>
>> The binding may be trivial, but there's a bigger question of whether
>> this is the right long term direction. For example is upstream QEMU
>> going to take all the Android pipe stuff? Couldn't virtio be used here
>> as the transport?
>>
>
> But I wonder if that should really block this from being merged? The
> support may not be in QEMU but it's in the Android emulator and it would
> be a less broken implementation with these patches in the kernel than
> without, I think.
>
> -Christoffer
>

To add to Christoffer's point, we added these bindings so we don't need
to rely on the goldfish virtual bus for probing anymore.

Switching from the goldfish virtual bus to Device-Tree already
eliminates one big piece where the Android emulator has diverged from
upstream qemu. And on the kernel side, it means we don't need ARM and
MIPS goldfish board code to instantiate the bus.

In the long term I'm happy to push the SDK team towards replacing the
Android pipe with a virtio alternative. (We've already been switching
over to virtio for things like storage.) But in the short term, we
still need it. And I don't think it benefits the mainline kernel if we
have to maintain cleanup patches like this out-of-tree.

2015-11-27 20:14:30

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 1/1] platform: goldfish: pipe: add devicetree bindings

On Fri, Nov 27, 2015 at 12:17 PM, Greg Hackmann <[email protected]> wrote:
> On 11/26/15 12:34 AM, Christoffer Dall wrote:
>>
>> On Wed, Nov 25, 2015 at 02:24:16PM -0600, Rob Herring wrote:
>>>
>>>
>>> The binding may be trivial, but there's a bigger question of whether
>>> this is the right long term direction. For example is upstream QEMU
>>> going to take all the Android pipe stuff? Couldn't virtio be used here
>>> as the transport?
>>>
>>
>> But I wonder if that should really block this from being merged? The
>> support may not be in QEMU but it's in the Android emulator and it would
>> be a less broken implementation with these patches in the kernel than
>> without, I think.
>>
>> -Christoffer
>>
>
> To add to Christoffer's point, we added these bindings so we don't need to
> rely on the goldfish virtual bus for probing anymore.
>
> Switching from the goldfish virtual bus to Device-Tree already eliminates
> one big piece where the Android emulator has diverged from upstream qemu.
> And on the kernel side, it means we don't need ARM and MIPS goldfish board
> code to instantiate the bus.

Okay, fair enough. That's not evident from the patch.

Rob

2015-11-30 21:32:13

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 1/1] platform: goldfish: pipe: add devicetree bindings

On Wed, Nov 25, 2015 at 11:59:37AM -0800, Jin Qian wrote:
> From: Greg Hackmann <[email protected]>

Please summarize the discussion here. Like why we should merge this.

> Signed-off-by: Greg Hackmann <[email protected]>
> (cherry picked from commit 3c56d07eb796066530e93a40e74dea3bc59bf4cf)

This line should be removed.

> Signed-off-by: Jin Qian <[email protected]>
> ---
> Documentation/devicetree/bindings/goldfish/pipe.txt | 17 +++++++++++++++++
> drivers/platform/goldfish/goldfish_pipe.c | 10 +++++++++-
> 2 files changed, 26 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/devicetree/bindings/goldfish/pipe.txt
>
> diff --git a/Documentation/devicetree/bindings/goldfish/pipe.txt b/Documentation/devicetree/bindings/goldfish/pipe.txt
> new file mode 100644
> index 0000000..6d3801e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/goldfish/pipe.txt
> @@ -0,0 +1,17 @@
> +Android Goldfish QEMU Pipe
> +
> +Andorid pipe virtual device generated by android emulator.
> +
> +Required properties:
> +
> +- compatible : should contain "generic,android-pipe" to match emulator

generic is not a vendor prefix. How about linux,android-pipe or
google,android-pipe.

> +- reg : <registers mapping>
> +- interrupts : <interrupt mapping>
> +
> +Example:
> +
> + android_pipe@a010000 {
> + compatible = "generic,android-pipe";
> + reg = <ff018000 0x2000>;
> + interrupts = <0x12>;
> + };
> diff --git a/drivers/platform/goldfish/goldfish_pipe.c b/drivers/platform/goldfish/goldfish_pipe.c
> index 20a9337..86cc57f 100644
> --- a/drivers/platform/goldfish/goldfish_pipe.c
> +++ b/drivers/platform/goldfish/goldfish_pipe.c
> @@ -624,11 +624,19 @@ static int goldfish_pipe_remove(struct platform_device *pdev)
> return 0;
> }
>
> +static const struct of_device_id goldfish_pipe_of_match[] = {
> + { .compatible = "generic,android-pipe", },
> + {},
> +};
> +MODULE_DEVICE_TABLE(of, goldfish_pipe_of_match);
> +
> static struct platform_driver goldfish_pipe = {
> .probe = goldfish_pipe_probe,
> .remove = goldfish_pipe_remove,
> .driver = {
> - .name = "goldfish_pipe"
> + .name = "goldfish_pipe",
> + .owner = THIS_MODULE,

You don't need to set owner.

> + .of_match_table = goldfish_pipe_of_match,
> }
> };
>
> --
> 2.6.0.rc2.230.g3dd15c0
>

2015-12-21 21:35:32

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v2 1/1] platform: goldfish: pipe: add devicetree bindings

On Wed, Nov 25, 2015 at 11:59:37AM -0800, Jin Qian wrote:
> From: Greg Hackmann <[email protected]>
>
> Signed-off-by: Greg Hackmann <[email protected]>
> (cherry picked from commit 3c56d07eb796066530e93a40e74dea3bc59bf4cf)

What is this commit id here for?

confused,

greg k-h