Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
9eedbdf1
Commit
9eedbdf1
authored
Oct 29, 2009
by
Sascha Hauer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MXC: Add a digital audio multiplexer driver
Signed-off-by:
Sascha Hauer
<
s.hauer@pengutronix.de
>
parent
d8d982b1
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
192 additions
and
0 deletions
+192
-0
arch/arm/mach-mx2/Kconfig
arch/arm/mach-mx2/Kconfig
+2
-0
arch/arm/mach-mx3/Kconfig
arch/arm/mach-mx3/Kconfig
+2
-0
arch/arm/plat-mxc/Kconfig
arch/arm/plat-mxc/Kconfig
+7
-0
arch/arm/plat-mxc/Makefile
arch/arm/plat-mxc/Makefile
+2
-0
arch/arm/plat-mxc/audmux-v1.c
arch/arm/plat-mxc/audmux-v1.c
+53
-0
arch/arm/plat-mxc/audmux-v2.c
arch/arm/plat-mxc/audmux-v2.c
+74
-0
arch/arm/plat-mxc/include/mach/audmux.h
arch/arm/plat-mxc/include/mach/audmux.h
+52
-0
No files found.
arch/arm/mach-mx2/Kconfig
View file @
9eedbdf1
...
...
@@ -6,11 +6,13 @@ choice
config MACH_MX21
bool "i.MX21 support"
select ARCH_MXC_AUDMUX_V1
help
This enables support for Freescale's MX2 based i.MX21 processor.
config MACH_MX27
bool "i.MX27 support"
select ARCH_MXC_AUDMUX_V1
help
This enables support for Freescale's MX2 based i.MX27 processor.
...
...
arch/arm/mach-mx3/Kconfig
View file @
9eedbdf1
...
...
@@ -2,11 +2,13 @@ if ARCH_MX3
config ARCH_MX31
select ARCH_HAS_RNGA
select ARCH_MXC_AUDMUX_V2
bool
config ARCH_MX35
bool
select ARCH_MXC_IOMUX_V3
select ARCH_MXC_AUDMUX_V2
comment "MX3 platforms:"
...
...
arch/arm/plat-mxc/Kconfig
View file @
9eedbdf1
...
...
@@ -78,4 +78,11 @@ config ARCH_HAS_RNGA
config ARCH_MXC_IOMUX_V3
bool
config ARCH_MXC_AUDMUX_V1
bool
config ARCH_MXC_AUDMUX_V2
bool
endif
arch/arm/plat-mxc/Makefile
View file @
9eedbdf1
...
...
@@ -10,3 +10,5 @@ obj-$(CONFIG_ARCH_MX2) += iomux-mx1-mx2.o dma-mx1-mx2.o
obj-$(CONFIG_ARCH_MXC_IOMUX_V3)
+=
iomux-v3.o
obj-$(CONFIG_MXC_PWM)
+=
pwm.o
obj-$(CONFIG_MXC_ULPI)
+=
ulpi.o
obj-$(CONFIG_ARCH_MXC_AUDMUX_V1)
+=
audmux-v1.o
obj-$(CONFIG_ARCH_MXC_AUDMUX_V2)
+=
audmux-v2.o
arch/arm/plat-mxc/audmux-v1.c
0 → 100644
View file @
9eedbdf1
/*
* Copyright 2009 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
*
* Initial development of this code was funded by
* Phytec Messtechnik GmbH, http://www.phytec.de
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <linux/module.h>
#include <linux/err.h>
#include <linux/io.h>
#include <linux/clk.h>
#include <mach/audmux.h>
#include <mach/hardware.h>
static
void
__iomem
*
audmux_base
;
#define MXC_AUDMUX_V1_PCR(x) ((x) * 4)
int
mxc_audmux_v1_configure_port
(
unsigned
int
port
,
unsigned
int
pcr
)
{
if
(
!
audmux_base
)
{
printk
(
"%s: not configured
\n
"
,
__func__
);
return
-
ENOSYS
;
}
writel
(
pcr
,
audmux_base
+
MXC_AUDMUX_V1_PCR
(
port
));
return
0
;
}
EXPORT_SYMBOL_GPL
(
mxc_audmux_v1_configure_port
);
static
int
mxc_audmux_v1_init
(
void
)
{
if
(
cpu_is_mx27
()
||
cpu_is_mx21
())
audmux_base
=
IO_ADDRESS
(
AUDMUX_BASE_ADDR
);
return
0
;
}
postcore_initcall
(
mxc_audmux_v1_init
);
arch/arm/plat-mxc/audmux-v2.c
0 → 100644
View file @
9eedbdf1
/*
* Copyright 2009 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
*
* Initial development of this code was funded by
* Phytec Messtechnik GmbH, http://www.phytec.de
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <linux/module.h>
#include <linux/err.h>
#include <linux/io.h>
#include <linux/clk.h>
#include <mach/audmux.h>
#include <mach/hardware.h>
static
struct
clk
*
audmux_clk
;
static
void
__iomem
*
audmux_base
;
#define MXC_AUDMUX_V2_PTCR(x) ((x) * 8)
#define MXC_AUDMUX_V2_PDCR(x) ((x) * 8 + 4)
int
mxc_audmux_v2_configure_port
(
unsigned
int
port
,
unsigned
int
ptcr
,
unsigned
int
pdcr
)
{
if
(
!
audmux_base
)
return
-
ENOSYS
;
if
(
audmux_clk
)
clk_enable
(
audmux_clk
);
writel
(
ptcr
,
audmux_base
+
MXC_AUDMUX_V2_PTCR
(
port
));
writel
(
pdcr
,
audmux_base
+
MXC_AUDMUX_V2_PDCR
(
port
));
if
(
audmux_clk
)
clk_disable
(
audmux_clk
);
return
0
;
}
EXPORT_SYMBOL_GPL
(
mxc_audmux_v2_configure_port
);
static
int
mxc_audmux_v2_init
(
void
)
{
int
ret
;
if
(
cpu_is_mx35
())
{
audmux_clk
=
clk_get
(
NULL
,
"audmux"
);
if
(
IS_ERR
(
audmux_clk
))
{
ret
=
PTR_ERR
(
audmux_clk
);
printk
(
KERN_ERR
"%s: cannot get clock: %d
\n
"
,
__func__
,
ret
);
return
ret
;
}
}
if
(
cpu_is_mx31
()
||
cpu_is_mx35
())
audmux_base
=
IO_ADDRESS
(
AUDMUX_BASE_ADDR
);
return
0
;
}
postcore_initcall
(
mxc_audmux_v2_init
);
arch/arm/plat-mxc/include/mach/audmux.h
0 → 100644
View file @
9eedbdf1
#ifndef __MACH_AUDMUX_H
#define __MACH_AUDMUX_H
#define MX27_AUDMUX_HPCR1_SSI0 0
#define MX27_AUDMUX_HPCR2_SSI1 1
#define MX27_AUDMUX_HPCR3_SSI_PINS_4 2
#define MX27_AUDMUX_PPCR1_SSI_PINS_1 3
#define MX27_AUDMUX_PPCR2_SSI_PINS_2 4
#define MX27_AUDMUX_PPCR3_SSI_PINS_3 5
#define MX31_AUDMUX_PORT1_SSI0 0
#define MX31_AUDMUX_PORT2_SSI1 1
#define MX31_AUDMUX_PORT3_SSI_PINS_3 2
#define MX31_AUDMUX_PORT4_SSI_PINS_4 3
#define MX31_AUDMUX_PORT5_SSI_PINS_5 4
#define MX31_AUDMUX_PORT6_SSI_PINS_6 5
/* Register definitions for the i.MX21/27 Digital Audio Multiplexer */
#define MXC_AUDMUX_V1_PCR_INMMASK(x) ((x) & 0xff)
#define MXC_AUDMUX_V1_PCR_INMEN (1 << 8)
#define MXC_AUDMUX_V1_PCR_TXRXEN (1 << 10)
#define MXC_AUDMUX_V1_PCR_SYN (1 << 12)
#define MXC_AUDMUX_V1_PCR_RXDSEL(x) (((x) & 0x7) << 13)
#define MXC_AUDMUX_V1_PCR_RFCSEL(x) (((x) & 0xf) << 20)
#define MXC_AUDMUX_V1_PCR_RCLKDIR (1 << 24)
#define MXC_AUDMUX_V1_PCR_RFSDIR (1 << 25)
#define MXC_AUDMUX_V1_PCR_TFCSEL(x) (((x) & 0xf) << 26)
#define MXC_AUDMUX_V1_PCR_TCLKDIR (1 << 30)
#define MXC_AUDMUX_V1_PCR_TFSDIR (1 << 31)
/* Register definitions for the i.MX25/31/35 Digital Audio Multiplexer */
#define MXC_AUDMUX_V2_PTCR_TFSDIR (1 << 31)
#define MXC_AUDMUX_V2_PTCR_TFSEL(x) (((x) & 0xf) << 27)
#define MXC_AUDMUX_V2_PTCR_TCLKDIR (1 << 26)
#define MXC_AUDMUX_V2_PTCR_TCSEL(x) (((x) & 0xf) << 22)
#define MXC_AUDMUX_V2_PTCR_RFSDIR (1 << 21)
#define MXC_AUDMUX_V2_PTCR_RFSEL(x) (((x) & 0xf) << 17)
#define MXC_AUDMUX_V2_PTCR_RCLKDIR (1 << 16)
#define MXC_AUDMUX_V2_PTCR_RCSEL(x) (((x) & 0xf) << 12)
#define MXC_AUDMUX_V2_PTCR_SYN (1 << 11)
#define MXC_AUDMUX_V2_PDCR_RXDSEL(x) (((x) & 0x7) << 13)
#define MXC_AUDMUX_V2_PDCR_TXRXEN (1 << 12)
#define MXC_AUDMUX_V2_PDCR_MODE(x) (((x) & 0x3) << 8)
#define MXC_AUDMUX_V2_PDCR_INMMASK(x) ((x) & 0xff)
int
mxc_audmux_v1_configure_port
(
unsigned
int
port
,
unsigned
int
pcr
);
int
mxc_audmux_v2_configure_port
(
unsigned
int
port
,
unsigned
int
ptcr
,
unsigned
int
pdcr
);
#endif
/* __MACH_AUDMUX_H */
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