mirror of
https://github.com/pvvx/RTL00_WEB.git
synced 2024-11-22 05:54:19 +00:00
update
This commit is contained in:
parent
3e8794a4a3
commit
20d954e09e
186 changed files with 357 additions and 447 deletions
|
@ -730,6 +730,14 @@
|
|||
<useDefaultCommand>true</useDefaultCommand>
|
||||
<runAllBuilders>true</runAllBuilders>
|
||||
</target>
|
||||
<target name="runsdram" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>mingw32-make.exe</buildCommand>
|
||||
<buildArguments>-s</buildArguments>
|
||||
<buildTarget>runsdram</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
<runAllBuilders>false</runAllBuilders>
|
||||
</target>
|
||||
</buildTargets>
|
||||
</storageModule>
|
||||
</cproject>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
<head>
|
||||
<link rel="stylesheet" href="dygraph.css">
|
||||
<title>Get data INA219</title>
|
||||
<script type="text/javascript" src="dygraph.js"></script>
|
||||
<script type="text/javascript" src="dygraph.min.js"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<h3 style="width:800px; text-align: center;">Read regs U & I INA219</h3>
|
||||
<div id="div_v" style="width:800px; height:400px;"></div>
|
||||
<h3 style="width:1000px; text-align: center;">Read regs U & I INA219</h3>
|
||||
<div id="div_v" style="width:1000px; height:400px;"></div>
|
||||
<script type="text/javascript">
|
||||
var datau = [];
|
||||
//var datai = [];
|
||||
|
@ -21,23 +21,27 @@ var gu = new Dygraph(
|
|||
rollPeriod: 100,
|
||||
// errorBars: true,
|
||||
// showRoller: true,
|
||||
y2label: 'U(mV)',
|
||||
ylabel: 'I(mA)',
|
||||
y2label: 'U(mV)',
|
||||
series : {
|
||||
'U': { axis: 'y2' }
|
||||
}
|
||||
// , axes: { y: {valueRange: [4500, 5500] }, y2: {valueRange: [75, 125] }}
|
||||
, axes: { y2: {valueRange: [3000, 3500] }}
|
||||
// , axes: { y2: {valueRange: [3000, 3500] }, y: {valueRange: [0, 2] }}
|
||||
});
|
||||
|
||||
var oldblkid = 0;
|
||||
var rdnextflg = false;
|
||||
var cur_idx = 0;
|
||||
var sig = 10;
|
||||
var ttout = 100;
|
||||
function wsping() { ws.send('ina219'); wstt = setTimeout(wsping, ttout);};
|
||||
ws = new WebSocket('ws://rtl871x0/web.cgi');
|
||||
ws.binaryType = 'arraybuffer';
|
||||
ws.onopen = function(){ws.send('ina219'); ws.send('pr=0')};
|
||||
ws.onopen = function(){ws.send('user=rtl871x:supervisor'); ws.send('sys_debug=0'); wstt = setTimeout(wsping, ttout)};
|
||||
ws.onmessage = function (event) {
|
||||
if(event.data instanceof ArrayBuffer) {
|
||||
clearTimeout(wstt);
|
||||
var wordarray = new Int16Array(event.data);
|
||||
if(wordarray.length > 2) {
|
||||
var blksz = wordarray[0];
|
||||
|
@ -48,14 +52,14 @@ ws.onmessage = function (event) {
|
|||
} else rdnextflg = true;
|
||||
oldblkid = blkid + blksz;
|
||||
for (var i=2; i<wordarray.length; i+=2) {
|
||||
if(cur_idx > 10000 ) datau.shift();
|
||||
datau.push([cur_idx, wordarray[i+1], wordarray[i]*0.5 ]);
|
||||
if(cur_idx > 50000 ) datau.shift();
|
||||
datau.push([cur_idx, wordarray[i+1]*0.1+0.35, wordarray[i]*0.5 ]);
|
||||
cur_idx++;
|
||||
}
|
||||
gu.updateOptions({'file':datau});
|
||||
}
|
||||
}
|
||||
ws.send("ina219");
|
||||
wstt = setTimeout(wsping, ttout);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<link rel="stylesheet" href="dygraph.css">
|
||||
<title>Get data INA219</title>
|
||||
<script type="text/javascript" src="dygraph.js"></script>
|
||||
<script type="text/javascript" src="dygraph.min.js"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
@ -19,7 +19,7 @@ var gu = new Dygraph(
|
|||
showRangeSelector: true,
|
||||
labels: ['X', 'U', 'I'],
|
||||
// drawPoints: true,
|
||||
rollPeriod: 5,
|
||||
// rollPeriod: 2,
|
||||
// errorBars: true,
|
||||
// showRoller: true,
|
||||
ylabel: 'U(mV)',
|
||||
|
@ -27,18 +27,20 @@ var gu = new Dygraph(
|
|||
series : {
|
||||
'I': { axis: 'y2' }
|
||||
}
|
||||
// , axes: { y: {valueRange: [4500, 5500] }, y2: {valueRange: [75, 125] }}
|
||||
// , axes: { y: {valueRange: [3000, 3500] }, y2: {valueRange: [0, 30] }}
|
||||
});
|
||||
|
||||
var oldblkid = 0;
|
||||
var rdnextflg = false;
|
||||
var cur_idx = 0;
|
||||
var sig = 10;
|
||||
function wsping() {ws.send('ina219'); wstt = setTimeout(wsping, 50);};
|
||||
ws = new WebSocket('ws://rtl871x0/web.cgi');
|
||||
ws.binaryType = 'arraybuffer';
|
||||
ws.onopen = function(){ws.send('ina219'); ws.send('pr=0')};
|
||||
ws.onopen = function(){ ws.send('user=rtl871x:supervisor'); ws.send('sys_debug=0'); wstt = setTimeout(wsping, 50);};
|
||||
ws.onmessage = function (event) {
|
||||
if(event.data instanceof ArrayBuffer) {
|
||||
clearTimeout(wstt);
|
||||
var wordarray = new Int16Array(event.data);
|
||||
if(wordarray.length > 2) {
|
||||
var blksz = wordarray[0];
|
||||
|
@ -49,14 +51,14 @@ ws.onmessage = function (event) {
|
|||
} else rdnextflg = true;
|
||||
oldblkid = blkid + blksz;
|
||||
for (var i=2; i<wordarray.length; i+=2) {
|
||||
if(cur_idx > 50000 ) datau.shift();
|
||||
datau.push([cur_idx, wordarray[i]*0.5, wordarray[i+1]*0.1]);
|
||||
if(cur_idx > 10000 ) datau.shift();
|
||||
datau.push([cur_idx*0.001, wordarray[i]*0.5, wordarray[i+1]*0.1]);
|
||||
cur_idx++;
|
||||
}
|
||||
gu.updateOptions({'file':datau});
|
||||
}
|
||||
wstt = setTimeout(wsping, 50);
|
||||
}
|
||||
ws.send("ina219");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
4
Makefile
4
Makefile
|
@ -40,6 +40,10 @@ runram:
|
|||
#JLink-RunRAM.bat
|
||||
@$(MAKE) --f $(SDK_PATH)flasher.mk runram
|
||||
|
||||
runsdram:
|
||||
#JLink-RunRAM.bat
|
||||
@$(MAKE) --f $(SDK_PATH)flasher.mk runsdram
|
||||
|
||||
reset:
|
||||
#JLink-Reset.bat
|
||||
@$(MAKE) -f $(SDK_PATH)flasher.mk reset
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
#include "wps/wps_defs.h"
|
||||
#include <platform/platform_stdlib.h>
|
||||
|
||||
extern int wpas_wps_registrar_button_pushed();
|
||||
|
||||
/*
|
||||
* @brief struct wps_credential - WPS Credential
|
||||
*/
|
||||
|
|
|
@ -550,7 +550,7 @@ int wifi_connect(
|
|||
result = RTW_TIMEOUT;
|
||||
goto error;
|
||||
} else {
|
||||
if(wifi_is_connected_to_ap( ) != RTW_SUCCESS) {
|
||||
if(rltk_wlan_is_connected_to_ap( ) != RTW_SUCCESS) {
|
||||
result = RTW_ERROR;
|
||||
goto error;
|
||||
}
|
||||
|
@ -570,7 +570,7 @@ int wifi_connect(
|
|||
if (join_result->network_info.password_len) {
|
||||
rtw_free(join_result->network_info.password);
|
||||
}
|
||||
if (wifi_is_connected_to_ap() != RTW_SUCCESS) {
|
||||
if (rltk_wlan_is_connected_to_ap() != RTW_SUCCESS) {
|
||||
result = RTW_ERROR;
|
||||
goto error;
|
||||
}
|
||||
|
@ -889,6 +889,7 @@ int wifi_off(void) {
|
|||
|
||||
#if defined(CONFIG_ENABLE_WPS_AP) && CONFIG_ENABLE_WPS_AP
|
||||
// @todo
|
||||
extern void wpas_wps_deinit();
|
||||
wpas_wps_deinit();
|
||||
#endif
|
||||
rltk_wlan_deinit();
|
||||
|
|
|
@ -900,7 +900,7 @@ int wext_send_eapol(const char *ifname, char *buf, __u16 buf_len, __u16 flags) {
|
|||
return iw_ioctl(ifname, SIOCSIWEAPOLSEND, &iwr);
|
||||
}
|
||||
|
||||
#if CONFIG_ENABLE_P2P
|
||||
//#if CONFIG_ENABLE_P2P
|
||||
int wext_send_mgnt(const char *ifname, char *buf, __u16 buf_len, __u16 flags) {
|
||||
struct iwreq iwr;
|
||||
memset(&iwr, 0, sizeof(iwr));
|
||||
|
@ -909,7 +909,7 @@ int wext_send_mgnt(const char *ifname, char *buf, __u16 buf_len, __u16 flags) {
|
|||
iwr.u.data.flags = flags;
|
||||
return iw_ioctl(ifname, SIOCSIWMGNTSEND, &iwr);
|
||||
}
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
int wext_set_gen_ie(const char *ifname, char *buf, __u16 buf_len, __u16 flags) {
|
||||
struct iwreq iwr;
|
||||
|
|
|
@ -552,13 +552,21 @@ LOCAL int _wifi_on(rtw_mode_t mode) {
|
|||
chk_ap_netif_num();
|
||||
|
||||
// set wifi mib
|
||||
wext_set_adaptivity(wifi_cfg.adaptivity & 3); // rtw_adaptivity_mode_t
|
||||
// extern uint8_t rtw_adaptivity_en;
|
||||
// rtw_adaptivity_en = 0;
|
||||
// wext_set_adaptivity(RTW_ADAPTIVITY_DISABLE); // rtw_adaptivity_mode_t
|
||||
wext_set_adaptivity(wifi_cfg.adaptivity & 3);
|
||||
|
||||
debug_printf("Wlan0 init...\n");
|
||||
|
||||
ret = rltk_wlan_init(WLAN0_IDX, mode); // rtw_mode_t
|
||||
|
||||
debug_printf("netif_set_up 0...\n");
|
||||
|
||||
netif_set_up(&xnetif[0]);
|
||||
if (ret < 0) return ret;
|
||||
if(devnum) {
|
||||
debug_printf("Wlan1 init...\n");
|
||||
ret = rltk_wlan_init(WLAN1_IDX, mode);
|
||||
if (ret < 0) return ret;
|
||||
netif_set_up(&xnetif[1]);
|
||||
|
@ -567,15 +575,17 @@ LOCAL int _wifi_on(rtw_mode_t mode) {
|
|||
netif_set_down(&xnetif[1]);
|
||||
}
|
||||
|
||||
debug_printf("Wlan start...\n");
|
||||
|
||||
uint32 timeout = xTaskGetTickCount();
|
||||
rltk_wlan_start(WLAN0_IDX);
|
||||
if(devnum) rltk_wlan_start(WLAN1_IDX);
|
||||
while (1) {
|
||||
if (rltk_wlan_running(WLAN0_IDX)
|
||||
&& rltk_wlan_running(devnum) ) {
|
||||
#if CONFIG_DEBUG_LOG > 2
|
||||
printf("WIFI initialized (%d ms)\n", xTaskGetTickCount() - timeout);
|
||||
#endif
|
||||
//#if CONFIG_DEBUG_LOG > 2
|
||||
debug_printf("WIFI initialized (%d ms)\n", xTaskGetTickCount() - timeout);
|
||||
//#endif
|
||||
break;
|
||||
}
|
||||
if(xTaskGetTickCount() - timeout > wifi_test_timeout_ms/portTICK_RATE_MS) {
|
||||
|
@ -648,6 +658,10 @@ int wifi_run(rtw_mode_t mode) {
|
|||
error_printf("Wifi On failed!\n");
|
||||
goto error_end;
|
||||
};
|
||||
/*
|
||||
if(wifi_cfg.adaptivity)
|
||||
wext_set_adaptivity(wifi_cfg.adaptivity & 3);
|
||||
*/
|
||||
if(wifi_set_country(wifi_cfg.country_code) != RTW_SUCCESS) {
|
||||
error_printf("WiFi: Error set tx country_code (%d)!", wifi_cfg.country_code);
|
||||
};
|
||||
|
@ -695,6 +709,8 @@ int wifi_run(rtw_mode_t mode) {
|
|||
error_printf("WiFi: Error set DTIM(%d)!", wifi_st_cfg.dtim);
|
||||
};
|
||||
if(_wext_enable_powersave(0, wifi_st_cfg.sleep & 1, (wifi_st_cfg.sleep >> 1) & 1) != RTW_SUCCESS) {
|
||||
// rtw_pm_set_ips(get_padaptern(0), wifi_st_cfg.sleep & 1 );
|
||||
// rtw_pm_set_lps(get_padaptern(0), (wifi_st_cfg.sleep >> 1) & 1 );
|
||||
error_printf("WiFi: Error set powersave mode!");
|
||||
};
|
||||
break;
|
||||
|
@ -887,3 +903,22 @@ int show_wifi_ap_clients(void) {
|
|||
printf("Get AP clients error!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
extern int max_skbbuf_used_num, skbbuf_used_num, max_skbdata_used_num, skbdata_used_num, max_timer_used_num;
|
||||
void show_wlan_info(int idx)
|
||||
{
|
||||
if(rltk_wlan_info[idx].enable) {
|
||||
struct net_device_stats * stats = rltk_wlan_info[idx].dev->get_stats(rltk_wlan_info[idx].dev);
|
||||
if(stats) {
|
||||
printf("\tTotal %d packets received (%d bytes), dropped %d\n", stats->rx_packets, stats->rx_bytes, stats->rx_dropped);
|
||||
printf("\tTotal %d packets transmitted (%d bytes), dropped %d\n", stats->tx_packets, stats->tx_bytes, stats->tx_dropped);
|
||||
printf("\tRX fifo overflow count %d\n", stats->rx_overflow);
|
||||
|
||||
printf("\tMax skb %d bufers used, buffers %d\n", max_skbbuf_used_num, skbbuf_used_num);
|
||||
printf("\tMax skb %d data used, data %d\n", max_skbdata_used_num, skbdata_used_num);
|
||||
printf("\tMax %d timers used\n", max_timer_used_num);
|
||||
// printf("\tMax %d timers used, timers %d\n", max_timer_used_num, timer_used_num);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -154,6 +154,7 @@ void show_wifi_st_ip(void);
|
|||
void show_wifi_cfg(void);
|
||||
void show_wifi_st_cfg(void);
|
||||
void show_wifi_ap_cfg(void);
|
||||
void show_wlan_info(int idx);
|
||||
int show_wifi_ap_clients(void);
|
||||
uint32 read_wifi_cfg(uint32 flg);
|
||||
uint32 write_wifi_cfg(uint32 flg);
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _XMPORT_LOGUART_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _XMPORT_UART_H_
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
#ifndef __IEEE80211_H
|
||||
#define __IEEE80211_H
|
||||
|
||||
#include "wlan_bssdef.h"
|
||||
|
||||
#ifndef CONFIG_RTL8711FW
|
||||
|
||||
// #include <drv_types.h>
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#ifndef __RTW_CMD_H_
|
||||
#define __RTW_CMD_H_
|
||||
|
||||
#include "drv_types.h"
|
||||
#include <rtw_rf.h>
|
||||
#include <rtw_led.h>
|
||||
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*
|
||||
*
|
||||
* Copyright(c) 2016, Realtek Semiconductor Corporation. All rights reserved.
|
||||
******************************************************************************
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "osdep_service.h"
|
||||
#include "freertos/wrapper.h"
|
||||
#include "rtl_bios_data.h"
|
||||
#include "rtw_cmd.h"
|
||||
|
||||
#define _atr_aligned2_ __attribute__((aligned(2)))
|
||||
#define _atr_aligned4_ __attribute__((aligned(4)))
|
||||
|
@ -739,6 +740,23 @@ struct evt_priv {
|
|||
uint32_t evt_done_cnt;
|
||||
};
|
||||
|
||||
struct dvobj_priv {
|
||||
void *if1;
|
||||
void *if2;
|
||||
void *padapters[2];
|
||||
uint8_t iface_nums;
|
||||
uint8_t RtOutPipe[3];
|
||||
uint8_t Queue2Pipe[8];
|
||||
uint8_t irq_alloc;
|
||||
uint8_t irq_enabled;
|
||||
_lock irq_th_lock;
|
||||
};
|
||||
|
||||
struct fifo_more_data {
|
||||
uint32_t more_data;
|
||||
uint32_t len;
|
||||
};
|
||||
|
||||
struct _io_ops {
|
||||
int (*init_io_priv)(struct dvobj_priv *);
|
||||
int (*write8_endian)(struct dvobj_priv *, uint32_t, uint32_t, uint32_t);
|
||||
|
@ -1227,18 +1245,6 @@ typedef struct net_device *_nic_hdl;
|
|||
};
|
||||
*/
|
||||
|
||||
struct dvobj_priv {
|
||||
void *if1;
|
||||
void *if2;
|
||||
void *padapters[2];
|
||||
uint8_t iface_nums;
|
||||
uint8_t RtOutPipe[3];
|
||||
uint8_t Queue2Pipe[8];
|
||||
uint8_t irq_alloc;
|
||||
uint8_t irq_enabled;
|
||||
_lock irq_th_lock;
|
||||
};
|
||||
|
||||
struct phy_info {
|
||||
uint8_t RxPWDBAll;
|
||||
uint8_t SignalQuality;
|
||||
|
@ -1484,11 +1490,6 @@ struct sta_info {
|
|||
};
|
||||
*/
|
||||
|
||||
struct fifo_more_data {
|
||||
uint32_t more_data;
|
||||
uint32_t len;
|
||||
};
|
||||
|
||||
struct hw_xmit {
|
||||
_queue *sta_queue;
|
||||
int accnt;
|
||||
|
@ -1877,7 +1878,6 @@ enum _PS_BBRegBackup_ // : sint32_t
|
|||
};
|
||||
typedef struct _power_mgn_ Power_Mgn;
|
||||
|
||||
/*
|
||||
// hal_gpio.h
|
||||
enum $E1AD70AB12E7AA6E98B8D89D9B965EB5 //: sint32_t
|
||||
{
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*
|
||||
*
|
||||
* Copyright(c) 2016, Realtek Semiconductor Corporation. All rights reserved.
|
||||
******************************************************************************
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include <skbuff.h>
|
||||
#ifdef PLATFORM_FREERTOS
|
||||
#include "freertos_service.h"
|
||||
#include "osdep_service.h"
|
||||
#elif defined(PLATFORM_CMSIS_RTOS)
|
||||
#include "rtx_service.h"
|
||||
#endif
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2014 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
//#if FATFS_DISK_SD
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2014 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
#include "integer.h"
|
||||
#include <disk_if/inc/usbdisk.h>
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef MBED_EXT_FLASH_API_EXT_H
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2015, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
#include "objects.h"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
#include "objects.h"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2015, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
#include "objects.h"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
#include "objects.h"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
//#include "mbed_assert.h"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
#include "objects.h"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2015, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************/
|
||||
#include "rtc_api.h"
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*
|
||||
*******************************************************************************/
|
||||
#ifndef MBED_EXT_TIMER_API_EXT_H
|
||||
#define MBED_EXT_TIMER_API_EXT_H
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
* Copyright (c) 2014, Realtek Semiconductor Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*******************************************************************************
|
||||
*/
|
||||
#include "objects.h"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#include "osdep_service.h"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _DEVICE_LOCK_H_
|
||||
|
|
|
@ -8,8 +8,7 @@
|
|||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*
|
||||
*
|
||||
* Copyright(c) 2016, Realtek Semiconductor Corporation. All rights reserved.
|
||||
******************************************************************************
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*
|
||||
*/
|
||||
//#include "build_info.h"
|
||||
#include "rtl8195a.h"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _DIAG_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
u32
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _RTL_STDLIB_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _STRPROC_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _VA_LIST_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_ADC_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
#ifndef _HAL_API_H_
|
||||
#define _HAL_API_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_COMMON_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_DIAG_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_GDMA_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_GPIO_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_I2C_H_ //#ifndef _HAL_I2C_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_I2S_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_IRQN_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_LOG_UART_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_MII_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _MISC_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_NFC_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_PCM_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_PERI_ON_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_PLATFORM_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_PWM_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_SDIO_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_SDIO_HOST_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_SDR_CONTROLLER_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_SSI_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_TIMER_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_UART_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_USB_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
#ifndef _HAL_UTIL_H_
|
||||
#define _HAL_UTIL_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2015 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#include "rtl8195a.h"
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "rtl_bios_data.h"
|
||||
#include "diag.h"
|
||||
#include "rtl8195a/rtl8195a_sys_on.h"
|
||||
#include "rtl8195a/rtl8195a_sdr.h"
|
||||
|
||||
#include "hal_spi_flash.h"
|
||||
|
||||
|
@ -30,7 +31,7 @@
|
|||
#define DEFAULT_BOOT_CPU_CLOCK_SEL_VALUE (DEFAULT_BOOT_CLK_CPU-6)
|
||||
#endif
|
||||
#endif // DEFAULT_BOOT_CLK_CPU
|
||||
|
||||
#define FIX_SDR_CALIBRATION // for speed
|
||||
#define BOOT_RAM_TEXT_SECTION // __attribute__((section(".boot.text")))
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
@ -65,7 +66,6 @@ extern _LONG_CALL_ VOID HalInitPlatformLogUartV02(VOID);
|
|||
extern _LONG_CALL_ VOID HalInitPlatformTimerV02(VOID);
|
||||
//extern _LONG_CALL_ VOID DramInit_rom(IN DRAM_DEVICE_INFO *DramInfo);
|
||||
//extern _LONG_CALL_ u32 SdrCalibration_rom(VOID);
|
||||
extern _LONG_CALL_ int SdrControllerInit_rom(PDRAM_DEVICE_INFO pDramInfo);
|
||||
extern _LONG_CALL_ u32 SpicCmpDataForCalibrationRtl8195A(void); // compare read_data and golden_data
|
||||
//extern _LONG_CALL_ VOID SpicWaitWipDoneRtl8195A(SPIC_INIT_PARA SpicInitPara); // wait spi-flash status register[0] = 0
|
||||
//extern _LONG_CALL_ VOID SpicLoadInitParaFromClockRtl8195A(u8 CpuClkMode, u8 BaudRate, PSPIC_INIT_PARA pSpicInitPara);
|
||||
|
@ -100,14 +100,14 @@ LOCAL void BOOT_RAM_TEXT_SECTION SetDebugFlgs() {
|
|||
CfgSysDebugErr = -1;
|
||||
ConfigDebugWarn = -1;
|
||||
// ConfigDebugInfo = 0;
|
||||
ConfigDebugErr = -1;
|
||||
ConfigDebugErr = ~_DBG_SDR_;
|
||||
#elif CONFIG_DEBUG_LOG > 0
|
||||
// CfgSysDebugWarn = 0;
|
||||
// CfgSysDebugInfo = 0;
|
||||
CfgSysDebugErr = -1;
|
||||
// ConfigDebugWarn = 0;
|
||||
// ConfigDebugInfo = 0;
|
||||
ConfigDebugErr = -1;
|
||||
ConfigDebugErr = ~_DBG_SDR_;
|
||||
#else
|
||||
// CfgSysDebugWarn = 0;
|
||||
// CfgSysDebugInfo = 0;
|
||||
|
@ -281,11 +281,137 @@ LOCAL int BOOT_RAM_TEXT_SECTION InitSpic(uint8 SpicBitMode) {
|
|||
}
|
||||
ACTCK_FLASH_CCTRL(1);
|
||||
SLPCK_FLASH_CCTRL(1);
|
||||
HalPinCtrlRtl8195A(SPI_FLASH, 0, 1);
|
||||
HalPinCtrlRtl8195A(SPI_FLASH, 0, ON);
|
||||
InitSpicFlashType(&spic_table_flash);
|
||||
return SetSpicBitMode(SpicBitMode);
|
||||
}
|
||||
|
||||
LOCAL void INFRA_START_SECTION sdr_preinit(void) {
|
||||
|
||||
LDO25M_CTRL(ON);
|
||||
|
||||
HAL_SYS_CTRL_WRITE32(REG_SYS_REGU_CTRL0,
|
||||
((HAL_SYS_CTRL_READ32(REG_SYS_REGU_CTRL0) & 0xfffff) | BIT_SYS_REGU_LDO25M_ADJ(0x03))); // ROM: BIT_SYS_REGU_LDO25M_ADJ(0x0e)?
|
||||
|
||||
SRAM_MUX_CFG(0x2);
|
||||
|
||||
SDR_CLK_SEL(SDR_CLOCK_SEL_VALUE); // REG_PESOC_CLK_SEL
|
||||
|
||||
HAL_PERI_ON_WRITE32(REG_GPIO_PULL_CTRL4, 0);
|
||||
|
||||
ACTCK_SDR_CCTRL(ON);
|
||||
SLPCK_SDR_CCTRL(ON);
|
||||
|
||||
HalPinCtrlRtl8195A(SDR, 0, ON); // SDR_PIN_FCTRL(ON);
|
||||
|
||||
HAL_PERI_ON_WRITE32(REG_GPIO_PULL_CTRL4, 0);
|
||||
|
||||
MEM_CTRL_FCTRL(ON);
|
||||
|
||||
// HalDelayUs(3000);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SDR_EN
|
||||
#ifndef FIX_SDR_CALIBRATION
|
||||
extern _LONG_CALL_ int SdrCalibration_rom(void);
|
||||
extern _LONG_CALL_ unsigned int Rand(void);
|
||||
extern _LONG_CALL_ int SdrControllerInit_rom(PDRAM_DEVICE_INFO pDramInfo);
|
||||
|
||||
LOCAL int INFRA_START_SECTION sdr_test(u32 LoopCnt) {
|
||||
u32 LoopIndex = 0;
|
||||
u32 Value32, Addr;
|
||||
for (LoopIndex = 0; LoopIndex < LoopCnt; LoopIndex++) {
|
||||
Value32 = Rand();
|
||||
Addr = Rand();
|
||||
Addr &= 0x1FFFFF;
|
||||
Addr &= (~0x3);
|
||||
HAL_SDRAM_WRITE32(Addr, Value32);
|
||||
if (HAL_SDRAM_READ32(Addr) != Value32)
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
LOCAL int INFRA_START_SECTION sdr_init_from_flash(void) {
|
||||
// WRAP_MISC setting
|
||||
HAL_SDR_WRITE32(REG_SDR_MISC, 0x00000001);
|
||||
// PCTL setting
|
||||
HAL_SDR_WRITE32(REG_SDR_DCR, 0x00000008);
|
||||
HAL_SDR_WRITE32(REG_SDR_IOCR, 0x00000000);
|
||||
HAL_SDR_WRITE32(REG_SDR_EMR2, 0x00000000);
|
||||
HAL_SDR_WRITE32(REG_SDR_EMR1, 0x00000006);
|
||||
HAL_SDR_WRITE32(REG_SDR_MR, 0x00000022);
|
||||
HAL_SDR_WRITE32(REG_SDR_DRR, 0x09030e07);
|
||||
HAL_SDR_WRITE32(REG_SDR_TPR0, 0x00002652);
|
||||
HAL_SDR_WRITE32(REG_SDR_TPR1, 0x00068873);
|
||||
HAL_SDR_WRITE32(REG_SDR_TPR2, 0x00000042);
|
||||
// set all_mode _idle
|
||||
HAL_SDR_WRITE32(REG_SDR_CSR, 0x700);
|
||||
// start to init
|
||||
HAL_SDR_WRITE32(REG_SDR_CCR, 0x01);
|
||||
while ((HAL_SDR_READ32(REG_SDR_CCR) & 0x1) == 0x0);
|
||||
// enter mem_mode
|
||||
HAL_SDR_WRITE32(REG_SDR_CSR, 0x600);
|
||||
|
||||
#ifdef FIX_SDR_CALIBRATION // for speed :)
|
||||
#if 0
|
||||
// read calibration data from system data FLASH_SDRC_PARA_BASE
|
||||
u32 reg = HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_SYSPLL_CTRL1);
|
||||
u32 value = 0x00190031;
|
||||
if(reg & BIT17) value = 0x00060031;
|
||||
else if((reg & 0x70) == 0) value = 0x00230031;
|
||||
HAL_PERI_ON_WRITE32(REG_PESOC_MEM_CTRL, value);
|
||||
#else
|
||||
#if DEFAULT_BOOT_CLK_CPU < 6
|
||||
HAL_PERI_ON_WRITE32(REG_PESOC_MEM_CTRL, 0x00060031);
|
||||
#elif DEFAULT_BOOT_CLK_CPU == 7
|
||||
HAL_PERI_ON_WRITE32(REG_PESOC_MEM_CTRL, 0x00230031);
|
||||
#else
|
||||
HAL_PERI_ON_WRITE32(REG_PESOC_MEM_CTRL, 0x00190031);
|
||||
#endif
|
||||
#endif
|
||||
return 1;
|
||||
#else
|
||||
union { u8 b[8]; u16 s[4]; u32 l[2]; u64 d;} value;
|
||||
// read calibration data from system data FLASH_SDRC_PARA_BASE
|
||||
u32 reg = HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_SYSPLL_CTRL1);
|
||||
u32 faddr = SPI_FLASH_BASE + FLASH_SDRC_PARA_BASE + ((reg & 0x70) >> 1) + ((reg & BIT17) >> 11) ; // step 8 in FLASH_SDRC_PARA_BASE[64 + 64 bytes]
|
||||
value.d = *((volatile u64 *)faddr);
|
||||
DBG_8195A("SDR flash calibration [%08x] %02x-%02x-%02x\n", faddr, value.b[0], value.b[4], value.b[6]);
|
||||
if(value.s[0] == 0xFE01 && (value.b[4]^value.b[5]) == 0xFF && (value.b[6]^value.b[7]) == 0xFF) {
|
||||
HAL_SDR_WRITE32(REG_SDR_IOCR, (HAL_SDR_READ32(REG_SDR_IOCR) & 0xff) | ((u32)value.b[4] << PCTL_IOCR_RD_PIPE_BFO));
|
||||
SDR_DDL_FCTRL((u32)value.b[6]);
|
||||
if(sdr_test(7))
|
||||
return 1; // ok
|
||||
else
|
||||
DBG_8195A("Not valid SDR calibration in flash!\n");
|
||||
} else
|
||||
DBG_8195A("Error SDR calibration in flash!\n");
|
||||
if(SdrCalibration_rom()) {
|
||||
// DBG_8195A("SDR calibration: %02x-%02x-%02x\n", value.b[0], value.b[4], value.b[6]);
|
||||
value.s[0] = 0xFE01;
|
||||
value.b[4] = HAL_SDR_READ32(REG_SDR_IOCR) >> PCTL_IOCR_RD_PIPE_BFO;
|
||||
value.b[5] = value.b[4] ^ 0xFF;
|
||||
value.b[6] = HAL_PERI_ON_READ32(REG_PESOC_MEM_CTRL) >> BIT_SHIFT_PESOC_SDR_DDL_CTRL;
|
||||
value.b[7] = value.b[6] ^ 0xFF;
|
||||
// DBG_8195A("%08x: %02x-%02x-%02x)\n", faddr, value.b[0], value.b[4], value.b[6]);
|
||||
if((*((volatile u16 *)(faddr)) & value.s[0]) == value.s[0]
|
||||
&& (*((volatile u32 *)(faddr + 4)) & value.l[1]) == value.l[1]) {
|
||||
*((volatile u32 *)(faddr + 4)) = value.l[1];
|
||||
DBG_8195A("Write new calibration [%08x] %02x-%02x-%02x\n", faddr, value.b[0], value.b[4], value.b[6]);
|
||||
HalDelayUs(1000);
|
||||
*((volatile u16 *)(faddr)) = value.s[0];
|
||||
} else {
|
||||
DBG_8195A("Work recalibration: %02x-%02x-%02x!\n", value.b[0], value.b[4], value.b[6]);
|
||||
}
|
||||
return 2; // recalibration - ok
|
||||
} else
|
||||
DBG_8195A("SDR recalibration fail!\n");
|
||||
return 0;
|
||||
#endif // FIX_SDR_CALIBRATION
|
||||
}
|
||||
#endif // CONFIG_SDR_EN
|
||||
|
||||
/* SYSPlatformInit */
|
||||
LOCAL void INFRA_START_SECTION SYSPlatformInit(void) {
|
||||
|
@ -474,23 +600,21 @@ LOCAL int BOOT_RAM_TEXT_SECTION loadUserImges(int imgnum) {
|
|||
|
||||
while (1) {
|
||||
faddr = (faddr + FLASH_SECTOR_SIZE - 1) & (~(FLASH_SECTOR_SIZE - 1));
|
||||
uint32 img_id = load_img2_head(faddr, &hdr); // проверить заголовки запись
|
||||
uint32 img_id = load_img2_head(faddr, &hdr);
|
||||
if ((img_id >> 8) > 4 && (uint8) img_id != 0) { // есть подпись "RTKW" + RUN или SWP, сегмент != unknown
|
||||
// загрузить, если imagenum == imgnum
|
||||
faddr = load_segs(faddr + 0x10, (PIMG2HEAD) &hdr.seg, imagenum == imgnum); // faddr == fnextaddr
|
||||
if (imagenum == imgnum) { // если искомая img
|
||||
faddr = load_segs(faddr + 0x10, (PIMG2HEAD) &hdr.seg, imagenum == imgnum);
|
||||
if (imagenum == imgnum) {
|
||||
// DBG_8195A("Image%d: %s\n", imgnum, hdr.name);
|
||||
break;
|
||||
}
|
||||
imagenum++; // перейти к следующей
|
||||
} else if (imagenum) { // нет подписей у заданной imgnum
|
||||
imagenum++;
|
||||
} else if (imagenum) {
|
||||
DBG_8195A("No Image%d! Trying Image0...\n", imgnum);
|
||||
// пробуем загрузить image по умолчанию, по записи в секторе установок
|
||||
flashcpy(FLASH_SYSTEM_DATA_ADDR, &faddr, sizeof(faddr));
|
||||
if (faddr < 0x8000000)
|
||||
faddr += SPI_FLASH_BASE;
|
||||
if (get_seg_id(faddr, 0x100) == SEG_ID_FLASH) { // указывает в Flash?
|
||||
// будем пробовать грузить
|
||||
if (get_seg_id(faddr, 0x100) == SEG_ID_FLASH) {
|
||||
imagenum = 0;
|
||||
imgnum = 0;
|
||||
} else {
|
||||
|
@ -499,7 +623,7 @@ LOCAL int BOOT_RAM_TEXT_SECTION loadUserImges(int imgnum) {
|
|||
break;
|
||||
};
|
||||
} else {
|
||||
imagenum = -1; // нет записей image
|
||||
imagenum = -1;
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
@ -564,7 +688,7 @@ LOCAL void BOOT_RAM_TEXT_SECTION EnterImage15(int flg) {
|
|||
else
|
||||
DBG_8195A("\r===== Enter SRAM-Boot %d ====\n", flg);
|
||||
#if CONFIG_DEBUG_LOG > 1
|
||||
DBG_8195A("CPU CLK: %d Hz, SOC FUNC EN: %p\r\n", HalGetCpuClk(),
|
||||
DBG_8195A("CPU CLK: %d Hz, SOC FUNC EN: %p\n", HalGetCpuClk(),
|
||||
HAL_PERI_ON_READ32(REG_SOC_FUNC_EN));
|
||||
#endif
|
||||
uint8 ChipId = _Get_ChipId();
|
||||
|
@ -572,27 +696,24 @@ LOCAL void BOOT_RAM_TEXT_SECTION EnterImage15(int flg) {
|
|||
//----- SDRAM Off
|
||||
SDR_PIN_FCTRL(OFF);
|
||||
LDO25M_CTRL(OFF);
|
||||
HAL_PERI_ON_WRITE32(REG_SOC_FUNC_EN, HAL_PERI_ON_READ32(REG_SOC_FUNC_EN) | BIT(21)); // Flag SDRAM Init
|
||||
HAL_PERI_ON_WRITE32(REG_SOC_FUNC_EN, HAL_PERI_ON_READ32(REG_SOC_FUNC_EN) | BIT(21)); // Flag SDRAM Init or None
|
||||
} else {
|
||||
//----- SDRAM On
|
||||
LDO25M_CTRL(ON);
|
||||
HAL_SYS_CTRL_WRITE32(REG_SYS_REGU_CTRL0,
|
||||
(HAL_SYS_CTRL_READ32(REG_SYS_REGU_CTRL0) & 0xfffff) | BIT_SYS_REGU_LDO25M_ADJ(0x0e));
|
||||
SDR_PIN_FCTRL(ON);
|
||||
sdr_preinit();
|
||||
|
||||
};
|
||||
if (!InitSpic(SpicDualBitMode)) {
|
||||
DBG_8195A("Spic Init Error!\n");
|
||||
DBG_8195A("Spic Init fail!\n");
|
||||
RtlConsolRam();
|
||||
};
|
||||
if ((HAL_PERI_ON_READ32(REG_SOC_FUNC_EN) & BIT(21)) == 0) { // Flag SDRAM Init?
|
||||
// extern DRAM_DEVICE_INFO SdrDramInfo_rom; // 50 MHz
|
||||
if (!SdrControllerInit_rom(&SdrDramInfo)) { // 100 MHz
|
||||
DBG_8195A("SDR Controller Init fail!\n");
|
||||
if ((HAL_PERI_ON_READ32(REG_SOC_FUNC_EN) & BIT(21)) == 0) { // Flag SDRAM No ReInit?
|
||||
if(!sdr_init_from_flash()) {
|
||||
DBG_8195A("SDR Init fail!\n");
|
||||
RtlConsolRam();
|
||||
}
|
||||
#if 0 // Test SDRAM
|
||||
else {
|
||||
uint32 *ptr = SDR_SDRAM_BASE;
|
||||
uint32 *ptr = (uint32 *)SDR_SDRAM_BASE;
|
||||
uint32 tt = 0x55AA55AA;
|
||||
for (int i = 0; i < 512 * 1024; i++) {
|
||||
ptr[i] = tt++;
|
||||
|
@ -605,9 +726,9 @@ LOCAL void BOOT_RAM_TEXT_SECTION EnterImage15(int flg) {
|
|||
}
|
||||
tt++;
|
||||
};
|
||||
DBG_8195A("SDR tst end\n");
|
||||
DBG_8195A("SDR test end\n");
|
||||
};
|
||||
#endif // test
|
||||
#endif // Test SDRAM
|
||||
#ifdef CONFIG_SDR_EN
|
||||
// Тест и ожидание загрузки Jlink-ом sdram.bin (~7 sec)
|
||||
if(flg && *((uint32 *)0x1FFF0000) == 0x12345678) {
|
||||
|
@ -615,9 +736,11 @@ LOCAL void BOOT_RAM_TEXT_SECTION EnterImage15(int flg) {
|
|||
uint32 tt = 0x03ffffff; // ~7 sec
|
||||
DBG_8195A("Waiting for SDRAM to load...\n");
|
||||
while(*((volatile uint32 *)0x1FFF0000) == 0x87654321 && tt--);
|
||||
if(*((volatile uint32 *)0x1FFF0000) == 1)
|
||||
DBG_8195A("SDRAM load ok\n");
|
||||
}
|
||||
#endif // test
|
||||
HAL_PERI_ON_WRITE32(REG_SOC_FUNC_EN, HAL_PERI_ON_READ32(REG_SOC_FUNC_EN) | BIT(21)); // Flag SDRAM Init
|
||||
#endif // CONFIG_SDR_EN
|
||||
HAL_PERI_ON_WRITE32(REG_SOC_FUNC_EN, HAL_PERI_ON_READ32(REG_SOC_FUNC_EN) | BIT(21)); // Flag SDRAM No ReInit
|
||||
};
|
||||
|
||||
if (!flg)
|
||||
|
|
|
@ -171,12 +171,16 @@ extern HAL_GPIO_ADAPTER gBoot_Gpio_Adapter;
|
|||
uint8 ChipId = HalGetChipId();
|
||||
if (ChipId >= CHIP_ID_8195AM) {
|
||||
#ifdef CONFIG_SDR_EN
|
||||
if((HAL_PERI_ON_READ32(REG_SOC_FUNC_EN) & BIT(21)) == 0) { // уже загружена?
|
||||
if((HAL_PERI_ON_READ32(REG_SOC_FUNC_EN) & BIT(21)) == 0) { // ещё не инициализирована?
|
||||
SdrCtrlInit();
|
||||
if(SdrControllerInit()) {
|
||||
if(!SdrControllerInit()) {
|
||||
DBG_8195A("SDR Controller Init fail!\n");
|
||||
};
|
||||
};
|
||||
} else if (CPU_CLOCK_SEL_DIV5_3) { // clk 5/6
|
||||
if(((HAL_PERI_ON_READ32(REG_PESOC_MEM_CTRL) >> BIT_SHIFT_PESOC_SDR_DDL_CTRL) & 0xFF) < 0x15) {
|
||||
SDR_DDL_FCTRL(0x23);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// clear SDRAM bss
|
||||
extern uint8 __sdram_bss_start__[];
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef RTL8195A_OTG_ZERO_H
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
#include "basic_types.h"
|
||||
#include <osdep_api.h>
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _HAL_OTG_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _RTL8195A_OTG_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _RTL8195A_ADC_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _RTL8195A_I2C_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _RTL8195A_MII_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _RTL8195A_SSI_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _RTL8195A_TIMER_H_
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||||
*
|
||||
* This module is a confidential and proprietary property of RealTek and
|
||||
* possession or use of this module requires written permission of RealTek.
|
||||
*/
|
||||
|
||||
#ifndef _RTL8195A_USB_H_
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue