Message ID | 20190725234032.21152-8-pierre-louis.bossart@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | soundwire: updates for 5.4 | expand |
On 25-07-19, 18:39, Pierre-Louis Bossart wrote: > PDI2 reports an invalid count, force the correct hardware-supported > value > > Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> > --- > drivers/soundwire/intel.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c > index 497879dd9c0d..51990b192dc0 100644 > --- a/drivers/soundwire/intel.c > +++ b/drivers/soundwire/intel.c > @@ -401,6 +401,15 @@ intel_pdi_get_ch_cap(struct sdw_intel *sdw, unsigned int pdi_num, bool pcm) > > if (pcm) { > count = intel_readw(shim, SDW_SHIM_PCMSYCHC(link_id, pdi_num)); > + > + /* > + * TODO: pdi number 2 reports channel count as 1 even though > + * it supports 8 channel. Performing hardcoding for pdi > + * number 2. > + */ > + if (pdi_num == 2) > + count = 7; Is that true for all Intel controllers or some generations. Would it not be better to put this under some flag which is set on platform basis? > + > } else { > count = intel_readw(shim, SDW_SHIM_PDMSCAP(link_id)); > count = ((count & SDW_SHIM_PDMSCAP_CPSS) >> > -- > 2.20.1
On 8/2/19 6:57 AM, Vinod Koul wrote: > On 25-07-19, 18:39, Pierre-Louis Bossart wrote: >> PDI2 reports an invalid count, force the correct hardware-supported >> value >> >> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> >> --- >> drivers/soundwire/intel.c | 9 +++++++++ >> 1 file changed, 9 insertions(+) >> >> diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c >> index 497879dd9c0d..51990b192dc0 100644 >> --- a/drivers/soundwire/intel.c >> +++ b/drivers/soundwire/intel.c >> @@ -401,6 +401,15 @@ intel_pdi_get_ch_cap(struct sdw_intel *sdw, unsigned int pdi_num, bool pcm) >> >> if (pcm) { >> count = intel_readw(shim, SDW_SHIM_PCMSYCHC(link_id, pdi_num)); >> + >> + /* >> + * TODO: pdi number 2 reports channel count as 1 even though >> + * it supports 8 channel. Performing hardcoding for pdi >> + * number 2. >> + */ >> + if (pdi_num == 2) >> + count = 7; > > Is that true for all Intel controllers or some generations. Would it not > be better to put this under some flag which is set on platform basis? This is true of all controllers released so far. We will change this if the hardware changes. > >> + >> } else { >> count = intel_readw(shim, SDW_SHIM_PDMSCAP(link_id)); >> count = ((count & SDW_SHIM_PDMSCAP_CPSS) >> >> -- >> 2.20.1 >
diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c index 497879dd9c0d..51990b192dc0 100644 --- a/drivers/soundwire/intel.c +++ b/drivers/soundwire/intel.c @@ -401,6 +401,15 @@ intel_pdi_get_ch_cap(struct sdw_intel *sdw, unsigned int pdi_num, bool pcm) if (pcm) { count = intel_readw(shim, SDW_SHIM_PCMSYCHC(link_id, pdi_num)); + + /* + * TODO: pdi number 2 reports channel count as 1 even though + * it supports 8 channel. Performing hardcoding for pdi + * number 2. + */ + if (pdi_num == 2) + count = 7; + } else { count = intel_readw(shim, SDW_SHIM_PDMSCAP(link_id)); count = ((count & SDW_SHIM_PDMSCAP_CPSS) >>
PDI2 reports an invalid count, force the correct hardware-supported value Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> --- drivers/soundwire/intel.c | 9 +++++++++ 1 file changed, 9 insertions(+)