diff options
author | ariff <ariff@FreeBSD.org> | 2006-11-29 15:15:30 +0000 |
---|---|---|
committer | ariff <ariff@FreeBSD.org> | 2006-11-29 15:15:30 +0000 |
commit | cf4e18e619444dd7f4b9dde3ea1af1855e633c0a (patch) | |
tree | 1c671f45a8ad32b652d630f800486d0653e7eff7 /sys/dev/sound | |
parent | da8971c28301d2f94ce16ac02f755964000ebbd5 (diff) | |
download | FreeBSD-src-cf4e18e619444dd7f4b9dde3ea1af1855e633c0a.zip FreeBSD-src-cf4e18e619444dd7f4b9dde3ea1af1855e633c0a.tar.gz |
Fix support for Medion MD MD95257 (GPIO2 quirk).
Reported by: Chris Tophe <cohika@gmail.com>
Diffstat (limited to 'sys/dev/sound')
-rw-r--r-- | sys/dev/sound/pci/hda/hdac.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/sys/dev/sound/pci/hda/hdac.c b/sys/dev/sound/pci/hda/hdac.c index 33383d3..1693de0 100644 --- a/sys/dev/sound/pci/hda/hdac.c +++ b/sys/dev/sound/pci/hda/hdac.c @@ -207,6 +207,11 @@ SND_DECLARE_FILE("$FreeBSD$"); #define SAMSUNG_Q1_SUBVENDOR HDA_MODEL_CONSTRUCT(SAMSUNG, 0xc027) #define SAMSUNG_ALL_SUBVENDOR HDA_MODEL_CONSTRUCT(SAMSUNG, 0xffff) +/* Medion ? */ +#define MEDION_VENDORID 0x161f +#define MEDION_MD95257_SUBVENDOR HDA_MODEL_CONSTRUCT(MEDION, 0x203d) +#define MEDION_ALL_SUBVENDOR HDA_MODEL_CONSTRUCT(MEDION, 0xffff) + /* Misc constants.. */ #define HDA_AMP_MUTE_DEFAULT (0xffffffff) #define HDA_AMP_MUTE_NONE (0) @@ -3446,6 +3451,8 @@ static const struct { HDA_QUIRK_GPIO1, 0 }, { ASUS_M5200_SUBVENDOR, HDA_CODEC_ALC880, HDA_QUIRK_GPIO1, 0 }, + { MEDION_MD95257_SUBVENDOR, HDA_CODEC_ALC880, + HDA_QUIRK_GPIO2, 0 }, { ASUS_U5F_SUBVENDOR, HDA_CODEC_AD1986A, HDA_QUIRK_EAPDINV, 0 }, { ASUS_A8JC_SUBVENDOR, HDA_CODEC_AD1986A, @@ -4071,8 +4078,8 @@ hdac_audio_commit(struct hdac_devinfo *devinfo, uint32_t cfl) { struct hdac_softc *sc = devinfo->codec->sc; struct hdac_widget *w; - nid_t cad, nid; - int i, gpioval; + nid_t cad; + int i; if (!(cfl & HDA_COMMIT_ALL)) return; @@ -4080,19 +4087,17 @@ hdac_audio_commit(struct hdac_devinfo *devinfo, uint32_t cfl) cad = devinfo->codec->cad; if (cfl & HDA_COMMIT_GPIO) { - nid = devinfo->nid; for (i = 0; i < HDA_GPIO_MAX; i++) { if (!(devinfo->function.audio.quirks & (1 << i))) continue; - gpioval = (1 << i) - 1; hdac_command(sc, - HDA_CMD_SET_GPIO_ENABLE_MASK(cad, nid, gpioval), + HDA_CMD_SET_GPIO_ENABLE_MASK(cad, devinfo->nid, i), cad); hdac_command(sc, - HDA_CMD_SET_GPIO_DIRECTION(cad, nid, gpioval), + HDA_CMD_SET_GPIO_DIRECTION(cad, devinfo->nid, i), cad); hdac_command(sc, - HDA_CMD_SET_GPIO_DATA(cad, nid, gpioval), + HDA_CMD_SET_GPIO_DATA(cad, devinfo->nid, i), cad); } } |