Re: [alsa-devel] [PATCH v2 1/5] soundwire: Add compute_params callback

2019-09-04 Thread Pierre-Louis Bossart

On 9/4/19 4:28 AM, Vinod Koul wrote:

On 13-08-19, 09:35, Srinivas Kandagatla wrote:

From: Vinod Koul 

This callback allows masters to compute the bus parameters required.


Applied this to help manage cross dependencies with various folks better, thanks


Meh. doesn't really help, see my earlier comment, it's missing a call to 
compute_params in deprepare() so not sure this is works...




Re: [PATCH v2 1/5] soundwire: Add compute_params callback

2019-09-04 Thread Vinod Koul
On 13-08-19, 09:35, Srinivas Kandagatla wrote:
> From: Vinod Koul 
> 
> This callback allows masters to compute the bus parameters required.

Applied this to help manage cross dependencies with various folks better, thanks

-- 
~Vinod


Re: [PATCH v2 1/5] soundwire: Add compute_params callback

2019-08-13 Thread Vinod Koul
On 13-08-19, 14:08, Pierre-Louis Bossart wrote:
> On 8/13/19 1:17 PM, Srinivas Kandagatla wrote:
> > 
> > 
> > On 13/08/2019 15:34, Pierre-Louis Bossart wrote:
> > > On 8/13/19 3:35 AM, Srinivas Kandagatla wrote:
> > > > From: Vinod Koul 
> > > > 
> > > > This callback allows masters to compute the bus parameters required.
> > > 
> > > This looks like a partial use of the patch ('soundwire: Add Intel
> > > resource management algorithm')? see comments below
> > > 
> > 
> > Yes it duplicate indeed!
> > 
> > I will use that patch!
> 
> Actually please don't...
> we found issues with the Intel allocation so I'd rather have the big Intel
> patch split into two parts, with callbacks+prepare/deprepare changes going
> in first. It'll be much faster/nicer for everyone.

I was about to say that as well. I think lets take this as is and Intel
algo can be on top of this. That seems easier for everyone to sort
dependencies

-- 
~Vinod


Re: [PATCH v2 1/5] soundwire: Add compute_params callback

2019-08-13 Thread Pierre-Louis Bossart

On 8/13/19 1:17 PM, Srinivas Kandagatla wrote:



On 13/08/2019 15:34, Pierre-Louis Bossart wrote:

On 8/13/19 3:35 AM, Srinivas Kandagatla wrote:

From: Vinod Koul 

This callback allows masters to compute the bus parameters required.


This looks like a partial use of the patch ('soundwire: Add Intel 
resource management algorithm')? see comments below




Yes it duplicate indeed!

I will use that patch!


Actually please don't...
we found issues with the Intel allocation so I'd rather have the big 
Intel patch split into two parts, with callbacks+prepare/deprepare 
changes going in first. It'll be much faster/nicer for everyone.




Re: [PATCH v2 1/5] soundwire: Add compute_params callback

2019-08-13 Thread Srinivas Kandagatla




On 13/08/2019 15:34, Pierre-Louis Bossart wrote:

On 8/13/19 3:35 AM, Srinivas Kandagatla wrote:

From: Vinod Koul 

This callback allows masters to compute the bus parameters required.


This looks like a partial use of the patch ('soundwire: Add Intel 
resource management algorithm')? see comments below




Yes it duplicate indeed!

I will use that patch!

--srini


Re: [PATCH v2 1/5] soundwire: Add compute_params callback

2019-08-13 Thread Pierre-Louis Bossart

On 8/13/19 3:35 AM, Srinivas Kandagatla wrote:

From: Vinod Koul 

This callback allows masters to compute the bus parameters required.


This looks like a partial use of the patch ('soundwire: Add Intel 
resource management algorithm')? see comments below




Signed-off-by: Vinod Koul 
Signed-off-by: Srinivas Kandagatla 
---
  drivers/soundwire/stream.c| 10 ++
  include/linux/soundwire/sdw.h |  2 ++
  2 files changed, 12 insertions(+)

diff --git a/drivers/soundwire/stream.c b/drivers/soundwire/stream.c
index a0476755a459..60bc2fe42928 100644
--- a/drivers/soundwire/stream.c
+++ b/drivers/soundwire/stream.c
@@ -1483,6 +1483,16 @@ static int _sdw_prepare_stream(struct sdw_stream_runtime 
*stream)
bus->params.bandwidth += m_rt->stream->params.rate *
m_rt->ch_count * m_rt->stream->params.bps;
  
+		/* Compute params */

+   if (bus->compute_params) {
+   ret = bus->compute_params(bus);
+   if (ret < 0) {
+   dev_err(bus->dev, "Compute params failed: %d",
+   ret);
+   return ret;
+   }
+   }
+


This would need to be duplicated for deprepare (as was done in the Intel 
patch).



/* Program params */
ret = sdw_program_params(bus);
if (ret < 0) {
diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h
index bea46bd8b6ce..aac68e879fae 100644
--- a/include/linux/soundwire/sdw.h
+++ b/include/linux/soundwire/sdw.h
@@ -718,6 +718,7 @@ struct sdw_master_ops {
   * Bit set implies used number, bit clear implies unused number.
   * @bus_lock: bus lock
   * @msg_lock: message lock
+ * @compute_params: points to Bus resource management implementation
   * @ops: Master callback ops
   * @port_ops: Master port callback ops
   * @params: Current bus parameters
@@ -739,6 +740,7 @@ struct sdw_bus {
DECLARE_BITMAP(assigned, SDW_MAX_DEVICES);
struct mutex bus_lock;
struct mutex msg_lock;
+   int (*compute_params)(struct sdw_bus *bus);


not sure I understand how it's set? We have a default in the Intel patch.


const struct sdw_master_ops *ops;
const struct sdw_master_port_ops *port_ops;
struct sdw_bus_params params;





[PATCH v2 1/5] soundwire: Add compute_params callback

2019-08-13 Thread Srinivas Kandagatla
From: Vinod Koul 

This callback allows masters to compute the bus parameters required.

Signed-off-by: Vinod Koul 
Signed-off-by: Srinivas Kandagatla 
---
 drivers/soundwire/stream.c| 10 ++
 include/linux/soundwire/sdw.h |  2 ++
 2 files changed, 12 insertions(+)

diff --git a/drivers/soundwire/stream.c b/drivers/soundwire/stream.c
index a0476755a459..60bc2fe42928 100644
--- a/drivers/soundwire/stream.c
+++ b/drivers/soundwire/stream.c
@@ -1483,6 +1483,16 @@ static int _sdw_prepare_stream(struct sdw_stream_runtime 
*stream)
bus->params.bandwidth += m_rt->stream->params.rate *
m_rt->ch_count * m_rt->stream->params.bps;
 
+   /* Compute params */
+   if (bus->compute_params) {
+   ret = bus->compute_params(bus);
+   if (ret < 0) {
+   dev_err(bus->dev, "Compute params failed: %d",
+   ret);
+   return ret;
+   }
+   }
+
/* Program params */
ret = sdw_program_params(bus);
if (ret < 0) {
diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h
index bea46bd8b6ce..aac68e879fae 100644
--- a/include/linux/soundwire/sdw.h
+++ b/include/linux/soundwire/sdw.h
@@ -718,6 +718,7 @@ struct sdw_master_ops {
  * Bit set implies used number, bit clear implies unused number.
  * @bus_lock: bus lock
  * @msg_lock: message lock
+ * @compute_params: points to Bus resource management implementation
  * @ops: Master callback ops
  * @port_ops: Master port callback ops
  * @params: Current bus parameters
@@ -739,6 +740,7 @@ struct sdw_bus {
DECLARE_BITMAP(assigned, SDW_MAX_DEVICES);
struct mutex bus_lock;
struct mutex msg_lock;
+   int (*compute_params)(struct sdw_bus *bus);
const struct sdw_master_ops *ops;
const struct sdw_master_port_ops *port_ops;
struct sdw_bus_params params;
-- 
2.21.0