All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Suman Anna <s-anna@ti.com>
Cc: Dave Gerlach <d-gerlach@ti.com>, Tony Lindgren <tony@atomide.com>,
	linux-remoteproc@vger.kernel.org,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Santosh Shilimkar <ssantosh@kernel.org>,
	linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] soc: ti: wkup_m3_ipc: switch to using remoteproc OF infrastructure
Date: Fri, 12 Aug 2016 12:02:01 +0100	[thread overview]
Message-ID: <20160812110201.GD25844@dell> (raw)
In-Reply-To: <20160812003529.519-1-s-anna@ti.com>

On Thu, 11 Aug 2016, Suman Anna wrote:

> The remoteproc framework has been enhanced recently to provide new
> OF API to retrieve a remoteproc handle by client drivers through a
> standard 'rprocs' property in client nodes. The wkup_m3_ipc driver
> has been using a custom 'ti,rproc' property until now, switch this
> to use this new OF infrastructure. The wkup_m3_ipc driver has been
> fixed up to provide backward compatibility for older DTBs by
> replacing the older property with the standard newer property.
> 
> The wkup_m3_ipc binding has also been updated accordingly.
> 
> Signed-off-by: Suman Anna <s-anna@ti.com>
> ---
> This patch is based on the discussion [1] for introducing new standard
> OF API in remoteproc core series [2] and the exporting of couple of
> functions in OF base code [3].
> 
> With this in place, the remoteproc core need not be looking for the
> TI specific property anymore. I will submit the DTS changes once this
> makes it to mainline.
> 
> regards
> Suman
> 
> [1] https://patchwork.kernel.org/patch/9237767/
> [2] http://marc.info/?l=linux-kernel&m=146894341701010&w=2
> [3] https://patchwork.kernel.org/patch/9276181/
> 
>  .../devicetree/bindings/soc/ti/wkup_m3_ipc.txt     |  9 ++++++--
>  drivers/soc/ti/wkup_m3_ipc.c                       | 26 +++++++++++++++++++++-
>  2 files changed, 32 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt b/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt
> index 401550487ed6..2ea7dd91acff 100644
> --- a/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt
> +++ b/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt
> @@ -23,12 +23,17 @@ Required properties:
>  			with the Wakeup M3 processor
>  - interrupts:		Contains the interrupt information for the wkup_m3
>  			interrupt that signals the MPU.
> -- ti,rproc:		phandle to the wkup_m3 rproc node so the IPC driver
> +- rprocs:		phandle to the wkup_m3 rproc node so the IPC driver
>  			can boot it.
>  - mboxes:		phandles used by IPC framework to get correct mbox
>  			channel for communication. Must point to appropriate
>  			mbox_wkupm3 child node.
>  
> +Deprecated properties:
> +----------------------
> +- ti,rproc:		This property has been replaced with the "rprocs"
> +			property.
> +
>  Example:
>  --------
>  /* AM33xx */
> @@ -48,7 +53,7 @@ Example:
>  				compatible = "ti,am3352-wkup-m3-ipc";
>  				reg = <0x1324 0x24>;
>  				interrupts = <78>;
> -				ti,rproc = <&wkup_m3>;
> +				rprocs = <&wkup_m3>;
>  				mboxes = <&mailbox &mbox_wkupm3>;
>  			};
>  
> diff --git a/drivers/soc/ti/wkup_m3_ipc.c b/drivers/soc/ti/wkup_m3_ipc.c
> index 8823cc81ae45..86085f9bf6a8 100644
> --- a/drivers/soc/ti/wkup_m3_ipc.c
> +++ b/drivers/soc/ti/wkup_m3_ipc.c
> @@ -1,7 +1,7 @@
>  /*
>   * AMx3 Wkup M3 IPC driver
>   *
> - * Copyright (C) 2015 Texas Instruments, Inc.
> + * Copyright (C) 2015-2016 Texas Instruments, Inc.
>   *
>   * Dave Gerlach <d-gerlach@ti.com>
>   *
> @@ -390,6 +390,8 @@ static int wkup_m3_ipc_probe(struct platform_device *pdev)
>  	struct resource *res;
>  	struct task_struct *task;
>  	struct wkup_m3_ipc *m3_ipc;
> +	struct property *nprop, *oprop;
> +	const char nprop_name[] = "rprocs";
>  
>  	m3_ipc = devm_kzalloc(dev, sizeof(*m3_ipc), GFP_KERNEL);
>  	if (!m3_ipc)
> @@ -415,6 +417,28 @@ static int wkup_m3_ipc_probe(struct platform_device *pdev)
>  		return ret;
>  	}
>  
> +	/* provide compatibility for older DTBs using ti,rproc property */
> +	nprop = of_find_property(dev->of_node, "rprocs", NULL);
> +	if (!nprop) {
> +		oprop = of_find_property(dev->of_node, "ti,rproc", NULL);
> +		if (!oprop) {
> +			dev_err(&pdev->dev, "node is missing ti,rproc property\n");
> +			return -ENODEV;
> +		}
> +
> +		nprop = kzalloc(sizeof(*nprop) + sizeof(nprop_name),
> +				GFP_KERNEL);
> +		if (!nprop)
> +			return -ENOMEM;
> +
> +		nprop->name = (char *)nprop + sizeof(*nprop);
> +		snprintf(nprop->name, sizeof(nprop_name), nprop_name);
> +		nprop->value = oprop->value;
> +		nprop->length = oprop->length;
> +		of_update_property(dev->of_node, nprop);
> +		of_remove_property(dev->of_node, oprop);
> +	}
> +

+1 for getting the functionality out of core code.

-100 for having to jump though all these hoops.

If you are going to keep all of this, I would at least tuck it away in
a header file or something.

>  	m3_ipc->mbox_client.dev = dev;
>  	m3_ipc->mbox_client.tx_done = NULL;
>  	m3_ipc->mbox_client.tx_prepare = NULL;

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Lee Jones <lee.jones@linaro.org>
To: Suman Anna <s-anna@ti.com>
Cc: Santosh Shilimkar <ssantosh@kernel.org>,
	Tony Lindgren <tony@atomide.com>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Rob Herring <robh+dt@kernel.org>, Dave Gerlach <d-gerlach@ti.com>,
	linux-omap@vger.kernel.org, linux-remoteproc@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] soc: ti: wkup_m3_ipc: switch to using remoteproc OF infrastructure
Date: Fri, 12 Aug 2016 12:02:01 +0100	[thread overview]
Message-ID: <20160812110201.GD25844@dell> (raw)
In-Reply-To: <20160812003529.519-1-s-anna@ti.com>

On Thu, 11 Aug 2016, Suman Anna wrote:

> The remoteproc framework has been enhanced recently to provide new
> OF API to retrieve a remoteproc handle by client drivers through a
> standard 'rprocs' property in client nodes. The wkup_m3_ipc driver
> has been using a custom 'ti,rproc' property until now, switch this
> to use this new OF infrastructure. The wkup_m3_ipc driver has been
> fixed up to provide backward compatibility for older DTBs by
> replacing the older property with the standard newer property.
> 
> The wkup_m3_ipc binding has also been updated accordingly.
> 
> Signed-off-by: Suman Anna <s-anna@ti.com>
> ---
> This patch is based on the discussion [1] for introducing new standard
> OF API in remoteproc core series [2] and the exporting of couple of
> functions in OF base code [3].
> 
> With this in place, the remoteproc core need not be looking for the
> TI specific property anymore. I will submit the DTS changes once this
> makes it to mainline.
> 
> regards
> Suman
> 
> [1] https://patchwork.kernel.org/patch/9237767/
> [2] http://marc.info/?l=linux-kernel&m=146894341701010&w=2
> [3] https://patchwork.kernel.org/patch/9276181/
> 
>  .../devicetree/bindings/soc/ti/wkup_m3_ipc.txt     |  9 ++++++--
>  drivers/soc/ti/wkup_m3_ipc.c                       | 26 +++++++++++++++++++++-
>  2 files changed, 32 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt b/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt
> index 401550487ed6..2ea7dd91acff 100644
> --- a/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt
> +++ b/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt
> @@ -23,12 +23,17 @@ Required properties:
>  			with the Wakeup M3 processor
>  - interrupts:		Contains the interrupt information for the wkup_m3
>  			interrupt that signals the MPU.
> -- ti,rproc:		phandle to the wkup_m3 rproc node so the IPC driver
> +- rprocs:		phandle to the wkup_m3 rproc node so the IPC driver
>  			can boot it.
>  - mboxes:		phandles used by IPC framework to get correct mbox
>  			channel for communication. Must point to appropriate
>  			mbox_wkupm3 child node.
>  
> +Deprecated properties:
> +----------------------
> +- ti,rproc:		This property has been replaced with the "rprocs"
> +			property.
> +
>  Example:
>  --------
>  /* AM33xx */
> @@ -48,7 +53,7 @@ Example:
>  				compatible = "ti,am3352-wkup-m3-ipc";
>  				reg = <0x1324 0x24>;
>  				interrupts = <78>;
> -				ti,rproc = <&wkup_m3>;
> +				rprocs = <&wkup_m3>;
>  				mboxes = <&mailbox &mbox_wkupm3>;
>  			};
>  
> diff --git a/drivers/soc/ti/wkup_m3_ipc.c b/drivers/soc/ti/wkup_m3_ipc.c
> index 8823cc81ae45..86085f9bf6a8 100644
> --- a/drivers/soc/ti/wkup_m3_ipc.c
> +++ b/drivers/soc/ti/wkup_m3_ipc.c
> @@ -1,7 +1,7 @@
>  /*
>   * AMx3 Wkup M3 IPC driver
>   *
> - * Copyright (C) 2015 Texas Instruments, Inc.
> + * Copyright (C) 2015-2016 Texas Instruments, Inc.
>   *
>   * Dave Gerlach <d-gerlach@ti.com>
>   *
> @@ -390,6 +390,8 @@ static int wkup_m3_ipc_probe(struct platform_device *pdev)
>  	struct resource *res;
>  	struct task_struct *task;
>  	struct wkup_m3_ipc *m3_ipc;
> +	struct property *nprop, *oprop;
> +	const char nprop_name[] = "rprocs";
>  
>  	m3_ipc = devm_kzalloc(dev, sizeof(*m3_ipc), GFP_KERNEL);
>  	if (!m3_ipc)
> @@ -415,6 +417,28 @@ static int wkup_m3_ipc_probe(struct platform_device *pdev)
>  		return ret;
>  	}
>  
> +	/* provide compatibility for older DTBs using ti,rproc property */
> +	nprop = of_find_property(dev->of_node, "rprocs", NULL);
> +	if (!nprop) {
> +		oprop = of_find_property(dev->of_node, "ti,rproc", NULL);
> +		if (!oprop) {
> +			dev_err(&pdev->dev, "node is missing ti,rproc property\n");
> +			return -ENODEV;
> +		}
> +
> +		nprop = kzalloc(sizeof(*nprop) + sizeof(nprop_name),
> +				GFP_KERNEL);
> +		if (!nprop)
> +			return -ENOMEM;
> +
> +		nprop->name = (char *)nprop + sizeof(*nprop);
> +		snprintf(nprop->name, sizeof(nprop_name), nprop_name);
> +		nprop->value = oprop->value;
> +		nprop->length = oprop->length;
> +		of_update_property(dev->of_node, nprop);
> +		of_remove_property(dev->of_node, oprop);
> +	}
> +

+1 for getting the functionality out of core code.

-100 for having to jump though all these hoops.

If you are going to keep all of this, I would at least tuck it away in
a header file or something.

>  	m3_ipc->mbox_client.dev = dev;
>  	m3_ipc->mbox_client.tx_done = NULL;
>  	m3_ipc->mbox_client.tx_prepare = NULL;

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

WARNING: multiple messages have this Message-ID (diff)
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] soc: ti: wkup_m3_ipc: switch to using remoteproc OF infrastructure
Date: Fri, 12 Aug 2016 12:02:01 +0100	[thread overview]
Message-ID: <20160812110201.GD25844@dell> (raw)
In-Reply-To: <20160812003529.519-1-s-anna@ti.com>

On Thu, 11 Aug 2016, Suman Anna wrote:

> The remoteproc framework has been enhanced recently to provide new
> OF API to retrieve a remoteproc handle by client drivers through a
> standard 'rprocs' property in client nodes. The wkup_m3_ipc driver
> has been using a custom 'ti,rproc' property until now, switch this
> to use this new OF infrastructure. The wkup_m3_ipc driver has been
> fixed up to provide backward compatibility for older DTBs by
> replacing the older property with the standard newer property.
> 
> The wkup_m3_ipc binding has also been updated accordingly.
> 
> Signed-off-by: Suman Anna <s-anna@ti.com>
> ---
> This patch is based on the discussion [1] for introducing new standard
> OF API in remoteproc core series [2] and the exporting of couple of
> functions in OF base code [3].
> 
> With this in place, the remoteproc core need not be looking for the
> TI specific property anymore. I will submit the DTS changes once this
> makes it to mainline.
> 
> regards
> Suman
> 
> [1] https://patchwork.kernel.org/patch/9237767/
> [2] http://marc.info/?l=linux-kernel&m=146894341701010&w=2
> [3] https://patchwork.kernel.org/patch/9276181/
> 
>  .../devicetree/bindings/soc/ti/wkup_m3_ipc.txt     |  9 ++++++--
>  drivers/soc/ti/wkup_m3_ipc.c                       | 26 +++++++++++++++++++++-
>  2 files changed, 32 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt b/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt
> index 401550487ed6..2ea7dd91acff 100644
> --- a/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt
> +++ b/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt
> @@ -23,12 +23,17 @@ Required properties:
>  			with the Wakeup M3 processor
>  - interrupts:		Contains the interrupt information for the wkup_m3
>  			interrupt that signals the MPU.
> -- ti,rproc:		phandle to the wkup_m3 rproc node so the IPC driver
> +- rprocs:		phandle to the wkup_m3 rproc node so the IPC driver
>  			can boot it.
>  - mboxes:		phandles used by IPC framework to get correct mbox
>  			channel for communication. Must point to appropriate
>  			mbox_wkupm3 child node.
>  
> +Deprecated properties:
> +----------------------
> +- ti,rproc:		This property has been replaced with the "rprocs"
> +			property.
> +
>  Example:
>  --------
>  /* AM33xx */
> @@ -48,7 +53,7 @@ Example:
>  				compatible = "ti,am3352-wkup-m3-ipc";
>  				reg = <0x1324 0x24>;
>  				interrupts = <78>;
> -				ti,rproc = <&wkup_m3>;
> +				rprocs = <&wkup_m3>;
>  				mboxes = <&mailbox &mbox_wkupm3>;
>  			};
>  
> diff --git a/drivers/soc/ti/wkup_m3_ipc.c b/drivers/soc/ti/wkup_m3_ipc.c
> index 8823cc81ae45..86085f9bf6a8 100644
> --- a/drivers/soc/ti/wkup_m3_ipc.c
> +++ b/drivers/soc/ti/wkup_m3_ipc.c
> @@ -1,7 +1,7 @@
>  /*
>   * AMx3 Wkup M3 IPC driver
>   *
> - * Copyright (C) 2015 Texas Instruments, Inc.
> + * Copyright (C) 2015-2016 Texas Instruments, Inc.
>   *
>   * Dave Gerlach <d-gerlach@ti.com>
>   *
> @@ -390,6 +390,8 @@ static int wkup_m3_ipc_probe(struct platform_device *pdev)
>  	struct resource *res;
>  	struct task_struct *task;
>  	struct wkup_m3_ipc *m3_ipc;
> +	struct property *nprop, *oprop;
> +	const char nprop_name[] = "rprocs";
>  
>  	m3_ipc = devm_kzalloc(dev, sizeof(*m3_ipc), GFP_KERNEL);
>  	if (!m3_ipc)
> @@ -415,6 +417,28 @@ static int wkup_m3_ipc_probe(struct platform_device *pdev)
>  		return ret;
>  	}
>  
> +	/* provide compatibility for older DTBs using ti,rproc property */
> +	nprop = of_find_property(dev->of_node, "rprocs", NULL);
> +	if (!nprop) {
> +		oprop = of_find_property(dev->of_node, "ti,rproc", NULL);
> +		if (!oprop) {
> +			dev_err(&pdev->dev, "node is missing ti,rproc property\n");
> +			return -ENODEV;
> +		}
> +
> +		nprop = kzalloc(sizeof(*nprop) + sizeof(nprop_name),
> +				GFP_KERNEL);
> +		if (!nprop)
> +			return -ENOMEM;
> +
> +		nprop->name = (char *)nprop + sizeof(*nprop);
> +		snprintf(nprop->name, sizeof(nprop_name), nprop_name);
> +		nprop->value = oprop->value;
> +		nprop->length = oprop->length;
> +		of_update_property(dev->of_node, nprop);
> +		of_remove_property(dev->of_node, oprop);
> +	}
> +

+1 for getting the functionality out of core code.

-100 for having to jump though all these hoops.

If you are going to keep all of this, I would at least tuck it away in
a header file or something.

>  	m3_ipc->mbox_client.dev = dev;
>  	m3_ipc->mbox_client.tx_done = NULL;
>  	m3_ipc->mbox_client.tx_prepare = NULL;

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  parent reply	other threads:[~2016-08-12 11:02 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-12  0:35 [PATCH] soc: ti: wkup_m3_ipc: switch to using remoteproc OF infrastructure Suman Anna
2016-08-12  0:35 ` Suman Anna
2016-08-12  0:35 ` Suman Anna
2016-08-12  6:17 ` kbuild test robot
2016-08-12  6:17   ` kbuild test robot
2016-08-12  6:17   ` kbuild test robot
2016-08-12 11:02 ` Lee Jones [this message]
2016-08-12 11:02   ` Lee Jones
2016-08-12 11:02   ` Lee Jones
2016-08-12 16:00   ` Suman Anna
2016-08-12 16:00     ` Suman Anna
2016-08-12 16:00     ` Suman Anna
2016-08-12 16:43     ` Bjorn Andersson
2016-08-12 16:43       ` Bjorn Andersson
2016-08-12 16:43       ` Bjorn Andersson
2016-08-16 14:54       ` Rob Herring
2016-08-16 14:54         ` Rob Herring
2016-08-16 14:54         ` Rob Herring
2016-08-18 21:30         ` Suman Anna
2016-08-18 21:30           ` Suman Anna
2016-08-18 21:30           ` Suman Anna
2016-08-19 21:21           ` Rob Herring
2016-08-19 21:21             ` Rob Herring
2016-08-19 21:21             ` Rob Herring
2016-08-19 21:35             ` Suman Anna
2016-08-19 21:35               ` Suman Anna
2016-08-19 21:35               ` Suman Anna

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160812110201.GD25844@dell \
    --to=lee.jones@linaro.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=d-gerlach@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=s-anna@ti.com \
    --cc=ssantosh@kernel.org \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.