117 lines
2.0 KiB
C
117 lines
2.0 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* (C) Copyright 2018-2020
|
|
* Allwinner Technology Co., Ltd. <www.allwinnertech.com>
|
|
* wangwei <wangwei@allwinnertech.com>
|
|
*
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <config.h>
|
|
#include <command.h>
|
|
#include <asm/arch/timer.h>
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
struct timer_list timer0_t;
|
|
struct timer_list timer1_t;
|
|
static int timer_test_flag[2];
|
|
|
|
|
|
static void timer0_test_func(void *p)
|
|
{
|
|
struct timer_list *timer_t;
|
|
|
|
timer_t = (struct timer_list *)p;
|
|
debug("timer number = %d\n", timer_t->timer_num);
|
|
printf("this is timer test\n");
|
|
|
|
del_timer(timer_t);
|
|
timer_test_flag[0] = 0;
|
|
|
|
return;
|
|
}
|
|
|
|
int do_timer_test(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
{
|
|
int base_count = 1000;
|
|
|
|
if(timer_test_flag[0])
|
|
{
|
|
printf("can not test timer 0 now\n");
|
|
|
|
return -1;
|
|
}
|
|
|
|
if(argc == 2)
|
|
{
|
|
base_count = simple_strtol(argv[1], NULL, 10);
|
|
}
|
|
timer0_t.data = (unsigned long)&timer0_t;
|
|
timer0_t.expires = base_count;
|
|
timer0_t.function = timer0_test_func;
|
|
|
|
init_timer(&timer0_t);
|
|
add_timer(&timer0_t);
|
|
timer_test_flag[0] = 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
U_BOOT_CMD(
|
|
timer_test, 2, 0, do_timer_test,
|
|
"do a timer and int test",
|
|
"[delay time]"
|
|
);
|
|
|
|
static void timer1_test_func(void *p)
|
|
{
|
|
struct timer_list *timer_t;
|
|
|
|
timer_t = (struct timer_list *)p;
|
|
debug("timer number = %d\n", timer_t->timer_num);
|
|
printf("this is timer test\n");
|
|
|
|
del_timer(timer_t);
|
|
timer_test_flag[1] = 0;
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
int do_timer_test1(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
{
|
|
int base_count = 1000;
|
|
|
|
if(timer_test_flag[1])
|
|
{
|
|
printf("can not test timer 1 now\n");
|
|
|
|
return -1;
|
|
}
|
|
|
|
if(argc == 2)
|
|
{
|
|
base_count = simple_strtol(argv[1], NULL, 10);
|
|
}
|
|
timer1_t.data = (unsigned long)&timer1_t;
|
|
timer1_t.expires = base_count;
|
|
timer1_t.function = timer1_test_func;
|
|
|
|
init_timer(&timer1_t);
|
|
add_timer(&timer1_t);
|
|
|
|
timer_test_flag[1] = 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
U_BOOT_CMD(
|
|
timer_test1, 2, 0, do_timer_test1,
|
|
"do a timer and int test",
|
|
"[delay time]"
|
|
);
|