On Tue, Jul 19, 2022 at 6:34 PM David Laight David.Laight@aculab.com wrote:
From: Mark Brown
Sent: 19 July 2022 11:17
On Tue, Jul 19, 2022 at 10:01:54AM +0000, David Laight wrote:
From: Shengjiu Wang
- ret = of_property_read_u32(np, "fsl,asrc-format",
&asrc->asrc_format);
- ret = of_property_read_u32(np, "fsl,asrc-format", (u32
*)&asrc->asrc_format);
Ugg, you really shouldn't need to do that. It means that something is badly wrong somewhere. Casting pointers to integer types is just asking for a bug.
That's casting one pointer type to another pointer type.
It is casting the address of some type to a 'u32 *'. This will then be dereferenced by the called function. So the original type better be 32 bits.
I'm also guessing that sparse was complaining about endianness? It isn't at all clear that these casts actually fix it.
The sparse is complaining about the snd_pcm_format_t cast to u32/int type.
The code in include/sound/pcm.h also does such __force cast. #define _SNDRV_PCM_FMTBIT(fmt) (1ULL << (__force int)SNDRV_PCM_FORMAT_##fmt)
The change I have made does not cause an issue.
Best regards Wang shengjiu
(Mark: You'll be glad to hear that the office aircon is broken again - two weeks lead time on the spare part.)
David
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)