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
d0c65252
Commit
d0c65252
authored
Feb 11, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/fsi' into asoc-next
parents
1b4327dc
e43fc6af
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
122 additions
and
262 deletions
+122
-262
Documentation/devicetree/bindings/sound/renesas,fsi.txt
Documentation/devicetree/bindings/sound/renesas,fsi.txt
+26
-0
arch/arm/mach-shmobile/board-ap4evb.c
arch/arm/mach-shmobile/board-ap4evb.c
+3
-8
arch/arm/mach-shmobile/board-mackerel.c
arch/arm/mach-shmobile/board-mackerel.c
+4
-7
arch/sh/boards/mach-ecovec24/setup.c
arch/sh/boards/mach-ecovec24/setup.c
+2
-10
arch/sh/boards/mach-se/7724/setup.c
arch/sh/boards/mach-se/7724/setup.c
+2
-10
include/sound/sh_fsi.h
include/sound/sh_fsi.h
+4
-66
sound/soc/sh/fsi.c
sound/soc/sh/fsi.c
+81
-161
No files found.
Documentation/devicetree/bindings/sound/renesas,fsi.txt
0 → 100644
View file @
d0c65252
Renesas FSI
Required properties:
- compatible : "renesas,sh_fsi2" or "renesas,sh_fsi"
- reg : Should contain the register physical address and length
- interrupts : Should contain FSI interrupt
- fsia,spdif-connection : FSI is connected by S/PDFI
- fsia,stream-mode-support : FSI supports 16bit stream mode.
- fsia,use-internal-clock : FSI uses internal clock when master mode.
- fsib,spdif-connection : same as fsia
- fsib,stream-mode-support : same as fsia
- fsib,use-internal-clock : same as fsia
Example:
sh_fsi2: sh_fsi2@0xec230000 {
compatible = "renesas,sh_fsi2";
reg = <0xec230000 0x400>;
interrupts = <0 146 0x4>;
fsia,spdif-connection;
fsia,stream-mode-support;
fsia,use-internal-clock;
};
arch/arm/mach-shmobile/board-ap4evb.c
View file @
d0c65252
...
...
@@ -657,14 +657,8 @@ static struct platform_device lcdc_device = {
/* FSI */
#define IRQ_FSI evt2irq(0x1840)
static
struct
sh_fsi_platform_info
fsi_info
=
{
.
port_a
=
{
.
flags
=
SH_FSI_BRS_INV
,
},
.
port_b
=
{
.
flags
=
SH_FSI_BRS_INV
|
SH_FSI_BRM_INV
|
SH_FSI_LRS_INV
|
SH_FSI_CLK_CPG
|
.
flags
=
SH_FSI_CLK_CPG
|
SH_FSI_FMT_SPDIF
,
},
};
...
...
@@ -816,7 +810,8 @@ static struct platform_device lcdc1_device = {
};
static
struct
asoc_simple_dai_init_info
fsi2_hdmi_init_info
=
{
.
cpu_daifmt
=
SND_SOC_DAIFMT_CBM_CFM
,
.
cpu_daifmt
=
SND_SOC_DAIFMT_CBM_CFM
|
SND_SOC_DAIFMT_IB_NF
,
};
static
struct
asoc_simple_card_info
fsi2_hdmi_info
=
{
...
...
arch/arm/mach-shmobile/board-mackerel.c
View file @
d0c65252
...
...
@@ -503,7 +503,8 @@ static struct platform_device hdmi_lcdc_device = {
};
static
struct
asoc_simple_dai_init_info
fsi2_hdmi_init_info
=
{
.
cpu_daifmt
=
SND_SOC_DAIFMT_CBM_CFM
,
.
cpu_daifmt
=
SND_SOC_DAIFMT_CBM_CFM
|
SND_SOC_DAIFMT_IB_NF
,
};
static
struct
asoc_simple_card_info
fsi2_hdmi_info
=
{
...
...
@@ -858,16 +859,12 @@ static struct platform_device leds_device = {
#define IRQ_FSI evt2irq(0x1840)
static
struct
sh_fsi_platform_info
fsi_info
=
{
.
port_a
=
{
.
flags
=
SH_FSI_BRS_INV
,
.
tx_id
=
SHDMA_SLAVE_FSIA_TX
,
.
rx_id
=
SHDMA_SLAVE_FSIA_RX
,
},
.
port_b
=
{
.
flags
=
SH_FSI_BRS_INV
|
SH_FSI_BRM_INV
|
SH_FSI_LRS_INV
|
SH_FSI_CLK_CPG
|
SH_FSI_FMT_SPDIF
,
.
flags
=
SH_FSI_CLK_CPG
|
SH_FSI_FMT_SPDIF
,
}
};
...
...
arch/sh/boards/mach-ecovec24/setup.c
View file @
d0c65252
...
...
@@ -887,12 +887,6 @@ static struct platform_device camera_devices[] = {
};
/* FSI */
static
struct
sh_fsi_platform_info
fsi_info
=
{
.
port_b
=
{
.
flags
=
SH_FSI_BRS_INV
,
},
};
static
struct
resource
fsi_resources
[]
=
{
[
0
]
=
{
.
name
=
"FSI"
,
...
...
@@ -911,15 +905,13 @@ static struct platform_device fsi_device = {
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
fsi_resources
),
.
resource
=
fsi_resources
,
.
dev
=
{
.
platform_data
=
&
fsi_info
,
},
};
static
struct
asoc_simple_dai_init_info
fsi_da7210_init_info
=
{
.
fmt
=
SND_SOC_DAIFMT_I2S
,
.
codec_daifmt
=
SND_SOC_DAIFMT_CBM_CFM
,
.
cpu_daifmt
=
SND_SOC_DAIFMT_CBS_CFS
,
.
cpu_daifmt
=
SND_SOC_DAIFMT_CBS_CFS
|
SND_SOC_DAIFMT_IB_NF
,
};
static
struct
asoc_simple_card_info
fsi_da7210_info
=
{
...
...
arch/sh/boards/mach-se/7724/setup.c
View file @
d0c65252
...
...
@@ -279,12 +279,6 @@ static struct platform_device ceu1_device = {
/* FSI */
/* change J20, J21, J22 pin to 1-2 connection to use slave mode */
static
struct
sh_fsi_platform_info
fsi_info
=
{
.
port_a
=
{
.
flags
=
SH_FSI_BRS_INV
,
},
};
static
struct
resource
fsi_resources
[]
=
{
[
0
]
=
{
.
name
=
"FSI"
,
...
...
@@ -303,15 +297,13 @@ static struct platform_device fsi_device = {
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
fsi_resources
),
.
resource
=
fsi_resources
,
.
dev
=
{
.
platform_data
=
&
fsi_info
,
},
};
static
struct
asoc_simple_dai_init_info
fsi2_ak4642_init_info
=
{
.
fmt
=
SND_SOC_DAIFMT_LEFT_J
,
.
codec_daifmt
=
SND_SOC_DAIFMT_CBM_CFM
,
.
cpu_daifmt
=
SND_SOC_DAIFMT_CBS_CFS
,
.
cpu_daifmt
=
SND_SOC_DAIFMT_CBS_CFS
|
SND_SOC_DAIFMT_IB_NF
,
.
sysclk
=
11289600
,
};
...
...
include/sound/sh_fsi.h
View file @
d0c65252
...
...
@@ -11,82 +11,20 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#define FSI_PORT_A 0
#define FSI_PORT_B 1
#include <linux/clk.h>
#include <sound/soc.h>
/*
* flags format
*
* 0x00000CBA
*
* A: inversion
* B: format mode
* C: chip specific
* D: clock selecter if master mode
* flags
*/
/* A: clock inversion */
#define SH_FSI_INVERSION_MASK 0x0000000F
#define SH_FSI_LRM_INV (1 << 0)
#define SH_FSI_BRM_INV (1 << 1)
#define SH_FSI_LRS_INV (1 << 2)
#define SH_FSI_BRS_INV (1 << 3)
/* B: format mode */
#define SH_FSI_FMT_MASK 0x000000F0
#define SH_FSI_FMT_DAI (0 << 4)
#define SH_FSI_FMT_SPDIF (1 << 4)
/* C: chip specific */
#define SH_FSI_OPTION_MASK 0x00000F00
#define SH_FSI_ENABLE_STREAM_MODE (1 << 8)
/* for 16bit data */
/* D: clock selecter if master mode */
#define SH_FSI_CLK_MASK 0x0000F000
#define SH_FSI_CLK_EXTERNAL (0 << 12)
#define SH_FSI_CLK_CPG (1 << 12)
/* FSIxCK + FSI-DIV */
/*
* set_rate return value
*
* see ACKMD/BPFMD on
* ACK_MD (FSI2)
* CKG1 (FSI)
*
* err : return value < 0
* no change : return value == 0
* change xMD : return value > 0
*
* 0x-00000AB
*
* A: ACKMD value
* B: BPFMD value
*/
#define SH_FSI_ACKMD_MASK (0xF << 0)
#define SH_FSI_ACKMD_512 (1 << 0)
#define SH_FSI_ACKMD_256 (2 << 0)
#define SH_FSI_ACKMD_128 (3 << 0)
#define SH_FSI_ACKMD_64 (4 << 0)
#define SH_FSI_ACKMD_32 (5 << 0)
#define SH_FSI_BPFMD_MASK (0xF << 4)
#define SH_FSI_BPFMD_512 (1 << 4)
#define SH_FSI_BPFMD_256 (2 << 4)
#define SH_FSI_BPFMD_128 (3 << 4)
#define SH_FSI_BPFMD_64 (4 << 4)
#define SH_FSI_BPFMD_32 (5 << 4)
#define SH_FSI_BPFMD_16 (6 << 4)
#define SH_FSI_FMT_SPDIF (1 << 0)
/* spdif for HDMI */
#define SH_FSI_ENABLE_STREAM_MODE (1 << 1)
/* for 16bit data */
#define SH_FSI_CLK_CPG (1 << 2)
/* FSIxCK + FSI-DIV */
struct
sh_fsi_port_info
{
unsigned
long
flags
;
int
tx_id
;
int
rx_id
;
int
(
*
set_rate
)(
struct
device
*
dev
,
int
rate
,
int
enable
);
};
struct
sh_fsi_platform_info
{
...
...
sound/soc/sh/fsi.c
View file @
d0c65252
This diff is collapsed.
Click to expand it.
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