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
a32eb702
Commit
a32eb702
authored
Feb 19, 2014
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/adav80x' into asoc-adau1977
parents
e479d85c
0c2d6964
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
135 additions
and
124 deletions
+135
-124
sound/soc/blackfin/Kconfig
sound/soc/blackfin/Kconfig
+2
-1
sound/soc/codecs/Kconfig
sound/soc/codecs/Kconfig
+10
-1
sound/soc/codecs/Makefile
sound/soc/codecs/Makefile
+4
-0
sound/soc/codecs/adav801.c
sound/soc/codecs/adav801.c
+53
-0
sound/soc/codecs/adav803.c
sound/soc/codecs/adav803.c
+50
-0
sound/soc/codecs/adav80x.c
sound/soc/codecs/adav80x.c
+9
-122
sound/soc/codecs/adav80x.h
sound/soc/codecs/adav80x.h
+7
-0
No files found.
sound/soc/blackfin/Kconfig
View file @
a32eb702
...
...
@@ -47,7 +47,8 @@ config SND_SOC_BFIN_EVAL_ADAV80X
tristate "Support for the EVAL-ADAV80X boards on Blackfin eval boards"
depends on SND_BF5XX_I2S && (SPI_MASTER || I2C)
select SND_BF5XX_SOC_I2S
select SND_SOC_ADAV80X
select SND_SOC_ADAV801 if SPI_MASTER
select SND_SOC_ADAV803 if I2C
help
Say Y if you want to add support for the Analog Devices EVAL-ADAV801 or
EVAL-ADAV803 board connected to one of the Blackfin evaluation boards
...
...
sound/soc/codecs/Kconfig
View file @
a32eb702
...
...
@@ -22,7 +22,8 @@ config SND_SOC_ALL_CODECS
select SND_SOC_AD1980 if SND_SOC_AC97_BUS
select SND_SOC_AD73311
select SND_SOC_ADAU1373 if I2C
select SND_SOC_ADAV80X if SND_SOC_I2C_AND_SPI
select SND_SOC_ADAV801 if SPI_MASTER
select SND_SOC_ADAV803 if I2C
select SND_SOC_ADAU1701 if I2C
select SND_SOC_ADS117X
select SND_SOC_AK4104 if SPI_MASTER
...
...
@@ -202,6 +203,14 @@ config SND_SOC_ADAU1373
config SND_SOC_ADAV80X
tristate
config SND_SOC_ADAV801
tristate
select SND_SOC_ADAV80X
config SND_SOC_ADAV803
tristate
select SND_SOC_ADAV80X
config SND_SOC_ADS117X
tristate
...
...
sound/soc/codecs/Makefile
View file @
a32eb702
...
...
@@ -8,6 +8,8 @@ snd-soc-ad73311-objs := ad73311.o
snd-soc-adau1701-objs
:=
adau1701.o
snd-soc-adau1373-objs
:=
adau1373.o
snd-soc-adav80x-objs
:=
adav80x.o
snd-soc-adav801-objs
:=
adav801.o
snd-soc-adav803-objs
:=
adav803.o
snd-soc-ads117x-objs
:=
ads117x.o
snd-soc-ak4104-objs
:=
ak4104.o
snd-soc-ak4535-objs
:=
ak4535.o
...
...
@@ -139,6 +141,8 @@ obj-$(CONFIG_SND_SOC_AD73311) += snd-soc-ad73311.o
obj-$(CONFIG_SND_SOC_ADAU1373)
+=
snd-soc-adau1373.o
obj-$(CONFIG_SND_SOC_ADAU1701)
+=
snd-soc-adau1701.o
obj-$(CONFIG_SND_SOC_ADAV80X)
+=
snd-soc-adav80x.o
obj-$(CONFIG_SND_SOC_ADAV801)
+=
snd-soc-adav801.o
obj-$(CONFIG_SND_SOC_ADAV803)
+=
snd-soc-adav803.o
obj-$(CONFIG_SND_SOC_ADS117X)
+=
snd-soc-ads117x.o
obj-$(CONFIG_SND_SOC_AK4104)
+=
snd-soc-ak4104.o
obj-$(CONFIG_SND_SOC_AK4535)
+=
snd-soc-ak4535.o
...
...
sound/soc/codecs/adav801.c
0 → 100644
View file @
a32eb702
/*
* ADAV801 audio driver
*
* Copyright 2014 Analog Devices Inc.
*
* Licensed under the GPL-2.
*/
#include <linux/module.h>
#include <linux/spi/spi.h>
#include <linux/regmap.h>
#include <sound/soc.h>
#include "adav80x.h"
static
const
struct
spi_device_id
adav80x_spi_id
[]
=
{
{
"adav801"
,
0
},
{
}
};
MODULE_DEVICE_TABLE
(
spi
,
adav80x_spi_id
);
static
int
adav80x_spi_probe
(
struct
spi_device
*
spi
)
{
struct
regmap_config
config
;
config
=
adav80x_regmap_config
;
config
.
read_flag_mask
=
0x01
;
return
adav80x_bus_probe
(
&
spi
->
dev
,
devm_regmap_init_spi
(
spi
,
&
config
));
}
static
int
adav80x_spi_remove
(
struct
spi_device
*
spi
)
{
snd_soc_unregister_codec
(
&
spi
->
dev
);
return
0
;
}
static
struct
spi_driver
adav80x_spi_driver
=
{
.
driver
=
{
.
name
=
"adav801"
,
.
owner
=
THIS_MODULE
,
},
.
probe
=
adav80x_spi_probe
,
.
remove
=
adav80x_spi_remove
,
.
id_table
=
adav80x_spi_id
,
};
module_spi_driver
(
adav80x_spi_driver
);
MODULE_DESCRIPTION
(
"ASoC ADAV801 driver"
);
MODULE_AUTHOR
(
"Lars-Peter Clausen <lars@metafoo.de>"
);
MODULE_AUTHOR
(
"Yi Li <yi.li@analog.com>>"
);
MODULE_LICENSE
(
"GPL"
);
sound/soc/codecs/adav803.c
0 → 100644
View file @
a32eb702
/*
* ADAV803 audio driver
*
* Copyright 2014 Analog Devices Inc.
*
* Licensed under the GPL-2.
*/
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/regmap.h>
#include <sound/soc.h>
#include "adav80x.h"
static
const
struct
i2c_device_id
adav803_id
[]
=
{
{
"adav803"
,
0
},
{
}
};
MODULE_DEVICE_TABLE
(
i2c
,
adav803_id
);
static
int
adav803_probe
(
struct
i2c_client
*
client
,
const
struct
i2c_device_id
*
id
)
{
return
adav80x_bus_probe
(
&
client
->
dev
,
devm_regmap_init_i2c
(
client
,
&
adav80x_regmap_config
));
}
static
int
adav803_remove
(
struct
i2c_client
*
client
)
{
snd_soc_unregister_codec
(
&
client
->
dev
);
return
0
;
}
static
struct
i2c_driver
adav803_driver
=
{
.
driver
=
{
.
name
=
"adav803"
,
.
owner
=
THIS_MODULE
,
},
.
probe
=
adav803_probe
,
.
remove
=
adav803_remove
,
.
id_table
=
adav803_id
,
};
module_i2c_driver
(
adav803_driver
);
MODULE_DESCRIPTION
(
"ASoC ADAV803 driver"
);
MODULE_AUTHOR
(
"Lars-Peter Clausen <lars@metafoo.de>"
);
MODULE_AUTHOR
(
"Yi Li <yi.li@analog.com>>"
);
MODULE_LICENSE
(
"GPL"
);
sound/soc/codecs/adav80x.c
View file @
a32eb702
...
...
@@ -8,17 +8,15 @@
* Licensed under the GPL-2 or later.
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/i2c.h>
#include <linux/spi/spi.h>
#include <linux/regmap.h>
#include <linux/slab.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/tlv.h>
#include <sound/soc.h>
#include <sound/tlv.h>
#include "adav80x.h"
...
...
@@ -864,39 +862,26 @@ static struct snd_soc_codec_driver adav80x_codec_driver = {
.
num_dapm_routes
=
ARRAY_SIZE
(
adav80x_dapm_routes
),
};
static
int
adav80x_bus_probe
(
struct
device
*
dev
,
struct
regmap
*
regmap
)
int
adav80x_bus_probe
(
struct
device
*
dev
,
struct
regmap
*
regmap
)
{
struct
adav80x
*
adav80x
;
int
ret
;
if
(
IS_ERR
(
regmap
))
return
PTR_ERR
(
regmap
);
adav80x
=
kzalloc
(
sizeof
(
*
adav80x
),
GFP_KERNEL
);
adav80x
=
devm_kzalloc
(
dev
,
sizeof
(
*
adav80x
),
GFP_KERNEL
);
if
(
!
adav80x
)
return
-
ENOMEM
;
dev_set_drvdata
(
dev
,
adav80x
);
adav80x
->
regmap
=
regmap
;
ret
=
snd_soc_register_codec
(
dev
,
&
adav80x_codec_driver
,
ret
urn
snd_soc_register_codec
(
dev
,
&
adav80x_codec_driver
,
adav80x_dais
,
ARRAY_SIZE
(
adav80x_dais
));
if
(
ret
)
kfree
(
adav80x
);
return
ret
;
}
EXPORT_SYMBOL_GPL
(
adav80x_bus_probe
);
static
int
adav80x_bus_remove
(
struct
device
*
dev
)
{
snd_soc_unregister_codec
(
dev
);
kfree
(
dev_get_drvdata
(
dev
));
return
0
;
}
#if defined(CONFIG_SPI_MASTER)
static
const
struct
regmap_config
adav80x_spi_regmap_config
=
{
const
struct
regmap_config
adav80x_regmap_config
=
{
.
val_bits
=
8
,
.
pad_bits
=
1
,
.
reg_bits
=
7
,
...
...
@@ -908,105 +893,7 @@ static const struct regmap_config adav80x_spi_regmap_config = {
.
reg_defaults
=
adav80x_reg_defaults
,
.
num_reg_defaults
=
ARRAY_SIZE
(
adav80x_reg_defaults
),
};
static
const
struct
spi_device_id
adav80x_spi_id
[]
=
{
{
"adav801"
,
0
},
{
}
};
MODULE_DEVICE_TABLE
(
spi
,
adav80x_spi_id
);
static
int
adav80x_spi_probe
(
struct
spi_device
*
spi
)
{
return
adav80x_bus_probe
(
&
spi
->
dev
,
devm_regmap_init_spi
(
spi
,
&
adav80x_spi_regmap_config
));
}
static
int
adav80x_spi_remove
(
struct
spi_device
*
spi
)
{
return
adav80x_bus_remove
(
&
spi
->
dev
);
}
static
struct
spi_driver
adav80x_spi_driver
=
{
.
driver
=
{
.
name
=
"adav801"
,
.
owner
=
THIS_MODULE
,
},
.
probe
=
adav80x_spi_probe
,
.
remove
=
adav80x_spi_remove
,
.
id_table
=
adav80x_spi_id
,
};
#endif
#if IS_ENABLED(CONFIG_I2C)
static
const
struct
regmap_config
adav80x_i2c_regmap_config
=
{
.
val_bits
=
8
,
.
pad_bits
=
1
,
.
reg_bits
=
7
,
.
max_register
=
ADAV80X_PLL_OUTE
,
.
cache_type
=
REGCACHE_RBTREE
,
.
reg_defaults
=
adav80x_reg_defaults
,
.
num_reg_defaults
=
ARRAY_SIZE
(
adav80x_reg_defaults
),
};
static
const
struct
i2c_device_id
adav80x_i2c_id
[]
=
{
{
"adav803"
,
0
},
{
}
};
MODULE_DEVICE_TABLE
(
i2c
,
adav80x_i2c_id
);
static
int
adav80x_i2c_probe
(
struct
i2c_client
*
client
,
const
struct
i2c_device_id
*
id
)
{
return
adav80x_bus_probe
(
&
client
->
dev
,
devm_regmap_init_i2c
(
client
,
&
adav80x_i2c_regmap_config
));
}
static
int
adav80x_i2c_remove
(
struct
i2c_client
*
client
)
{
return
adav80x_bus_remove
(
&
client
->
dev
);
}
static
struct
i2c_driver
adav80x_i2c_driver
=
{
.
driver
=
{
.
name
=
"adav803"
,
.
owner
=
THIS_MODULE
,
},
.
probe
=
adav80x_i2c_probe
,
.
remove
=
adav80x_i2c_remove
,
.
id_table
=
adav80x_i2c_id
,
};
#endif
static
int
__init
adav80x_init
(
void
)
{
int
ret
=
0
;
#if IS_ENABLED(CONFIG_I2C)
ret
=
i2c_add_driver
(
&
adav80x_i2c_driver
);
if
(
ret
)
return
ret
;
#endif
#if defined(CONFIG_SPI_MASTER)
ret
=
spi_register_driver
(
&
adav80x_spi_driver
);
#endif
return
ret
;
}
module_init
(
adav80x_init
);
static
void
__exit
adav80x_exit
(
void
)
{
#if IS_ENABLED(CONFIG_I2C)
i2c_del_driver
(
&
adav80x_i2c_driver
);
#endif
#if defined(CONFIG_SPI_MASTER)
spi_unregister_driver
(
&
adav80x_spi_driver
);
#endif
}
module_exit
(
adav80x_exit
);
EXPORT_SYMBOL_GPL
(
adav80x_regmap_config
);
MODULE_DESCRIPTION
(
"ASoC ADAV80x driver"
);
MODULE_AUTHOR
(
"Lars-Peter Clausen <lars@metafoo.de>"
);
...
...
sound/soc/codecs/adav80x.h
View file @
a32eb702
...
...
@@ -9,6 +9,13 @@
#ifndef _ADAV80X_H
#define _ADAV80X_H
#include <linux/regmap.h>
struct
device
;
extern
const
struct
regmap_config
adav80x_regmap_config
;
int
adav80x_bus_probe
(
struct
device
*
dev
,
struct
regmap
*
regmap
);
enum
adav80x_pll_src
{
ADAV80X_PLL_SRC_XIN
,
ADAV80X_PLL_SRC_XTAL
,
...
...
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