diff options
Diffstat (limited to 'sound/i2c/other/ak4114.c')
-rw-r--r-- | sound/i2c/other/ak4114.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/sound/i2c/other/ak4114.c b/sound/i2c/other/ak4114.c index d2f2c5078e65..69dcaf8ac793 100644 --- a/sound/i2c/other/ak4114.c +++ b/sound/i2c/other/ak4114.c | |||
@@ -66,10 +66,7 @@ static void snd_ak4114_free(struct ak4114 *chip) | |||
66 | { | 66 | { |
67 | chip->init = 1; /* don't schedule new work */ | 67 | chip->init = 1; /* don't schedule new work */ |
68 | mb(); | 68 | mb(); |
69 | if (chip->workqueue != NULL) { | 69 | flush_scheduled_work(); |
70 | flush_workqueue(chip->workqueue); | ||
71 | destroy_workqueue(chip->workqueue); | ||
72 | } | ||
73 | kfree(chip); | 70 | kfree(chip); |
74 | } | 71 | } |
75 | 72 | ||
@@ -106,12 +103,6 @@ int snd_ak4114_create(struct snd_card *card, | |||
106 | for (reg = 0; reg < 5; reg++) | 103 | for (reg = 0; reg < 5; reg++) |
107 | chip->txcsb[reg] = txcsb[reg]; | 104 | chip->txcsb[reg] = txcsb[reg]; |
108 | 105 | ||
109 | chip->workqueue = create_workqueue("snd-ak4114"); | ||
110 | if (chip->workqueue == NULL) { | ||
111 | kfree(chip); | ||
112 | return -ENOMEM; | ||
113 | } | ||
114 | |||
115 | snd_ak4114_reinit(chip); | 106 | snd_ak4114_reinit(chip); |
116 | 107 | ||
117 | chip->rcs0 = reg_read(chip, AK4114_REG_RCS0) & ~(AK4114_QINT | AK4114_CINT); | 108 | chip->rcs0 = reg_read(chip, AK4114_REG_RCS0) & ~(AK4114_QINT | AK4114_CINT); |
@@ -143,7 +134,7 @@ void snd_ak4114_reinit(struct ak4114 *chip) | |||
143 | 134 | ||
144 | chip->init = 1; | 135 | chip->init = 1; |
145 | mb(); | 136 | mb(); |
146 | flush_workqueue(chip->workqueue); | 137 | flush_scheduled_work(); |
147 | /* bring the chip to reset state and powerdown state */ | 138 | /* bring the chip to reset state and powerdown state */ |
148 | reg_write(chip, AK4114_REG_PWRDN, old & ~(AK4114_RST|AK4114_PWN)); | 139 | reg_write(chip, AK4114_REG_PWRDN, old & ~(AK4114_RST|AK4114_PWN)); |
149 | udelay(200); | 140 | udelay(200); |
@@ -159,7 +150,7 @@ void snd_ak4114_reinit(struct ak4114 *chip) | |||
159 | /* bring up statistics / event queing */ | 150 | /* bring up statistics / event queing */ |
160 | chip->init = 0; | 151 | chip->init = 0; |
161 | INIT_DELAYED_WORK(&chip->work, ak4114_stats); | 152 | INIT_DELAYED_WORK(&chip->work, ak4114_stats); |
162 | queue_delayed_work(chip->workqueue, &chip->work, HZ / 10); | 153 | schedule_delayed_work(&chip->work, HZ / 10); |
163 | } | 154 | } |
164 | 155 | ||
165 | static unsigned int external_rate(unsigned char rcs1) | 156 | static unsigned int external_rate(unsigned char rcs1) |
@@ -568,7 +559,7 @@ static void ak4114_stats(struct work_struct *work) | |||
568 | if (chip->init) | 559 | if (chip->init) |
569 | return; | 560 | return; |
570 | snd_ak4114_check_rate_and_errors(chip, 0); | 561 | snd_ak4114_check_rate_and_errors(chip, 0); |
571 | queue_delayed_work(chip->workqueue, &chip->work, HZ / 10); | 562 | schedule_delayed_work(&chip->work, HZ / 10); |
572 | } | 563 | } |
573 | 564 | ||
574 | EXPORT_SYMBOL(snd_ak4114_create); | 565 | EXPORT_SYMBOL(snd_ak4114_create); |