Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
3e0b33f7
Commit
3e0b33f7
authored
Feb 05, 2010
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote branch 'alsa/fixes' into for-linus
parents
a26a4088
9d4c7464
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
41 deletions
+32
-41
sound/pci/ctxfi/ctatc.c
sound/pci/ctxfi/ctatc.c
+2
-13
sound/pci/ctxfi/ctvmem.c
sound/pci/ctxfi/ctvmem.c
+18
-20
sound/pci/ctxfi/ctvmem.h
sound/pci/ctxfi/ctvmem.h
+5
-3
sound/pci/ice1712/aureon.c
sound/pci/ice1712/aureon.c
+7
-5
No files found.
sound/pci/ctxfi/ctatc.c
View file @
3e0b33f7
...
...
@@ -166,18 +166,7 @@ static void ct_unmap_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm)
static
unsigned
long
atc_get_ptp_phys
(
struct
ct_atc
*
atc
,
int
index
)
{
struct
ct_vm
*
vm
;
void
*
kvirt_addr
;
unsigned
long
phys_addr
;
vm
=
atc
->
vm
;
kvirt_addr
=
vm
->
get_ptp_virt
(
vm
,
index
);
if
(
kvirt_addr
==
NULL
)
phys_addr
=
(
~
0UL
);
else
phys_addr
=
virt_to_phys
(
kvirt_addr
);
return
phys_addr
;
return
atc
->
vm
->
get_ptp_phys
(
atc
->
vm
,
index
);
}
static
unsigned
int
convert_format
(
snd_pcm_format_t
snd_format
)
...
...
@@ -1669,7 +1658,7 @@ int __devinit ct_atc_create(struct snd_card *card, struct pci_dev *pci,
}
/* Set up device virtual memory management object */
err
=
ct_vm_create
(
&
atc
->
vm
);
err
=
ct_vm_create
(
&
atc
->
vm
,
pci
);
if
(
err
<
0
)
goto
error1
;
...
...
sound/pci/ctxfi/ctvmem.c
View file @
3e0b33f7
...
...
@@ -138,7 +138,7 @@ ct_vm_map(struct ct_vm *vm, struct snd_pcm_substream *substream, int size)
return
NULL
;
}
ptp
=
vm
->
ptp
[
0
]
;
ptp
=
(
unsigned
long
*
)
vm
->
ptp
[
0
].
area
;
pte_start
=
(
block
->
addr
>>
CT_PAGE_SHIFT
);
pages
=
block
->
size
>>
CT_PAGE_SHIFT
;
for
(
i
=
0
;
i
<
pages
;
i
++
)
{
...
...
@@ -158,25 +158,25 @@ static void ct_vm_unmap(struct ct_vm *vm, struct ct_vm_block *block)
}
/* *
* return the host
(kmalloced)
addr of the @index-th device
* page ta
lbe page on success, or NUL
L on failure.
* The first returned
NUL
L indicates the termination.
* return the host
physical
addr of the @index-th device
* page ta
ble page on success, or ~0U
L on failure.
* The first returned
~0U
L indicates the termination.
* */
static
void
*
ct_get_ptp_
virt
(
struct
ct_vm
*
vm
,
int
index
)
static
dma_addr_t
ct_get_ptp_
phys
(
struct
ct_vm
*
vm
,
int
index
)
{
void
*
addr
;
dma_addr_t
addr
;
addr
=
(
index
>=
CT_PTP_NUM
)
?
NULL
:
vm
->
ptp
[
index
]
;
addr
=
(
index
>=
CT_PTP_NUM
)
?
~
0UL
:
vm
->
ptp
[
index
].
addr
;
return
addr
;
}
int
ct_vm_create
(
struct
ct_vm
**
rvm
)
int
ct_vm_create
(
struct
ct_vm
**
rvm
,
struct
pci_dev
*
pci
)
{
struct
ct_vm
*
vm
;
struct
ct_vm_block
*
block
;
int
i
;
int
i
,
err
=
0
;
*
rvm
=
NULL
;
...
...
@@ -188,23 +188,21 @@ int ct_vm_create(struct ct_vm **rvm)
/* Allocate page table pages */
for
(
i
=
0
;
i
<
CT_PTP_NUM
;
i
++
)
{
vm
->
ptp
[
i
]
=
kmalloc
(
PAGE_SIZE
,
GFP_KERNEL
);
if
(
!
vm
->
ptp
[
i
])
err
=
snd_dma_alloc_pages
(
SNDRV_DMA_TYPE_DEV
,
snd_dma_pci_data
(
pci
),
PAGE_SIZE
,
&
vm
->
ptp
[
i
]);
if
(
err
<
0
)
break
;
}
if
(
!
i
)
{
if
(
err
<
0
)
{
/* no page table pages are allocated */
kfree
(
vm
);
ct_vm_destroy
(
vm
);
return
-
ENOMEM
;
}
vm
->
size
=
CT_ADDRS_PER_PAGE
*
i
;
/* Initialise remaining ptps */
for
(;
i
<
CT_PTP_NUM
;
i
++
)
vm
->
ptp
[
i
]
=
NULL
;
vm
->
map
=
ct_vm_map
;
vm
->
unmap
=
ct_vm_unmap
;
vm
->
get_ptp_
virt
=
ct_get_ptp_virt
;
vm
->
get_ptp_
phys
=
ct_get_ptp_phys
;
INIT_LIST_HEAD
(
&
vm
->
unused
);
INIT_LIST_HEAD
(
&
vm
->
used
);
block
=
kzalloc
(
sizeof
(
*
block
),
GFP_KERNEL
);
...
...
@@ -242,7 +240,7 @@ void ct_vm_destroy(struct ct_vm *vm)
/* free allocated page table pages */
for
(
i
=
0
;
i
<
CT_PTP_NUM
;
i
++
)
kfree
(
vm
->
ptp
[
i
]);
snd_dma_free_pages
(
&
vm
->
ptp
[
i
]);
vm
->
size
=
0
;
...
...
sound/pci/ctxfi/ctvmem.h
View file @
3e0b33f7
...
...
@@ -22,6 +22,8 @@
#include <linux/mutex.h>
#include <linux/list.h>
#include <linux/pci.h>
#include <sound/memalloc.h>
/* The chip can handle the page table of 4k pages
* (emu20k1 can handle even 8k pages, but we don't use it right now)
...
...
@@ -41,7 +43,7 @@ struct snd_pcm_substream;
/* Virtual memory management object for card device */
struct
ct_vm
{
void
*
ptp
[
CT_PTP_NUM
];
/* Device page table pages */
struct
snd_dma_buffer
ptp
[
CT_PTP_NUM
];
/* Device page table pages */
unsigned
int
size
;
/* Available addr space in bytes */
struct
list_head
unused
;
/* List of unused blocks */
struct
list_head
used
;
/* List of used blocks */
...
...
@@ -52,10 +54,10 @@ struct ct_vm {
int
size
);
/* Unmap device logical addr area. */
void
(
*
unmap
)(
struct
ct_vm
*
,
struct
ct_vm_block
*
block
);
void
*
(
*
get_ptp_virt
)(
struct
ct_vm
*
vm
,
int
index
);
dma_addr_t
(
*
get_ptp_phys
)(
struct
ct_vm
*
vm
,
int
index
);
};
int
ct_vm_create
(
struct
ct_vm
**
rvm
);
int
ct_vm_create
(
struct
ct_vm
**
rvm
,
struct
pci_dev
*
pci
);
void
ct_vm_destroy
(
struct
ct_vm
*
vm
);
#endif
/* CTVMEM_H */
sound/pci/ice1712/aureon.c
View file @
3e0b33f7
...
...
@@ -703,11 +703,13 @@ static void wm_set_vol(struct snd_ice1712 *ice, unsigned int index, unsigned sho
{
unsigned
char
nvol
;
if
((
master
&
WM_VOL_MUTE
)
||
(
vol
&
WM_VOL_MUTE
))
if
((
master
&
WM_VOL_MUTE
)
||
(
vol
&
WM_VOL_MUTE
))
{
nvol
=
0
;
else
}
else
{
nvol
=
((
vol
%
WM_VOL_CNT
)
*
(
master
%
WM_VOL_CNT
))
/
WM_VOL_MAX
;
nvol
+=
0x1b
;
}
wm_put
(
ice
,
index
,
nvol
);
wm_put_nocache
(
ice
,
index
,
0x180
|
nvol
);
...
...
@@ -778,7 +780,7 @@ static int wm_master_vol_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_
for
(
ch
=
0
;
ch
<
2
;
ch
++
)
{
unsigned
int
vol
=
ucontrol
->
value
.
integer
.
value
[
ch
];
if
(
vol
>
WM_VOL_MAX
)
continue
;
vol
=
WM_VOL_MAX
;
vol
|=
spec
->
master
[
ch
]
&
WM_VOL_MUTE
;
if
(
vol
!=
spec
->
master
[
ch
])
{
int
dac
;
...
...
@@ -834,8 +836,8 @@ static int wm_vol_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *
for
(
i
=
0
;
i
<
voices
;
i
++
)
{
unsigned
int
vol
=
ucontrol
->
value
.
integer
.
value
[
i
];
if
(
vol
>
WM_VOL_MAX
)
continue
;
vol
|=
spec
->
vol
[
ofs
+
i
];
vol
=
WM_VOL_MAX
;
vol
|=
spec
->
vol
[
ofs
+
i
]
&
WM_VOL_MUTE
;
if
(
vol
!=
spec
->
vol
[
ofs
+
i
])
{
spec
->
vol
[
ofs
+
i
]
=
vol
;
idx
=
WM_DAC_ATTEN
+
ofs
+
i
;
...
...
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