Merge branch 'topic/jack' into for-next
authorTakashi Iwai <tiwai@suse.de>
Sat, 2 May 2015 08:02:30 +0000 (10:02 +0200)
committerTakashi Iwai <tiwai@suse.de>
Sat, 2 May 2015 08:02:30 +0000 (10:02 +0200)
1  2 
sound/pci/hda/Kconfig
sound/pci/hda/hda_codec.h

diff --combined sound/pci/hda/Kconfig
index 5c296d30729c0f51137d00369c032efda2e6d96f,78e9e411977a140075c93e1aa14d0ed8097c2f3d..117bf5cf9f1d9e40be07a3b7d48c49676d5c1c04
@@@ -4,7 -4,7 +4,7 @@@ config SND_HD
        tristate
        select SND_PCM
        select SND_VMASTER
-       select SND_JACK
+       select SND_JACK if INPUT=y || INPUT=SND
        select SND_HDA_CORE
  
  config SND_HDA_INTEL
@@@ -38,6 -38,9 +38,6 @@@ config SND_HDA_TEGR
  
  if SND_HDA
  
 -config SND_HDA_DSP_LOADER
 -      bool
 -
  config SND_HDA_PREALLOC_SIZE
        int "Pre-allocated buffer size for HD-audio driver"
        range 0 32768
@@@ -84,14 -87,6 +84,6 @@@ config SND_HDA_INPUT_BEEP_MOD
          Set 1 to always enable the digital beep interface for HD-audio by
          default.
  
- config SND_HDA_INPUT_JACK
-       bool "Support jack plugging notification via input layer"
-       depends on INPUT=y || INPUT=SND
-       select SND_JACK
-       help
-         Say Y here to enable the jack plugging notification via
-         input layer.
  config SND_HDA_PATCH_LOADER
        bool "Support initialization patch loading for HD-audio"
        select FW_LOADER
index 0f8b6b5812e6856dc377d18550e982f3761ac803,28a1f1c815624209e1c6b5fea099efb596ffaf74..ed7e9cfd699a6ee744990c12ca1ce6f420aa510c
@@@ -40,6 -40,32 +40,6 @@@ struct hda_codec
  struct hda_pcm;
  struct hda_pcm_stream;
  
 -/* bus operators */
 -struct hda_bus_ops {
 -      /* send a single command */
 -      int (*command)(struct hda_bus *bus, unsigned int cmd);
 -      /* get a response from the last command */
 -      unsigned int (*get_response)(struct hda_bus *bus, unsigned int addr);
 -      /* free the private data */
 -      void (*private_free)(struct hda_bus *);
 -      /* attach a PCM stream */
 -      int (*attach_pcm)(struct hda_bus *bus, struct hda_codec *codec,
 -                        struct hda_pcm *pcm);
 -      /* reset bus for retry verb */
 -      void (*bus_reset)(struct hda_bus *bus);
 -#ifdef CONFIG_SND_HDA_DSP_LOADER
 -      /* prepare DSP transfer */
 -      int (*load_dsp_prepare)(struct hda_bus *bus, unsigned int format,
 -                              unsigned int byte_size,
 -                              struct snd_dma_buffer *bufp);
 -      /* start/stop DSP transfer */
 -      void (*load_dsp_trigger)(struct hda_bus *bus, bool start);
 -      /* clean up DSP transfer */
 -      void (*load_dsp_cleanup)(struct hda_bus *bus,
 -                               struct snd_dma_buffer *dmab);
 -#endif
 -};
 -
  /*
   * codec bus
   *
@@@ -51,8 -77,10 +51,8 @@@ struct hda_bus 
  
        struct snd_card *card;
  
 -      void *private_data;
        struct pci_dev *pci;
        const char *modelname;
 -      struct hda_bus_ops ops;
  
        struct mutex prepare_mutex;
  
@@@ -64,6 -92,7 +64,6 @@@
        unsigned int allow_bus_reset:1; /* allow bus reset at fatal error */
        /* status for codec/controller */
        unsigned int shutdown :1;       /* being unloaded */
 -      unsigned int rirb_error:1;      /* error in codec communication */
        unsigned int response_reset:1;  /* controller was reset */
        unsigned int in_reset:1;        /* during reset operation */
        unsigned int no_response_fallback:1; /* don't fallback at RIRB error */
        int primary_dig_out_type;       /* primary digital out PCM type */
  };
  
 +/* from hdac_bus to hda_bus */
 +#define to_hda_bus(bus)               container_of(bus, struct hda_bus, core)
 +
  /*
   * codec preset
   *
@@@ -274,10 -300,8 +274,8 @@@ struct hda_codec 
        unsigned long jackpoll_interval; /* In jiffies. Zero means no poll, rely on unsol events */
        struct delayed_work jackpoll_work;
  
- #ifdef CONFIG_SND_HDA_INPUT_JACK
        /* jack detection */
        struct snd_array jacks;
- #endif
  
        int depop_delay; /* depop delay in ms, -1 for default delay time */
  
  /*
   * constructors
   */
 -int snd_hda_bus_new(struct snd_card *card, struct hda_bus **busp);
 +int snd_hda_bus_new(struct snd_card *card,
 +                  const struct hdac_bus_ops *ops,
 +                  const struct hdac_io_ops *io_ops,
 +                  struct hda_bus **busp);
  int snd_hda_codec_new(struct hda_bus *bus, struct snd_card *card,
                      unsigned int codec_addr, struct hda_codec **codecp);
  int snd_hda_codec_configure(struct hda_codec *codec);
@@@ -344,6 -365,8 +342,6 @@@ int snd_hda_get_conn_index(struct hda_c
                           hda_nid_t nid, int recursive);
  int snd_hda_get_devices(struct hda_codec *codec, hda_nid_t nid,
                        u8 *dev_list, int max_devices);
 -int snd_hda_query_supported_pcm(struct hda_codec *codec, hda_nid_t nid,
 -                              u32 *ratesp, u64 *formatsp, unsigned int *bpsp);
  
  struct hda_verb {
        hda_nid_t nid;
@@@ -435,17 -458,17 +433,17 @@@ void __snd_hda_codec_cleanup_stream(str
                                    int do_now);
  #define snd_hda_codec_cleanup_stream(codec, nid) \
        __snd_hda_codec_cleanup_stream(codec, nid, 0)
 -unsigned int snd_hda_calc_stream_format(struct hda_codec *codec,
 -                                      unsigned int rate,
 -                                      unsigned int channels,
 -                                      unsigned int format,
 -                                      unsigned int maxbps,
 -                                      unsigned short spdif_ctls);
 -int snd_hda_is_supported_format(struct hda_codec *codec, hda_nid_t nid,
 -                              unsigned int format);
 +
 +#define snd_hda_query_supported_pcm(codec, nid, ratesp, fmtsp, bpsp) \
 +      snd_hdac_query_supported_pcm(&(codec)->core, nid, ratesp, fmtsp, bpsp)
 +#define snd_hda_is_supported_format(codec, nid, fmt) \
 +      snd_hdac_is_supported_format(&(codec)->core, nid, fmt)
  
  extern const struct snd_pcm_chmap_elem snd_pcm_2_1_chmaps[];
  
 +int snd_hda_attach_pcm_stream(struct hda_bus *_bus, struct hda_codec *codec,
 +                            struct hda_pcm *cpcm);
 +
  /*
   * Misc
   */
@@@ -456,7 -479,6 +454,7 @@@ void snd_hda_codec_set_power_to_all(str
  int snd_hda_lock_devices(struct hda_bus *bus);
  void snd_hda_unlock_devices(struct hda_bus *bus);
  void snd_hda_bus_reset(struct hda_bus *bus);
 +void snd_hda_bus_reset_codecs(struct hda_bus *bus);
  
  /*
   * power management
@@@ -502,12 -524,24 +500,12 @@@ int snd_hda_load_patch(struct hda_bus *
  #endif
  
  #ifdef CONFIG_SND_HDA_DSP_LOADER
 -static inline int
 -snd_hda_codec_load_dsp_prepare(struct hda_codec *codec, unsigned int format,
 -                              unsigned int size,
 -                              struct snd_dma_buffer *bufp)
 -{
 -      return codec->bus->ops.load_dsp_prepare(codec->bus, format, size, bufp);
 -}
 -static inline void
 -snd_hda_codec_load_dsp_trigger(struct hda_codec *codec, bool start)
 -{
 -      return codec->bus->ops.load_dsp_trigger(codec->bus, start);
 -}
 -static inline void
 -snd_hda_codec_load_dsp_cleanup(struct hda_codec *codec,
 -                              struct snd_dma_buffer *dmab)
 -{
 -      return codec->bus->ops.load_dsp_cleanup(codec->bus, dmab);
 -}
 +int snd_hda_codec_load_dsp_prepare(struct hda_codec *codec, unsigned int format,
 +                                 unsigned int size,
 +                                 struct snd_dma_buffer *bufp);
 +void snd_hda_codec_load_dsp_trigger(struct hda_codec *codec, bool start);
 +void snd_hda_codec_load_dsp_cleanup(struct hda_codec *codec,
 +                                  struct snd_dma_buffer *dmab);
  #else
  static inline int
  snd_hda_codec_load_dsp_prepare(struct hda_codec *codec, unsigned int format,