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
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
Show 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
...
@@ -47,7 +47,8 @@ config SND_SOC_BFIN_EVAL_ADAV80X
tristate "Support for the EVAL-ADAV80X boards on Blackfin eval boards"
tristate "Support for the EVAL-ADAV80X boards on Blackfin eval boards"
depends on SND_BF5XX_I2S && (SPI_MASTER || I2C)
depends on SND_BF5XX_I2S && (SPI_MASTER || I2C)
select SND_BF5XX_SOC_I2S
select SND_BF5XX_SOC_I2S
select SND_SOC_ADAV80X
select SND_SOC_ADAV801 if SPI_MASTER
select SND_SOC_ADAV803 if I2C
help
help
Say Y if you want to add support for the Analog Devices EVAL-ADAV801 or
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
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
...
@@ -22,7 +22,8 @@ config SND_SOC_ALL_CODECS
select SND_SOC_AD1980 if SND_SOC_AC97_BUS
select SND_SOC_AD1980 if SND_SOC_AC97_BUS
select SND_SOC_AD73311
select SND_SOC_AD73311
select SND_SOC_ADAU1373 if I2C
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_ADAU1701 if I2C
select SND_SOC_ADS117X
select SND_SOC_ADS117X
select SND_SOC_AK4104 if SPI_MASTER
select SND_SOC_AK4104 if SPI_MASTER
...
@@ -202,6 +203,14 @@ config SND_SOC_ADAU1373
...
@@ -202,6 +203,14 @@ config SND_SOC_ADAU1373
config SND_SOC_ADAV80X
config SND_SOC_ADAV80X
tristate
tristate
config SND_SOC_ADAV801
tristate
select SND_SOC_ADAV80X
config SND_SOC_ADAV803
tristate
select SND_SOC_ADAV80X
config SND_SOC_ADS117X
config SND_SOC_ADS117X
tristate
tristate
...
...
sound/soc/codecs/Makefile
View file @
a32eb702
...
@@ -8,6 +8,8 @@ snd-soc-ad73311-objs := ad73311.o
...
@@ -8,6 +8,8 @@ snd-soc-ad73311-objs := ad73311.o
snd-soc-adau1701-objs
:=
adau1701.o
snd-soc-adau1701-objs
:=
adau1701.o
snd-soc-adau1373-objs
:=
adau1373.o
snd-soc-adau1373-objs
:=
adau1373.o
snd-soc-adav80x-objs
:=
adav80x.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-ads117x-objs
:=
ads117x.o
snd-soc-ak4104-objs
:=
ak4104.o
snd-soc-ak4104-objs
:=
ak4104.o
snd-soc-ak4535-objs
:=
ak4535.o
snd-soc-ak4535-objs
:=
ak4535.o
...
@@ -139,6 +141,8 @@ obj-$(CONFIG_SND_SOC_AD73311) += snd-soc-ad73311.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_ADAU1373)
+=
snd-soc-adau1373.o
obj-$(CONFIG_SND_SOC_ADAU1701)
+=
snd-soc-adau1701.o
obj-$(CONFIG_SND_SOC_ADAU1701)
+=
snd-soc-adau1701.o
obj-$(CONFIG_SND_SOC_ADAV80X)
+=
snd-soc-adav80x.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_ADS117X)
+=
snd-soc-ads117x.o
obj-$(CONFIG_SND_SOC_AK4104)
+=
snd-soc-ak4104.o
obj-$(CONFIG_SND_SOC_AK4104)
+=
snd-soc-ak4104.o
obj-$(CONFIG_SND_SOC_AK4535)
+=
snd-soc-ak4535.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 @@
...
@@ -8,17 +8,15 @@
* Licensed under the GPL-2 or later.
* Licensed under the GPL-2 or later.
*/
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/i2c.h>
#include <linux/regmap.h>
#include <linux/spi/spi.h>
#include <linux/slab.h>
#include <linux/slab.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/pcm_params.h>
#include <sound/tlv.h>
#include <sound/soc.h>
#include <sound/soc.h>
#include <sound/tlv.h>
#include "adav80x.h"
#include "adav80x.h"
...
@@ -864,39 +862,26 @@ static struct snd_soc_codec_driver adav80x_codec_driver = {
...
@@ -864,39 +862,26 @@ static struct snd_soc_codec_driver adav80x_codec_driver = {
.
num_dapm_routes
=
ARRAY_SIZE
(
adav80x_dapm_routes
),
.
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
;
struct
adav80x
*
adav80x
;
int
ret
;
if
(
IS_ERR
(
regmap
))
if
(
IS_ERR
(
regmap
))
return
PTR_ERR
(
regmap
);
return
PTR_ERR
(
regmap
);
adav80x
=
kzalloc
(
sizeof
(
*
adav80x
),
GFP_KERNEL
);
adav80x
=
devm_kzalloc
(
dev
,
sizeof
(
*
adav80x
),
GFP_KERNEL
);
if
(
!
adav80x
)
if
(
!
adav80x
)
return
-
ENOMEM
;
return
-
ENOMEM
;
dev_set_drvdata
(
dev
,
adav80x
);
dev_set_drvdata
(
dev
,
adav80x
);
adav80x
->
regmap
=
regmap
;
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
));
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
)
const
struct
regmap_config
adav80x_regmap_config
=
{
{
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
=
{
.
val_bits
=
8
,
.
val_bits
=
8
,
.
pad_bits
=
1
,
.
pad_bits
=
1
,
.
reg_bits
=
7
,
.
reg_bits
=
7
,
...
@@ -908,105 +893,7 @@ static const struct regmap_config adav80x_spi_regmap_config = {
...
@@ -908,105 +893,7 @@ static const struct regmap_config adav80x_spi_regmap_config = {
.
reg_defaults
=
adav80x_reg_defaults
,
.
reg_defaults
=
adav80x_reg_defaults
,
.
num_reg_defaults
=
ARRAY_SIZE
(
adav80x_reg_defaults
),
.
num_reg_defaults
=
ARRAY_SIZE
(
adav80x_reg_defaults
),
};
};
EXPORT_SYMBOL_GPL
(
adav80x_regmap_config
);
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
);
MODULE_DESCRIPTION
(
"ASoC ADAV80x driver"
);
MODULE_DESCRIPTION
(
"ASoC ADAV80x driver"
);
MODULE_AUTHOR
(
"Lars-Peter Clausen <lars@metafoo.de>"
);
MODULE_AUTHOR
(
"Lars-Peter Clausen <lars@metafoo.de>"
);
...
...
sound/soc/codecs/adav80x.h
View file @
a32eb702
...
@@ -9,6 +9,13 @@
...
@@ -9,6 +9,13 @@
#ifndef _ADAV80X_H
#ifndef _ADAV80X_H
#define _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
{
enum
adav80x_pll_src
{
ADAV80X_PLL_SRC_XIN
,
ADAV80X_PLL_SRC_XIN
,
ADAV80X_PLL_SRC_XTAL
,
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