Changeset 717 for GPL/trunk/alsa-kernel/pci/ymfpci/ymfpci.c
- Timestamp:
- Aug 7, 2022, 6:11:12 PM (3 years ago)
- Location:
- GPL/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
GPL/trunk
- Property svn:mergeinfo changed
/GPL/branches/uniaud32-next merged: 710-716
- Property svn:mergeinfo changed
-
GPL/trunk/alsa-kernel/pci/ymfpci/ymfpci.c
r703 r717 110 110 111 111 if (!r) { 112 r = request_region(io_port, 1, "YMFPCI gameport"); 112 r = devm_request_region(&chip->pci->dev, io_port, 1, 113 "YMFPCI gameport"); 113 114 if (!r) { 114 115 dev_err(chip->card->dev, … … 122 123 dev_err(chip->card->dev, 123 124 "cannot allocate memory for gameport\n"); 124 release_and_free_resource(r);125 125 return -ENOMEM; 126 126 } … … 131 131 gameport_set_dev_parent(gp, &chip->pci->dev); 132 132 gp->io = io_port; 133 gameport_set_port_data(gp, r);134 133 135 134 if (chip->pci->device >= 0x0010) /* YMF 744/754 */ … … 147 146 { 148 147 if (chip->gameport) { 149 struct resource *r = gameport_get_port_data(chip->gameport);150 151 148 gameport_unregister_port(chip->gameport); 152 149 chip->gameport = NULL; 153 154 release_and_free_resource(r);155 150 } 156 151 } … … 181 176 182 177 err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, 183 0, &card); 184 if (err < 0) 185 return err; 178 sizeof(*chip), &card); 179 if (err < 0) 180 return err; 181 chip = card->private_data; 186 182 187 183 switch (pci_id->device) { … … 204 200 } 205 201 if (fm_port[dev] > 0) 206 fm_res = request_region(fm_port[dev], 4, "YMFPCI OPL3"); 202 fm_res = devm_request_region(&pci->dev, fm_port[dev], 203 4, "YMFPCI OPL3"); 207 204 if (fm_res) { 208 205 legacy_ctrl |= YMFPCI_LEGACY_FMEN; … … 214 211 } 215 212 if (mpu_port[dev] > 0) 216 mpu_res = request_region(mpu_port[dev], 2, "YMFPCI MPU401"); 213 mpu_res = devm_request_region(&pci->dev, mpu_port[dev], 214 2, "YMFPCI MPU401"); 217 215 if (mpu_res) { 218 216 legacy_ctrl |= YMFPCI_LEGACY_MEN; … … 228 226 } 229 227 if (fm_port[dev] > 0) 230 fm_res = request_region(fm_port[dev], 4, "YMFPCI OPL3"); 228 fm_res = devm_request_region(&pci->dev, fm_port[dev], 229 4, "YMFPCI OPL3"); 231 230 if (fm_res) { 232 231 legacy_ctrl |= YMFPCI_LEGACY_FMEN; … … 243 242 } 244 243 if (mpu_port[dev] > 0) 245 mpu_res = request_region(mpu_port[dev], 2, "YMFPCI MPU401"); 244 mpu_res = devm_request_region(&pci->dev, mpu_port[dev], 245 2, "YMFPCI MPU401"); 246 246 if (mpu_res) { 247 247 legacy_ctrl |= YMFPCI_LEGACY_MEN; … … 258 258 pci_write_config_word(pci, PCIR_DSXG_LEGACY, legacy_ctrl); 259 259 pci_write_config_word(pci, PCIR_DSXG_ELEGACY, legacy_ctrl2); 260 err = snd_ymfpci_create(card, pci, old_legacy_ctrl, &chip); 261 if (err < 0) { 262 release_and_free_resource(mpu_res); 263 release_and_free_resource(fm_res); 264 goto free_card; 265 } 266 chip->fm_res = fm_res; 267 chip->mpu_res = mpu_res; 268 card->private_data = chip; 260 err = snd_ymfpci_create(card, pci, old_legacy_ctrl); 261 if (err < 0) 262 return err; 269 263 270 264 strcpy(card->driver, str); … … 276 270 err = snd_ymfpci_pcm(chip, 0); 277 271 if (err < 0) 278 goto free_card;272 return err; 279 273 280 274 err = snd_ymfpci_pcm_spdif(chip, 1); 281 275 if (err < 0) 282 goto free_card;276 return err; 283 277 284 278 err = snd_ymfpci_mixer(chip, rear_switch[dev]); 285 279 if (err < 0) 286 goto free_card;280 return err; 287 281 288 282 if (chip->ac97->ext_id & AC97_EI_SDAC) { 289 283 err = snd_ymfpci_pcm_4ch(chip, 2); 290 284 if (err < 0) 291 goto free_card;285 return err; 292 286 293 287 err = snd_ymfpci_pcm2(chip, 3); 294 288 if (err < 0) 295 goto free_card;289 return err; 296 290 } 297 291 err = snd_ymfpci_timer(chip, 0); 298 292 if (err < 0) 299 goto free_card;300 301 if ( chip->mpu_res) {293 return err; 294 295 if (mpu_res) { 302 296 err = snd_mpu401_uart_new(card, 0, MPU401_HW_YMFPCI, 303 297 mpu_port[dev], … … 313 307 } 314 308 } 315 if ( chip->fm_res) {309 if (fm_res) { 316 310 err = snd_opl3_create(card, 317 311 fm_port[dev], … … 328 322 if (err < 0) { 329 323 dev_err(card->dev, "cannot create opl3 hwdep\n"); 330 goto free_card;324 return err; 331 325 } 332 326 } … … 337 331 err = snd_card_register(card); 338 332 if (err < 0) 339 goto free_card;333 return err; 340 334 341 335 pci_set_drvdata(pci, card); 342 336 dev++; 343 337 return 0; 344 345 free_card:346 snd_card_free(card);347 return err;348 }349 350 static void snd_card_ymfpci_remove(struct pci_dev *pci)351 {352 snd_card_free(pci_get_drvdata(pci));353 338 } 354 339 … … 357 342 .id_table = snd_ymfpci_ids, 358 343 .probe = snd_card_ymfpci_probe, 359 .remove = snd_card_ymfpci_remove,360 344 #ifdef CONFIG_PM_SLEEP 361 345 .driver = {
Note:
See TracChangeset
for help on using the changeset viewer.