[alsa-devel] endianness problems in fireworks/bebob_maudio
Clemens Ladisch
clemens at ladisch.de
Sun Dec 7 22:24:02 CET 2014
Hi,
sparse complains:
sound/firewire/fireworks/fireworks_transaction.c:127:18: warning: restricted __be32 degrades to integer
t = (struct snd_efw_transaction *)data;
length = min_t(size_t, t->length * sizeof(t->length), length);
't->length' is still a big-endian value. This means that the driver
ends up always using 'length'.
sound/firewire/bebob/bebob_maudio.c:100:17: warning: incorrect type in initializer (different base types)
sound/firewire/bebob/bebob_maudio.c:100:17: expected restricted __be32
sound/firewire/bebob/bebob_maudio.c:100:17: got int
__be32 cues[3] = {
MAUDIO_BOOTLOADER_CUE1,
MAUDIO_BOOTLOADER_CUE2,
MAUDIO_BOOTLOADER_CUE3
};
rcode = fw_run_transaction(device->card, TCODE_WRITE_BLOCK_REQUEST,
device->node_id, device->generation,
device->max_speed, BEBOB_ADDR_REG_REQ,
cues, sizeof(cues));
The three MAUDIO_BOOTLOADER_CUEx values will end up as a different byte
sequence on big-endian machines. The simplest way to have these twelve
bytes unchanged on the bus is to have a twelve-byte array in the driver.
Regards,
Clemens
More information about the Alsa-devel
mailing list