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
nexedi
linux
Commits
911fc25d
Commit
911fc25d
authored
Oct 27, 2008
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'topic/asoc-next' into topic/asoc
parents
4b7d2831
6b933116
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
109 additions
and
138 deletions
+109
-138
include/sound/soc-dapm.h
include/sound/soc-dapm.h
+0
-2
sound/soc/codecs/wm8580.c
sound/soc/codecs/wm8580.c
+53
-55
sound/soc/codecs/wm8580.h
sound/soc/codecs/wm8580.h
+1
-0
sound/soc/codecs/wm8900.c
sound/soc/codecs/wm8900.c
+54
-59
sound/soc/codecs/wm8900.h
sound/soc/codecs/wm8900.h
+1
-0
sound/soc/soc-dapm.c
sound/soc/soc-dapm.c
+0
-22
No files found.
include/sound/soc-dapm.h
View file @
911fc25d
...
...
@@ -221,8 +221,6 @@ int snd_soc_dapm_new_controls(struct snd_soc_codec *codec,
int
num
);
/* dapm path setup */
int
__deprecated
snd_soc_dapm_connect_input
(
struct
snd_soc_codec
*
codec
,
const
char
*
sink_name
,
const
char
*
control_name
,
const
char
*
src_name
);
int
snd_soc_dapm_new_widgets
(
struct
snd_soc_codec
*
codec
);
void
snd_soc_dapm_free
(
struct
snd_soc_device
*
socdev
);
int
snd_soc_dapm_add_routes
(
struct
snd_soc_codec
*
codec
,
...
...
sound/soc/codecs/wm8580.c
View file @
911fc25d
...
...
@@ -900,85 +900,85 @@ static struct snd_soc_device *wm8580_socdev;
* low = 0x1a
* high = 0x1b
*/
static
unsigned
short
normal_i2c
[]
=
{
0
,
I2C_CLIENT_END
};
/* Magic definition of all other variables and things */
I2C_CLIENT_INSMOD
;
static
struct
i2c_driver
wm8580_i2c_driver
;
static
struct
i2c_client
client_template
;
static
int
wm8580_codec_probe
(
struct
i2c_adapter
*
adap
,
int
addr
,
int
kind
)
static
int
wm8580_i2c_probe
(
struct
i2c_client
*
i2c
,
const
struct
i2c_device_id
*
id
)
{
struct
snd_soc_device
*
socdev
=
wm8580_socdev
;
struct
wm8580_setup_data
*
setup
=
socdev
->
codec_data
;
struct
snd_soc_codec
*
codec
=
socdev
->
codec
;
struct
i2c_client
*
i2c
;
int
ret
;
if
(
addr
!=
setup
->
i2c_address
)
return
-
ENODEV
;
client_template
.
adapter
=
adap
;
client_template
.
addr
=
addr
;
i2c
=
kmemdup
(
&
client_template
,
sizeof
(
client_template
),
GFP_KERNEL
);
if
(
i2c
==
NULL
)
{
kfree
(
codec
);
return
-
ENOMEM
;
}
i2c_set_clientdata
(
i2c
,
codec
);
codec
->
control_data
=
i2c
;
ret
=
i2c_attach_client
(
i2c
);
if
(
ret
<
0
)
{
dev_err
(
&
i2c
->
dev
,
"failed to attach codec at addr %x
\n
"
,
addr
);
goto
err
;
}
ret
=
wm8580_init
(
socdev
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
dev_err
(
&
i2c
->
dev
,
"failed to initialise WM8580
\n
"
);
goto
err
;
}
return
ret
;
err:
kfree
(
codec
);
kfree
(
i2c
);
return
ret
;
}
static
int
wm8580_i2c_
detach
(
struct
i2c_client
*
client
)
static
int
wm8580_i2c_
remove
(
struct
i2c_client
*
client
)
{
struct
snd_soc_codec
*
codec
=
i2c_get_clientdata
(
client
);
i2c_detach_client
(
client
);
kfree
(
codec
->
reg_cache
);
kfree
(
client
);
return
0
;
}
static
int
wm8580_i2c_attach
(
struct
i2c_adapter
*
adap
)
{
return
i2c_probe
(
adap
,
&
addr_data
,
wm8580_codec_probe
);
}
static
const
struct
i2c_device_id
wm8580_i2c_id
[]
=
{
{
"wm8580"
,
0
},
{
}
};
MODULE_DEVICE_TABLE
(
i2c
,
wm8580_i2c_id
);
/* corgi i2c codec control layer */
static
struct
i2c_driver
wm8580_i2c_driver
=
{
.
driver
=
{
.
name
=
"WM8580 I2C Codec"
,
.
owner
=
THIS_MODULE
,
},
.
attach_adapter
=
wm8580_i2c_attach
,
.
detach_client
=
wm8580_i2c_detach
,
.
command
=
NULL
,
.
probe
=
wm8580_i2c_probe
,
.
remove
=
wm8580_i2c_remove
,
.
id_table
=
wm8580_i2c_id
,
};
static
struct
i2c_client
client_template
=
{
.
name
=
"WM8580"
,
.
driver
=
&
wm8580_i2c_driver
,
};
static
int
wm8580_add_i2c_device
(
struct
platform_device
*
pdev
,
const
struct
wm8580_setup_data
*
setup
)
{
struct
i2c_board_info
info
;
struct
i2c_adapter
*
adapter
;
struct
i2c_client
*
client
;
int
ret
;
ret
=
i2c_add_driver
(
&
wm8580_i2c_driver
);
if
(
ret
!=
0
)
{
dev_err
(
&
pdev
->
dev
,
"can't add i2c driver
\n
"
);
return
ret
;
}
memset
(
&
info
,
0
,
sizeof
(
struct
i2c_board_info
));
info
.
addr
=
setup
->
i2c_address
;
strlcpy
(
info
.
type
,
"wm8580"
,
I2C_NAME_SIZE
);
adapter
=
i2c_get_adapter
(
setup
->
i2c_bus
);
if
(
!
adapter
)
{
dev_err
(
&
pdev
->
dev
,
"can't get i2c adapter %d
\n
"
,
setup
->
i2c_bus
);
goto
err_driver
;
}
client
=
i2c_new_device
(
adapter
,
&
info
);
i2c_put_adapter
(
adapter
);
if
(
!
client
)
{
dev_err
(
&
pdev
->
dev
,
"can't add i2c device at 0x%x
\n
"
,
(
unsigned
int
)
info
.
addr
);
goto
err_driver
;
}
return
0
;
err_driver:
i2c_del_driver
(
&
wm8580_i2c_driver
);
return
-
ENODEV
;
}
#endif
static
int
wm8580_probe
(
struct
platform_device
*
pdev
)
...
...
@@ -1011,11 +1011,8 @@ static int wm8580_probe(struct platform_device *pdev)
#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
if
(
setup
->
i2c_address
)
{
normal_i2c
[
0
]
=
setup
->
i2c_address
;
codec
->
hw_write
=
(
hw_write_t
)
i2c_master_send
;
ret
=
i2c_add_driver
(
&
wm8580_i2c_driver
);
if
(
ret
!=
0
)
printk
(
KERN_ERR
"can't add i2c driver"
);
ret
=
wm8580_add_i2c_device
(
pdev
,
setup
);
}
#else
/* Add other interfaces here */
...
...
@@ -1034,6 +1031,7 @@ static int wm8580_remove(struct platform_device *pdev)
snd_soc_free_pcms
(
socdev
);
snd_soc_dapm_free
(
socdev
);
#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
i2c_unregister_device
(
codec
->
control_data
);
i2c_del_driver
(
&
wm8580_i2c_driver
);
#endif
kfree
(
codec
->
private_data
);
...
...
sound/soc/codecs/wm8580.h
View file @
911fc25d
...
...
@@ -29,6 +29,7 @@
#define WM8580_CLKSRC_NONE 5
struct
wm8580_setup_data
{
int
i2c_bus
;
unsigned
short
i2c_address
;
};
...
...
sound/soc/codecs/wm8900.c
View file @
911fc25d
...
...
@@ -1387,89 +1387,86 @@ static struct snd_soc_device *wm8900_socdev;
#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
static
unsigned
short
normal_i2c
[]
=
{
0
,
I2C_CLIENT_END
};
/* Magic definition of all other variables and things */
I2C_CLIENT_INSMOD
;
static
struct
i2c_driver
wm8900_i2c_driver
;
static
struct
i2c_client
client_template
;
/* If the i2c layer weren't so broken, we could pass this kind of data
around */
static
int
wm8900_codec_probe
(
struct
i2c_adapter
*
adap
,
int
addr
,
int
kind
)
static
int
wm8900_i2c_probe
(
struct
i2c_client
*
i2c
,
const
struct
i2c_device_id
*
id
)
{
struct
snd_soc_device
*
socdev
=
wm8900_socdev
;
struct
wm8900_setup_data
*
setup
=
socdev
->
codec_data
;
struct
snd_soc_codec
*
codec
=
socdev
->
codec
;
struct
i2c_client
*
i2c
;
int
ret
;
if
(
addr
!=
setup
->
i2c_address
)
return
-
ENODEV
;
dev_err
(
&
adap
->
dev
,
"Probe on %x
\n
"
,
addr
);
client_template
.
adapter
=
adap
;
client_template
.
addr
=
addr
;
i2c
=
kmemdup
(
&
client_template
,
sizeof
(
client_template
),
GFP_KERNEL
);
if
(
i2c
==
NULL
)
{
kfree
(
codec
);
return
-
ENOMEM
;
}
i2c_set_clientdata
(
i2c
,
codec
);
codec
->
control_data
=
i2c
;
ret
=
i2c_attach_client
(
i2c
);
if
(
ret
<
0
)
{
dev_err
(
&
adap
->
dev
,
"failed to attach codec at addr %x
\n
"
,
addr
);
goto
err
;
}
ret
=
wm8900_init
(
socdev
);
if
(
ret
<
0
)
{
dev_err
(
&
adap
->
dev
,
"failed to initialise WM8900
\n
"
);
goto
err
;
}
return
ret
;
err:
kfree
(
codec
);
kfree
(
i2c
);
if
(
ret
<
0
)
dev_err
(
&
i2c
->
dev
,
"failed to initialise WM8900
\n
"
);
return
ret
;
}
static
int
wm8900_i2c_
detach
(
struct
i2c_client
*
client
)
static
int
wm8900_i2c_
remove
(
struct
i2c_client
*
client
)
{
struct
snd_soc_codec
*
codec
=
i2c_get_clientdata
(
client
);
i2c_detach_client
(
client
);
kfree
(
codec
->
reg_cache
);
kfree
(
client
);
return
0
;
}
static
int
wm8900_i2c_attach
(
struct
i2c_adapter
*
adap
)
{
return
i2c_probe
(
adap
,
&
addr_data
,
wm8900_codec_probe
);
}
static
const
struct
i2c_device_id
wm8900_i2c_id
[]
=
{
{
"wm8900"
,
0
},
{
}
};
MODULE_DEVICE_TABLE
(
i2c
,
wm8900_i2c_id
);
/* corgi i2c codec control layer */
static
struct
i2c_driver
wm8900_i2c_driver
=
{
.
driver
=
{
.
name
=
"WM8900 I2C codec"
,
.
owner
=
THIS_MODULE
,
},
.
attach_adapter
=
wm8900_i2c_attach
,
.
detach_client
=
wm8900_i2c_detach
,
.
command
=
NULL
,
.
probe
=
wm8900_i2c_probe
,
.
remove
=
wm8900_i2c_remove
,
.
id_table
=
wm8900_i2c_id
,
};
static
struct
i2c_client
client_template
=
{
.
name
=
"WM8900"
,
.
driver
=
&
wm8900_i2c_driver
,
};
static
int
wm8900_add_i2c_device
(
struct
platform_device
*
pdev
,
const
struct
wm8900_setup_data
*
setup
)
{
struct
i2c_board_info
info
;
struct
i2c_adapter
*
adapter
;
struct
i2c_client
*
client
;
int
ret
;
ret
=
i2c_add_driver
(
&
wm8900_i2c_driver
);
if
(
ret
!=
0
)
{
dev_err
(
&
pdev
->
dev
,
"can't add i2c driver
\n
"
);
return
ret
;
}
memset
(
&
info
,
0
,
sizeof
(
struct
i2c_board_info
));
info
.
addr
=
setup
->
i2c_address
;
strlcpy
(
info
.
type
,
"wm8900"
,
I2C_NAME_SIZE
);
adapter
=
i2c_get_adapter
(
setup
->
i2c_bus
);
if
(
!
adapter
)
{
dev_err
(
&
pdev
->
dev
,
"can't get i2c adapter %d
\n
"
,
setup
->
i2c_bus
);
goto
err_driver
;
}
client
=
i2c_new_device
(
adapter
,
&
info
);
i2c_put_adapter
(
adapter
);
if
(
!
client
)
{
dev_err
(
&
pdev
->
dev
,
"can't add i2c device at 0x%x
\n
"
,
(
unsigned
int
)
info
.
addr
);
goto
err_driver
;
}
return
0
;
err_driver:
i2c_del_driver
(
&
wm8900_i2c_driver
);
return
-
ENODEV
;
}
#endif
static
int
wm8900_probe
(
struct
platform_device
*
pdev
)
...
...
@@ -1497,11 +1494,8 @@ static int wm8900_probe(struct platform_device *pdev)
wm8900_socdev
=
socdev
;
#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
if
(
setup
->
i2c_address
)
{
normal_i2c
[
0
]
=
setup
->
i2c_address
;
codec
->
hw_write
=
(
hw_write_t
)
i2c_master_send
;
ret
=
i2c_add_driver
(
&
wm8900_i2c_driver
);
if
(
ret
!=
0
)
printk
(
KERN_ERR
"can't add i2c driver"
);
ret
=
wm8900_add_i2c_device
(
pdev
,
setup
);
}
#else
#error Non-I2C interfaces not yet supported
...
...
@@ -1521,6 +1515,7 @@ static int wm8900_remove(struct platform_device *pdev)
snd_soc_free_pcms
(
socdev
);
snd_soc_dapm_free
(
socdev
);
#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
i2c_unregister_device
(
codec
->
control_data
);
i2c_del_driver
(
&
wm8900_i2c_driver
);
#endif
kfree
(
codec
);
...
...
sound/soc/codecs/wm8900.h
View file @
911fc25d
...
...
@@ -55,6 +55,7 @@
#define WM8900_
struct
wm8900_setup_data
{
int
i2c_bus
;
unsigned
short
i2c_address
;
};
...
...
sound/soc/soc-dapm.c
View file @
911fc25d
...
...
@@ -1006,28 +1006,6 @@ static int snd_soc_dapm_add_route(struct snd_soc_codec *codec,
return
ret
;
}
/**
* snd_soc_dapm_connect_input - connect dapm widgets
* @codec: audio codec
* @sink: name of target widget
* @control: mixer control name
* @source: name of source name
*
* Connects 2 dapm widgets together via a named audio path. The sink is
* the widget receiving the audio signal, whilst the source is the sender
* of the audio signal.
*
* This function has been deprecated in favour of snd_soc_dapm_add_routes().
*
* Returns 0 for success else error.
*/
int
snd_soc_dapm_connect_input
(
struct
snd_soc_codec
*
codec
,
const
char
*
sink
,
const
char
*
control
,
const
char
*
source
)
{
return
snd_soc_dapm_add_route
(
codec
,
sink
,
control
,
source
);
}
EXPORT_SYMBOL_GPL
(
snd_soc_dapm_connect_input
);
/**
* snd_soc_dapm_add_routes - Add routes between DAPM widgets
* @codec: 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