8 May
2023
8 May
'23
9:14 a.m.
On Fri, 28 Apr 2023 11:59:41 +0200, Oswald Buddenhagen wrote:
+#define snd_emu10k1_ptr_read(emu, reg, voice) \
- ({ \
u32 data = snd_emu10k1_ptr_read_raw(emu, REG_ADDR(reg, voice)); \
if (REG_SIZE(reg)) \
data = REG_VAL_GET(reg, data); \
data; \
- })
+#define snd_emu10k1_ptr_write(emu, reg, voice, data) \
- do { \
if (REG_SIZE(reg)) \
snd_emu10k1_ptr_modify(emu, REG_ADDR(reg, voice), \
~REG_MASK(reg), REG_VAL_PUT(reg, data)); \
else \
snd_emu10k1_ptr_write_raw(emu, REG_ADDR(reg, voice), data); \
- } while (0)
Must those be macros? Not only that macro isn't really safe to use for obvious reasons, the expansion would cost significantly as they are called in many places.
--- a/sound/pci/emu10k1/io.c +++ b/sound/pci/emu10k1/io.c @@ -18,72 +18,64 @@ #include <linux/export.h> #include "p17v.h"
-unsigned int snd_emu10k1_ptr_read(struct snd_emu10k1 * emu, unsigned int reg, unsigned int chn) +static inline int check_ptr_reg(struct snd_emu10k1 *emu, u32 reg)
Should be bool.
thanks,
Takashi