/*
*
*/
-unsigned char pdacf_ak4117_read(void *private_data, unsigned char reg)
+static unsigned char pdacf_ak4117_read(void *private_data, unsigned char reg)
{
- pdacf_t *chip = snd_magic_cast(pdacf_t, private_data, return 0);
+ pdacf_t *chip = private_data;
unsigned long timeout;
unsigned long flags;
unsigned char res;
return res;
}
-void pdacf_ak4117_write(void *private_data, unsigned char reg, unsigned char val)
+static void pdacf_ak4117_write(void *private_data, unsigned char reg, unsigned char val)
{
- pdacf_t *chip = snd_magic_cast(pdacf_t, private_data, return);
+ pdacf_t *chip = private_data;
unsigned long timeout;
unsigned long flags;
static void pdacf_proc_read(snd_info_entry_t * entry,
snd_info_buffer_t * buffer)
{
- pdacf_t *chip = snd_magic_cast(pdacf_t, entry->private_data, return);
+ pdacf_t *chip = entry->private_data;
u16 tmp;
snd_iprintf(buffer, "PDAudioCF\n\n");
{
pdacf_t *chip;
- chip = snd_magic_kcalloc(pdacf_t, 0, GFP_KERNEL);
+ chip = kcalloc(1, sizeof(*chip), GFP_KERNEL);
if (chip == NULL)
return NULL;
chip->card = card;
#ifdef CONFIG_PM
-void snd_pdacf_suspend(pdacf_t *chip)
+int snd_pdacf_suspend(snd_card_t *card, pm_message_t state)
{
- snd_card_t *card = chip->card;
+ pdacf_t *chip = card->pm_private_data;
u16 val;
- if (card->power_state == SNDRV_CTL_POWER_D3hot)
- return;
snd_pcm_suspend_all(chip->pcm);
/* disable interrupts, but use direct write to preserve old register value in chip->regmap */
val = inw(chip->port + PDAUDIOCF_REG_IER);
outw(val, chip->port + PDAUDIOCF_REG_IER);
chip->chip_status |= PDAUDIOCF_STAT_IS_SUSPENDED; /* ignore interrupts from now */
snd_pdacf_powerdown(chip);
- snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+ return 0;
}
static inline int check_signal(pdacf_t *chip)
return (chip->ak4117->rcs0 & AK4117_UNLCK) == 0;
}
-void snd_pdacf_resume(pdacf_t *chip)
+int snd_pdacf_resume(snd_card_t *card)
{
- snd_card_t *card = chip->card;
+ pdacf_t *chip = card->pm_private_data;
int timeout = 40;
- if (card->power_state == SNDRV_CTL_POWER_D0)
- return;
pdacf_reinit(chip, 1);
/* wait for AK4117's PLL */
while (timeout-- > 0 &&
(snd_ak4117_external_rate(chip->ak4117) <= 0 || !check_signal(chip)))
mdelay(1);
chip->chip_status &= ~PDAUDIOCF_STAT_IS_SUSPENDED;
- snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-int snd_pdacf_set_power_state(snd_card_t *card, unsigned int power_state)
-{
- pdacf_t *chip = snd_magic_cast(pdacf_t, card->power_state_private_data, return -ENXIO);
-
- switch (power_state) {
- case SNDRV_CTL_POWER_D0:
- case SNDRV_CTL_POWER_D1:
- case SNDRV_CTL_POWER_D2:
- snd_pdacf_resume(chip);
- break;
- case SNDRV_CTL_POWER_D3hot:
- case SNDRV_CTL_POWER_D3cold:
- snd_pdacf_suspend(chip);
- break;
- default:
- return -EINVAL;
- }
return 0;
}
-
#endif