2016-11-20 18:36 GMT+01:00 Ezequiel Garcia <ezequ...@vanguardiasur.com.ar>:
> On 27 October 2016 at 17:34, Marcel Hasler <mahas...@gmail.com> wrote:
>> Some STK1160-based devices use the chip's internal 8-bit ADC. This is 
>> configured through a strap
>> pin. The value of this and other pins can be read through the POSVA 
>> register. If the internal
>> ADC is used, there's no point trying to setup the unavailable AC97 codec.
>>
>> Signed-off-by: Marcel Hasler <mahas...@gmail.com>
>> ---
>>  drivers/media/usb/stk1160/stk1160-ac97.c | 15 +++++++++++++++
>>  drivers/media/usb/stk1160/stk1160-core.c |  3 +--
>>  drivers/media/usb/stk1160/stk1160-reg.h  |  3 +++
>>  3 files changed, 19 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/media/usb/stk1160/stk1160-ac97.c 
>> b/drivers/media/usb/stk1160/stk1160-ac97.c
>> index d3665ce..6dbc39f 100644
>> --- a/drivers/media/usb/stk1160/stk1160-ac97.c
>> +++ b/drivers/media/usb/stk1160/stk1160-ac97.c
>> @@ -90,8 +90,23 @@ void stk1160_ac97_dump_regs(struct stk1160 *dev)
>>  }
>>  #endif
>>
>> +int stk1160_has_ac97(struct stk1160 *dev)
>> +{
>> +       u8 value;
>> +
>> +       stk1160_read_reg(dev, STK1160_POSVA, &value);
>> +
>> +       /* Bit 2 high means internal ADC */
>> +       return !(value & 0x04);
>
> How about define a macro such as:
>
> diff --git a/drivers/media/usb/stk1160/stk1160-reg.h
> b/drivers/media/usb/stk1160/stk1160-reg.h
> index a4ab586fcee1..4922249d7d34 100644
> --- a/drivers/media/usb/stk1160/stk1160-reg.h
> +++ b/drivers/media/usb/stk1160/stk1160-reg.h
> @@ -28,6 +28,7 @@
>
>  /* Power-on Strapping Data */
>  #define STK1160_POSVA                  0x010
> +#define  STK1160_POSVA_ACSYNC          BIT(2)
>

Good idea, I'll do that.

> Also, the spec mentions another POSVA bit relevant
> to audio ACDOUT. Should we check that too?
>

Yes, that would make sense.

>> +}
>> +
>>  void stk1160_ac97_setup(struct stk1160 *dev)
>>  {
>> +       if (!stk1160_has_ac97(dev)) {
>> +               stk1160_info("Device uses internal 8-bit ADC, skipping AC97 
>> setup.");
>> +               return;
>> +       }
>> +
>>         /* Two-step reset AC97 interface and hardware codec */
>>         stk1160_write_reg(dev, STK1160_AC97CTL_0, 0x94);
>>         stk1160_write_reg(dev, STK1160_AC97CTL_0, 0x8c);
>> diff --git a/drivers/media/usb/stk1160/stk1160-core.c 
>> b/drivers/media/usb/stk1160/stk1160-core.c
>> index f3c9b8a..c86eb61 100644
>> --- a/drivers/media/usb/stk1160/stk1160-core.c
>> +++ b/drivers/media/usb/stk1160/stk1160-core.c
>> @@ -20,8 +20,7 @@
>>   *
>>   * TODO:
>>   *
>> - * 1. (Try to) detect if we must register ac97 mixer
>> - * 2. Support stream at lower speed: lower frame rate or lower frame size.
>> + * 1. Support stream at lower speed: lower frame rate or lower frame size.
>>   *
>>   */
>>
>> diff --git a/drivers/media/usb/stk1160/stk1160-reg.h 
>> b/drivers/media/usb/stk1160/stk1160-reg.h
>> index 81ff3a1..a4ab586 100644
>> --- a/drivers/media/usb/stk1160/stk1160-reg.h
>> +++ b/drivers/media/usb/stk1160/stk1160-reg.h
>> @@ -26,6 +26,9 @@
>>  /* Remote Wakup Control */
>>  #define STK1160_RMCTL                  0x00c
>>
>> +/* Power-on Strapping Data */
>> +#define STK1160_POSVA                  0x010
>> +
>>  /*
>>   * Decoder Control Register:
>>   * This byte controls capture start/stop
>> --
>> 2.10.1
>>
>
>
>
> --
> Ezequiel GarcĂ­a, VanguardiaSur
> www.vanguardiasur.com.ar
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to