|
@@ -19,7 +19,7 @@
|
|
|
*
|
|
|
* Change Logs:
|
|
|
* Date Author Notes
|
|
|
- * 2017-11-02 勤为本 first version
|
|
|
+ * 2017-11-02 鍕や负鏈� first version
|
|
|
* 2018-06-09 zhuangwei add spi0 cs0 support,remove msd_init
|
|
|
*/
|
|
|
|
|
@@ -43,14 +43,14 @@ static rt_err_t configure(struct rt_spi_device *device, struct rt_spi_configurat
|
|
|
static rt_uint32_t xfer(struct rt_spi_device *device, struct rt_spi_message *message);
|
|
|
|
|
|
|
|
|
-static struct rt_spi_ops ls1c_spi_ops =
|
|
|
+static struct rt_spi_ops ls1c_spi_ops =
|
|
|
{
|
|
|
.configure = configure,
|
|
|
.xfer = xfer
|
|
|
};
|
|
|
|
|
|
|
|
|
-static rt_err_t configure(struct rt_spi_device *device,
|
|
|
+static rt_err_t configure(struct rt_spi_device *device,
|
|
|
struct rt_spi_configuration *configuration)
|
|
|
{
|
|
|
struct rt_spi_bus *spi_bus = NULL;
|
|
@@ -70,28 +70,28 @@ static rt_err_t configure(struct rt_spi_device *device,
|
|
|
spi_base = ls1c_spi_get_base(SPIx);
|
|
|
|
|
|
{
|
|
|
- // 使能SPI控制器,master模式,关闭中断
|
|
|
+ // 浣胯兘SPI鎺у埗鍣�紝master妯″紡锛屽叧闂�腑鏂�
|
|
|
reg_write_8(0x53, spi_base + LS1C_SPI_SPCR_OFFSET);
|
|
|
|
|
|
- // 清空状态寄存器
|
|
|
+ // 娓呯┖鐘舵€佸瘎瀛樺櫒
|
|
|
reg_write_8(0xc0, spi_base + LS1C_SPI_SPSR_OFFSET);
|
|
|
|
|
|
- // 1字节产生中断,采样(读)与发送(写)时机同时
|
|
|
+ // 1瀛楄妭浜х敓涓�柇锛岄噰鏍�(璇�)涓庡彂閫�(鍐�)鏃舵満鍚屾椂
|
|
|
reg_write_8(0x03, spi_base + LS1C_SPI_SPER_OFFSET);
|
|
|
|
|
|
- // 关闭SPI flash
|
|
|
+ // 鍏抽棴SPI flash
|
|
|
val = reg_read_8(spi_base + LS1C_SPI_SFC_PARAM_OFFSET);
|
|
|
val &= 0xfe;
|
|
|
reg_write_8(val, spi_base + LS1C_SPI_SFC_PARAM_OFFSET);
|
|
|
|
|
|
- // spi flash时序控制寄存器
|
|
|
+ // spi flash鏃跺簭鎺у埗瀵勫瓨鍣�
|
|
|
reg_write_8(0x05, spi_base + LS1C_SPI_SFC_TIMING_OFFSET);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// baudrate
|
|
|
ls1c_spi_set_clock(spi_base, configuration->max_hz);
|
|
|
|
|
|
- // 设置通信模式(时钟极性和相位)
|
|
|
+ // 璁剧疆閫氫俊妯″紡(鏃堕挓鏋佹€у拰鐩镐綅)
|
|
|
if (configuration->mode & RT_SPI_CPOL) // cpol
|
|
|
{
|
|
|
cpol = SPI_CPOL_1;
|
|
@@ -116,7 +116,7 @@ static rt_err_t configure(struct rt_spi_device *device,
|
|
|
}
|
|
|
|
|
|
|
|
|
-static rt_uint32_t xfer(struct rt_spi_device *device,
|
|
|
+static rt_uint32_t xfer(struct rt_spi_device *device,
|
|
|
struct rt_spi_message *message)
|
|
|
{
|
|
|
struct rt_spi_bus *spi_bus = NULL;
|
|
@@ -149,7 +149,7 @@ static rt_uint32_t xfer(struct rt_spi_device *device,
|
|
|
ls1c_spi_set_cs(spi_base, cs, 0);
|
|
|
}
|
|
|
|
|
|
- // 收发数据
|
|
|
+ // 鏀跺彂鏁版嵁
|
|
|
send_ptr = message->send_buf;
|
|
|
recv_ptr = message->recv_buf;
|
|
|
while (size--)
|
|
@@ -181,7 +181,7 @@ static rt_uint32_t xfer(struct rt_spi_device *device,
|
|
|
|
|
|
|
|
|
#ifdef RT_USING_SPI0
|
|
|
-struct ls1c_spi ls1c_spi0 =
|
|
|
+struct ls1c_spi ls1c_spi0 =
|
|
|
{
|
|
|
.SPIx = LS1C_SPI_0,
|
|
|
};
|
|
@@ -191,7 +191,7 @@ static struct rt_spi_bus spi0_bus;
|
|
|
|
|
|
|
|
|
#ifdef RT_USING_SPI1
|
|
|
-struct ls1c_spi ls1c_spi1 =
|
|
|
+struct ls1c_spi ls1c_spi1 =
|
|
|
{
|
|
|
.SPIx = LS1C_SPI_1,
|
|
|
};
|
|
@@ -201,10 +201,10 @@ static struct rt_spi_bus spi1_bus;
|
|
|
|
|
|
|
|
|
/*
|
|
|
- * 初始化并注册龙芯1c的spi总线
|
|
|
- * @SPI SPI总线,比如LS1C_SPI_0, LS1C_SPI_1
|
|
|
- * @spi_bus_name 总线名字
|
|
|
- * @ret
|
|
|
+ * 鍒濆�鍖栧苟娉ㄥ唽榫欒姱1c鐨剆pi鎬荤嚎
|
|
|
+ * @SPI SPI鎬荤嚎锛屾瘮濡侺S1C_SPI_0锛� LS1C_SPI_1
|
|
|
+ * @spi_bus_name 鎬荤嚎鍚嶅瓧
|
|
|
+ * @ret
|
|
|
*/
|
|
|
rt_err_t ls1c_spi_bus_register(rt_uint8_t SPI, const char *spi_bus_name)
|
|
|
{
|
|
@@ -237,15 +237,15 @@ int ls1c_hw_spi_init(void)
|
|
|
pin_set_purpose(80, PIN_PURPOSE_OTHER);
|
|
|
pin_set_purpose(83, PIN_PURPOSE_OTHER);//cs2 - SD card
|
|
|
pin_set_purpose(82, PIN_PURPOSE_OTHER);//cs1
|
|
|
- pin_set_purpose(81, PIN_PURPOSE_OTHER);//cs0
|
|
|
-
|
|
|
+ pin_set_purpose(81, PIN_PURPOSE_OTHER);//cs0
|
|
|
+
|
|
|
pin_set_remap(78, PIN_REMAP_DEFAULT);
|
|
|
pin_set_remap(79, PIN_REMAP_DEFAULT);
|
|
|
pin_set_remap(80, PIN_REMAP_DEFAULT);
|
|
|
pin_set_remap(83, PIN_REMAP_DEFAULT);//cs2 - SD card
|
|
|
pin_set_remap(82, PIN_REMAP_DEFAULT);//CS1
|
|
|
pin_set_remap(81, PIN_REMAP_DEFAULT);//cs0
|
|
|
- ls1c_spi_bus_register(LS1C_SPI_0,"spi0");
|
|
|
+ ls1c_spi_bus_register(LS1C_SPI_0, "spi0");
|
|
|
#endif
|
|
|
|
|
|
#ifdef RT_USING_SPI1
|
|
@@ -257,7 +257,7 @@ int ls1c_hw_spi_init(void)
|
|
|
pin_set_remap(47, PIN_REMAP_THIRD);
|
|
|
pin_set_remap(48, PIN_REMAP_THIRD);
|
|
|
pin_set_remap(49, PIN_REMAP_THIRD);//CS0 - touch screen
|
|
|
- ls1c_spi_bus_register(LS1C_SPI_1,"spi1");
|
|
|
+ ls1c_spi_bus_register(LS1C_SPI_1, "spi1");
|
|
|
|
|
|
#endif
|
|
|
|
|
@@ -265,30 +265,30 @@ int ls1c_hw_spi_init(void)
|
|
|
#ifdef RT_USING_SPI0
|
|
|
/* attach cs */
|
|
|
{
|
|
|
- static struct rt_spi_device spi_device0;
|
|
|
+ static struct rt_spi_device spi_device0;
|
|
|
static struct rt_spi_device spi_device1;
|
|
|
static struct rt_spi_device spi_device2;
|
|
|
- static struct ls1c_spi_cs spi_cs0;
|
|
|
+ static struct ls1c_spi_cs spi_cs0;
|
|
|
static struct ls1c_spi_cs spi_cs1;
|
|
|
static struct ls1c_spi_cs spi_cs2;
|
|
|
|
|
|
/* spi02: CS2 SD Card*/
|
|
|
spi_cs2.cs = LS1C_SPI_CS_2;
|
|
|
- rt_spi_bus_attach_device(&spi_device2, "spi02", "spi0", (void*)&spi_cs2);
|
|
|
+ rt_spi_bus_attach_device(&spi_device2, "spi02", "spi0", (void *)&spi_cs2);
|
|
|
spi_cs1.cs = LS1C_SPI_CS_1;
|
|
|
- rt_spi_bus_attach_device(&spi_device1, "spi01", "spi0", (void*)&spi_cs1);
|
|
|
- spi_cs0.cs = LS1C_SPI_CS_0;
|
|
|
- rt_spi_bus_attach_device(&spi_device0, "spi00", "spi0", (void*)&spi_cs0);
|
|
|
+ rt_spi_bus_attach_device(&spi_device1, "spi01", "spi0", (void *)&spi_cs1);
|
|
|
+ spi_cs0.cs = LS1C_SPI_CS_0;
|
|
|
+ rt_spi_bus_attach_device(&spi_device0, "spi00", "spi0", (void *)&spi_cs0);
|
|
|
}
|
|
|
#endif
|
|
|
-#ifdef RT_USING_SPI1
|
|
|
+#ifdef RT_USING_SPI1
|
|
|
{
|
|
|
static struct rt_spi_device spi_device;
|
|
|
static struct ls1c_spi_cs spi_cs;
|
|
|
|
|
|
/* spi10: CS0 Touch*/
|
|
|
spi_cs.cs = LS1C_SPI_CS_0;
|
|
|
- rt_spi_bus_attach_device(&spi_device, "spi10", "spi1", (void*)&spi_cs);
|
|
|
+ rt_spi_bus_attach_device(&spi_device, "spi10", "spi1", (void *)&spi_cs);
|
|
|
}
|
|
|
#endif
|
|
|
}
|