Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
26917499
Commit
26917499
authored
Oct 11, 2009
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fix/hda' into topic/hda
parents
0afe5f89
f0613d57
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
92 additions
and
28 deletions
+92
-28
sound/pci/hda/patch_nvhdmi.c
sound/pci/hda/patch_nvhdmi.c
+25
-6
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+67
-22
No files found.
sound/pci/hda/patch_nvhdmi.c
View file @
26917499
...
...
@@ -29,6 +29,9 @@
#include "hda_codec.h"
#include "hda_local.h"
/* define below to restrict the supported rates and formats */
#define LIMITED_RATE_FMT_SUPPORT
struct
nvhdmi_spec
{
struct
hda_multi_out
multiout
;
...
...
@@ -60,6 +63,22 @@ static struct hda_verb nvhdmi_basic_init[] = {
{}
/* terminator */
};
#ifdef LIMITED_RATE_FMT_SUPPORT
/* support only the safe format and rate */
#define SUPPORTED_RATES SNDRV_PCM_RATE_48000
#define SUPPORTED_MAXBPS 16
#define SUPPORTED_FORMATS SNDRV_PCM_FMTBIT_S16_LE
#else
/* support all rates and formats */
#define SUPPORTED_RATES \
(SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |\
SNDRV_PCM_RATE_192000)
#define SUPPORTED_MAXBPS 24
#define SUPPORTED_FORMATS \
(SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE)
#endif
/*
* Controls
*/
...
...
@@ -258,9 +277,9 @@ static struct hda_pcm_stream nvhdmi_pcm_digital_playback_8ch = {
.
channels_min
=
2
,
.
channels_max
=
8
,
.
nid
=
Nv_Master_Convert_nid
,
.
rates
=
S
NDRV_PCM_RATE_48000
,
.
maxbps
=
16
,
.
formats
=
S
NDRV_PCM_FMTBIT_S16_LE
,
.
rates
=
S
UPPORTED_RATES
,
.
maxbps
=
SUPPORTED_MAXBPS
,
.
formats
=
S
UPPORTED_FORMATS
,
.
ops
=
{
.
open
=
nvhdmi_dig_playback_pcm_open
,
.
close
=
nvhdmi_dig_playback_pcm_close_8ch
,
...
...
@@ -273,9 +292,9 @@ static struct hda_pcm_stream nvhdmi_pcm_digital_playback_2ch = {
.
channels_min
=
2
,
.
channels_max
=
2
,
.
nid
=
Nv_Master_Convert_nid
,
.
rates
=
S
NDRV_PCM_RATE_48000
,
.
maxbps
=
16
,
.
formats
=
S
NDRV_PCM_FMTBIT_S16_LE
,
.
rates
=
S
UPPORTED_RATES
,
.
maxbps
=
SUPPORTED_MAXBPS
,
.
formats
=
S
UPPORTED_FORMATS
,
.
ops
=
{
.
open
=
nvhdmi_dig_playback_pcm_open
,
.
close
=
nvhdmi_dig_playback_pcm_close_2ch
,
...
...
sound/pci/hda/patch_realtek.c
View file @
26917499
...
...
@@ -1332,15 +1332,20 @@ do_sku:
* when the external headphone out jack is plugged"
*/
if
(
!
spec
->
autocfg
.
hp_pins
[
0
])
{
hda_nid_t
nid
;
tmp
=
(
ass
>>
11
)
&
0x3
;
/* HP to chassis */
if
(
tmp
==
0
)
spec
->
autocfg
.
hp_pins
[
0
]
=
porta
;
nid
=
porta
;
else
if
(
tmp
==
1
)
spec
->
autocfg
.
hp_pins
[
0
]
=
porte
;
nid
=
porte
;
else
if
(
tmp
==
2
)
spec
->
autocfg
.
hp_pins
[
0
]
=
portd
;
nid
=
portd
;
else
return
1
;
for
(
i
=
0
;
i
<
spec
->
autocfg
.
line_outs
;
i
++
)
if
(
spec
->
autocfg
.
line_out_pins
[
i
]
==
nid
)
return
1
;
spec
->
autocfg
.
hp_pins
[
0
]
=
nid
;
}
alc_init_auto_hp
(
codec
);
...
...
@@ -1362,7 +1367,7 @@ static void alc_ssid_check(struct hda_codec *codec,
}
/*
* Fix-up pin default configurations
* Fix-up pin default configurations
and add default verbs
*/
struct
alc_pincfg
{
...
...
@@ -1370,9 +1375,14 @@ struct alc_pincfg {
u32
val
;
};
static
void
alc_fix_pincfg
(
struct
hda_codec
*
codec
,
struct
alc_fixup
{
const
struct
alc_pincfg
*
pins
;
const
struct
hda_verb
*
verbs
;
};
static
void
alc_pick_fixup
(
struct
hda_codec
*
codec
,
const
struct
snd_pci_quirk
*
quirk
,
const
struct
alc_
pincfg
**
pin
fix
)
const
struct
alc_
fixup
*
fix
)
{
const
struct
alc_pincfg
*
cfg
;
...
...
@@ -1380,9 +1390,14 @@ static void alc_fix_pincfg(struct hda_codec *codec,
if
(
!
quirk
)
return
;
cfg
=
pinfix
[
quirk
->
value
];
for
(;
cfg
->
nid
;
cfg
++
)
snd_hda_codec_set_pincfg
(
codec
,
cfg
->
nid
,
cfg
->
val
);
fix
+=
quirk
->
value
;
cfg
=
fix
->
pins
;
if
(
cfg
)
{
for
(;
cfg
->
nid
;
cfg
++
)
snd_hda_codec_set_pincfg
(
codec
,
cfg
->
nid
,
cfg
->
val
);
}
if
(
fix
->
verbs
)
add_verb
(
codec
->
spec
,
fix
->
verbs
);
}
/*
...
...
@@ -9594,11 +9609,13 @@ static struct alc_pincfg alc882_abit_aw9d_pinfix[] = {
{
}
};
static
const
struct
alc_pincfg
*
alc882_pin_fixes
[]
=
{
[
PINFIX_ABIT_AW9D_MAX
]
=
alc882_abit_aw9d_pinfix
,
static
const
struct
alc_fixup
alc882_fixups
[]
=
{
[
PINFIX_ABIT_AW9D_MAX
]
=
{
.
pins
=
alc882_abit_aw9d_pinfix
},
};
static
struct
snd_pci_quirk
alc882_
pinfix
_tbl
[]
=
{
static
struct
snd_pci_quirk
alc882_
fixup
_tbl
[]
=
{
SND_PCI_QUIRK
(
0x147b
,
0x107a
,
"Abit AW9D-MAX"
,
PINFIX_ABIT_AW9D_MAX
),
{}
};
...
...
@@ -9870,7 +9887,7 @@ static int patch_alc882(struct hda_codec *codec)
board_config
=
ALC882_AUTO
;
}
alc_
fix_pincfg
(
codec
,
alc882_pinfix_tbl
,
alc882_pin_fixe
s
);
alc_
pick_fixup
(
codec
,
alc882_fixup_tbl
,
alc882_fixup
s
);
if
(
board_config
==
ALC882_AUTO
)
{
/* automatic parse from the BIOS config */
...
...
@@ -12834,12 +12851,15 @@ static int patch_alc268(struct hda_codec *codec)
unsigned
int
wcap
=
get_wcaps
(
codec
,
0x07
);
int
i
;
spec
->
capsrc_nids
=
alc268_capsrc_nids
;
/* get type */
wcap
=
get_wcaps_type
(
wcap
);
if
(
spec
->
auto_mic
||
wcap
!=
AC_WID_AUD_IN
||
spec
->
input_mux
->
num_items
==
1
)
{
spec
->
adc_nids
=
alc268_adc_nids_alt
;
spec
->
num_adc_nids
=
ARRAY_SIZE
(
alc268_adc_nids_alt
);
if
(
spec
->
auto_mic
)
fixup_automic_adc
(
codec
);
if
(
spec
->
auto_mic
||
spec
->
input_mux
->
num_items
==
1
)
add_mixer
(
spec
,
alc268_capture_nosrc_mixer
);
else
...
...
@@ -12849,7 +12869,6 @@ static int patch_alc268(struct hda_codec *codec)
spec
->
num_adc_nids
=
ARRAY_SIZE
(
alc268_adc_nids
);
add_mixer
(
spec
,
alc268_capture_mixer
);
}
spec
->
capsrc_nids
=
alc268_capsrc_nids
;
/* set default input source */
for
(
i
=
0
;
i
<
spec
->
num_adc_nids
;
i
++
)
snd_hda_codec_write_cache
(
codec
,
alc268_capsrc_nids
[
i
],
...
...
@@ -14347,15 +14366,16 @@ static void alc861_auto_init_multi_out(struct hda_codec *codec)
static
void
alc861_auto_init_hp_out
(
struct
hda_codec
*
codec
)
{
struct
alc_spec
*
spec
=
codec
->
spec
;
hda_nid_t
pin
;
pin
=
spec
->
autocfg
.
hp_pins
[
0
];
if
(
pin
)
alc861_auto_set_output_and_unmute
(
codec
,
pin
,
PIN_HP
,
if
(
spec
->
autocfg
.
hp_outs
)
alc861_auto_set_output_and_unmute
(
codec
,
spec
->
autocfg
.
hp_pins
[
0
],
PIN_HP
,
spec
->
multiout
.
hp_nid
);
pin
=
spec
->
autocfg
.
speaker_pins
[
0
];
if
(
pin
)
alc861_auto_set_output_and_unmute
(
codec
,
pin
,
PIN_OUT
,
if
(
spec
->
autocfg
.
speaker_outs
)
alc861_auto_set_output_and_unmute
(
codec
,
spec
->
autocfg
.
speaker_pins
[
0
],
PIN_OUT
,
spec
->
multiout
.
dac_nids
[
0
]);
}
...
...
@@ -15148,7 +15168,7 @@ static struct snd_pci_quirk alc861vd_cfg_tbl[] = {
SND_PCI_QUIRK
(
0x1019
,
0xa88d
,
"Realtek ALC660 demo"
,
ALC660VD_3ST
),
SND_PCI_QUIRK
(
0x103c
,
0x30bf
,
"HP TX1000"
,
ALC861VD_HP
),
SND_PCI_QUIRK
(
0x1043
,
0x12e2
,
"Asus z35m"
,
ALC660VD_3ST
),
SND_PCI_QUIRK
(
0x1043
,
0x1339
,
"Asus G1"
,
ALC660VD_3ST
),
/*SND_PCI_QUIRK(0x1043, 0x1339, "Asus G1", ALC660VD_3ST),*/
/* auto */
SND_PCI_QUIRK
(
0x1043
,
0x1633
,
"Asus V1Sn"
,
ALC660VD_ASUS_V1S
),
SND_PCI_QUIRK
(
0x1043
,
0x81e7
,
"ASUS"
,
ALC660VD_3ST_DIG
),
SND_PCI_QUIRK
(
0x10de
,
0x03f0
,
"Realtek ALC660 demo"
,
ALC660VD_3ST
),
...
...
@@ -15534,6 +15554,29 @@ static void alc861vd_auto_init(struct hda_codec *codec)
alc_inithook
(
codec
);
}
enum
{
ALC660VD_FIX_ASUS_GPIO1
};
/* reset GPIO1 */
static
const
struct
hda_verb
alc660vd_fix_asus_gpio1_verbs
[]
=
{
{
0x01
,
AC_VERB_SET_GPIO_MASK
,
0x03
},
{
0x01
,
AC_VERB_SET_GPIO_DIRECTION
,
0x01
},
{
0x01
,
AC_VERB_SET_GPIO_DATA
,
0x01
},
{
}
};
static
const
struct
alc_fixup
alc861vd_fixups
[]
=
{
[
ALC660VD_FIX_ASUS_GPIO1
]
=
{
.
verbs
=
alc660vd_fix_asus_gpio1_verbs
,
},
};
static
struct
snd_pci_quirk
alc861vd_fixup_tbl
[]
=
{
SND_PCI_QUIRK
(
0x1043
,
0x1339
,
"ASUS A7-K"
,
ALC660VD_FIX_ASUS_GPIO1
),
{}
};
static
int
patch_alc861vd
(
struct
hda_codec
*
codec
)
{
struct
alc_spec
*
spec
;
...
...
@@ -15555,6 +15598,8 @@ static int patch_alc861vd(struct hda_codec *codec)
board_config
=
ALC861VD_AUTO
;
}
alc_pick_fixup
(
codec
,
alc861vd_fixup_tbl
,
alc861vd_fixups
);
if
(
board_config
==
ALC861VD_AUTO
)
{
/* automatic parse from the BIOS config */
err
=
alc861vd_parse_auto_config
(
codec
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment