Compare commits
6 commits
ca814c5d13
...
f9cafce309
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f9cafce309 | ||
|
|
94b0583750 | ||
|
|
c84569a7c2 | ||
|
|
60d3d37f86 | ||
|
|
87930f06d8 | ||
|
|
e4ba650d5c |
3 changed files with 28 additions and 21 deletions
2
altera.c
2
altera.c
|
|
@ -483,7 +483,7 @@ int altera_set_register(struct command *cmd, const struct command_par *par,
|
|||
}
|
||||
if (e)
|
||||
return parser_error_message(cmd, e);
|
||||
if (!e && how & alt_cmd_save)
|
||||
if (how & alt_cmd_save)
|
||||
ssp_response = r.u;
|
||||
const char *fmt;
|
||||
int ccsize = cc&0xffff4000 ? 8 : 4;
|
||||
|
|
|
|||
45
dorn.c
45
dorn.c
|
|
@ -37,30 +37,34 @@ static const struct keywords dorn_trigger_kw[] = {
|
|||
int dorn_trigger(struct command *cmd, const struct command_par *par)
|
||||
{
|
||||
unsigned int a = (unsigned int)par->par;
|
||||
error_msg_t e = parse_index(cmd, &a, 3, 11, 1);
|
||||
error_msg_t e = parse_index(cmd, &a, 3, 11, optional_expression | optional_in_brackets);
|
||||
if (e)
|
||||
return parser_error_message(cmd, e);
|
||||
return altera_set_register(cmd, par, dorn_trigger_kw, 0, a, "trigger");
|
||||
}
|
||||
|
||||
static
|
||||
static inline
|
||||
error_msg_t parse_channel(struct command *cmd, unsigned int *a, int c, int m, int b)
|
||||
{
|
||||
error_msg_t e = parse_index(cmd, a, 3, 11, 1);
|
||||
error_msg_t e = parse_index(cmd, a, 3, 11,
|
||||
optional_expression | optional_close | optional_in_brackets);
|
||||
if (!e)
|
||||
e = parse_index(cmd, a, 63, c, 2);
|
||||
e = parse_index(cmd, a, 63, c,
|
||||
optional_brackets | (m ? optional_close : 0) | optional_open);
|
||||
if (!e && m)
|
||||
e = parse_index(cmd, a, m, b, 2);
|
||||
e = parse_index(cmd, a, m, b,
|
||||
optional_brackets | optional_open);
|
||||
return e;
|
||||
}
|
||||
|
||||
int dorn_l1(struct command *cmd, const struct command_par *par)
|
||||
{
|
||||
unsigned int a = (unsigned int)par->par;
|
||||
unsigned int how = (unsigned int)par->par;
|
||||
unsigned int a = how & 0xffff;
|
||||
error_msg_t e = parse_channel(cmd, &a, 0, 0, 0);
|
||||
if (e)
|
||||
return parser_error_message(cmd, e);
|
||||
return altera_set_register(cmd, par, 0, alt_cmd_inj, a, "thres");
|
||||
return altera_set_register(cmd, par, 0, how, a, "thres");
|
||||
}
|
||||
|
||||
static const
|
||||
|
|
@ -72,33 +76,36 @@ struct keywords dorn_l2_kw[] = {
|
|||
|
||||
int dorn_l2(struct command *cmd, const struct command_par *par)
|
||||
{
|
||||
unsigned int a = (unsigned int)par->par;
|
||||
unsigned int how = (unsigned int)par->par;
|
||||
unsigned int a = how & 0xffff;
|
||||
error_msg_t e = parse_channel(cmd, &a, 4, 7, 1);
|
||||
if (e)
|
||||
return parser_error_message(cmd, e);
|
||||
return altera_set_register(cmd, par, dorn_l2_kw, alt_cmd_inj, a, "filter");
|
||||
return altera_set_register(cmd, par, dorn_l2_kw, how, a, "filter");
|
||||
}
|
||||
|
||||
int dorn_l3(struct command *cmd, const struct command_par *par)
|
||||
{
|
||||
unsigned int a = (unsigned int)par->par;
|
||||
unsigned int how = (unsigned int)par->par;
|
||||
unsigned int a = how & 0xffff;
|
||||
error_msg_t e = parse_channel(cmd, &a, 2, 3, 0);
|
||||
if (e)
|
||||
return parser_error_message(cmd, e);
|
||||
return altera_set_register(cmd, par, 0, alt_cmd_inj, a, "banana");
|
||||
return altera_set_register(cmd, par, 0, how, a, "banana");
|
||||
}
|
||||
|
||||
static const struct keywords dorn_commands[] = {
|
||||
CMD_KW("fifo", dorn_fifo, 255, (void*)(0xa080)),
|
||||
CMD_KW("enable", dorn_trigger, 255, (void*)(0xa008)),
|
||||
CMD_KW("thres", dorn_l1, 255, (void*)(0xa040)),
|
||||
CMD_KW("l1", dorn_l1, 255, (void*)(0xa040)),
|
||||
CMD_KW("filter", dorn_l2, 255, (void*)(0xa400)),
|
||||
CMD_KW("l2", dorn_l2, 255, (void*)(0xa400)),
|
||||
CMD_KW("a", dorn_l2, 255, (void*)(0xa400)),
|
||||
CMD_KW("b", dorn_l2, 255, (void*)(0xa401)),
|
||||
CMD_KW("banana", dorn_l3, 255, (void*)(0xa100)),
|
||||
CMD_KW("l3", dorn_l3, 255, (void*)(0xa100)),
|
||||
CMD_KW("thres", dorn_l1, 255, (void*)(0xe040|alt_cmd_inj)),
|
||||
CMD_KW("l1", dorn_l1, 255, (void*)(0xe040|alt_cmd_inj)),
|
||||
CMD_KW("filter", dorn_l2, 255, (void*)(0xe400|alt_cmd_inj)),
|
||||
CMD_KW("l2", dorn_l2, 255, (void*)(0xe400|alt_cmd_inj)),
|
||||
CMD_KW("a", dorn_l2, 255, (void*)(0xe400|alt_cmd_inj)),
|
||||
CMD_KW("b", dorn_l2, 255, (void*)(0xe401|alt_cmd_inj)),
|
||||
CMD_KW("ab", dorn_l2, 255, (void*)(0xe400|alt_cmd_inj|alt_cmd_double)),
|
||||
CMD_KW("banana", dorn_l3, 255, (void*)(0xe100|alt_cmd_inj)),
|
||||
CMD_KW("l3", dorn_l3, 255, (void*)(0xe100|alt_cmd_inj)),
|
||||
{"", {.par=&parser_unknown_command}}
|
||||
};
|
||||
|
||||
|
|
|
|||
2
parser.c
2
parser.c
|
|
@ -405,7 +405,7 @@ error_msg_t parse_expression_square(struct command *cmd, unsigned int *r, int op
|
|||
|
||||
error_msg_t parse_index(struct command *cmd, unsigned int *r, unsigned int m, unsigned int b, int optional)
|
||||
{
|
||||
unsigned int a;
|
||||
unsigned int a = 0;
|
||||
error_msg_t e = parse_expression_square(cmd, &a, optional);
|
||||
if (!e && a > m)
|
||||
e = &parser_value_error;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue