Lines Matching +full:reg +full:- +full:addr

1 // SPDX-License-Identifier: GPL-2.0-only
3 * C-Media CMI8788 driver - helper functions
16 u8 oxygen_read8(struct oxygen *chip, unsigned int reg) in oxygen_read8() argument
18 return inb(chip->addr + reg); in oxygen_read8()
22 u16 oxygen_read16(struct oxygen *chip, unsigned int reg) in oxygen_read16() argument
24 return inw(chip->addr + reg); in oxygen_read16()
28 u32 oxygen_read32(struct oxygen *chip, unsigned int reg) in oxygen_read32() argument
30 return inl(chip->addr + reg); in oxygen_read32()
34 void oxygen_write8(struct oxygen *chip, unsigned int reg, u8 value) in oxygen_write8() argument
36 outb(value, chip->addr + reg); in oxygen_write8()
37 chip->saved_registers._8[reg] = value; in oxygen_write8()
41 void oxygen_write16(struct oxygen *chip, unsigned int reg, u16 value) in oxygen_write16() argument
43 outw(value, chip->addr + reg); in oxygen_write16()
44 chip->saved_registers._16[reg / 2] = cpu_to_le16(value); in oxygen_write16()
48 void oxygen_write32(struct oxygen *chip, unsigned int reg, u32 value) in oxygen_write32() argument
50 outl(value, chip->addr + reg); in oxygen_write32()
51 chip->saved_registers._32[reg / 4] = cpu_to_le32(value); in oxygen_write32()
55 void oxygen_write8_masked(struct oxygen *chip, unsigned int reg, in oxygen_write8_masked() argument
58 u8 tmp = inb(chip->addr + reg); in oxygen_write8_masked()
61 outb(tmp, chip->addr + reg); in oxygen_write8_masked()
62 chip->saved_registers._8[reg] = tmp; in oxygen_write8_masked()
66 void oxygen_write16_masked(struct oxygen *chip, unsigned int reg, in oxygen_write16_masked() argument
69 u16 tmp = inw(chip->addr + reg); in oxygen_write16_masked()
72 outw(tmp, chip->addr + reg); in oxygen_write16_masked()
73 chip->saved_registers._16[reg / 2] = cpu_to_le16(tmp); in oxygen_write16_masked()
77 void oxygen_write32_masked(struct oxygen *chip, unsigned int reg, in oxygen_write32_masked() argument
80 u32 tmp = inl(chip->addr + reg); in oxygen_write32_masked()
83 outl(tmp, chip->addr + reg); in oxygen_write32_masked()
84 chip->saved_registers._32[reg / 4] = cpu_to_le32(tmp); in oxygen_write32_masked()
96 wait_event_timeout(chip->ac97_waitqueue, in oxygen_ac97_wait()
105 return status & mask ? 0 : -EIO; in oxygen_ac97_wait()
114 * were made by C-Media ...
121 u32 reg; in oxygen_write_ac97() local
123 reg = data; in oxygen_write_ac97()
124 reg |= index << OXYGEN_AC97_REG_ADDR_SHIFT; in oxygen_write_ac97()
125 reg |= OXYGEN_AC97_REG_DIR_WRITE; in oxygen_write_ac97()
126 reg |= codec << OXYGEN_AC97_REG_CODEC_SHIFT; in oxygen_write_ac97()
128 for (count = 5; count > 0; --count) { in oxygen_write_ac97()
130 oxygen_write32(chip, OXYGEN_AC97_REGS, reg); in oxygen_write_ac97()
134 chip->saved_ac97_registers[codec][index / 2] = data; in oxygen_write_ac97()
138 dev_err(chip->card->dev, "AC'97 write timeout\n"); in oxygen_write_ac97()
147 u32 reg; in oxygen_read_ac97() local
149 reg = index << OXYGEN_AC97_REG_ADDR_SHIFT; in oxygen_read_ac97()
150 reg |= OXYGEN_AC97_REG_DIR_READ; in oxygen_read_ac97()
151 reg |= codec << OXYGEN_AC97_REG_CODEC_SHIFT; in oxygen_read_ac97()
152 for (count = 5; count > 0; --count) { in oxygen_read_ac97()
154 oxygen_write32(chip, OXYGEN_AC97_REGS, reg); in oxygen_read_ac97()
167 reg ^= 0xffff; in oxygen_read_ac97()
170 dev_err(chip->card->dev, "AC'97 read timeout on codec %u\n", codec); in oxygen_read_ac97()
193 for (count = 50; count > 0; count--) { in oxygen_wait_spi()
199 dev_err(chip->card->dev, "oxygen: SPI wait timeout\n"); in oxygen_wait_spi()
200 return -EIO; in oxygen_wait_spi()
279 dev_err(chip->card->dev, "EEPROM write timeout\n"); in oxygen_write_eeprom()