[bsp/ls1cdev]添加自引导特性,添加配置选项
1、添加自引导特性,添加配置选项 2、修复cpuport.c的bug 3、修复ls1c_pin.c不能默认复用的bug
This commit is contained in:
parent
ce6a918316
commit
9a7caed323
|
@ -228,20 +228,6 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
|
|||
# RT-Thread online packages
|
||||
#
|
||||
|
||||
#
|
||||
# system packages
|
||||
#
|
||||
|
||||
#
|
||||
# RT-Thread GUI Engine
|
||||
#
|
||||
# CONFIG_PKG_USING_GUIENGINE is not set
|
||||
# CONFIG_PKG_USING_LVGL is not set
|
||||
# CONFIG_PKG_USING_LWEXT4 is not set
|
||||
# CONFIG_PKG_USING_PARTITION is not set
|
||||
# CONFIG_PKG_USING_SQLITE is not set
|
||||
# CONFIG_PKG_USING_RTI is not set
|
||||
|
||||
#
|
||||
# IoT - internet of things
|
||||
#
|
||||
|
@ -271,6 +257,7 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
|
|||
# CONFIG_PKG_USING_COAP is not set
|
||||
# CONFIG_PKG_USING_NOPOLL is not set
|
||||
# CONFIG_PKG_USING_NETUTILS is not set
|
||||
# CONFIG_PKG_USING_ONENET is not set
|
||||
|
||||
#
|
||||
# security packages
|
||||
|
@ -289,6 +276,7 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
|
|||
# multimedia packages
|
||||
#
|
||||
# CONFIG_PKG_USING_OPENMV is not set
|
||||
# CONFIG_PKG_USING_MUPDF is not set
|
||||
|
||||
#
|
||||
# tools packages
|
||||
|
@ -299,6 +287,26 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
|
|||
# CONFIG_PKG_USING_SYSTEMVIEW is not set
|
||||
# CONFIG_PKG_USING_IPERF is not set
|
||||
|
||||
#
|
||||
# system packages
|
||||
#
|
||||
|
||||
#
|
||||
# RT-Thread GUI Engine
|
||||
#
|
||||
# CONFIG_PKG_USING_GUIENGINE is not set
|
||||
# CONFIG_PKG_USING_LWEXT4 is not set
|
||||
# CONFIG_PKG_USING_PARTITION is not set
|
||||
# CONFIG_PKG_USING_SQLITE is not set
|
||||
# CONFIG_PKG_USING_RTI is not set
|
||||
# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
|
||||
|
||||
#
|
||||
# peripheral libraries and drivers
|
||||
#
|
||||
# CONFIG_PKG_USING_STM32F4_HAL is not set
|
||||
# CONFIG_PKG_USING_STM32F4_DRIVERS is not set
|
||||
|
||||
#
|
||||
# miscellaneous packages
|
||||
#
|
||||
|
@ -306,13 +314,18 @@ CONFIG_LWIP_NETIF_LOOPBACK=0
|
|||
# CONFIG_PKG_USING_MINILZO is not set
|
||||
# CONFIG_PKG_USING_QUICKLZ is not set
|
||||
# CONFIG_PKG_USING_MULTIBUTTON is not set
|
||||
# CONFIG_PKG_USING_SAMPLES is not set
|
||||
# CONFIG_PKG_USING_CANFESTIVAL is not set
|
||||
|
||||
#
|
||||
# sample package
|
||||
#
|
||||
# CONFIG_PKG_USING_SAMPLES is not set
|
||||
|
||||
#
|
||||
# example package: hello
|
||||
#
|
||||
# CONFIG_PKG_USING_HELLO is not set
|
||||
# CONFIG_RT_USING_SELF_BOOT is not set
|
||||
CONFIG_RT_USING_UART2=y
|
||||
CONFIG_RT_UART_RX_BUFFER_SIZE=64
|
||||
CONFIG_RT_USING_GMAC_INT_MODE=y
|
||||
|
|
|
@ -12,6 +12,8 @@ from building import *
|
|||
|
||||
TARGET = 'rtthread.' + rtconfig.TARGET_EXT
|
||||
|
||||
rtconfig.AFLAGS += ' -I' + str(Dir('#'))
|
||||
|
||||
env = Environment(tools = ['mingw'],
|
||||
AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
|
||||
CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
|
||||
|
@ -24,6 +26,13 @@ Export('rtconfig')
|
|||
|
||||
# prepare building environment
|
||||
objs = PrepareBuilding(env, RTT_ROOT)
|
||||
|
||||
if GetDepend('RT_USING_SELF_BOOT'):
|
||||
rtconfig.LFLAGS += " -Ttext 0x80010000"
|
||||
else:
|
||||
rtconfig.LFLAGS += " -Ttext 0x80200000"
|
||||
env.Replace(LINKFLAGS = rtconfig.LFLAGS)
|
||||
|
||||
|
||||
if GetDepend('RT_USING_RTGUI'):
|
||||
objs = objs + SConscript(RTT_ROOT + '/examples/gui/SConscript', variant_dir='build/examples/gui', duplicate=0)
|
||||
|
|
|
@ -100,6 +100,9 @@ void rt_hw_board_init(void)
|
|||
/* init hardware interrupt */
|
||||
rt_hw_interrupt_init();
|
||||
|
||||
/* clear bev */
|
||||
write_c0_status(read_c0_status()&(~(1<<22)));
|
||||
|
||||
/* copy vector */
|
||||
rt_memcpy((void *)A_K0BASE, tlb_refill_exception, 0x80);
|
||||
rt_memcpy((void *)(A_K0BASE + 0x180), general_exception, 0x80);
|
||||
|
@ -109,7 +112,7 @@ void rt_hw_board_init(void)
|
|||
invalidate_icache_all();
|
||||
|
||||
#ifdef RT_USING_HEAP
|
||||
rt_system_heap_init((void*)&__bss_end, (void*)RT_HW_HEAP_END);
|
||||
rt_system_heap_init((void*)&__bss_end, (void*)RT_HW_HEAP_END);
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_SERIAL
|
||||
|
|
|
@ -31,6 +31,8 @@
|
|||
#include "mii.c"
|
||||
#include "synopGMAC_debug.h"
|
||||
#include <ls1c.h>
|
||||
#include "ls1c_pin.h"
|
||||
|
||||
#define RMII
|
||||
|
||||
#define Gmac_base 0xbfe10000
|
||||
|
@ -865,10 +867,22 @@ int rt_hw_eth_init(void)
|
|||
u64 base_addr = Gmac_base;
|
||||
struct synopGMACNetworkAdapter * synopGMACadapter;
|
||||
static u8 mac_addr0[6] = DEFAULT_MAC_ADDRESS;
|
||||
|
||||
int index;
|
||||
|
||||
rt_sem_init(&sem_ack, "tx_ack", 1, RT_IPC_FLAG_FIFO);
|
||||
rt_sem_init(&sem_lock, "eth_lock", 1, RT_IPC_FLAG_FIFO);
|
||||
|
||||
for(index=21; index<=30;index++)
|
||||
{
|
||||
pin_set_purpose(index, PIN_PURPOSE_OTHER);
|
||||
pin_set_remap(index, PIN_REMAP_DEFAULT);
|
||||
}
|
||||
pin_set_purpose(35, PIN_PURPOSE_OTHER);
|
||||
pin_set_remap(35, PIN_REMAP_DEFAULT);
|
||||
*((volatile unsigned int *)0xbfd00424) &= ~(7 << 28);
|
||||
*((volatile unsigned int *)0xbfd00424) |= (1 << 30); //wl rmii
|
||||
|
||||
|
||||
|
||||
memset(ð_dev, 0, sizeof(eth_dev));
|
||||
synopGMACadapter = (struct synopGMACNetworkAdapter * )plat_alloc_memory(sizeof (struct synopGMACNetworkAdapter));
|
||||
|
|
|
@ -19,6 +19,10 @@ config $PKGS_DIR
|
|||
source "$RTT_DIR/Kconfig"
|
||||
source "$PKGS_DIR/Kconfig"
|
||||
|
||||
config RT_USING_SELF_BOOT
|
||||
bool "Enable RT-Thread run without bootloader"
|
||||
default n
|
||||
|
||||
if RT_USING_SERIAL
|
||||
config RT_USING_UART2
|
||||
bool "Using RT_USING_UART2"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// 引脚功能(普通gpio,pwm,复用等)相关接口
|
||||
// 引脚功能(普通gpio,pwm,复用等)相关接口
|
||||
|
||||
|
||||
#include "ls1c_public.h"
|
||||
|
@ -8,21 +8,21 @@
|
|||
|
||||
|
||||
/*
|
||||
* 把指定pin设置为指定用途(普通gpio,非gpio)
|
||||
* @gpio gpio引脚编号
|
||||
* @purpose 用途
|
||||
* 把指定pin设置为指定用途(普通gpio,非gpio)
|
||||
* @gpio gpio引脚编号
|
||||
* @purpose 用途
|
||||
*/
|
||||
void pin_set_purpose(unsigned int gpio, pin_purpose_t purpose)
|
||||
{
|
||||
volatile unsigned int *gpio_cfgx; // GPIO_CFGx寄存器
|
||||
volatile unsigned int *gpio_cfgx; // GPIO_CFGx寄存器
|
||||
unsigned int pin = GPIO_GET_PIN(gpio);
|
||||
|
||||
gpio_cfgx = gpio_get_cfg_reg(gpio);
|
||||
if (PIN_PURPOSE_GPIO == purpose) // 引脚用作普通gpio
|
||||
if (PIN_PURPOSE_GPIO == purpose) // 引脚用作普通gpio
|
||||
{
|
||||
reg_set_one_bit(gpio_cfgx, pin);
|
||||
}
|
||||
else // 引脚用作其它功能(非gpio)
|
||||
else // 引脚用作其它功能(非gpio)
|
||||
{
|
||||
reg_clr_one_bit(gpio_cfgx, pin);
|
||||
}
|
||||
|
@ -33,116 +33,118 @@ void pin_set_purpose(unsigned int gpio, pin_purpose_t purpose)
|
|||
|
||||
|
||||
/*
|
||||
* 设置指定pin为第n复用
|
||||
* @gpio gpio编号
|
||||
* @remap 第n复用
|
||||
* 设置指定pin为第n复用
|
||||
* @gpio gpio编号
|
||||
* @remap 第n复用
|
||||
*/
|
||||
void pin_set_remap(unsigned int gpio, pin_remap_t remap)
|
||||
{
|
||||
volatile unsigned int *reg = NULL; // 复用寄存器
|
||||
volatile unsigned int *reg = NULL; // 复用寄存器
|
||||
unsigned int port = GPIO_GET_PORT(gpio);
|
||||
unsigned int pin = GPIO_GET_PIN(gpio);
|
||||
int i;
|
||||
int i;
|
||||
|
||||
/*指定全部pin复用为0*/
|
||||
for(i =0; i <=4; i++)
|
||||
{
|
||||
reg = (volatile unsigned int *)((LS1C_CBUS_FIRST0)+((port)*0x04)+((i)*0x10));
|
||||
// 置0
|
||||
reg_clr_one_bit(reg, pin);
|
||||
}
|
||||
/*指定全部pin复用为0*/
|
||||
for (i = 0; i <= 4; i++)
|
||||
{
|
||||
reg = (volatile unsigned int *)((LS1C_CBUS_FIRST0) + ((port) * 0x04) + ((i) * 0x10));
|
||||
// 置0
|
||||
reg_clr_one_bit(reg, pin);
|
||||
}
|
||||
|
||||
if (remap == PIN_REMAP_DEFAULT) return;
|
||||
|
||||
switch (port)
|
||||
{
|
||||
case 0:
|
||||
switch (remap)
|
||||
{
|
||||
case PIN_REMAP_FIRST:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIRST0;
|
||||
break;
|
||||
case PIN_REMAP_SECOND:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_SECOND0;
|
||||
break;
|
||||
case PIN_REMAP_THIRD:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_THIRD0;
|
||||
break;
|
||||
case PIN_REMAP_FOURTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FOURTH0;
|
||||
break;
|
||||
case PIN_REMAP_FIFTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIFTH0;
|
||||
break;
|
||||
}
|
||||
case 0:
|
||||
switch (remap)
|
||||
{
|
||||
case PIN_REMAP_FIRST:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIRST0;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
switch (remap)
|
||||
{
|
||||
case PIN_REMAP_FIRST:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIRST1;
|
||||
break;
|
||||
case PIN_REMAP_SECOND:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_SECOND1;
|
||||
break;
|
||||
case PIN_REMAP_THIRD:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_THIRD1;
|
||||
break;
|
||||
case PIN_REMAP_FOURTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FOURTH1;
|
||||
break;
|
||||
case PIN_REMAP_FIFTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIFTH1;
|
||||
break;
|
||||
}
|
||||
case PIN_REMAP_SECOND:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_SECOND0;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
switch (remap)
|
||||
{
|
||||
case PIN_REMAP_FIRST:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIRST2;
|
||||
break;
|
||||
case PIN_REMAP_SECOND:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_SECOND2;
|
||||
break;
|
||||
case PIN_REMAP_THIRD:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_THIRD2;
|
||||
break;
|
||||
case PIN_REMAP_FOURTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FOURTH2;
|
||||
break;
|
||||
case PIN_REMAP_FIFTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIFTH2;
|
||||
break;
|
||||
}
|
||||
case PIN_REMAP_THIRD:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_THIRD0;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
switch (remap)
|
||||
{
|
||||
case PIN_REMAP_FIRST:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIRST3;
|
||||
break;
|
||||
case PIN_REMAP_SECOND:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_SECOND3;
|
||||
break;
|
||||
case PIN_REMAP_THIRD:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_THIRD3;
|
||||
break;
|
||||
case PIN_REMAP_FOURTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FOURTH3;
|
||||
break;
|
||||
case PIN_REMAP_FIFTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIFTH3;
|
||||
break;
|
||||
}
|
||||
case PIN_REMAP_FOURTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FOURTH0;
|
||||
break;
|
||||
case PIN_REMAP_FIFTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIFTH0;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return ;
|
||||
case 1:
|
||||
switch (remap)
|
||||
{
|
||||
case PIN_REMAP_FIRST:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIRST1;
|
||||
break;
|
||||
case PIN_REMAP_SECOND:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_SECOND1;
|
||||
break;
|
||||
case PIN_REMAP_THIRD:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_THIRD1;
|
||||
break;
|
||||
case PIN_REMAP_FOURTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FOURTH1;
|
||||
break;
|
||||
case PIN_REMAP_FIFTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIFTH1;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
switch (remap)
|
||||
{
|
||||
case PIN_REMAP_FIRST:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIRST2;
|
||||
break;
|
||||
case PIN_REMAP_SECOND:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_SECOND2;
|
||||
break;
|
||||
case PIN_REMAP_THIRD:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_THIRD2;
|
||||
break;
|
||||
case PIN_REMAP_FOURTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FOURTH2;
|
||||
break;
|
||||
case PIN_REMAP_FIFTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIFTH2;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
switch (remap)
|
||||
{
|
||||
case PIN_REMAP_FIRST:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIRST3;
|
||||
break;
|
||||
case PIN_REMAP_SECOND:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_SECOND3;
|
||||
break;
|
||||
case PIN_REMAP_THIRD:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_THIRD3;
|
||||
break;
|
||||
case PIN_REMAP_FOURTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FOURTH3;
|
||||
break;
|
||||
case PIN_REMAP_FIFTH:
|
||||
reg = (volatile unsigned int *)LS1C_CBUS_FIFTH3;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return ;
|
||||
}
|
||||
|
||||
// 置1
|
||||
// 置1
|
||||
reg_set_one_bit(reg, pin);
|
||||
|
||||
return ;
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
* Date Author Notes
|
||||
* 2010-05-17 swkyer first version
|
||||
* 2010-09-04 bernard move the beginning entry to 0x80200000
|
||||
* 2018-05-12 zhuangwei use -Ttext
|
||||
*/
|
||||
|
||||
OUTPUT_ARCH(mips)
|
||||
|
@ -19,16 +20,13 @@ GROUP(-lgcc -lc)
|
|||
ENTRY(_start)
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x80200000 ;
|
||||
|
||||
.start :
|
||||
{
|
||||
*(.start);
|
||||
}
|
||||
. = 0x80000000 ;
|
||||
|
||||
. = ALIGN(4);
|
||||
.text :
|
||||
{
|
||||
start = ABSOLUTE(.);
|
||||
*(.start);
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
*(.rodata)
|
||||
|
|
|
@ -156,11 +156,6 @@
|
|||
|
||||
/* RT-Thread online packages */
|
||||
|
||||
/* system packages */
|
||||
|
||||
/* RT-Thread GUI Engine */
|
||||
|
||||
|
||||
/* IoT - internet of things */
|
||||
|
||||
|
||||
|
@ -184,9 +179,20 @@
|
|||
/* tools packages */
|
||||
|
||||
|
||||
/* system packages */
|
||||
|
||||
/* RT-Thread GUI Engine */
|
||||
|
||||
|
||||
/* peripheral libraries and drivers */
|
||||
|
||||
|
||||
/* miscellaneous packages */
|
||||
|
||||
|
||||
/* sample package */
|
||||
|
||||
|
||||
/* example package: hello */
|
||||
|
||||
#define RT_USING_UART2
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
|
||||
#ifndef __OPENLOONGSON_SDRAM_CFG_H
|
||||
#define __OPENLOONGSON_SDRAM_CFG_H
|
||||
|
||||
|
||||
//#define SD_FREQ (6 * PLL_M) / (2 * SDRAM_PARAM_DIV_NUM)
|
||||
#define SD_FREQ (((APB_CLK / 4) * (PLL_MULT / CPU_DIV)) / SDRAM_PARAM_DIV_NUM)
|
||||
|
||||
|
||||
/* 颗粒行数 */
|
||||
#define ROW_1K 0x7
|
||||
#define ROW_2K 0x0
|
||||
#define ROW_4K 0x1
|
||||
#define ROW_8K 0x2
|
||||
#define ROW_16K 0x3
|
||||
/* 颗粒列数 */
|
||||
#define COL_256 0x7
|
||||
#define COL_512 0x0
|
||||
#define COL_1K 0x1
|
||||
#define COL_2K 0x2
|
||||
#define COL_4K 0x3
|
||||
/* 颗粒位宽 */
|
||||
#define WIDTH_8 0x0
|
||||
#define WIDTH_16 0x1
|
||||
#define WIDTH_32 0x2
|
||||
|
||||
#define TRCD 3
|
||||
#define TCL 3
|
||||
#define TRP 3
|
||||
#define TRFC 8
|
||||
#define TRAS 6
|
||||
#define TREF 0x818
|
||||
#define TWR 2
|
||||
|
||||
#define DEF_SEL 0x1
|
||||
#define DEF_SEL_N 0x0
|
||||
#define HANG_UP 0x1
|
||||
#define HANG_UP_N 0x0
|
||||
#define CFG_VALID 0x1
|
||||
|
||||
|
||||
#if 0
|
||||
// 白菜板8MB
|
||||
/*
|
||||
以型号为IS42S16400的SDRAM为例,
|
||||
物理参数为,
|
||||
容量:8MB
|
||||
位宽:16位
|
||||
列宽:8位,即2的8次方,即256
|
||||
行宽:12位,即2的12次方,即4K
|
||||
|
||||
所以,
|
||||
颗粒的位宽=WIDTH_16
|
||||
颗粒的列数=COL_256
|
||||
颗粒的行数=ROW_4K
|
||||
|
||||
再结合宏SD_PARA0和芯片手册中寄存器SD_CONFIG,相信一看就能明白
|
||||
替换宏SD_PARA0中的行宽、列宽和位宽
|
||||
*/
|
||||
#define SDRAM_WIDTH (WIDTH_16)
|
||||
#define SDRAM_COL (COL_256)
|
||||
#define SDRAM_ROW (ROW_4K)
|
||||
|
||||
#else
|
||||
|
||||
// 智龙32MByte
|
||||
#define SDRAM_WIDTH (WIDTH_16)
|
||||
#define SDRAM_COL (COL_512)
|
||||
#define SDRAM_ROW (ROW_8K)
|
||||
|
||||
#endif
|
||||
|
||||
#define SD_PARA0 (0x7f<<25 | \
|
||||
(TRAS << 21) | \
|
||||
(TRFC << 17) | (TRP << 14) | (TCL << 11) | \
|
||||
(TRCD << 8) | (SDRAM_WIDTH << 6) | (SDRAM_COL << 3) | \
|
||||
SDRAM_ROW)
|
||||
|
||||
#define SD_PARA1 ((HANG_UP_N << 8) | (DEF_SEL_N << 7) | (TWR << 5) | (TREF >> 7))
|
||||
|
||||
#define SD_PARA1_EN ((CFG_VALID << 9) | (HANG_UP_N << 8) | \
|
||||
(DEF_SEL_N << 7) | (TWR << 5) | (TREF >> 7))
|
||||
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue