diff options
Diffstat (limited to 'utils/regtools/headergen_v2.cpp')
-rw-r--r-- | utils/regtools/headergen_v2.cpp | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/utils/regtools/headergen_v2.cpp b/utils/regtools/headergen_v2.cpp index 22a99b7df4..512dd41f0a 100644 --- a/utils/regtools/headergen_v2.cpp +++ b/utils/regtools/headergen_v2.cpp | |||
@@ -558,6 +558,8 @@ protected: | |||
558 | MN_FIELD_READ, /// register's field read | 558 | MN_FIELD_READ, /// register's field read |
559 | MN_FIELD_READX, /// register value field read | 559 | MN_FIELD_READX, /// register value field read |
560 | MN_REG_WRITE, /// register write | 560 | MN_REG_WRITE, /// register write |
561 | MN_REG_SET, /// register set | ||
562 | MN_REG_CLEAR, /// register clear | ||
561 | MN_REG_CLEAR_SET, /// register clear then set | 563 | MN_REG_CLEAR_SET, /// register clear then set |
562 | MN_FIELD_WRITE, /// register's field(s) write | 564 | MN_FIELD_WRITE, /// register's field(s) write |
563 | MN_FIELD_WRITEX, /// register's field(s) write | 565 | MN_FIELD_WRITEX, /// register's field(s) write |
@@ -1386,13 +1388,54 @@ bool common_generator::generate_macro_header(error_context_t& ectx) | |||
1386 | { | 1388 | { |
1387 | std::string set_var = sct_variant(MN_FIELD_SET); | 1389 | std::string set_var = sct_variant(MN_FIELD_SET); |
1388 | std::string clr_var = sct_variant(MN_FIELD_CLEAR); | 1390 | std::string clr_var = sct_variant(MN_FIELD_CLEAR); |
1391 | |||
1392 | /* print REG_SET */ | ||
1393 | std::string reg_set = macro_name(MN_REG_SET); | ||
1394 | fout << "/** " << reg_set << "\n"; | ||
1395 | fout << " *\n"; | ||
1396 | fout << " * usage: " << reg_set << "(register, set_value)\n"; | ||
1397 | fout << " *\n"; | ||
1398 | fout << " * effect: set some bits using " << set_var << " variant\n"; | ||
1399 | fout << " * note: register must be fully qualified if indexed\n"; | ||
1400 | fout << " *\n"; | ||
1401 | fout << " * example: " << reg_set << "(ICOLL_CTRL, 0x42)\n"; | ||
1402 | fout << " * " << reg_set << "(ICOLL_ENABLE(3), 0x37)\n"; | ||
1403 | fout << " */\n"; | ||
1404 | fout << "#define " << reg_set << "(name, sval) " | ||
1405 | << reg_set << "_(" << macro_name(MN_GET_VARIANT) << "(name, " | ||
1406 | << variant_xfix(set_var, true) << ", " << variant_xfix(set_var, false) | ||
1407 | << "), sval)\n"; | ||
1408 | fout << "#define " << reg_set << "_(sname, sval) " | ||
1409 | << macro_name(MN_REG_WRITE) << "(sname, sval)\n"; | ||
1410 | fout << "\n"; | ||
1411 | |||
1412 | /* print REG_CLR */ | ||
1413 | std::string reg_clr = macro_name(MN_REG_CLEAR); | ||
1414 | fout << "/** " << reg_clr << "\n"; | ||
1415 | fout << " *\n"; | ||
1416 | fout << " * usage: " << reg_clr << "(register, clr_value)\n"; | ||
1417 | fout << " *\n"; | ||
1418 | fout << " * effect: clear some bits using " << clr_var << " variant\n"; | ||
1419 | fout << " * note: register must be fully qualified if indexed\n"; | ||
1420 | fout << " *\n"; | ||
1421 | fout << " * example: " << reg_clr << "(ICOLL_CTRL, 0x42)\n"; | ||
1422 | fout << " * " << reg_clr << "(ICOLL_ENABLE(3), 0x37)\n"; | ||
1423 | fout << " */\n"; | ||
1424 | fout << "#define " << reg_clr << "(name, cval) " | ||
1425 | << reg_clr << "_(" << macro_name(MN_GET_VARIANT) << "(name, " | ||
1426 | << variant_xfix(clr_var, true) << ", " << variant_xfix(clr_var, false) | ||
1427 | << "), cval)\n"; | ||
1428 | fout << "#define " << reg_clr << "_(cname, cval) " | ||
1429 | << macro_name(MN_REG_WRITE) << "(cname, cval)\n"; | ||
1430 | fout << "\n"; | ||
1431 | |||
1389 | /* print REG_CS */ | 1432 | /* print REG_CS */ |
1390 | std::string reg_cs = macro_name(MN_REG_CLEAR_SET); | 1433 | std::string reg_cs = macro_name(MN_REG_CLEAR_SET); |
1391 | fout << "/** " << reg_cs << "\n"; | 1434 | fout << "/** " << reg_cs << "\n"; |
1392 | fout << " *\n"; | 1435 | fout << " *\n"; |
1393 | fout << " * usage: " << reg_cs << "(register, clear_value, set_value)\n"; | 1436 | fout << " * usage: " << reg_cs << "(register, clear_value, set_value)\n"; |
1394 | fout << " *\n"; | 1437 | fout << " *\n"; |
1395 | fout << " * effect: clear some bits using " << set_var << " variant and then set some using " << set_var << " variant\n"; | 1438 | fout << " * effect: clear some bits using " << clr_var << " variant and then set some using " << set_var << " variant\n"; |
1396 | fout << " * note: register must be fully qualified if indexed\n"; | 1439 | fout << " * note: register must be fully qualified if indexed\n"; |
1397 | fout << " *\n"; | 1440 | fout << " *\n"; |
1398 | fout << " * example: " << reg_cs << "(ICOLL_CTRL, 0xff, 0x42)\n"; | 1441 | fout << " * example: " << reg_cs << "(ICOLL_CTRL, 0xff, 0x42)\n"; |
@@ -1607,6 +1650,8 @@ class jz_generator : public common_generator | |||
1607 | case MN_FIELD_READ: return "jz_readf"; | 1650 | case MN_FIELD_READ: return "jz_readf"; |
1608 | case MN_FIELD_READX: return "jz_vreadf"; | 1651 | case MN_FIELD_READX: return "jz_vreadf"; |
1609 | case MN_REG_WRITE: return "jz_write"; | 1652 | case MN_REG_WRITE: return "jz_write"; |
1653 | case MN_REG_SET: return "jz_set"; | ||
1654 | case MN_REG_CLEAR: return "jz_clr"; | ||
1610 | case MN_FIELD_WRITE: return "jz_writef"; | 1655 | case MN_FIELD_WRITE: return "jz_writef"; |
1611 | case MN_FIELD_OVERWRITE: return "jz_overwritef"; | 1656 | case MN_FIELD_OVERWRITE: return "jz_overwritef"; |
1612 | case MN_FIELD_WRITEX: return "jz_vwritef"; | 1657 | case MN_FIELD_WRITEX: return "jz_vwritef"; |
@@ -1765,6 +1810,8 @@ class imx_generator : public common_generator | |||
1765 | case MN_FIELD_READ: return "BF_RD"; | 1810 | case MN_FIELD_READ: return "BF_RD"; |
1766 | case MN_FIELD_READX: return "BF_RDX"; | 1811 | case MN_FIELD_READX: return "BF_RDX"; |
1767 | case MN_REG_WRITE: return "REG_WR"; | 1812 | case MN_REG_WRITE: return "REG_WR"; |
1813 | case MN_REG_SET: return ""; // no macro for this | ||
1814 | case MN_REG_CLEAR: return ""; // no macro for this | ||
1768 | case MN_FIELD_WRITE: return "BF_WR"; | 1815 | case MN_FIELD_WRITE: return "BF_WR"; |
1769 | case MN_FIELD_OVERWRITE: return "BF_WR_ALL"; | 1816 | case MN_FIELD_OVERWRITE: return "BF_WR_ALL"; |
1770 | case MN_FIELD_WRITEX: return "BF_WRX"; | 1817 | case MN_FIELD_WRITEX: return "BF_WRX"; |