Lines Matching refs:blk_num
993 static bool mlxbf_pmc_valid_range(unsigned int blk_num, u32 offset) in mlxbf_pmc_valid_range() argument
996 (offset + MLXBF_PMC_REG_SIZE <= pmc->block[blk_num].blk_size)) in mlxbf_pmc_valid_range()
1127 static int mlxbf_pmc_config_l3_counters(unsigned int blk_num, bool enable, bool reset) in mlxbf_pmc_config_l3_counters() argument
1136 return mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_config_l3_counters()
1142 static int mlxbf_pmc_program_l3_counter(unsigned int blk_num, u32 cnt_num, u32 evt) in mlxbf_pmc_program_l3_counter() argument
1149 if (mlxbf_pmc_config_l3_counters(blk_num, false, false)) in mlxbf_pmc_program_l3_counter()
1155 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_l3_counter()
1160 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_l3_counter()
1206 static int mlxbf_pmc_program_crspace_counter(unsigned int blk_num, u32 cnt_num, u32 evt) in mlxbf_pmc_program_crspace_counter() argument
1212 addr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_crspace_counter()
1230 static int mlxbf_pmc_clear_crspace_counter(unsigned int blk_num, u32 cnt_num) in mlxbf_pmc_clear_crspace_counter() argument
1234 addr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_clear_crspace_counter()
1235 MLXBF_PMC_CRSPACE_PERFMON_VAL0(pmc->block[blk_num].counters) + in mlxbf_pmc_clear_crspace_counter()
1242 static int mlxbf_pmc_program_counter(unsigned int blk_num, u32 cnt_num, u32 evt, bool is_l3) in mlxbf_pmc_program_counter() argument
1246 if (cnt_num >= pmc->block[blk_num].counters) in mlxbf_pmc_program_counter()
1250 return mlxbf_pmc_program_l3_counter(blk_num, cnt_num, evt); in mlxbf_pmc_program_counter()
1252 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) in mlxbf_pmc_program_counter()
1253 return mlxbf_pmc_program_crspace_counter(blk_num, cnt_num, in mlxbf_pmc_program_counter()
1271 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_counter()
1285 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_counter()
1296 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_counter()
1305 static int mlxbf_pmc_read_l3_counter(unsigned int blk_num, u32 cnt_num, u64 *result) in mlxbf_pmc_read_l3_counter() argument
1311 status = mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_counter()
1319 status = mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_counter()
1336 static int mlxbf_pmc_read_crspace_counter(unsigned int blk_num, u32 cnt_num, u64 *result) in mlxbf_pmc_read_crspace_counter() argument
1341 status = mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_crspace_counter()
1342 MLXBF_PMC_CRSPACE_PERFMON_VAL0(pmc->block[blk_num].counters) + in mlxbf_pmc_read_crspace_counter()
1353 static int mlxbf_pmc_read_counter(unsigned int blk_num, u32 cnt_num, bool is_l3, u64 *result) in mlxbf_pmc_read_counter() argument
1359 if (cnt_num >= pmc->block[blk_num].counters) in mlxbf_pmc_read_counter()
1363 return mlxbf_pmc_read_l3_counter(blk_num, cnt_num, result); in mlxbf_pmc_read_counter()
1365 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) in mlxbf_pmc_read_counter()
1366 return mlxbf_pmc_read_crspace_counter(blk_num, cnt_num, result); in mlxbf_pmc_read_counter()
1370 pmc->block[blk_num].counters * MLXBF_PMC_REG_SIZE; in mlxbf_pmc_read_counter()
1378 status = mlxbf_pmc_write(pmc->block[blk_num].mmio_base + perfcfg_offset, in mlxbf_pmc_read_counter()
1385 return mlxbf_pmc_read(pmc->block[blk_num].mmio_base + perfval_offset, in mlxbf_pmc_read_counter()
1390 static int mlxbf_pmc_read_l3_event(unsigned int blk_num, u32 cnt_num, u64 *result) in mlxbf_pmc_read_l3_event() argument
1399 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_event()
1404 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_event()
1442 static int mlxbf_pmc_read_crspace_event(unsigned int blk_num, u32 cnt_num, u64 *result) in mlxbf_pmc_read_crspace_event() argument
1448 addr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_crspace_event()
1465 static int mlxbf_pmc_read_event(unsigned int blk_num, u32 cnt_num, bool is_l3, u64 *result) in mlxbf_pmc_read_event() argument
1470 if (cnt_num >= pmc->block[blk_num].counters) in mlxbf_pmc_read_event()
1474 return mlxbf_pmc_read_l3_event(blk_num, cnt_num, result); in mlxbf_pmc_read_event()
1476 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) in mlxbf_pmc_read_event()
1477 return mlxbf_pmc_read_crspace_event(blk_num, cnt_num, result); in mlxbf_pmc_read_event()
1481 pmc->block[blk_num].counters * MLXBF_PMC_REG_SIZE; in mlxbf_pmc_read_event()
1489 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + perfcfg_offset, in mlxbf_pmc_read_event()
1494 if (mlxbf_pmc_read(pmc->block[blk_num].mmio_base + perfval_offset, in mlxbf_pmc_read_event()
1504 static int mlxbf_pmc_read_reg(unsigned int blk_num, u32 offset, u64 *result) in mlxbf_pmc_read_reg() argument
1508 if ((strstr(pmc->block_name[blk_num], "ecc")) || in mlxbf_pmc_read_reg()
1509 (strstr(pmc->block_name[blk_num], "clock_measure"))) { in mlxbf_pmc_read_reg()
1510 if (mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_read_reg()
1518 if (mlxbf_pmc_valid_range(blk_num, offset)) in mlxbf_pmc_read_reg()
1519 return mlxbf_pmc_read(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_read_reg()
1526 static int mlxbf_pmc_write_reg(unsigned int blk_num, u32 offset, u64 data) in mlxbf_pmc_write_reg() argument
1528 if (strstr(pmc->block_name[blk_num], "clock_measure")) in mlxbf_pmc_write_reg()
1531 if (strstr(pmc->block_name[blk_num], "ecc")) { in mlxbf_pmc_write_reg()
1532 return mlxbf_pmc_write(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_write_reg()
1536 if (mlxbf_pmc_valid_range(blk_num, offset)) in mlxbf_pmc_write_reg()
1537 return mlxbf_pmc_write(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_write_reg()
1549 unsigned int blk_num, cnt_num; in mlxbf_pmc_counter_show() local
1554 blk_num = attr_counter->nr; in mlxbf_pmc_counter_show()
1557 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_counter_show()
1560 if ((pmc->block[blk_num].type == MLXBF_PMC_TYPE_COUNTER) || in mlxbf_pmc_counter_show()
1561 (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE)) { in mlxbf_pmc_counter_show()
1562 if (mlxbf_pmc_read_counter(blk_num, cnt_num, is_l3, &value)) in mlxbf_pmc_counter_show()
1564 } else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_REGISTER) { in mlxbf_pmc_counter_show()
1565 offset = mlxbf_pmc_get_event_num(pmc->block_name[blk_num], in mlxbf_pmc_counter_show()
1569 if (mlxbf_pmc_read_reg(blk_num, offset, &value)) in mlxbf_pmc_counter_show()
1584 unsigned int blk_num, cnt_num, data; in mlxbf_pmc_counter_store() local
1590 blk_num = attr_counter->nr; in mlxbf_pmc_counter_store()
1598 if (!(strstr(pmc->block_name[blk_num], "ecc")) && data) in mlxbf_pmc_counter_store()
1602 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_counter_store()
1605 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_COUNTER) { in mlxbf_pmc_counter_store()
1606 err = mlxbf_pmc_read_event(blk_num, cnt_num, is_l3, &evt_num); in mlxbf_pmc_counter_store()
1609 err = mlxbf_pmc_program_counter(blk_num, cnt_num, evt_num, in mlxbf_pmc_counter_store()
1613 } else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_REGISTER) { in mlxbf_pmc_counter_store()
1614 offset = mlxbf_pmc_get_event_num(pmc->block_name[blk_num], in mlxbf_pmc_counter_store()
1618 err = mlxbf_pmc_write_reg(blk_num, offset, data); in mlxbf_pmc_counter_store()
1621 } else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) { in mlxbf_pmc_counter_store()
1624 err = mlxbf_pmc_clear_crspace_counter(blk_num, cnt_num); in mlxbf_pmc_counter_store()
1637 unsigned int blk_num, cnt_num; in mlxbf_pmc_event_show() local
1643 blk_num = attr_event->nr; in mlxbf_pmc_event_show()
1646 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_event_show()
1649 err = mlxbf_pmc_read_event(blk_num, cnt_num, is_l3, &evt_num); in mlxbf_pmc_event_show()
1653 evt_name = mlxbf_pmc_get_event_name(pmc->block_name[blk_num], evt_num); in mlxbf_pmc_event_show()
1667 unsigned int blk_num, cnt_num; in mlxbf_pmc_event_store() local
1672 blk_num = attr_event->nr; in mlxbf_pmc_event_store()
1676 evt_num = mlxbf_pmc_get_event_num(pmc->block_name[blk_num], in mlxbf_pmc_event_store()
1686 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_event_store()
1689 err = mlxbf_pmc_program_counter(blk_num, cnt_num, evt_num, is_l3); in mlxbf_pmc_event_store()
1705 unsigned int blk_num, i, len = 0; in mlxbf_pmc_event_list_show() local
1709 blk_num = attr_event_list->nr; in mlxbf_pmc_event_list_show()
1711 events = mlxbf_pmc_event_list(pmc->block_name[blk_num], &size); in mlxbf_pmc_event_list_show()
1733 unsigned int blk_num, value; in mlxbf_pmc_enable_show() local
1736 blk_num = attr_enable->nr; in mlxbf_pmc_enable_show()
1738 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) { in mlxbf_pmc_enable_show()
1739 if (mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_enable_show()
1740 MLXBF_PMC_CRSPACE_PERFMON_CTL(pmc->block[blk_num].counters), in mlxbf_pmc_enable_show()
1746 if (mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_enable_show()
1764 unsigned int en, blk_num; in mlxbf_pmc_enable_store() local
1768 blk_num = attr_enable->nr; in mlxbf_pmc_enable_store()
1774 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) { in mlxbf_pmc_enable_store()
1775 err = mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_enable_store()
1776 MLXBF_PMC_CRSPACE_PERFMON_CTL(pmc->block[blk_num].counters), in mlxbf_pmc_enable_store()
1786 mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_enable_store()
1787 MLXBF_PMC_CRSPACE_PERFMON_CTL(pmc->block[blk_num].counters), in mlxbf_pmc_enable_store()
1793 err = mlxbf_pmc_config_l3_counters(blk_num, false, !!en); in mlxbf_pmc_enable_store()
1798 err = mlxbf_pmc_config_l3_counters(blk_num, true, false); in mlxbf_pmc_enable_store()
1813 unsigned int blk_num; in mlxbf_pmc_count_clock_show() local
1816 blk_num = attr_count_clock->nr; in mlxbf_pmc_count_clock_show()
1818 if (mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_count_clock_show()
1819 MLXBF_PMC_CRSPACE_PERFMON_COUNT_CLOCK(pmc->block[blk_num].counters), in mlxbf_pmc_count_clock_show()
1833 unsigned int blk_num; in mlxbf_pmc_count_clock_store() local
1837 blk_num = attr_count_clock->nr; in mlxbf_pmc_count_clock_store()
1843 mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_count_clock_store()
1844 MLXBF_PMC_CRSPACE_PERFMON_COUNT_CLOCK(pmc->block[blk_num].counters), in mlxbf_pmc_count_clock_store()
1851 static int mlxbf_pmc_init_perftype_counter(struct device *dev, unsigned int blk_num) in mlxbf_pmc_init_perftype_counter() argument
1856 if (!mlxbf_pmc_event_supported(pmc->block_name[blk_num])) in mlxbf_pmc_init_perftype_counter()
1860 attr = &pmc->block[blk_num].attr_event_list; in mlxbf_pmc_init_perftype_counter()
1864 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
1868 pmc->block[blk_num].block_attr[i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
1872 if (strstr(pmc->block_name[blk_num], "l3cache") || in mlxbf_pmc_init_perftype_counter()
1873 ((pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE))) { in mlxbf_pmc_init_perftype_counter()
1874 attr = &pmc->block[blk_num].attr_enable; in mlxbf_pmc_init_perftype_counter()
1879 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
1884 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
1888 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) { in mlxbf_pmc_init_perftype_counter()
1890 attr = &pmc->block[blk_num].attr_count_clock; in mlxbf_pmc_init_perftype_counter()
1894 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
1899 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
1903 pmc->block[blk_num].attr_counter = devm_kcalloc( in mlxbf_pmc_init_perftype_counter()
1904 dev, pmc->block[blk_num].counters, in mlxbf_pmc_init_perftype_counter()
1906 if (!pmc->block[blk_num].attr_counter) in mlxbf_pmc_init_perftype_counter()
1909 pmc->block[blk_num].attr_event = devm_kcalloc( in mlxbf_pmc_init_perftype_counter()
1910 dev, pmc->block[blk_num].counters, in mlxbf_pmc_init_perftype_counter()
1912 if (!pmc->block[blk_num].attr_event) in mlxbf_pmc_init_perftype_counter()
1916 for (j = 0; j < pmc->block[blk_num].counters; ++j) { in mlxbf_pmc_init_perftype_counter()
1917 attr = &pmc->block[blk_num].attr_counter[j]; in mlxbf_pmc_init_perftype_counter()
1923 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
1927 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
1930 attr = &pmc->block[blk_num].attr_event[j]; in mlxbf_pmc_init_perftype_counter()
1936 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
1940 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
1948 static int mlxbf_pmc_init_perftype_reg(struct device *dev, unsigned int blk_num) in mlxbf_pmc_init_perftype_reg() argument
1955 events = mlxbf_pmc_event_list(pmc->block_name[blk_num], &count); in mlxbf_pmc_init_perftype_reg()
1959 pmc->block[blk_num].attr_event = devm_kcalloc( in mlxbf_pmc_init_perftype_reg()
1961 if (!pmc->block[blk_num].attr_event) in mlxbf_pmc_init_perftype_reg()
1966 attr = &pmc->block[blk_num].attr_event[count]; in mlxbf_pmc_init_perftype_reg()
1971 attr->nr = blk_num; in mlxbf_pmc_init_perftype_reg()
1976 pmc->block[blk_num].block_attr[i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_reg()
1985 static int mlxbf_pmc_create_groups(struct device *dev, unsigned int blk_num) in mlxbf_pmc_create_groups() argument
1990 if ((pmc->block[blk_num].type == MLXBF_PMC_TYPE_COUNTER) || in mlxbf_pmc_create_groups()
1991 (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE)) in mlxbf_pmc_create_groups()
1992 err = mlxbf_pmc_init_perftype_counter(dev, blk_num); in mlxbf_pmc_create_groups()
1993 else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_REGISTER) in mlxbf_pmc_create_groups()
1994 err = mlxbf_pmc_init_perftype_reg(dev, blk_num); in mlxbf_pmc_create_groups()
2002 pmc->block[blk_num].block_attr_grp.attrs = pmc->block[blk_num].block_attr; in mlxbf_pmc_create_groups()
2003 pmc->block[blk_num].block_attr_grp.name = devm_kasprintf( in mlxbf_pmc_create_groups()
2004 dev, GFP_KERNEL, pmc->block_name[blk_num]); in mlxbf_pmc_create_groups()
2005 if (!pmc->block[blk_num].block_attr_grp.name) in mlxbf_pmc_create_groups()
2007 pmc->groups[pmc->group_num] = &pmc->block[blk_num].block_attr_grp; in mlxbf_pmc_create_groups()