[alsa-devel] [PATCH 1/7] ALSA: firewire-tascam: add skeleton for TASCAM FireWire series

Takashi Sakamoto o-takashi at sakamocchi.jp
Sun Oct 4 01:33:07 CEST 2015


Hi,

On Oct 04 2015 01:07, Takashi Iwai wrote:
> On Sat, 03 Oct 2015 11:57:34 +0200,
> Takashi Sakamoto wrote:
>>
>> On 2015年10月03日 18:14, Clemens Ladisch wrote:
>>> Takashi Sakamoto wrote:
>>>>>>> 23		data = be32_to_cpu(fw_dev->config_rom[28]);
>>>>
>>>> About using 'be32_to_cpu()', the 'config_rom' member actually has 'const
>>>> u32 *', while in the member caracters in the textual leaf are aligned in
>>>> big-endian.
>>>
>>> Strictly speaking, strings do not have an endianness.
>>>
>>> Most data in the actual configuration ROM is organized as big-endian 32-
>>> bit values, so the FireWire core converts _all_ words from big endian to
>>> CPU endian.  The words that are not actually 32-bit values but strings
>>> have to be converted back; the correct function for this is cpu_to_be32().
>>
>> Yes. And I forgot a pair of cpu_to_be32/be32_to_cpu is symmetric each other!
>> (I'm really a stupid guy, sigh...)
>>
>> This patch solves the sparce warnings.
>>
>> $ git diff
>> diff --git a/sound/firewire/tascam/tascam.c b/sound/firewire/tascam/tascam.c
>> index ee2f498..6e1087e 100644
>> --- a/sound/firewire/tascam/tascam.c
>> +++ b/sound/firewire/tascam/tascam.c
>> @@ -50,19 +50,19 @@ static int check_name(struct snd_tscm *tscm)
>>         struct fw_device *fw_dev = fw_parent_device(tscm->unit);
>>         char vendor[8];
>>         char model[8];
>> -       __u32 data;
>> +       __be32 data;
>>
>>         /* Retrieve model name. */
>> -       data = be32_to_cpu(fw_dev->config_rom[28]);
>> +       data = cpu_to_be32(fw_dev->config_rom[28]);
>>         memcpy(model, &data, 4);
>> -       data = be32_to_cpu(fw_dev->config_rom[29]);
>> +       data = cpu_to_be32(fw_dev->config_rom[29]);
>>         memcpy(model + 4, &data, 4);
>>         model[7] = '\0';
>>
>>         /* Retrieve vendor name. */
>> -       data = be32_to_cpu(fw_dev->config_rom[23]);
>> +       data = cpu_to_be32(fw_dev->config_rom[23]);
>>         memcpy(vendor, &data, 4);
>> -       data = be32_to_cpu(fw_dev->config_rom[24]);
>> +       data = cpu_to_be32(fw_dev->config_rom[24]);
>>         memcpy(vendor + 4, &data, 4);
>>         vendor[7] = '\0';
>>
>>
>>> Iwai-san,
>>
>> Should I re-post this patchset? Or you kindly merge them with your
>> modification?
> 
> I already merged the latest patchset, so incremental patches are
> preferred.

OK. Thanks.


Takashi Sakamoto


More information about the Alsa-devel mailing list