]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'for-3.12' into for-next
authorTakashi Iwai <tiwai@suse.de>
Mon, 15 Jul 2013 10:09:28 +0000 (12:09 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 15 Jul 2013 10:09:28 +0000 (12:09 +0200)
1  2 
sound/firewire/speakers.c

index 2c6386503940bf6db7f996a2dcc6a9a843182013,0f1e5d88ed15464cc73b617193ee6a6547c1f54f..fe9e6e2f2c5b2a825ae24a432541d45de8f029fb
@@@ -49,7 -49,6 +49,6 @@@ struct fwspk 
        struct snd_card *card;
        struct fw_unit *unit;
        const struct device_info *device_info;
-       struct snd_pcm_substream *pcm;
        struct mutex mutex;
        struct cmp_connection connection;
        struct amdtp_out_stream stream;
@@@ -363,8 -362,7 +362,7 @@@ static int fwspk_create_pcm(struct fwsp
                return err;
        pcm->private_data = fwspk;
        strcpy(pcm->name, fwspk->device_info->short_name);
-       fwspk->pcm = pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream;
-       fwspk->pcm->ops = &ops;
+       snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &ops);
        return 0;
  }
  
@@@ -663,9 -661,45 +661,9 @@@ static void fwspk_card_free(struct snd_
        mutex_destroy(&fwspk->mutex);
  }
  
 -static const struct device_info *fwspk_detect(struct fw_device *dev)
 +static int fwspk_probe(struct fw_unit *unit,
 +                     const struct ieee1394_device_id *id)
  {
 -      static const struct device_info griffin_firewave = {
 -              .driver_name = "FireWave",
 -              .short_name  = "FireWave",
 -              .long_name   = "Griffin FireWave Surround",
 -              .pcm_constraints = firewave_constraints,
 -              .mixer_channels = 6,
 -              .mute_fb_id   = 0x01,
 -              .volume_fb_id = 0x02,
 -      };
 -      static const struct device_info lacie_speakers = {
 -              .driver_name = "FWSpeakers",
 -              .short_name  = "FireWire Speakers",
 -              .long_name   = "LaCie FireWire Speakers",
 -              .pcm_constraints = lacie_speakers_constraints,
 -              .mixer_channels = 1,
 -              .mute_fb_id   = 0x01,
 -              .volume_fb_id = 0x01,
 -      };
 -      struct fw_csr_iterator i;
 -      int key, value;
 -
 -      fw_csr_iterator_init(&i, dev->config_rom);
 -      while (fw_csr_iterator_next(&i, &key, &value))
 -              if (key == CSR_VENDOR)
 -                      switch (value) {
 -                      case VENDOR_GRIFFIN:
 -                              return &griffin_firewave;
 -                      case VENDOR_LACIE:
 -                              return &lacie_speakers;
 -                      }
 -
 -      return NULL;
 -}
 -
 -static int fwspk_probe(struct device *unit_dev)
 -{
 -      struct fw_unit *unit = fw_unit(unit_dev);
        struct fw_device *fw_dev = fw_parent_device(unit);
        struct snd_card *card;
        struct fwspk *fwspk;
        err = snd_card_create(-1, NULL, THIS_MODULE, sizeof(*fwspk), &card);
        if (err < 0)
                return err;
 -      snd_card_set_dev(card, unit_dev);
 +      snd_card_set_dev(card, &unit->device);
  
        fwspk = card->private_data;
        fwspk->card = card;
        mutex_init(&fwspk->mutex);
        fwspk->unit = fw_unit_get(unit);
 -      fwspk->device_info = fwspk_detect(fw_dev);
 -      if (!fwspk->device_info) {
 -              err = -ENODEV;
 -              goto err_unit;
 -      }
 +      fwspk->device_info = (const struct device_info *)id->driver_data;
  
        err = cmp_connection_init(&fwspk->connection, unit, 0);
        if (err < 0)
        if (err < 0)
                goto error;
  
 -      dev_set_drvdata(unit_dev, fwspk);
 +      dev_set_drvdata(&unit->device, fwspk);
  
        return 0;
  
@@@ -730,6 -768,22 +728,6 @@@ error
        return err;
  }
  
 -static int fwspk_remove(struct device *dev)
 -{
 -      struct fwspk *fwspk = dev_get_drvdata(dev);
 -
 -      amdtp_out_stream_pcm_abort(&fwspk->stream);
 -      snd_card_disconnect(fwspk->card);
 -
 -      mutex_lock(&fwspk->mutex);
 -      fwspk_stop_stream(fwspk);
 -      mutex_unlock(&fwspk->mutex);
 -
 -      snd_card_free_when_closed(fwspk->card);
 -
 -      return 0;
 -}
 -
  static void fwspk_bus_reset(struct fw_unit *unit)
  {
        struct fwspk *fwspk = dev_get_drvdata(&unit->device);
        amdtp_out_stream_update(&fwspk->stream);
  }
  
 +static void fwspk_remove(struct fw_unit *unit)
 +{
 +      struct fwspk *fwspk = dev_get_drvdata(&unit->device);
 +
 +      amdtp_out_stream_pcm_abort(&fwspk->stream);
 +      snd_card_disconnect(fwspk->card);
 +
 +      mutex_lock(&fwspk->mutex);
 +      fwspk_stop_stream(fwspk);
 +      mutex_unlock(&fwspk->mutex);
 +
 +      snd_card_free_when_closed(fwspk->card);
 +}
 +
 +static const struct device_info griffin_firewave = {
 +      .driver_name = "FireWave",
 +      .short_name  = "FireWave",
 +      .long_name   = "Griffin FireWave Surround",
 +      .pcm_constraints = firewave_constraints,
 +      .mixer_channels = 6,
 +      .mute_fb_id   = 0x01,
 +      .volume_fb_id = 0x02,
 +};
 +
 +static const struct device_info lacie_speakers = {
 +      .driver_name = "FWSpeakers",
 +      .short_name  = "FireWire Speakers",
 +      .long_name   = "LaCie FireWire Speakers",
 +      .pcm_constraints = lacie_speakers_constraints,
 +      .mixer_channels = 1,
 +      .mute_fb_id   = 0x01,
 +      .volume_fb_id = 0x01,
 +};
 +
  static const struct ieee1394_device_id fwspk_id_table[] = {
        {
                .match_flags  = IEEE1394_MATCH_VENDOR_ID |
                .model_id     = 0x00f970,
                .specifier_id = SPECIFIER_1394TA,
                .version      = VERSION_AVC,
 +              .driver_data  = (kernel_ulong_t)&griffin_firewave,
        },
        {
                .match_flags  = IEEE1394_MATCH_VENDOR_ID |
                .model_id     = 0x00f970,
                .specifier_id = SPECIFIER_1394TA,
                .version      = VERSION_AVC,
 +              .driver_data  = (kernel_ulong_t)&lacie_speakers,
        },
        { }
  };
@@@ -813,10 -831,10 +811,10 @@@ static struct fw_driver fwspk_driver = 
                .owner  = THIS_MODULE,
                .name   = KBUILD_MODNAME,
                .bus    = &fw_bus_type,
 -              .probe  = fwspk_probe,
 -              .remove = fwspk_remove,
        },
 +      .probe    = fwspk_probe,
        .update   = fwspk_bus_reset,
 +      .remove   = fwspk_remove,
        .id_table = fwspk_id_table,
  };