summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/regtools/headergen_v2.cpp49
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";