~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/pci/hda/hda_jack.h

Version: ~ [ linux-4.15-rc3 ] ~ [ linux-4.14.5 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.68 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.105 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.47 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.87 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.51 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.96 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.39.4 ] ~ [ linux-2.6.38.8 ] ~ [ linux-2.6.37.6 ] ~ [ linux-2.6.36.4 ] ~ [ linux-2.6.35.14 ] ~ [ linux-2.6.34.15 ] ~ [ linux-2.6.33.20 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.27.62 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Jack-detection handling for HD-audio
  3  *
  4  * Copyright (c) 2011 Takashi Iwai <tiwai@suse.de>
  5  *
  6  * This driver is free software; you can redistribute it and/or modify
  7  * it under the terms of the GNU General Public License as published by
  8  * the Free Software Foundation; either version 2 of the License, or
  9  * (at your option) any later version.
 10  */
 11 
 12 #ifndef __SOUND_HDA_JACK_H
 13 #define __SOUND_HDA_JACK_H
 14 
 15 #include <linux/err.h>
 16 
 17 struct auto_pin_cfg;
 18 struct hda_jack_tbl;
 19 struct hda_jack_callback;
 20 
 21 typedef void (*hda_jack_callback_fn) (struct hda_codec *, struct hda_jack_callback *);
 22 
 23 struct hda_jack_callback {
 24         hda_nid_t nid;
 25         hda_jack_callback_fn func;
 26         unsigned int private_data;      /* arbitrary data */
 27         struct hda_jack_callback *next;
 28 };
 29 
 30 struct hda_jack_tbl {
 31         hda_nid_t nid;
 32         unsigned char tag;              /* unsol event tag */
 33         struct hda_jack_callback *callback;
 34         /* jack-detection stuff */
 35         unsigned int pin_sense;         /* cached pin-sense value */
 36         unsigned int jack_detect:1;     /* capable of jack-detection? */
 37         unsigned int jack_dirty:1;      /* needs to update? */
 38         unsigned int phantom_jack:1;    /* a fixed, always present port? */
 39         unsigned int block_report:1;    /* in a transitional state - do not report to userspace */
 40         hda_nid_t gating_jack;          /* valid when gating jack plugged */
 41         hda_nid_t gated_jack;           /* gated is dependent on this jack */
 42         int type;
 43         struct snd_jack *jack;
 44 };
 45 
 46 struct hda_jack_tbl *
 47 snd_hda_jack_tbl_get(struct hda_codec *codec, hda_nid_t nid);
 48 struct hda_jack_tbl *
 49 snd_hda_jack_tbl_get_from_tag(struct hda_codec *codec, unsigned char tag);
 50 
 51 void snd_hda_jack_tbl_clear(struct hda_codec *codec);
 52 
 53 void snd_hda_jack_set_dirty_all(struct hda_codec *codec);
 54 
 55 int snd_hda_jack_detect_enable(struct hda_codec *codec, hda_nid_t nid);
 56 struct hda_jack_callback *
 57 snd_hda_jack_detect_enable_callback(struct hda_codec *codec, hda_nid_t nid,
 58                                     hda_jack_callback_fn cb);
 59 
 60 int snd_hda_jack_set_gating_jack(struct hda_codec *codec, hda_nid_t gated_nid,
 61                                  hda_nid_t gating_nid);
 62 
 63 u32 snd_hda_pin_sense(struct hda_codec *codec, hda_nid_t nid);
 64 
 65 /* the jack state returned from snd_hda_jack_detect_state() */
 66 enum {
 67         HDA_JACK_NOT_PRESENT, HDA_JACK_PRESENT, HDA_JACK_PHANTOM,
 68 };
 69 
 70 int snd_hda_jack_detect_state(struct hda_codec *codec, hda_nid_t nid);
 71 
 72 /**
 73  * snd_hda_jack_detect - Detect the jack
 74  * @codec: the HDA codec
 75  * @nid: pin NID to check jack detection
 76  */
 77 static inline bool snd_hda_jack_detect(struct hda_codec *codec, hda_nid_t nid)
 78 {
 79         return snd_hda_jack_detect_state(codec, nid) != HDA_JACK_NOT_PRESENT;
 80 }
 81 
 82 bool is_jack_detectable(struct hda_codec *codec, hda_nid_t nid);
 83 
 84 int snd_hda_jack_add_kctl(struct hda_codec *codec, hda_nid_t nid,
 85                           const char *name, bool phantom_jack);
 86 int snd_hda_jack_add_kctls(struct hda_codec *codec,
 87                            const struct auto_pin_cfg *cfg);
 88 
 89 void snd_hda_jack_report_sync(struct hda_codec *codec);
 90 
 91 void snd_hda_jack_unsol_event(struct hda_codec *codec, unsigned int res);
 92 
 93 void snd_hda_jack_poll_all(struct hda_codec *codec);
 94 
 95 #endif /* __SOUND_HDA_JACK_H */
 96 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp