Lines Matching refs:chip
33 struct snd_pdacf *chip = private_data; in pdacf_ak4117_read() local
38 spin_lock_irqsave(&chip->ak4117_lock, flags); in pdacf_ak4117_read()
40 while (pdacf_reg_read(chip, PDAUDIOCF_REG_SCR) & PDAUDIOCF_AK_SBP) { in pdacf_ak4117_read()
43 spin_unlock_irqrestore(&chip->ak4117_lock, flags); in pdacf_ak4117_read()
48 pdacf_reg_write(chip, PDAUDIOCF_REG_AK_IFR, (u16)reg << 8); in pdacf_ak4117_read()
50 while (pdacf_reg_read(chip, PDAUDIOCF_REG_SCR) & PDAUDIOCF_AK_SBP) { in pdacf_ak4117_read()
53 spin_unlock_irqrestore(&chip->ak4117_lock, flags); in pdacf_ak4117_read()
58 res = (unsigned char)pdacf_reg_read(chip, PDAUDIOCF_REG_AK_IFR); in pdacf_ak4117_read()
59 spin_unlock_irqrestore(&chip->ak4117_lock, flags); in pdacf_ak4117_read()
65 struct snd_pdacf *chip = private_data; in pdacf_ak4117_write() local
69 spin_lock_irqsave(&chip->ak4117_lock, flags); in pdacf_ak4117_write()
71 while (inw(chip->port + PDAUDIOCF_REG_SCR) & PDAUDIOCF_AK_SBP) { in pdacf_ak4117_write()
74 spin_unlock_irqrestore(&chip->ak4117_lock, flags); in pdacf_ak4117_write()
79 outw((u16)reg << 8 | val | (1<<13), chip->port + PDAUDIOCF_REG_AK_IFR); in pdacf_ak4117_write()
80 spin_unlock_irqrestore(&chip->ak4117_lock, flags); in pdacf_ak4117_write()
84 void pdacf_dump(struct snd_pdacf *chip)
86 printk(KERN_DEBUG "PDAUDIOCF DUMP (0x%lx):\n", chip->port);
88 inw(chip->port + PDAUDIOCF_REG_WDP));
90 inw(chip->port + PDAUDIOCF_REG_RDP));
92 inw(chip->port + PDAUDIOCF_REG_TCR));
94 inw(chip->port + PDAUDIOCF_REG_SCR));
96 inw(chip->port + PDAUDIOCF_REG_ISR));
98 inw(chip->port + PDAUDIOCF_REG_IER));
100 inw(chip->port + PDAUDIOCF_REG_AK_IFR));
104 static int pdacf_reset(struct snd_pdacf *chip, int powerdown) in pdacf_reset() argument
108 val = pdacf_reg_read(chip, PDAUDIOCF_REG_SCR); in pdacf_reset()
111 pdacf_reg_write(chip, PDAUDIOCF_REG_SCR, val); in pdacf_reset()
114 pdacf_reg_write(chip, PDAUDIOCF_REG_SCR, val); in pdacf_reset()
117 pdacf_reg_write(chip, PDAUDIOCF_REG_SCR, val); in pdacf_reset()
121 pdacf_reg_write(chip, PDAUDIOCF_REG_SCR, val); in pdacf_reset()
127 void pdacf_reinit(struct snd_pdacf *chip, int resume) in pdacf_reinit() argument
129 pdacf_reset(chip, 0); in pdacf_reinit()
131 pdacf_reg_write(chip, PDAUDIOCF_REG_SCR, chip->suspend_reg_scr); in pdacf_reinit()
132 snd_ak4117_reinit(chip->ak4117); in pdacf_reinit()
133 pdacf_reg_write(chip, PDAUDIOCF_REG_TCR, chip->regmap[PDAUDIOCF_REG_TCR>>1]); in pdacf_reinit()
134 pdacf_reg_write(chip, PDAUDIOCF_REG_IER, chip->regmap[PDAUDIOCF_REG_IER>>1]); in pdacf_reinit()
140 struct snd_pdacf *chip = entry->private_data; in pdacf_proc_read() local
144 tmp = pdacf_reg_read(chip, PDAUDIOCF_REG_SCR); in pdacf_proc_read()
149 static void pdacf_proc_init(struct snd_pdacf *chip) in pdacf_proc_init() argument
153 if (! snd_card_proc_new(chip->card, "pdaudiocf", &entry)) in pdacf_proc_init()
154 snd_info_set_text_ops(entry, chip, pdacf_proc_read); in pdacf_proc_init()
159 struct snd_pdacf *chip; in snd_pdacf_create() local
161 chip = kzalloc(sizeof(*chip), GFP_KERNEL); in snd_pdacf_create()
162 if (chip == NULL) in snd_pdacf_create()
164 chip->card = card; in snd_pdacf_create()
165 spin_lock_init(&chip->reg_lock); in snd_pdacf_create()
166 spin_lock_init(&chip->ak4117_lock); in snd_pdacf_create()
167 tasklet_init(&chip->tq, pdacf_tasklet, (unsigned long)chip); in snd_pdacf_create()
168 card->private_data = chip; in snd_pdacf_create()
170 pdacf_proc_init(chip); in snd_pdacf_create()
171 return chip; in snd_pdacf_create()
176 struct snd_pdacf *chip = ak4117->change_callback_private; in snd_pdacf_ak4117_change() local
182 spin_lock_irqsave(&chip->reg_lock, flags); in snd_pdacf_ak4117_change()
183 val = chip->regmap[PDAUDIOCF_REG_SCR>>1]; in snd_pdacf_ak4117_change()
188 pdacf_reg_write(chip, PDAUDIOCF_REG_SCR, val); in snd_pdacf_ak4117_change()
189 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_pdacf_ak4117_change()
192 int snd_pdacf_ak4117_create(struct snd_pdacf *chip) in snd_pdacf_ak4117_create() argument
208 err = pdacf_reset(chip, 0); in snd_pdacf_ak4117_create()
211 …err = snd_ak4117_create(chip->card, pdacf_ak4117_read, pdacf_ak4117_write, pgm, chip, &chip->ak411… in snd_pdacf_ak4117_create()
215 val = pdacf_reg_read(chip, PDAUDIOCF_REG_TCR); in snd_pdacf_ak4117_create()
222 pdacf_reg_write(chip, PDAUDIOCF_REG_TCR, val); in snd_pdacf_ak4117_create()
225 val = pdacf_reg_read(chip, PDAUDIOCF_REG_SCR); in snd_pdacf_ak4117_create()
229 pdacf_reg_write(chip, PDAUDIOCF_REG_SCR, val); in snd_pdacf_ak4117_create()
232 val = pdacf_reg_read(chip, PDAUDIOCF_REG_IER); in snd_pdacf_ak4117_create()
237 pdacf_reg_write(chip, PDAUDIOCF_REG_IER, val); in snd_pdacf_ak4117_create()
239 chip->ak4117->change_callback_private = chip; in snd_pdacf_ak4117_create()
240 chip->ak4117->change_callback = snd_pdacf_ak4117_change; in snd_pdacf_ak4117_create()
243 snd_pdacf_ak4117_change(chip->ak4117, AK4117_UNLCK, 0); in snd_pdacf_ak4117_create()
248 void snd_pdacf_powerdown(struct snd_pdacf *chip) in snd_pdacf_powerdown() argument
252 val = pdacf_reg_read(chip, PDAUDIOCF_REG_SCR); in snd_pdacf_powerdown()
253 chip->suspend_reg_scr = val; in snd_pdacf_powerdown()
255 pdacf_reg_write(chip, PDAUDIOCF_REG_SCR, val); in snd_pdacf_powerdown()
257 val = inw(chip->port + PDAUDIOCF_REG_IER); in snd_pdacf_powerdown()
259 outw(val, chip->port + PDAUDIOCF_REG_IER); in snd_pdacf_powerdown()
260 pdacf_reset(chip, 1); in snd_pdacf_powerdown()
265 int snd_pdacf_suspend(struct snd_pdacf *chip) in snd_pdacf_suspend() argument
269 snd_power_change_state(chip->card, SNDRV_CTL_POWER_D3hot); in snd_pdacf_suspend()
270 snd_pcm_suspend_all(chip->pcm); in snd_pdacf_suspend()
272 val = inw(chip->port + PDAUDIOCF_REG_IER); in snd_pdacf_suspend()
274 outw(val, chip->port + PDAUDIOCF_REG_IER); in snd_pdacf_suspend()
275 chip->chip_status |= PDAUDIOCF_STAT_IS_SUSPENDED; /* ignore interrupts from now */ in snd_pdacf_suspend()
276 snd_pdacf_powerdown(chip); in snd_pdacf_suspend()
280 static inline int check_signal(struct snd_pdacf *chip) in check_signal() argument
282 return (chip->ak4117->rcs0 & AK4117_UNLCK) == 0; in check_signal()
285 int snd_pdacf_resume(struct snd_pdacf *chip) in snd_pdacf_resume() argument
289 pdacf_reinit(chip, 1); in snd_pdacf_resume()
292 (snd_ak4117_external_rate(chip->ak4117) <= 0 || !check_signal(chip))) in snd_pdacf_resume()
294 chip->chip_status &= ~PDAUDIOCF_STAT_IS_SUSPENDED; in snd_pdacf_resume()
295 snd_power_change_state(chip->card, SNDRV_CTL_POWER_D0); in snd_pdacf_resume()