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
69758ab7
Commit
69758ab7
authored
Oct 01, 2010
by
Kevin Hilman
Browse files
Options
Browse Files
Download
Plain Diff
manual merge for pm-hwmod-uart due to conflicts
parents
963bfb09
257f23d8
Changes
22
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
2707 additions
and
296 deletions
+2707
-296
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Kconfig
+8
-3
arch/arm/mach-omap2/board-3630sdp.c
arch/arm/mach-omap2/board-3630sdp.c
+0
-1
arch/arm/mach-omap2/board-zoom-peripherals.c
arch/arm/mach-omap2/board-zoom-peripherals.c
+1
-0
arch/arm/mach-omap2/clock3xxx_data.c
arch/arm/mach-omap2/clock3xxx_data.c
+22
-0
arch/arm/mach-omap2/cm-regbits-34xx.h
arch/arm/mach-omap2/cm-regbits-34xx.h
+2
-0
arch/arm/mach-omap2/omap_hwmod_2420_data.c
arch/arm/mach-omap2/omap_hwmod_2420_data.c
+193
-0
arch/arm/mach-omap2/omap_hwmod_2430_data.c
arch/arm/mach-omap2/omap_hwmod_2430_data.c
+193
-0
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+251
-2
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+235
-0
arch/arm/mach-omap2/pm34xx.c
arch/arm/mach-omap2/pm34xx.c
+15
-2
arch/arm/mach-omap2/prcm-common.h
arch/arm/mach-omap2/prcm-common.h
+5
-0
arch/arm/mach-omap2/prm-regbits-34xx.h
arch/arm/mach-omap2/prm-regbits-34xx.h
+1
-0
arch/arm/mach-omap2/serial.c
arch/arm/mach-omap2/serial.c
+284
-271
arch/arm/plat-omap/common.c
arch/arm/plat-omap/common.c
+0
-16
arch/arm/plat-omap/include/plat/common.h
arch/arm/plat-omap/include/plat/common.h
+0
-1
arch/arm/plat-omap/include/plat/dma.h
arch/arm/plat-omap/include/plat/dma.h
+2
-0
arch/arm/plat-omap/include/plat/irqs.h
arch/arm/plat-omap/include/plat/irqs.h
+2
-0
arch/arm/plat-omap/include/plat/omap-serial.h
arch/arm/plat-omap/include/plat/omap-serial.h
+129
-0
drivers/serial/Kconfig
drivers/serial/Kconfig
+27
-0
drivers/serial/Makefile
drivers/serial/Makefile
+1
-0
drivers/serial/omap-serial.c
drivers/serial/omap-serial.c
+1333
-0
include/linux/serial_core.h
include/linux/serial_core.h
+3
-0
No files found.
arch/arm/mach-omap2/Kconfig
View file @
69758ab7
...
...
@@ -11,9 +11,8 @@ config ARCH_OMAP2PLUS_TYPICAL
select PM_RUNTIME
select VFP
select NEON if ARCH_OMAP3 || ARCH_OMAP4
select SERIAL_8250
select SERIAL_CORE_CONSOLE
select SERIAL_8250_CONSOLE
select SERIAL_OMAP
select SERIAL_OMAP_CONSOLE
select I2C
select I2C_OMAP
select MFD
...
...
@@ -222,12 +221,18 @@ config MACH_OMAP_ZOOM2
depends on ARCH_OMAP3
default y
select OMAP_PACKAGE_CBB
select SERIAL_8250
select SERIAL_CORE_CONSOLE
select SERIAL_8250_CONSOLE
config MACH_OMAP_ZOOM3
bool "OMAP3630 Zoom3 board"
depends on ARCH_OMAP3
default y
select OMAP_PACKAGE_CBP
select SERIAL_8250
select SERIAL_CORE_CONSOLE
select SERIAL_8250_CONSOLE
config MACH_CM_T35
bool "CompuLab CM-T35 module"
...
...
arch/arm/mach-omap2/board-3630sdp.c
View file @
69758ab7
...
...
@@ -208,7 +208,6 @@ static struct flash_partitions sdp_flash_partitions[] = {
static
void
__init
omap_sdp_init
(
void
)
{
omap3_mux_init
(
board_mux
,
OMAP_PACKAGE_CBP
);
omap_serial_init
();
zoom_peripherals_init
();
board_smc91x_init
();
board_flash_init
(
sdp_flash_partitions
,
chip_sel_sdp
);
...
...
arch/arm/mach-omap2/board-zoom-peripherals.c
View file @
69758ab7
...
...
@@ -283,4 +283,5 @@ void __init zoom_peripherals_init(void)
omap_i2c_init
();
usb_musb_init
(
&
musb_board_data
);
enable_board_wakeup_source
();
omap_serial_init
();
}
arch/arm/mach-omap2/clock3xxx_data.c
View file @
69758ab7
...
...
@@ -2465,6 +2465,16 @@ static struct clk uart3_fck = {
.
recalc
=
&
followparent_recalc
,
};
static
struct
clk
uart4_fck
=
{
.
name
=
"uart4_fck"
,
.
ops
=
&
clkops_omap2_dflt_wait
,
.
parent
=
&
per_48m_fck
,
.
enable_reg
=
OMAP_CM_REGADDR
(
OMAP3430_PER_MOD
,
CM_FCLKEN
),
.
enable_bit
=
OMAP3630_EN_UART4_SHIFT
,
.
clkdm_name
=
"per_clkdm"
,
.
recalc
=
&
followparent_recalc
,
};
static
struct
clk
gpt2_fck
=
{
.
name
=
"gpt2_fck"
,
.
ops
=
&
clkops_omap2_dflt_wait
,
...
...
@@ -2715,6 +2725,16 @@ static struct clk uart3_ick = {
.
recalc
=
&
followparent_recalc
,
};
static
struct
clk
uart4_ick
=
{
.
name
=
"uart4_ick"
,
.
ops
=
&
clkops_omap2_dflt_wait
,
.
parent
=
&
per_l4_ick
,
.
enable_reg
=
OMAP_CM_REGADDR
(
OMAP3430_PER_MOD
,
CM_ICLKEN
),
.
enable_bit
=
OMAP3630_EN_UART4_SHIFT
,
.
clkdm_name
=
"per_clkdm"
,
.
recalc
=
&
followparent_recalc
,
};
static
struct
clk
gpt9_ick
=
{
.
name
=
"gpt9_ick"
,
.
ops
=
&
clkops_omap2_dflt_wait
,
...
...
@@ -3349,6 +3369,7 @@ static struct omap_clk omap3xxx_clks[] = {
CLK
(
NULL
,
"per_96m_fck"
,
&
per_96m_fck
,
CK_3XXX
),
CLK
(
NULL
,
"per_48m_fck"
,
&
per_48m_fck
,
CK_3XXX
),
CLK
(
NULL
,
"uart3_fck"
,
&
uart3_fck
,
CK_3XXX
),
CLK
(
NULL
,
"uart4_fck"
,
&
uart4_fck
,
CK_36XX
),
CLK
(
NULL
,
"gpt2_fck"
,
&
gpt2_fck
,
CK_3XXX
),
CLK
(
NULL
,
"gpt3_fck"
,
&
gpt3_fck
,
CK_3XXX
),
CLK
(
NULL
,
"gpt4_fck"
,
&
gpt4_fck
,
CK_3XXX
),
...
...
@@ -3372,6 +3393,7 @@ static struct omap_clk omap3xxx_clks[] = {
CLK
(
NULL
,
"gpio2_ick"
,
&
gpio2_ick
,
CK_3XXX
),
CLK
(
NULL
,
"wdt3_ick"
,
&
wdt3_ick
,
CK_3XXX
),
CLK
(
NULL
,
"uart3_ick"
,
&
uart3_ick
,
CK_3XXX
),
CLK
(
NULL
,
"uart4_ick"
,
&
uart4_ick
,
CK_36XX
),
CLK
(
NULL
,
"gpt9_ick"
,
&
gpt9_ick
,
CK_3XXX
),
CLK
(
NULL
,
"gpt8_ick"
,
&
gpt8_ick
,
CK_3XXX
),
CLK
(
NULL
,
"gpt7_ick"
,
&
gpt7_ick
,
CK_3XXX
),
...
...
arch/arm/mach-omap2/cm-regbits-34xx.h
View file @
69758ab7
...
...
@@ -649,6 +649,8 @@
#define OMAP3430_ST_MCBSP2_MASK (1 << 0)
/* CM_AUTOIDLE_PER */
#define OMAP3630_AUTO_UART4_MASK (1 << 18)
#define OMAP3630_AUTO_UART4_SHIFT 18
#define OMAP3430_AUTO_GPIO6_MASK (1 << 17)
#define OMAP3430_AUTO_GPIO6_SHIFT 17
#define OMAP3430_AUTO_GPIO5_MASK (1 << 16)
...
...
arch/arm/mach-omap2/omap_hwmod_2420_data.c
View file @
69758ab7
...
...
@@ -15,6 +15,7 @@
#include <mach/irqs.h>
#include <plat/cpu.h>
#include <plat/dma.h>
#include <plat/serial.h>
#include "omap_hwmod_common_data.h"
...
...
@@ -73,6 +74,9 @@ static struct omap_hwmod omap2420_l3_main_hwmod = {
};
static
struct
omap_hwmod
omap2420_l4_wkup_hwmod
;
static
struct
omap_hwmod
omap2420_uart1_hwmod
;
static
struct
omap_hwmod
omap2420_uart2_hwmod
;
static
struct
omap_hwmod
omap2420_uart3_hwmod
;
/* L4_CORE -> L4_WKUP interface */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__l4_wkup
=
{
...
...
@@ -81,6 +85,60 @@ static struct omap_hwmod_ocp_if omap2420_l4_core__l4_wkup = {
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* L4 CORE -> UART1 interface */
static
struct
omap_hwmod_addr_space
omap2420_uart1_addr_space
[]
=
{
{
.
pa_start
=
OMAP2_UART1_BASE
,
.
pa_end
=
OMAP2_UART1_BASE
+
SZ_8K
-
1
,
.
flags
=
ADDR_MAP_ON_INIT
|
ADDR_TYPE_RT
,
},
};
static
struct
omap_hwmod_ocp_if
omap2_l4_core__uart1
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_uart1_hwmod
,
.
clk
=
"uart1_ick"
,
.
addr
=
omap2420_uart1_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_uart1_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* L4 CORE -> UART2 interface */
static
struct
omap_hwmod_addr_space
omap2420_uart2_addr_space
[]
=
{
{
.
pa_start
=
OMAP2_UART2_BASE
,
.
pa_end
=
OMAP2_UART2_BASE
+
SZ_1K
-
1
,
.
flags
=
ADDR_MAP_ON_INIT
|
ADDR_TYPE_RT
,
},
};
static
struct
omap_hwmod_ocp_if
omap2_l4_core__uart2
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_uart2_hwmod
,
.
clk
=
"uart2_ick"
,
.
addr
=
omap2420_uart2_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_uart2_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* L4 PER -> UART3 interface */
static
struct
omap_hwmod_addr_space
omap2420_uart3_addr_space
[]
=
{
{
.
pa_start
=
OMAP2_UART3_BASE
,
.
pa_end
=
OMAP2_UART3_BASE
+
SZ_1K
-
1
,
.
flags
=
ADDR_MAP_ON_INIT
|
ADDR_TYPE_RT
,
},
};
static
struct
omap_hwmod_ocp_if
omap2_l4_core__uart3
=
{
.
master
=
&
omap2420_l4_core_hwmod
,
.
slave
=
&
omap2420_uart3_hwmod
,
.
clk
=
"uart3_ick"
,
.
addr
=
omap2420_uart3_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_uart3_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* Slave interfaces on the L4_CORE interconnect */
static
struct
omap_hwmod_ocp_if
*
omap2420_l4_core_slaves
[]
=
{
&
omap2420_l3_main__l4_core
,
...
...
@@ -89,6 +147,9 @@ static struct omap_hwmod_ocp_if *omap2420_l4_core_slaves[] = {
/* Master interfaces on the L4_CORE interconnect */
static
struct
omap_hwmod_ocp_if
*
omap2420_l4_core_masters
[]
=
{
&
omap2420_l4_core__l4_wkup
,
&
omap2_l4_core__uart1
,
&
omap2_l4_core__uart2
,
&
omap2_l4_core__uart3
,
};
/* L4 CORE */
...
...
@@ -228,6 +289,135 @@ static struct omap_hwmod omap2420_wd_timer2_hwmod = {
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
),
};
/* UART */
static
struct
omap_hwmod_class_sysconfig
uart_sysc
=
{
.
rev_offs
=
0x50
,
.
sysc_offs
=
0x54
,
.
syss_offs
=
0x58
,
.
sysc_flags
=
(
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
uart_class
=
{
.
name
=
"uart"
,
.
sysc
=
&
uart_sysc
,
};
/* UART1 */
static
struct
omap_hwmod_irq_info
uart1_mpu_irqs
[]
=
{
{
.
irq
=
INT_24XX_UART1_IRQ
,
},
};
static
struct
omap_hwmod_dma_info
uart1_sdma_reqs
[]
=
{
{
.
name
=
"rx"
,
.
dma_req
=
OMAP24XX_DMA_UART1_RX
,
},
{
.
name
=
"tx"
,
.
dma_req
=
OMAP24XX_DMA_UART1_TX
,
},
};
static
struct
omap_hwmod_ocp_if
*
omap2420_uart1_slaves
[]
=
{
&
omap2_l4_core__uart1
,
};
static
struct
omap_hwmod
omap2420_uart1_hwmod
=
{
.
name
=
"uart1"
,
.
mpu_irqs
=
uart1_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
uart1_mpu_irqs
),
.
sdma_reqs
=
uart1_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
uart1_sdma_reqs
),
.
main_clk
=
"uart1_fck"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
CORE_MOD
,
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_UART1_SHIFT
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_EN_UART1_SHIFT
,
},
},
.
slaves
=
omap2420_uart1_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_uart1_slaves
),
.
class
=
&
uart_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
),
};
/* UART2 */
static
struct
omap_hwmod_irq_info
uart2_mpu_irqs
[]
=
{
{
.
irq
=
INT_24XX_UART2_IRQ
,
},
};
static
struct
omap_hwmod_dma_info
uart2_sdma_reqs
[]
=
{
{
.
name
=
"rx"
,
.
dma_req
=
OMAP24XX_DMA_UART2_RX
,
},
{
.
name
=
"tx"
,
.
dma_req
=
OMAP24XX_DMA_UART2_TX
,
},
};
static
struct
omap_hwmod_ocp_if
*
omap2420_uart2_slaves
[]
=
{
&
omap2_l4_core__uart2
,
};
static
struct
omap_hwmod
omap2420_uart2_hwmod
=
{
.
name
=
"uart2"
,
.
mpu_irqs
=
uart2_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
uart2_mpu_irqs
),
.
sdma_reqs
=
uart2_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
uart2_sdma_reqs
),
.
main_clk
=
"uart2_fck"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
CORE_MOD
,
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_UART2_SHIFT
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_EN_UART2_SHIFT
,
},
},
.
slaves
=
omap2420_uart2_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_uart2_slaves
),
.
class
=
&
uart_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
),
};
/* UART3 */
static
struct
omap_hwmod_irq_info
uart3_mpu_irqs
[]
=
{
{
.
irq
=
INT_24XX_UART3_IRQ
,
},
};
static
struct
omap_hwmod_dma_info
uart3_sdma_reqs
[]
=
{
{
.
name
=
"rx"
,
.
dma_req
=
OMAP24XX_DMA_UART3_RX
,
},
{
.
name
=
"tx"
,
.
dma_req
=
OMAP24XX_DMA_UART3_TX
,
},
};
static
struct
omap_hwmod_ocp_if
*
omap2420_uart3_slaves
[]
=
{
&
omap2_l4_core__uart3
,
};
static
struct
omap_hwmod
omap2420_uart3_hwmod
=
{
.
name
=
"uart3"
,
.
mpu_irqs
=
uart3_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
uart3_mpu_irqs
),
.
sdma_reqs
=
uart3_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
uart3_sdma_reqs
),
.
main_clk
=
"uart3_fck"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
CORE_MOD
,
.
prcm_reg_id
=
2
,
.
module_bit
=
OMAP24XX_EN_UART3_SHIFT
,
.
idlest_reg_id
=
2
,
.
idlest_idle_bit
=
OMAP24XX_EN_UART3_SHIFT
,
},
},
.
slaves
=
omap2420_uart3_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_uart3_slaves
),
.
class
=
&
uart_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
),
};
static
__initdata
struct
omap_hwmod
*
omap2420_hwmods
[]
=
{
&
omap2420_l3_main_hwmod
,
&
omap2420_l4_core_hwmod
,
...
...
@@ -235,6 +425,9 @@ static __initdata struct omap_hwmod *omap2420_hwmods[] = {
&
omap2420_mpu_hwmod
,
&
omap2420_iva_hwmod
,
&
omap2420_wd_timer2_hwmod
,
&
omap2420_uart1_hwmod
,
&
omap2420_uart2_hwmod
,
&
omap2420_uart3_hwmod
,
NULL
,
};
...
...
arch/arm/mach-omap2/omap_hwmod_2430_data.c
View file @
69758ab7
...
...
@@ -15,6 +15,7 @@
#include <mach/irqs.h>
#include <plat/cpu.h>
#include <plat/dma.h>
#include <plat/serial.h>
#include "omap_hwmod_common_data.h"
...
...
@@ -73,6 +74,9 @@ static struct omap_hwmod omap2430_l3_main_hwmod = {
};
static
struct
omap_hwmod
omap2430_l4_wkup_hwmod
;
static
struct
omap_hwmod
omap2430_uart1_hwmod
;
static
struct
omap_hwmod
omap2430_uart2_hwmod
;
static
struct
omap_hwmod
omap2430_uart3_hwmod
;
/* L4_CORE -> L4_WKUP interface */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__l4_wkup
=
{
...
...
@@ -81,6 +85,60 @@ static struct omap_hwmod_ocp_if omap2430_l4_core__l4_wkup = {
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* L4 CORE -> UART1 interface */
static
struct
omap_hwmod_addr_space
omap2430_uart1_addr_space
[]
=
{
{
.
pa_start
=
OMAP2_UART1_BASE
,
.
pa_end
=
OMAP2_UART1_BASE
+
SZ_8K
-
1
,
.
flags
=
ADDR_MAP_ON_INIT
|
ADDR_TYPE_RT
,
},
};
static
struct
omap_hwmod_ocp_if
omap2_l4_core__uart1
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_uart1_hwmod
,
.
clk
=
"uart1_ick"
,
.
addr
=
omap2430_uart1_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_uart1_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* L4 CORE -> UART2 interface */
static
struct
omap_hwmod_addr_space
omap2430_uart2_addr_space
[]
=
{
{
.
pa_start
=
OMAP2_UART2_BASE
,
.
pa_end
=
OMAP2_UART2_BASE
+
SZ_1K
-
1
,
.
flags
=
ADDR_MAP_ON_INIT
|
ADDR_TYPE_RT
,
},
};
static
struct
omap_hwmod_ocp_if
omap2_l4_core__uart2
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_uart2_hwmod
,
.
clk
=
"uart2_ick"
,
.
addr
=
omap2430_uart2_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_uart2_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* L4 PER -> UART3 interface */
static
struct
omap_hwmod_addr_space
omap2430_uart3_addr_space
[]
=
{
{
.
pa_start
=
OMAP2_UART3_BASE
,
.
pa_end
=
OMAP2_UART3_BASE
+
SZ_1K
-
1
,
.
flags
=
ADDR_MAP_ON_INIT
|
ADDR_TYPE_RT
,
},
};
static
struct
omap_hwmod_ocp_if
omap2_l4_core__uart3
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_uart3_hwmod
,
.
clk
=
"uart3_ick"
,
.
addr
=
omap2430_uart3_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_uart3_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* Slave interfaces on the L4_CORE interconnect */
static
struct
omap_hwmod_ocp_if
*
omap2430_l4_core_slaves
[]
=
{
&
omap2430_l3_main__l4_core
,
...
...
@@ -106,6 +164,9 @@ static struct omap_hwmod omap2430_l4_core_hwmod = {
/* Slave interfaces on the L4_WKUP interconnect */
static
struct
omap_hwmod_ocp_if
*
omap2430_l4_wkup_slaves
[]
=
{
&
omap2430_l4_core__l4_wkup
,
&
omap2_l4_core__uart1
,
&
omap2_l4_core__uart2
,
&
omap2_l4_core__uart3
,
};
/* Master interfaces on the L4_WKUP interconnect */
...
...
@@ -228,6 +289,135 @@ static struct omap_hwmod omap2430_wd_timer2_hwmod = {
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
),
};
/* UART */
static
struct
omap_hwmod_class_sysconfig
uart_sysc
=
{
.
rev_offs
=
0x50
,
.
sysc_offs
=
0x54
,
.
syss_offs
=
0x58
,
.
sysc_flags
=
(
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
uart_class
=
{
.
name
=
"uart"
,
.
sysc
=
&
uart_sysc
,
};
/* UART1 */
static
struct
omap_hwmod_irq_info
uart1_mpu_irqs
[]
=
{
{
.
irq
=
INT_24XX_UART1_IRQ
,
},
};
static
struct
omap_hwmod_dma_info
uart1_sdma_reqs
[]
=
{
{
.
name
=
"rx"
,
.
dma_req
=
OMAP24XX_DMA_UART1_RX
,
},
{
.
name
=
"tx"
,
.
dma_req
=
OMAP24XX_DMA_UART1_TX
,
},
};
static
struct
omap_hwmod_ocp_if
*
omap2430_uart1_slaves
[]
=
{
&
omap2_l4_core__uart1
,
};
static
struct
omap_hwmod
omap2430_uart1_hwmod
=
{
.
name
=
"uart1"
,
.
mpu_irqs
=
uart1_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
uart1_mpu_irqs
),
.
sdma_reqs
=
uart1_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
uart1_sdma_reqs
),
.
main_clk
=
"uart1_fck"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
CORE_MOD
,
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_UART1_SHIFT
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_EN_UART1_SHIFT
,
},
},
.
slaves
=
omap2430_uart1_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_uart1_slaves
),
.
class
=
&
uart_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
),
};
/* UART2 */
static
struct
omap_hwmod_irq_info
uart2_mpu_irqs
[]
=
{
{
.
irq
=
INT_24XX_UART2_IRQ
,
},
};
static
struct
omap_hwmod_dma_info
uart2_sdma_reqs
[]
=
{
{
.
name
=
"rx"
,
.
dma_req
=
OMAP24XX_DMA_UART2_RX
,
},
{
.
name
=
"tx"
,
.
dma_req
=
OMAP24XX_DMA_UART2_TX
,
},
};
static
struct
omap_hwmod_ocp_if
*
omap2430_uart2_slaves
[]
=
{
&
omap2_l4_core__uart2
,
};
static
struct
omap_hwmod
omap2430_uart2_hwmod
=
{
.
name
=
"uart2"
,
.
mpu_irqs
=
uart2_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
uart2_mpu_irqs
),
.
sdma_reqs
=
uart2_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
uart2_sdma_reqs
),
.
main_clk
=
"uart2_fck"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
CORE_MOD
,
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_UART2_SHIFT
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_EN_UART2_SHIFT
,
},
},
.
slaves
=
omap2430_uart2_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_uart2_slaves
),
.
class
=
&
uart_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
),
};
/* UART3 */
static
struct
omap_hwmod_irq_info
uart3_mpu_irqs
[]
=
{
{
.
irq
=
INT_24XX_UART3_IRQ
,
},
};
static
struct
omap_hwmod_dma_info
uart3_sdma_reqs
[]
=
{
{
.
name
=
"rx"
,
.
dma_req
=
OMAP24XX_DMA_UART3_RX
,
},
{
.
name
=
"tx"
,
.
dma_req
=
OMAP24XX_DMA_UART3_TX
,
},
};
static
struct
omap_hwmod_ocp_if
*
omap2430_uart3_slaves
[]
=
{
&
omap2_l4_core__uart3
,
};
static
struct
omap_hwmod
omap2430_uart3_hwmod
=
{
.
name
=
"uart3"
,
.
mpu_irqs
=
uart3_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
uart3_mpu_irqs
),
.
sdma_reqs
=
uart3_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
uart3_sdma_reqs
),
.
main_clk
=
"uart3_fck"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
CORE_MOD
,
.
prcm_reg_id
=
2
,
.
module_bit
=
OMAP24XX_EN_UART3_SHIFT
,
.
idlest_reg_id
=
2
,
.
idlest_idle_bit
=
OMAP24XX_EN_UART3_SHIFT
,
},
},
.
slaves
=
omap2430_uart3_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_uart3_slaves
),
.
class
=
&
uart_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
),
};
static
__initdata
struct
omap_hwmod
*
omap2430_hwmods
[]
=
{
&
omap2430_l3_main_hwmod
,
&
omap2430_l4_core_hwmod
,
...
...
@@ -235,6 +425,9 @@ static __initdata struct omap_hwmod *omap2430_hwmods[] = {
&
omap2430_mpu_hwmod
,
&
omap2430_iva_hwmod
,
&
omap2430_wd_timer2_hwmod
,
&
omap2430_uart1_hwmod
,
&
omap2430_uart2_hwmod
,
&
omap2430_uart3_hwmod
,
NULL
,
};
...
...
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
View file @
69758ab7
...
...
@@ -17,6 +17,7 @@
#include <mach/irqs.h>
#include <plat/cpu.h>
#include <plat/dma.h>
#include <plat/serial.h>
#include "omap_hwmod_common_data.h"
...
...
@@ -84,6 +85,10 @@ static struct omap_hwmod omap3xxx_l3_main_hwmod = {
};
static
struct
omap_hwmod
omap3xxx_l4_wkup_hwmod
;
static
struct
omap_hwmod
omap3xxx_uart1_hwmod
;
static
struct
omap_hwmod
omap3xxx_uart2_hwmod
;
static
struct
omap_hwmod
omap3xxx_uart3_hwmod
;
static
struct
omap_hwmod
omap3xxx_uart4_hwmod
;
/* L4_CORE -> L4_WKUP interface */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_core__l4_wkup
=
{
...
...
@@ -92,6 +97,78 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__l4_wkup = {
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* L4 CORE -> UART1 interface */
static
struct
omap_hwmod_addr_space
omap3xxx_uart1_addr_space
[]
=
{
{
.
pa_start
=
OMAP3_UART1_BASE
,
.
pa_end
=
OMAP3_UART1_BASE
+
SZ_8K
-
1
,
.
flags
=
ADDR_MAP_ON_INIT
|
ADDR_TYPE_RT
,
},
};
static
struct
omap_hwmod_ocp_if
omap3_l4_core__uart1
=
{
.
master
=
&
omap3xxx_l4_core_hwmod
,
.
slave
=
&
omap3xxx_uart1_hwmod
,
.
clk
=
"uart1_ick"
,
.
addr
=
omap3xxx_uart1_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_uart1_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* L4 CORE -> UART2 interface */
static
struct
omap_hwmod_addr_space
omap3xxx_uart2_addr_space
[]
=
{
{
.
pa_start
=
OMAP3_UART2_BASE
,
.
pa_end
=
OMAP3_UART2_BASE
+
SZ_1K
-
1
,
.
flags
=
ADDR_MAP_ON_INIT
|
ADDR_TYPE_RT
,
},
};
static
struct
omap_hwmod_ocp_if
omap3_l4_core__uart2
=
{
.
master
=
&
omap3xxx_l4_core_hwmod
,
.
slave
=
&
omap3xxx_uart2_hwmod
,
.
clk
=
"uart2_ick"
,
.
addr
=
omap3xxx_uart2_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_uart2_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* L4 PER -> UART3 interface */
static
struct
omap_hwmod_addr_space
omap3xxx_uart3_addr_space
[]
=
{
{
.
pa_start
=
OMAP3_UART3_BASE
,
.
pa_end
=
OMAP3_UART3_BASE
+
SZ_1K
-
1
,
.
flags
=
ADDR_MAP_ON_INIT
|
ADDR_TYPE_RT
,
},
};
static
struct
omap_hwmod_ocp_if
omap3_l4_per__uart3
=
{
.
master
=
&
omap3xxx_l4_per_hwmod
,
.
slave
=
&
omap3xxx_uart3_hwmod
,
.
clk
=
"uart3_ick"
,
.
addr
=
omap3xxx_uart3_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_uart3_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* L4 PER -> UART4 interface */
static
struct
omap_hwmod_addr_space
omap3xxx_uart4_addr_space
[]
=
{
{
.
pa_start
=
OMAP3_UART4_BASE
,
.
pa_end
=
OMAP3_UART4_BASE
+
SZ_1K
-
1
,
.
flags
=
ADDR_MAP_ON_INIT
|
ADDR_TYPE_RT
,
},
};
static
struct
omap_hwmod_ocp_if
omap3_l4_per__uart4
=
{
.
master
=
&
omap3xxx_l4_per_hwmod
,
.
slave
=
&
omap3xxx_uart4_hwmod
,
.
clk
=
"uart4_ick"
,
.
addr
=
omap3xxx_uart4_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap3xxx_uart4_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* Slave interfaces on the L4_CORE interconnect */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_l4_core_slaves
[]
=
{
&
omap3xxx_l3_main__l4_core
,
...
...
@@ -100,6 +177,8 @@ static struct omap_hwmod_ocp_if *omap3xxx_l4_core_slaves[] = {
/* Master interfaces on the L4_CORE interconnect */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_l4_core_masters
[]
=
{
&
omap3xxx_l4_core__l4_wkup
,
&
omap3_l4_core__uart1
,
&
omap3_l4_core__uart2
,
};
/* L4 CORE */
...
...
@@ -121,6 +200,8 @@ static struct omap_hwmod_ocp_if *omap3xxx_l4_per_slaves[] = {
/* Master interfaces on the L4_PER interconnect */
static
struct
omap_hwmod_ocp_if
*
omap3xxx_l4_per_masters
[]
=
{
&
omap3_l4_per__uart3
,
&
omap3_l4_per__uart4
,
};
/* L4 PER */
...
...
@@ -262,6 +343,172 @@ static struct omap_hwmod omap3xxx_wd_timer2_hwmod = {
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
),
};
/* UART common */
static
struct
omap_hwmod_class_sysconfig
uart_sysc
=
{
.
rev_offs
=
0x50
,
.
sysc_offs
=
0x54
,
.
syss_offs
=
0x58
,
.
sysc_flags
=
(
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
uart_class
=
{
.
name
=
"uart"
,
.
sysc
=
&
uart_sysc
,
};
/* UART1 */
static
struct
omap_hwmod_irq_info
uart1_mpu_irqs
[]
=
{
{
.
irq
=
INT_24XX_UART1_IRQ
,
},
};
static
struct
omap_hwmod_dma_info
uart1_sdma_reqs
[]
=
{
{
.
name
=
"tx"
,
.
dma_req
=
OMAP24XX_DMA_UART1_TX
,
},
{
.
name
=
"rx"
,
.
dma_req
=
OMAP24XX_DMA_UART1_RX
,
},
};
static
struct
omap_hwmod_ocp_if
*
omap3xxx_uart1_slaves
[]
=
{
&
omap3_l4_core__uart1
,
};
static
struct
omap_hwmod
omap3xxx_uart1_hwmod
=
{
.
name
=
"uart1"
,
.
mpu_irqs
=
uart1_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
uart1_mpu_irqs
),
.
sdma_reqs
=
uart1_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
uart1_sdma_reqs
),
.
main_clk
=
"uart1_fck"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
CORE_MOD
,
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_UART1_SHIFT
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_EN_UART1_SHIFT
,
},
},
.
slaves
=
omap3xxx_uart1_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_uart1_slaves
),
.
class
=
&
uart_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
),
};
/* UART2 */
static
struct
omap_hwmod_irq_info
uart2_mpu_irqs
[]
=
{
{
.
irq
=
INT_24XX_UART2_IRQ
,
},
};
static
struct
omap_hwmod_dma_info
uart2_sdma_reqs
[]
=
{
{
.
name
=
"tx"
,
.
dma_req
=
OMAP24XX_DMA_UART2_TX
,
},
{
.
name
=
"rx"
,
.
dma_req
=
OMAP24XX_DMA_UART2_RX
,
},
};
static
struct
omap_hwmod_ocp_if
*
omap3xxx_uart2_slaves
[]
=
{
&
omap3_l4_core__uart2
,
};
static
struct
omap_hwmod
omap3xxx_uart2_hwmod
=
{
.
name
=
"uart2"
,
.
mpu_irqs
=
uart2_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
uart2_mpu_irqs
),
.
sdma_reqs
=
uart2_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
uart2_sdma_reqs
),
.
main_clk
=
"uart2_fck"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
CORE_MOD
,
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_UART2_SHIFT
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_EN_UART2_SHIFT
,
},
},
.
slaves
=
omap3xxx_uart2_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_uart2_slaves
),
.
class
=
&
uart_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
),
};
/* UART3 */
static
struct
omap_hwmod_irq_info
uart3_mpu_irqs
[]
=
{
{
.
irq
=
INT_24XX_UART3_IRQ
,
},
};
static
struct
omap_hwmod_dma_info
uart3_sdma_reqs
[]
=
{
{
.
name
=
"tx"
,
.
dma_req
=
OMAP24XX_DMA_UART3_TX
,
},
{
.
name
=
"rx"
,
.
dma_req
=
OMAP24XX_DMA_UART3_RX
,
},
};
static
struct
omap_hwmod_ocp_if
*
omap3xxx_uart3_slaves
[]
=
{
&
omap3_l4_per__uart3
,
};
static
struct
omap_hwmod
omap3xxx_uart3_hwmod
=
{
.
name
=
"uart3"
,
.
mpu_irqs
=
uart3_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
uart3_mpu_irqs
),
.
sdma_reqs
=
uart3_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
uart3_sdma_reqs
),
.
main_clk
=
"uart3_fck"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
OMAP3430_PER_MOD
,
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3430_EN_UART3_SHIFT
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_EN_UART3_SHIFT
,
},
},
.
slaves
=
omap3xxx_uart3_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_uart3_slaves
),
.
class
=
&
uart_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3430
),
};
/* UART4 */
static
struct
omap_hwmod_irq_info
uart4_mpu_irqs
[]
=
{
{
.
irq
=
INT_36XX_UART4_IRQ
,
},
};
static
struct
omap_hwmod_dma_info
uart4_sdma_reqs
[]
=
{
{
.
name
=
"rx"
,
.
dma_req
=
OMAP36XX_DMA_UART4_RX
,
},
{
.
name
=
"tx"
,
.
dma_req
=
OMAP36XX_DMA_UART4_TX
,
},
};
static
struct
omap_hwmod_ocp_if
*
omap3xxx_uart4_slaves
[]
=
{
&
omap3_l4_per__uart4
,
};
static
struct
omap_hwmod
omap3xxx_uart4_hwmod
=
{
.
name
=
"uart4"
,
.
mpu_irqs
=
uart4_mpu_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
uart4_mpu_irqs
),
.
sdma_reqs
=
uart4_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
uart4_sdma_reqs
),
.
main_clk
=
"uart4_fck"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
OMAP3430_PER_MOD
,
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP3630_EN_UART4_SHIFT
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3630_EN_UART4_SHIFT
,
},
},
.
slaves
=
omap3xxx_uart4_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap3xxx_uart4_slaves
),
.
class
=
&
uart_class
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP3630ES1
),
};
static
__initdata
struct
omap_hwmod
*
omap3xxx_hwmods
[]
=
{
&
omap3xxx_l3_main_hwmod
,
&
omap3xxx_l4_core_hwmod
,
...
...
@@ -270,6 +517,10 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
&
omap3xxx_mpu_hwmod
,
&
omap3xxx_iva_hwmod
,
&
omap3xxx_wd_timer2_hwmod
,
&
omap3xxx_uart1_hwmod
,
&
omap3xxx_uart2_hwmod
,
&
omap3xxx_uart3_hwmod
,
&
omap3xxx_uart4_hwmod
,
NULL
,
};
...
...
@@ -277,5 +528,3 @@ int __init omap3xxx_hwmod_init(void)
{
return
omap_hwmod_init
(
omap3xxx_hwmods
);
}
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
View file @
69758ab7
...
...
@@ -468,6 +468,21 @@ static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
/*
* 'uart' class
* universal asynchronous receiver/transmitter (uart)
*/
static
struct
omap_hwmod_class_sysconfig
omap44xx_uart_sysc
=
{
.
rev_offs
=
0x0050
,
.
sysc_offs
=
0x0054
,
.
syss_offs
=
0x0058
,
.
sysc_flags
=
(
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
omap44xx_wd_timer_hwmod_class
=
{
.
name
=
"wd_timer"
,
.
sysc
=
&
omap44xx_wd_timer_sysc
,
...
...
@@ -487,6 +502,82 @@ static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = {
},
};
static
struct
omap_hwmod_class
omap44xx_uart_hwmod_class
=
{
.
name
=
"uart"
,
.
sysc
=
&
omap44xx_uart_sysc
,
};
/* uart1 */
static
struct
omap_hwmod
omap44xx_uart1_hwmod
;
static
struct
omap_hwmod_irq_info
omap44xx_uart1_irqs
[]
=
{
{
.
irq
=
72
+
OMAP44XX_IRQ_GIC_START
},
};
static
struct
omap_hwmod_dma_info
omap44xx_uart1_sdma_reqs
[]
=
{
{
.
name
=
"tx"
,
.
dma_req
=
48
+
OMAP44XX_DMA_REQ_START
},
{
.
name
=
"rx"
,
.
dma_req
=
49
+
OMAP44XX_DMA_REQ_START
},
};
static
struct
omap_hwmod_addr_space
omap44xx_uart1_addrs
[]
=
{
{
.
pa_start
=
0x4806a000
,
.
pa_end
=
0x4806a0ff
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> uart1 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_per__uart1
=
{
.
master
=
&
omap44xx_l4_per_hwmod
,
.
slave
=
&
omap44xx_uart1_hwmod
,
.
clk
=
"l4_div_ck"
,
.
addr
=
omap44xx_uart1_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap44xx_uart1_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* uart1 slave ports */
static
struct
omap_hwmod_ocp_if
*
omap44xx_uart1_slaves
[]
=
{
&
omap44xx_l4_per__uart1
,
};
static
struct
omap_hwmod
omap44xx_uart1_hwmod
=
{
.
name
=
"uart1"
,
.
class
=
&
omap44xx_uart_hwmod_class
,
.
mpu_irqs
=
omap44xx_uart1_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap44xx_uart1_irqs
),
.
sdma_reqs
=
omap44xx_uart1_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
omap44xx_uart1_sdma_reqs
),
.
main_clk
=
"uart1_fck"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_reg
=
OMAP4430_CM_L4PER_UART1_CLKCTRL
,
},
},
.
slaves
=
omap44xx_uart1_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap44xx_uart1_slaves
),
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
/* uart2 */
static
struct
omap_hwmod
omap44xx_uart2_hwmod
;
static
struct
omap_hwmod_irq_info
omap44xx_uart2_irqs
[]
=
{
{
.
irq
=
73
+
OMAP44XX_IRQ_GIC_START
},
};
static
struct
omap_hwmod_dma_info
omap44xx_uart2_sdma_reqs
[]
=
{
{
.
name
=
"tx"
,
.
dma_req
=
50
+
OMAP44XX_DMA_REQ_START
},
{
.
name
=
"rx"
,
.
dma_req
=
51
+
OMAP44XX_DMA_REQ_START
},
};
static
struct
omap_hwmod_addr_space
omap44xx_uart2_addrs
[]
=
{
{
.
pa_start
=
0x4806c000
,
.
pa_end
=
0x4806c0ff
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_wkup -> wd_timer2 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_wkup__wd_timer2
=
{
.
master
=
&
omap44xx_l4_wkup_hwmod
,
...
...
@@ -532,6 +623,58 @@ static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
},
};
/* l4_per -> uart2 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_per__uart2
=
{
.
master
=
&
omap44xx_l4_per_hwmod
,
.
slave
=
&
omap44xx_uart2_hwmod
,
.
clk
=
"l4_div_ck"
,
.
addr
=
omap44xx_uart2_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap44xx_uart2_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* uart2 slave ports */
static
struct
omap_hwmod_ocp_if
*
omap44xx_uart2_slaves
[]
=
{
&
omap44xx_l4_per__uart2
,
};
static
struct
omap_hwmod
omap44xx_uart2_hwmod
=
{
.
name
=
"uart2"
,
.
class
=
&
omap44xx_uart_hwmod_class
,
.
mpu_irqs
=
omap44xx_uart2_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap44xx_uart2_irqs
),
.
sdma_reqs
=
omap44xx_uart2_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
omap44xx_uart2_sdma_reqs
),
.
main_clk
=
"uart2_fck"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_reg
=
OMAP4430_CM_L4PER_UART2_CLKCTRL
,
},
},
.
slaves
=
omap44xx_uart2_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap44xx_uart2_slaves
),
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
/* uart3 */
static
struct
omap_hwmod
omap44xx_uart3_hwmod
;
static
struct
omap_hwmod_irq_info
omap44xx_uart3_irqs
[]
=
{
{
.
irq
=
74
+
OMAP44XX_IRQ_GIC_START
},
};
static
struct
omap_hwmod_dma_info
omap44xx_uart3_sdma_reqs
[]
=
{
{
.
name
=
"tx"
,
.
dma_req
=
52
+
OMAP44XX_DMA_REQ_START
},
{
.
name
=
"rx"
,
.
dma_req
=
53
+
OMAP44XX_DMA_REQ_START
},
};
static
struct
omap_hwmod_addr_space
omap44xx_uart3_addrs
[]
=
{
{
.
pa_start
=
0x48020000
,
.
pa_end
=
0x480200ff
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_abe -> wd_timer3 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_abe__wd_timer3
=
{
.
master
=
&
omap44xx_l4_abe_hwmod
,
...
...
@@ -551,6 +694,59 @@ static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
},
};
/* l4_per -> uart3 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_per__uart3
=
{
.
master
=
&
omap44xx_l4_per_hwmod
,
.
slave
=
&
omap44xx_uart3_hwmod
,
.
clk
=
"l4_div_ck"
,
.
addr
=
omap44xx_uart3_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap44xx_uart3_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* uart3 slave ports */
static
struct
omap_hwmod_ocp_if
*
omap44xx_uart3_slaves
[]
=
{
&
omap44xx_l4_per__uart3
,
};
static
struct
omap_hwmod
omap44xx_uart3_hwmod
=
{
.
name
=
"uart3"
,
.
class
=
&
omap44xx_uart_hwmod_class
,
.
flags
=
(
HWMOD_INIT_NO_IDLE
|
HWMOD_INIT_NO_RESET
),
.
mpu_irqs
=
omap44xx_uart3_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap44xx_uart3_irqs
),
.
sdma_reqs
=
omap44xx_uart3_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
omap44xx_uart3_sdma_reqs
),
.
main_clk
=
"uart3_fck"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_reg
=
OMAP4430_CM_L4PER_UART3_CLKCTRL
,
},
},
.
slaves
=
omap44xx_uart3_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap44xx_uart3_slaves
),
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
/* uart4 */
static
struct
omap_hwmod
omap44xx_uart4_hwmod
;
static
struct
omap_hwmod_irq_info
omap44xx_uart4_irqs
[]
=
{
{
.
irq
=
70
+
OMAP44XX_IRQ_GIC_START
},
};
static
struct
omap_hwmod_dma_info
omap44xx_uart4_sdma_reqs
[]
=
{
{
.
name
=
"tx"
,
.
dma_req
=
54
+
OMAP44XX_DMA_REQ_START
},
{
.
name
=
"rx"
,
.
dma_req
=
55
+
OMAP44XX_DMA_REQ_START
},
};
static
struct
omap_hwmod_addr_space
omap44xx_uart4_addrs
[]
=
{
{
.
pa_start
=
0x4806e000
,
.
pa_end
=
0x4806e0ff
,
.
flags
=
ADDR_TYPE_RT
},
};
static
struct
omap_hwmod_ocp_if
omap44xx_l4_abe__wd_timer3_dma
=
{
.
master
=
&
omap44xx_l4_abe_hwmod
,
.
slave
=
&
omap44xx_wd_timer3_hwmod
,
...
...
@@ -582,6 +778,39 @@ static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
/* l4_per -> uart4 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_per__uart4
=
{
.
master
=
&
omap44xx_l4_per_hwmod
,
.
slave
=
&
omap44xx_uart4_hwmod
,
.
clk
=
"l4_div_ck"
,
.
addr
=
omap44xx_uart4_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap44xx_uart4_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* uart4 slave ports */
static
struct
omap_hwmod_ocp_if
*
omap44xx_uart4_slaves
[]
=
{
&
omap44xx_l4_per__uart4
,
};
static
struct
omap_hwmod
omap44xx_uart4_hwmod
=
{
.
name
=
"uart4"
,
.
class
=
&
omap44xx_uart_hwmod_class
,
.
mpu_irqs
=
omap44xx_uart4_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap44xx_uart4_irqs
),
.
sdma_reqs
=
omap44xx_uart4_sdma_reqs
,
.
sdma_reqs_cnt
=
ARRAY_SIZE
(
omap44xx_uart4_sdma_reqs
),
.
main_clk
=
"uart4_fck"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_reg
=
OMAP4430_CM_L4PER_UART4_CLKCTRL
,
},
},
.
slaves
=
omap44xx_uart4_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap44xx_uart4_slaves
),
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
static
__initdata
struct
omap_hwmod
*
omap44xx_hwmods
[]
=
{
/* dmm class */
&
omap44xx_dmm_hwmod
,
...
...
@@ -605,6 +834,12 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
/* wd_timer class */
&
omap44xx_wd_timer2_hwmod
,
&
omap44xx_wd_timer3_hwmod
,
/* uart class */
&
omap44xx_uart1_hwmod
,
&
omap44xx_uart2_hwmod
,
&
omap44xx_uart3_hwmod
,
&
omap44xx_uart4_hwmod
,
NULL
,
};
...
...
arch/arm/mach-omap2/pm34xx.c
View file @
69758ab7
...
...
@@ -388,6 +388,7 @@ void omap_sram_idle(void)
/* PER */
if
(
per_next_state
<
PWRDM_POWER_ON
)
{
omap_uart_prepare_idle
(
2
);
omap_uart_prepare_idle
(
3
);
omap2_gpio_prepare_for_idle
(
per_next_state
);
if
(
per_next_state
==
PWRDM_POWER_OFF
)
omap3_per_save_context
();
...
...
@@ -459,6 +460,7 @@ void omap_sram_idle(void)
if
(
per_prev_state
==
PWRDM_POWER_OFF
)
omap3_per_restore_context
();
omap_uart_resume_idle
(
2
);
omap_uart_resume_idle
(
3
);
}
/* Disable IO-PAD and IO-CHAIN wakeup */
...
...
@@ -676,6 +678,14 @@ static void __init omap3_d2d_idle(void)
static
void
__init
prcm_setup_regs
(
void
)
{
u32
omap3630_auto_uart4_mask
=
cpu_is_omap3630
()
?
OMAP3630_AUTO_UART4_MASK
:
0
;
u32
omap3630_en_uart4_mask
=
cpu_is_omap3630
()
?
OMAP3630_EN_UART4_MASK
:
0
;
u32
omap3630_grpsel_uart4_mask
=
cpu_is_omap3630
()
?
OMAP3630_GRPSEL_UART4_MASK
:
0
;
/* XXX Reset all wkdeps. This should be done when initializing
* powerdomains */
prm_write_mod_reg
(
0
,
OMAP3430_IVA2_MOD
,
PM_WKDEP
);
...
...
@@ -762,6 +772,7 @@ static void __init prcm_setup_regs(void)
CM_AUTOIDLE
);
cm_write_mod_reg
(
omap3630_auto_uart4_mask
|
OMAP3430_AUTO_GPIO6_MASK
|
OMAP3430_AUTO_GPIO5_MASK
|
OMAP3430_AUTO_GPIO4_MASK
|
...
...
@@ -838,14 +849,16 @@ static void __init prcm_setup_regs(void)
OMAP3430_DSS_MOD
,
PM_WKEN
);
/* Enable wakeups in PER */
prm_write_mod_reg
(
OMAP3430_EN_GPIO2_MASK
|
OMAP3430_EN_GPIO3_MASK
|
prm_write_mod_reg
(
omap3630_en_uart4_mask
|
OMAP3430_EN_GPIO2_MASK
|
OMAP3430_EN_GPIO3_MASK
|
OMAP3430_EN_GPIO4_MASK
|
OMAP3430_EN_GPIO5_MASK
|
OMAP3430_EN_GPIO6_MASK
|
OMAP3430_EN_UART3_MASK
|
OMAP3430_EN_MCBSP2_MASK
|
OMAP3430_EN_MCBSP3_MASK
|
OMAP3430_EN_MCBSP4_MASK
,
OMAP3430_PER_MOD
,
PM_WKEN
);
/* and allow them to wake up MPU */
prm_write_mod_reg
(
OMAP3430_GRPSEL_GPIO2_MASK
|
prm_write_mod_reg
(
omap3630_grpsel_uart4_mask
|
OMAP3430_GRPSEL_GPIO2_MASK
|
OMAP3430_GRPSEL_GPIO3_MASK
|
OMAP3430_GRPSEL_GPIO4_MASK
|
OMAP3430_GRPSEL_GPIO5_MASK
|
...
...
arch/arm/mach-omap2/prcm-common.h
View file @
69758ab7
...
...
@@ -382,6 +382,9 @@
#define OMAP3430_EN_MPU_SHIFT 1
/* CM_FCLKEN_PER, CM_ICLKEN_PER, PM_WKEN_PER shared bits */
#define OMAP3630_EN_UART4_MASK (1 << 18)
#define OMAP3630_EN_UART4_SHIFT 18
#define OMAP3430_EN_GPIO6_MASK (1 << 17)
#define OMAP3430_EN_GPIO6_SHIFT 17
#define OMAP3430_EN_GPIO5_MASK (1 << 16)
...
...
@@ -422,6 +425,8 @@
#define OMAP3430_EN_MCBSP2_SHIFT 0
/* CM_IDLEST_PER, PM_WKST_PER shared bits */
#define OMAP3630_ST_UART4_SHIFT 18
#define OMAP3630_ST_UART4_MASK (1 << 18)
#define OMAP3430_ST_GPIO6_SHIFT 17
#define OMAP3430_ST_GPIO6_MASK (1 << 17)
#define OMAP3430_ST_GPIO5_SHIFT 16
...
...
arch/arm/mach-omap2/prm-regbits-34xx.h
View file @
69758ab7
...
...
@@ -122,6 +122,7 @@
#define OMAP3430_MEMRETSTATE_MASK (1 << 8)
/* PM_MPUGRPSEL_PER, PM_IVA2GRPSEL_PER shared bits */
#define OMAP3630_GRPSEL_UART4_MASK (1 << 18)
#define OMAP3430_GRPSEL_GPIO6_MASK (1 << 17)
#define OMAP3430_GRPSEL_GPIO5_MASK (1 << 16)
#define OMAP3430_GRPSEL_GPIO4_MASK (1 << 15)
...
...
arch/arm/mach-omap2/serial.c
View file @
69758ab7
This diff is collapsed.
Click to expand it.
arch/arm/plat-omap/common.c
View file @
69758ab7
...
...
@@ -257,7 +257,6 @@ static void __init __omap2_set_globals(struct omap_globals *omap2_globals)
omap2_set_globals_sdrc
(
omap2_globals
);
omap2_set_globals_control
(
omap2_globals
);
omap2_set_globals_prcm
(
omap2_globals
);
omap2_set_globals_uart
(
omap2_globals
);
}
#endif
...
...
@@ -272,9 +271,6 @@ static struct omap_globals omap242x_globals = {
.
ctrl
=
OMAP2420_CTRL_BASE
,
.
prm
=
OMAP2420_PRM_BASE
,
.
cm
=
OMAP2420_CM_BASE
,
.
uart1_phys
=
OMAP2_UART1_BASE
,
.
uart2_phys
=
OMAP2_UART2_BASE
,
.
uart3_phys
=
OMAP2_UART3_BASE
,
};
void
__init
omap2_set_globals_242x
(
void
)
...
...
@@ -293,9 +289,6 @@ static struct omap_globals omap243x_globals = {
.
ctrl
=
OMAP243X_CTRL_BASE
,
.
prm
=
OMAP2430_PRM_BASE
,
.
cm
=
OMAP2430_CM_BASE
,
.
uart1_phys
=
OMAP2_UART1_BASE
,
.
uart2_phys
=
OMAP2_UART2_BASE
,
.
uart3_phys
=
OMAP2_UART3_BASE
,
};
void
__init
omap2_set_globals_243x
(
void
)
...
...
@@ -314,10 +307,6 @@ static struct omap_globals omap3_globals = {
.
ctrl
=
OMAP343X_CTRL_BASE
,
.
prm
=
OMAP3430_PRM_BASE
,
.
cm
=
OMAP3430_CM_BASE
,
.
uart1_phys
=
OMAP3_UART1_BASE
,
.
uart2_phys
=
OMAP3_UART2_BASE
,
.
uart3_phys
=
OMAP3_UART3_BASE
,
.
uart4_phys
=
OMAP3_UART4_BASE
,
/* Only on 3630 */
};
void
__init
omap2_set_globals_3xxx
(
void
)
...
...
@@ -341,10 +330,6 @@ static struct omap_globals omap4_globals = {
.
prm
=
OMAP4430_PRM_BASE
,
.
cm
=
OMAP4430_CM_BASE
,
.
cm2
=
OMAP4430_CM2_BASE
,
.
uart1_phys
=
OMAP4_UART1_BASE
,
.
uart2_phys
=
OMAP4_UART2_BASE
,
.
uart3_phys
=
OMAP4_UART3_BASE
,
.
uart4_phys
=
OMAP4_UART4_BASE
,
};
void
__init
omap2_set_globals_443x
(
void
)
...
...
@@ -352,7 +337,6 @@ void __init omap2_set_globals_443x(void)
omap2_set_globals_tap
(
&
omap4_globals
);
omap2_set_globals_control
(
&
omap4_globals
);
omap2_set_globals_prcm
(
&
omap4_globals
);
omap2_set_globals_uart
(
&
omap4_globals
);
}
#endif
arch/arm/plat-omap/include/plat/common.h
View file @
69758ab7
...
...
@@ -67,7 +67,6 @@ void omap2_set_globals_tap(struct omap_globals *);
void
omap2_set_globals_sdrc
(
struct
omap_globals
*
);
void
omap2_set_globals_control
(
struct
omap_globals
*
);
void
omap2_set_globals_prcm
(
struct
omap_globals
*
);
void
omap2_set_globals_uart
(
struct
omap_globals
*
);
void
omap3_map_io
(
void
);
...
...
arch/arm/plat-omap/include/plat/dma.h
View file @
69758ab7
...
...
@@ -319,6 +319,8 @@
#define OMAP34XX_DMA_USIM_TX 79
/* S_DMA_78 */
#define OMAP34XX_DMA_USIM_RX 80
/* S_DMA_79 */
#define OMAP36XX_DMA_UART4_TX 81
/* S_DMA_80 */
#define OMAP36XX_DMA_UART4_RX 82
/* S_DMA_81 */
/*----------------------------------------------------------------------------*/
#define OMAP1_DMA_TOUT_IRQ (1 << 0)
...
...
arch/arm/plat-omap/include/plat/irqs.h
View file @
69758ab7
...
...
@@ -345,6 +345,8 @@
#define INT_34XX_MMC3_IRQ 94
#define INT_34XX_GPT12_IRQ 95
#define INT_36XX_UART4_IRQ 80
#define INT_35XX_HECC0_IRQ 24
#define INT_35XX_HECC1_IRQ 28
#define INT_35XX_EMAC_C0_RXTHRESH_IRQ 67
...
...
arch/arm/plat-omap/include/plat/omap-serial.h
0 → 100644
View file @
69758ab7
/*
* Driver for OMAP-UART controller.
* Based on drivers/serial/8250.c
*
* Copyright (C) 2010 Texas Instruments.
*
* Authors:
* Govindraj R <govindraj.raja@ti.com>
* Thara Gopinath <thara@ti.com>
*
* 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.
*/
#ifndef __OMAP_SERIAL_H__
#define __OMAP_SERIAL_H__
#include <linux/serial_core.h>
#include <linux/platform_device.h>
#include <plat/control.h>
#include <plat/mux.h>
#define DRIVER_NAME "omap-hsuart"
/*
* Use tty device name as ttyO, [O -> OMAP]
* in bootargs we specify as console=ttyO0 if uart1
* is used as console uart.
*/
#define OMAP_SERIAL_NAME "ttyO"
#define OMAP_MDR1_DISABLE 0x07
#define OMAP_MDR1_MODE13X 0x03
#define OMAP_MDR1_MODE16X 0x00
#define OMAP_MODE13X_SPEED 230400
/*
* LCR = 0XBF: Switch to Configuration Mode B.
* In configuration mode b allow access
* to EFR,DLL,DLH.
* Reference OMAP TRM Chapter 17
* Section: 1.4.3 Mode Selection
*/
#define OMAP_UART_LCR_CONF_MDB 0XBF
/* WER = 0x7F
* Enable module level wakeup in WER reg
*/
#define OMAP_UART_WER_MOD_WKUP 0X7F
/* Enable XON/XOFF flow control on output */
#define OMAP_UART_SW_TX 0x04
/* Enable XON/XOFF flow control on input */
#define OMAP_UART_SW_RX 0x04
#define OMAP_UART_SYSC_RESET 0X07
#define OMAP_UART_TCR_TRIG 0X0F
#define OMAP_UART_SW_CLR 0XF0
#define OMAP_UART_FIFO_CLR 0X06
#define OMAP_UART_DMA_CH_FREE -1
#define RX_TIMEOUT (3 * HZ)
#define OMAP_MAX_HSUART_PORTS 4
#define MSR_SAVE_FLAGS UART_MSR_ANY_DELTA
struct
omap_uart_port_info
{
bool
dma_enabled
;
/* To specify DMA Mode */
unsigned
int
uartclk
;
/* UART clock rate */
void
__iomem
*
membase
;
/* ioremap cookie or NULL */
resource_size_t
mapbase
;
/* resource base */
unsigned
long
irqflags
;
/* request_irq flags */
upf_t
flags
;
/* UPF_* flags */
};
struct
uart_omap_dma
{
u8
uart_dma_tx
;
u8
uart_dma_rx
;
int
rx_dma_channel
;
int
tx_dma_channel
;
dma_addr_t
rx_buf_dma_phys
;
dma_addr_t
tx_buf_dma_phys
;
unsigned
int
uart_base
;
/*
* Buffer for rx dma.It is not required for tx because the buffer
* comes from port structure.
*/
unsigned
char
*
rx_buf
;
unsigned
int
prev_rx_dma_pos
;
int
tx_buf_size
;
int
tx_dma_used
;
int
rx_dma_used
;
spinlock_t
tx_lock
;
spinlock_t
rx_lock
;
/* timer to poll activity on rx dma */
struct
timer_list
rx_timer
;
int
rx_buf_size
;
int
rx_timeout
;
};
struct
uart_omap_port
{
struct
uart_port
port
;
struct
uart_omap_dma
uart_dma
;
struct
platform_device
*
pdev
;
unsigned
char
ier
;
unsigned
char
lcr
;
unsigned
char
mcr
;
unsigned
char
fcr
;
unsigned
char
efr
;
int
use_dma
;
/*
* Some bits in registers are cleared on a read, so they must
* be saved whenever the register is read but the bits will not
* be immediately processed.
*/
unsigned
int
lsr_break_flag
;
unsigned
char
msr_saved_flags
;
char
name
[
20
];
unsigned
long
port_activity
;
};
#endif
/* __OMAP_SERIAL_H__ */
drivers/serial/Kconfig
View file @
69758ab7
...
...
@@ -1416,6 +1416,33 @@ config SERIAL_OF_PLATFORM
Currently, only 8250 compatible ports are supported, but
others can easily be added.
config SERIAL_OMAP
tristate "OMAP serial port support"
depends on ARCH_OMAP2 || ARCH_OMAP3 || ARCH_OMAP4
select SERIAL_CORE
help
If you have a machine based on an Texas Instruments OMAP CPU you
can enable its onboard serial ports by enabling this option.
By enabling this option you take advantage of dma feature available
with the omap-serial driver. DMA support can be enabled from platform
data.
config SERIAL_OMAP_CONSOLE
bool "Console on OMAP serial port"
depends on SERIAL_OMAP
select SERIAL_CORE_CONSOLE
help
Select this option if you would like to use omap serial port as
console.
Even if you say Y here, the currently visible virtual console
(/dev/tty0) will still be used as the system console by default, but
you can alter that using a kernel command line option such as
"console=ttyOx". (Try "man bootparam" or see the documentation of
your boot loader about how to pass options to the kernel at
boot time.)
config SERIAL_OF_PLATFORM_NWPSERIAL
tristate "NWP serial port driver"
depends on PPC_OF && PPC_DCR
...
...
drivers/serial/Makefile
View file @
69758ab7
...
...
@@ -88,3 +88,4 @@ obj-$(CONFIG_SERIAL_ALTERA_JTAGUART) += altera_jtaguart.o
obj-$(CONFIG_SERIAL_ALTERA_UART)
+=
altera_uart.o
obj-$(CONFIG_SERIAL_MRST_MAX3110)
+=
mrst_max3110.o
obj-$(CONFIG_SERIAL_MFD_HSU)
+=
mfd.o
obj-$(CONFIG_SERIAL_OMAP)
+=
omap-serial.o
drivers/serial/omap-serial.c
0 → 100644
View file @
69758ab7
This diff is collapsed.
Click to expand it.
include/linux/serial_core.h
View file @
69758ab7
...
...
@@ -196,6 +196,9 @@
/* High Speed UART for Medfield */
#define PORT_MFD 95
/* TI OMAP-UART */
#define PORT_OMAP 96
#ifdef __KERNEL__
#include <linux/compiler.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