Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
2dbbda08
U
U-Boot.Mirror
项目概览
OS
/
U-Boot.Mirror
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
U-Boot.Mirror
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2dbbda08
编写于
11月 04, 2014
作者:
T
Tom Rini
浏览文件
操作
浏览文件
下载
差异文件
Merge
git://git.denx.de/u-boot-sh
上级
26f195c7
f7ca1f76
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
64 addition
and
62 deletion
+64
-62
drivers/net/sh_eth.c
drivers/net/sh_eth.c
+53
-49
drivers/net/sh_eth.h
drivers/net/sh_eth.h
+5
-9
drivers/serial/serial_sh.h
drivers/serial/serial_sh.h
+6
-4
未找到文件。
drivers/net/sh_eth.c
浏览文件 @
2dbbda08
...
@@ -2,9 +2,9 @@
...
@@ -2,9 +2,9 @@
* sh_eth.c - Driver for Renesas ethernet controler.
* sh_eth.c - Driver for Renesas ethernet controler.
*
*
* Copyright (C) 2008, 2011 Renesas Solutions Corp.
* Copyright (C) 2008, 2011 Renesas Solutions Corp.
* Copyright (c) 2008, 2011 Nobuhiro Iwamatsu
* Copyright (c) 2008, 2011
, 2014 2014
Nobuhiro Iwamatsu
* Copyright (c) 2007 Carlos Munoz <carlos@kenati.com>
* Copyright (c) 2007 Carlos Munoz <carlos@kenati.com>
* Copyright (C) 2013
Renesas Electronics Corporation
* Copyright (C) 2013
, 2014
Renesas Electronics Corporation
*
*
* SPDX-License-Identifier: GPL-2.0+
* SPDX-License-Identifier: GPL-2.0+
*/
*/
...
@@ -83,6 +83,8 @@ int sh_eth_send(struct eth_device *dev, void *packet, int len)
...
@@ -83,6 +83,8 @@ int sh_eth_send(struct eth_device *dev, void *packet, int len)
else
else
port_info
->
tx_desc_cur
->
td0
=
TD_TACT
|
TD_TFP
;
port_info
->
tx_desc_cur
->
td0
=
TD_TACT
|
TD_TFP
;
flush_cache_wback
(
port_info
->
tx_desc_cur
,
sizeof
(
struct
tx_desc_s
));
/* Restart the transmitter if disabled */
/* Restart the transmitter if disabled */
if
(
!
(
sh_eth_read
(
eth
,
EDTRR
)
&
EDTRR_TRNS
))
if
(
!
(
sh_eth_read
(
eth
,
EDTRR
)
&
EDTRR_TRNS
))
sh_eth_write
(
eth
,
EDTRR_TRNS
,
EDTRR
);
sh_eth_write
(
eth
,
EDTRR_TRNS
,
EDTRR
);
...
@@ -133,6 +135,10 @@ int sh_eth_recv(struct eth_device *dev)
...
@@ -133,6 +135,10 @@ int sh_eth_recv(struct eth_device *dev)
port_info
->
rx_desc_cur
->
rd0
=
RD_RACT
|
RD_RDLE
;
port_info
->
rx_desc_cur
->
rd0
=
RD_RACT
|
RD_RDLE
;
else
else
port_info
->
rx_desc_cur
->
rd0
=
RD_RACT
;
port_info
->
rx_desc_cur
->
rd0
=
RD_RACT
;
flush_cache_wback
(
port_info
->
rx_desc_cur
,
sizeof
(
struct
rx_desc_s
));
/* Point to the next descriptor */
/* Point to the next descriptor */
port_info
->
rx_desc_cur
++
;
port_info
->
rx_desc_cur
++
;
if
(
port_info
->
rx_desc_cur
>=
if
(
port_info
->
rx_desc_cur
>=
...
@@ -181,27 +187,27 @@ static int sh_eth_reset(struct sh_eth_dev *eth)
...
@@ -181,27 +187,27 @@ static int sh_eth_reset(struct sh_eth_dev *eth)
static
int
sh_eth_tx_desc_init
(
struct
sh_eth_dev
*
eth
)
static
int
sh_eth_tx_desc_init
(
struct
sh_eth_dev
*
eth
)
{
{
int
port
=
eth
->
port
,
i
,
ret
=
0
;
int
port
=
eth
->
port
,
i
,
ret
=
0
;
u32
tmp_addr
;
u32
alloc_desc_size
=
NUM_TX_DESC
*
sizeof
(
struct
tx_desc_s
)
;
struct
sh_eth_info
*
port_info
=
&
eth
->
port_info
[
port
];
struct
sh_eth_info
*
port_info
=
&
eth
->
port_info
[
port
];
struct
tx_desc_s
*
cur_tx_desc
;
struct
tx_desc_s
*
cur_tx_desc
;
/*
/*
* Allocate tx descriptors. They must be TX_DESC_SIZE bytes aligned
* Allocate rx descriptors. They must be aligned to size of struct
* tx_desc_s.
*/
*/
port_info
->
tx_desc_malloc
=
malloc
(
NUM_TX_DESC
*
port_info
->
tx_desc_alloc
=
sizeof
(
struct
tx_desc_s
)
+
memalign
(
sizeof
(
struct
tx_desc_s
),
alloc_desc_size
);
TX_DESC_SIZE
-
1
);
if
(
!
port_info
->
tx_desc_alloc
)
{
if
(
!
port_info
->
tx_desc_malloc
)
{
printf
(
SHETHER_NAME
": memalign failed
\n
"
);
printf
(
SHETHER_NAME
": malloc failed
\n
"
);
ret
=
-
ENOMEM
;
ret
=
-
ENOMEM
;
goto
err
;
goto
err
;
}
}
tmp_addr
=
(
u32
)
(((
int
)
port_info
->
tx_desc_malloc
+
TX_DESC_SIZE
-
1
)
&
flush_cache_wback
((
u32
)
port_info
->
tx_desc_alloc
,
alloc_desc_size
);
~
(
TX_DESC_SIZE
-
1
));
flush_cache_wback
(
tmp_addr
,
NUM_TX_DESC
*
sizeof
(
struct
tx_desc_s
));
/* Make sure we use a P2 address (non-cacheable) */
/* Make sure we use a P2 address (non-cacheable) */
port_info
->
tx_desc_base
=
(
struct
tx_desc_s
*
)
ADDR_TO_P2
(
tmp_addr
);
port_info
->
tx_desc_base
=
(
struct
tx_desc_s
*
)
ADDR_TO_P2
((
u32
)
port_info
->
tx_desc_alloc
);
port_info
->
tx_desc_cur
=
port_info
->
tx_desc_base
;
port_info
->
tx_desc_cur
=
port_info
->
tx_desc_base
;
/* Initialize all descriptors */
/* Initialize all descriptors */
...
@@ -232,47 +238,44 @@ err:
...
@@ -232,47 +238,44 @@ err:
static
int
sh_eth_rx_desc_init
(
struct
sh_eth_dev
*
eth
)
static
int
sh_eth_rx_desc_init
(
struct
sh_eth_dev
*
eth
)
{
{
int
port
=
eth
->
port
,
i
,
ret
=
0
;
int
port
=
eth
->
port
,
i
,
ret
=
0
;
u32
alloc_desc_size
=
NUM_RX_DESC
*
sizeof
(
struct
rx_desc_s
);
struct
sh_eth_info
*
port_info
=
&
eth
->
port_info
[
port
];
struct
sh_eth_info
*
port_info
=
&
eth
->
port_info
[
port
];
struct
rx_desc_s
*
cur_rx_desc
;
struct
rx_desc_s
*
cur_rx_desc
;
u32
tmp_addr
;
u8
*
rx_buf
;
u8
*
rx_buf
;
/*
/*
* Allocate rx descriptors. They must be RX_DESC_SIZE bytes aligned
* Allocate rx descriptors. They must be aligned to size of struct
* rx_desc_s.
*/
*/
port_info
->
rx_desc_malloc
=
malloc
(
NUM_RX_DESC
*
port_info
->
rx_desc_alloc
=
sizeof
(
struct
rx_desc_s
)
+
memalign
(
sizeof
(
struct
rx_desc_s
),
alloc_desc_size
);
RX_DESC_SIZE
-
1
);
if
(
!
port_info
->
rx_desc_alloc
)
{
if
(
!
port_info
->
rx_desc_malloc
)
{
printf
(
SHETHER_NAME
": memalign failed
\n
"
);
printf
(
SHETHER_NAME
": malloc failed
\n
"
);
ret
=
-
ENOMEM
;
ret
=
-
ENOMEM
;
goto
err
;
goto
err
;
}
}
tmp_addr
=
(
u32
)
(((
int
)
port_info
->
rx_desc_malloc
+
RX_DESC_SIZE
-
1
)
&
flush_cache_wback
(
port_info
->
rx_desc_alloc
,
alloc_desc_size
);
~
(
RX_DESC_SIZE
-
1
));
flush_cache_wback
(
tmp_addr
,
NUM_RX_DESC
*
sizeof
(
struct
rx_desc_s
));
/* Make sure we use a P2 address (non-cacheable) */
/* Make sure we use a P2 address (non-cacheable) */
port_info
->
rx_desc_base
=
(
struct
rx_desc_s
*
)
ADDR_TO_P2
(
tmp_addr
);
port_info
->
rx_desc_base
=
(
struct
rx_desc_s
*
)
ADDR_TO_P2
((
u32
)
port_info
->
rx_desc_alloc
);
port_info
->
rx_desc_cur
=
port_info
->
rx_desc_base
;
port_info
->
rx_desc_cur
=
port_info
->
rx_desc_base
;
/*
/*
* Allocate rx data buffers. They must be
32 bytes aligned and in
* Allocate rx data buffers. They must be
RX_BUF_ALIGNE_SIZE bytes
*
P2 area
*
aligned and in P2 area.
*/
*/
port_info
->
rx_buf_
malloc
=
malloc
(
port_info
->
rx_buf_
alloc
=
NUM_RX_DESC
*
MAX_BUF_SIZE
+
RX_BUF_ALIGNE_SIZE
-
1
);
memalign
(
RX_BUF_ALIGNE_SIZE
,
NUM_RX_DESC
*
MAX_BUF_SIZE
);
if
(
!
port_info
->
rx_buf_
m
alloc
)
{
if
(
!
port_info
->
rx_buf_alloc
)
{
printf
(
SHETHER_NAME
":
m
alloc failed
\n
"
);
printf
(
SHETHER_NAME
": alloc failed
\n
"
);
ret
=
-
ENOMEM
;
ret
=
-
ENOMEM
;
goto
err_buf_
m
alloc
;
goto
err_buf_alloc
;
}
}
tmp_addr
=
(
u32
)(((
int
)
port_info
->
rx_buf_malloc
port_info
->
rx_buf_base
=
(
u8
*
)
ADDR_TO_P2
((
u32
)
port_info
->
rx_buf_alloc
);
+
(
RX_BUF_ALIGNE_SIZE
-
1
))
&
~
(
RX_BUF_ALIGNE_SIZE
-
1
));
port_info
->
rx_buf_base
=
(
u8
*
)
ADDR_TO_P2
(
tmp_addr
);
/* Initialize all descriptors */
/* Initialize all descriptors */
for
(
cur_rx_desc
=
port_info
->
rx_desc_base
,
for
(
cur_rx_desc
=
port_info
->
rx_desc_base
,
...
@@ -297,9 +300,9 @@ static int sh_eth_rx_desc_init(struct sh_eth_dev *eth)
...
@@ -297,9 +300,9 @@ static int sh_eth_rx_desc_init(struct sh_eth_dev *eth)
return
ret
;
return
ret
;
err_buf_
m
alloc:
err_buf_alloc:
free
(
port_info
->
rx_desc_
m
alloc
);
free
(
port_info
->
rx_desc_alloc
);
port_info
->
rx_desc_
m
alloc
=
NULL
;
port_info
->
rx_desc_alloc
=
NULL
;
err:
err:
return
ret
;
return
ret
;
...
@@ -310,9 +313,9 @@ static void sh_eth_tx_desc_free(struct sh_eth_dev *eth)
...
@@ -310,9 +313,9 @@ static void sh_eth_tx_desc_free(struct sh_eth_dev *eth)
int
port
=
eth
->
port
;
int
port
=
eth
->
port
;
struct
sh_eth_info
*
port_info
=
&
eth
->
port_info
[
port
];
struct
sh_eth_info
*
port_info
=
&
eth
->
port_info
[
port
];
if
(
port_info
->
tx_desc_
m
alloc
)
{
if
(
port_info
->
tx_desc_alloc
)
{
free
(
port_info
->
tx_desc_
m
alloc
);
free
(
port_info
->
tx_desc_alloc
);
port_info
->
tx_desc_
m
alloc
=
NULL
;
port_info
->
tx_desc_alloc
=
NULL
;
}
}
}
}
...
@@ -321,14 +324,14 @@ static void sh_eth_rx_desc_free(struct sh_eth_dev *eth)
...
@@ -321,14 +324,14 @@ static void sh_eth_rx_desc_free(struct sh_eth_dev *eth)
int
port
=
eth
->
port
;
int
port
=
eth
->
port
;
struct
sh_eth_info
*
port_info
=
&
eth
->
port_info
[
port
];
struct
sh_eth_info
*
port_info
=
&
eth
->
port_info
[
port
];
if
(
port_info
->
rx_desc_
m
alloc
)
{
if
(
port_info
->
rx_desc_alloc
)
{
free
(
port_info
->
rx_desc_
m
alloc
);
free
(
port_info
->
rx_desc_alloc
);
port_info
->
rx_desc_
m
alloc
=
NULL
;
port_info
->
rx_desc_alloc
=
NULL
;
}
}
if
(
port_info
->
rx_buf_
m
alloc
)
{
if
(
port_info
->
rx_buf_alloc
)
{
free
(
port_info
->
rx_buf_
m
alloc
);
free
(
port_info
->
rx_buf_alloc
);
port_info
->
rx_buf_
m
alloc
=
NULL
;
port_info
->
rx_buf_alloc
=
NULL
;
}
}
}
}
...
@@ -414,7 +417,7 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)
...
@@ -414,7 +417,7 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)
#if defined(CONFIG_CPU_SH7734) || defined(CONFIG_R8A7740)
#if defined(CONFIG_CPU_SH7734) || defined(CONFIG_R8A7740)
sh_eth_write
(
eth
,
CONFIG_SH_ETHER_SH7734_MII
,
RMII_MII
);
sh_eth_write
(
eth
,
CONFIG_SH_ETHER_SH7734_MII
,
RMII_MII
);
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
defined(CONFIG_R8A7794)
defined(CONFIG_R8A779
3) || defined(CONFIG_R8A779
4)
sh_eth_write
(
eth
,
sh_eth_read
(
eth
,
RMIIMR
)
|
0x1
,
RMIIMR
);
sh_eth_write
(
eth
,
sh_eth_read
(
eth
,
RMIIMR
)
|
0x1
,
RMIIMR
);
#endif
#endif
/* Configure phy */
/* Configure phy */
...
@@ -440,7 +443,8 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)
...
@@ -440,7 +443,8 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)
#elif defined(CONFIG_CPU_SH7757) || defined(CONFIG_CPU_SH7752)
#elif defined(CONFIG_CPU_SH7757) || defined(CONFIG_CPU_SH7752)
sh_eth_write
(
eth
,
1
,
RTRATE
);
sh_eth_write
(
eth
,
1
,
RTRATE
);
#elif defined(CONFIG_CPU_SH7724) || defined(CONFIG_R8A7790) || \
#elif defined(CONFIG_CPU_SH7724) || defined(CONFIG_R8A7790) || \
defined(CONFIG_R8A7791) || defined(CONFIG_R8A7794)
defined(CONFIG_R8A7791) || defined(CONFIG_R8A7793) || \
defined(CONFIG_R8A7794)
val
=
ECMR_RTM
;
val
=
ECMR_RTM
;
#endif
#endif
}
else
if
(
phy
->
speed
==
10
)
{
}
else
if
(
phy
->
speed
==
10
)
{
...
...
drivers/net/sh_eth.h
浏览文件 @
2dbbda08
...
@@ -51,8 +51,6 @@
...
@@ -51,8 +51,6 @@
/* The size of the tx descriptor is determined by how much padding is used.
/* The size of the tx descriptor is determined by how much padding is used.
4, 20, or 52 bytes of padding can be used */
4, 20, or 52 bytes of padding can be used */
#define TX_DESC_PADDING (CONFIG_SH_ETHER_ALIGNE_SIZE - 12)
#define TX_DESC_PADDING (CONFIG_SH_ETHER_ALIGNE_SIZE - 12)
/* same as CONFIG_SH_ETHER_ALIGNE_SIZE */
#define TX_DESC_SIZE (12 + TX_DESC_PADDING)
/* Tx descriptor. We always use 3 bytes of padding */
/* Tx descriptor. We always use 3 bytes of padding */
struct
tx_desc_s
{
struct
tx_desc_s
{
...
@@ -68,8 +66,6 @@ struct tx_desc_s {
...
@@ -68,8 +66,6 @@ struct tx_desc_s {
/* The size of the rx descriptor is determined by how much padding is used.
/* The size of the rx descriptor is determined by how much padding is used.
4, 20, or 52 bytes of padding can be used */
4, 20, or 52 bytes of padding can be used */
#define RX_DESC_PADDING (CONFIG_SH_ETHER_ALIGNE_SIZE - 12)
#define RX_DESC_PADDING (CONFIG_SH_ETHER_ALIGNE_SIZE - 12)
/* same as CONFIG_SH_ETHER_ALIGNE_SIZE */
#define RX_DESC_SIZE (12 + RX_DESC_PADDING)
/* aligned cache line size */
/* aligned cache line size */
#define RX_BUF_ALIGNE_SIZE (CONFIG_SH_ETHER_ALIGNE_SIZE > 32 ? 64 : 32)
#define RX_BUF_ALIGNE_SIZE (CONFIG_SH_ETHER_ALIGNE_SIZE > 32 ? 64 : 32)
...
@@ -82,13 +78,13 @@ struct rx_desc_s {
...
@@ -82,13 +78,13 @@ struct rx_desc_s {
};
};
struct
sh_eth_info
{
struct
sh_eth_info
{
struct
tx_desc_s
*
tx_desc_
m
alloc
;
struct
tx_desc_s
*
tx_desc_alloc
;
struct
tx_desc_s
*
tx_desc_base
;
struct
tx_desc_s
*
tx_desc_base
;
struct
tx_desc_s
*
tx_desc_cur
;
struct
tx_desc_s
*
tx_desc_cur
;
struct
rx_desc_s
*
rx_desc_
m
alloc
;
struct
rx_desc_s
*
rx_desc_alloc
;
struct
rx_desc_s
*
rx_desc_base
;
struct
rx_desc_s
*
rx_desc_base
;
struct
rx_desc_s
*
rx_desc_cur
;
struct
rx_desc_s
*
rx_desc_cur
;
u8
*
rx_buf_
m
alloc
;
u8
*
rx_buf_alloc
;
u8
*
rx_buf_base
;
u8
*
rx_buf_base
;
u8
mac_addr
[
6
];
u8
mac_addr
[
6
];
u8
phy_addr
;
u8
phy_addr
;
...
@@ -359,7 +355,7 @@ static const u16 sh_eth_offset_fast_sh4[SH_ETH_MAX_REGISTER_OFFSET] = {
...
@@ -359,7 +355,7 @@ static const u16 sh_eth_offset_fast_sh4[SH_ETH_MAX_REGISTER_OFFSET] = {
#define SH_ETH_TYPE_GETHER
#define SH_ETH_TYPE_GETHER
#define BASE_IO_ADDR 0xE9A00000
#define BASE_IO_ADDR 0xE9A00000
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
defined(CONFIG_R8A7794)
defined(CONFIG_R8A779
3) || defined(CONFIG_R8A779
4)
#define SH_ETH_TYPE_ETHER
#define SH_ETH_TYPE_ETHER
#define BASE_IO_ADDR 0xEE700200
#define BASE_IO_ADDR 0xEE700200
#elif defined(CONFIG_R7S72100)
#elif defined(CONFIG_R7S72100)
...
@@ -571,7 +567,7 @@ enum FELIC_MODE_BIT {
...
@@ -571,7 +567,7 @@ enum FELIC_MODE_BIT {
#ifdef CONFIG_CPU_SH7724
#ifdef CONFIG_CPU_SH7724
ECMR_RTM
=
0x00000010
,
ECMR_RTM
=
0x00000010
,
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
defined(CONFIG_R8A7794)
defined(CONFIG_R8A779
3) || defined(CONFIG_R8A779
4)
ECMR_RTM
=
0x00000004
,
ECMR_RTM
=
0x00000004
,
#endif
#endif
...
...
drivers/serial/serial_sh.h
浏览文件 @
2dbbda08
...
@@ -227,7 +227,7 @@ struct uart_port {
...
@@ -227,7 +227,7 @@ struct uart_port {
# define SCIF_ORER 0x0001
/* Overrun error bit */
# define SCIF_ORER 0x0001
/* Overrun error bit */
# define SCSCR_INIT(port) 0x38
/* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
# define SCSCR_INIT(port) 0x38
/* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
defined(CONFIG_R8A7794)
defined(CONFIG_R8A779
3) || defined(CONFIG_R8A779
4)
# define SCIF_ORER 0x0001
# define SCIF_ORER 0x0001
# define SCSCR_INIT(port) 0x32
/* TIE=0,RIE=0,TE=1,RE=1,REIE=0, */
# define SCSCR_INIT(port) 0x32
/* TIE=0,RIE=0,TE=1,RE=1,REIE=0, */
#else
#else
...
@@ -304,7 +304,8 @@ struct uart_port {
...
@@ -304,7 +304,8 @@ struct uart_port {
/* SH7763 SCIF2 support */
/* SH7763 SCIF2 support */
# define SCIF2_RFDC_MASK 0x001f
# define SCIF2_RFDC_MASK 0x001f
# define SCIF2_TXROOM_MAX 16
# define SCIF2_TXROOM_MAX 16
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791)
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
defined(CONFIG_R8A7793) || defined(CONFIG_R8A7794)
# define SCIF_ERRORS (SCIF_PER | SCIF_FER | SCIF_ER | SCIF_BRK)
# define SCIF_ERRORS (SCIF_PER | SCIF_FER | SCIF_ER | SCIF_BRK)
# define SCIF_RFDC_MASK 0x003f
# define SCIF_RFDC_MASK 0x003f
#else
#else
...
@@ -589,7 +590,7 @@ SCIF_FNS(SCSPTR, 0, 0, 0, 0)
...
@@ -589,7 +590,7 @@ SCIF_FNS(SCSPTR, 0, 0, 0, 0)
SCIF_FNS
(
SCSPTR
,
0
,
0
,
0x20
,
16
)
SCIF_FNS
(
SCSPTR
,
0
,
0
,
0x20
,
16
)
#endif
#endif
#if defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
#if defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
defined(CONFIG_R8A7794)
defined(CONFIG_R8A779
3) || defined(CONFIG_R8A779
4)
SCIF_FNS
(
DL
,
0
,
0
,
0x30
,
16
)
SCIF_FNS
(
DL
,
0
,
0
,
0x30
,
16
)
SCIF_FNS
(
CKS
,
0
,
0
,
0x34
,
16
)
SCIF_FNS
(
CKS
,
0
,
0
,
0x34
,
16
)
#endif
#endif
...
@@ -734,7 +735,8 @@ static inline int scbrr_calc(struct uart_port port, int bps, int clk)
...
@@ -734,7 +735,8 @@ static inline int scbrr_calc(struct uart_port port, int bps, int clk)
#define SCBRR_VALUE(bps, clk) scbrr_calc(sh_sci, bps, clk)
#define SCBRR_VALUE(bps, clk) scbrr_calc(sh_sci, bps, clk)
#elif defined(__H8300H__) || defined(__H8300S__)
#elif defined(__H8300H__) || defined(__H8300S__)
#define SCBRR_VALUE(bps, clk) (((clk*1000/32)/bps)-1)
#define SCBRR_VALUE(bps, clk) (((clk*1000/32)/bps)-1)
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791)
#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
defined(CONFIG_R8A7793) || defined(CONFIG_R8A7794)
#define DL_VALUE(bps, clk) (clk / bps / 16)
/* External Clock */
#define DL_VALUE(bps, clk) (clk / bps / 16)
/* External Clock */
#define SCBRR_VALUE(bps, clk) ((clk+16*bps)/(32*bps)-1)
/* Internal Clock */
#define SCBRR_VALUE(bps, clk) ((clk+16*bps)/(32*bps)-1)
/* Internal Clock */
#else
/* Generic SH */
#else
/* Generic SH */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录