Lines Matching refs:blk_num

1097 static bool mlxbf_pmc_valid_range(unsigned int blk_num, u32 offset)  in mlxbf_pmc_valid_range()  argument
1100 (offset + MLXBF_PMC_REG_SIZE <= pmc->block[blk_num].blk_size)) in mlxbf_pmc_valid_range()
1246 static int mlxbf_pmc_config_l3_counters(unsigned int blk_num, bool enable, bool reset) in mlxbf_pmc_config_l3_counters() argument
1255 return mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_config_l3_counters()
1261 static int mlxbf_pmc_program_l3_counter(unsigned int blk_num, u32 cnt_num, u32 evt) in mlxbf_pmc_program_l3_counter() argument
1268 if (mlxbf_pmc_config_l3_counters(blk_num, false, false)) in mlxbf_pmc_program_l3_counter()
1274 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_l3_counter()
1279 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_l3_counter()
1325 static int mlxbf_pmc_program_crspace_counter(unsigned int blk_num, u32 cnt_num, u32 evt) in mlxbf_pmc_program_crspace_counter() argument
1331 addr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_crspace_counter()
1349 static int mlxbf_pmc_clear_crspace_counter(unsigned int blk_num, u32 cnt_num) in mlxbf_pmc_clear_crspace_counter() argument
1353 addr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_clear_crspace_counter()
1354 MLXBF_PMC_CRSPACE_PERFMON_VAL0(pmc->block[blk_num].counters) + in mlxbf_pmc_clear_crspace_counter()
1361 static int mlxbf_pmc_program_counter(unsigned int blk_num, u32 cnt_num, u32 evt, bool is_l3) in mlxbf_pmc_program_counter() argument
1365 if (cnt_num >= pmc->block[blk_num].counters) in mlxbf_pmc_program_counter()
1369 return mlxbf_pmc_program_l3_counter(blk_num, cnt_num, evt); in mlxbf_pmc_program_counter()
1371 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) in mlxbf_pmc_program_counter()
1372 return mlxbf_pmc_program_crspace_counter(blk_num, cnt_num, in mlxbf_pmc_program_counter()
1390 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_counter()
1404 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_counter()
1415 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_counter()
1424 static int mlxbf_pmc_read_l3_counter(unsigned int blk_num, u32 cnt_num, u64 *result) in mlxbf_pmc_read_l3_counter() argument
1430 status = mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_counter()
1438 status = mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_counter()
1455 static int mlxbf_pmc_read_crspace_counter(unsigned int blk_num, u32 cnt_num, u64 *result) in mlxbf_pmc_read_crspace_counter() argument
1460 status = mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_crspace_counter()
1461 MLXBF_PMC_CRSPACE_PERFMON_VAL0(pmc->block[blk_num].counters) + in mlxbf_pmc_read_crspace_counter()
1472 static int mlxbf_pmc_read_counter(unsigned int blk_num, u32 cnt_num, bool is_l3, u64 *result) in mlxbf_pmc_read_counter() argument
1478 if (cnt_num >= pmc->block[blk_num].counters) in mlxbf_pmc_read_counter()
1482 return mlxbf_pmc_read_l3_counter(blk_num, cnt_num, result); in mlxbf_pmc_read_counter()
1484 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) in mlxbf_pmc_read_counter()
1485 return mlxbf_pmc_read_crspace_counter(blk_num, cnt_num, result); in mlxbf_pmc_read_counter()
1489 pmc->block[blk_num].counters * MLXBF_PMC_REG_SIZE; in mlxbf_pmc_read_counter()
1497 status = mlxbf_pmc_write(pmc->block[blk_num].mmio_base + perfcfg_offset, in mlxbf_pmc_read_counter()
1504 return mlxbf_pmc_read(pmc->block[blk_num].mmio_base + perfval_offset, in mlxbf_pmc_read_counter()
1509 static int mlxbf_pmc_read_l3_event(unsigned int blk_num, u32 cnt_num, u64 *result) in mlxbf_pmc_read_l3_event() argument
1518 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_event()
1523 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_event()
1561 static int mlxbf_pmc_read_crspace_event(unsigned int blk_num, u32 cnt_num, u64 *result) in mlxbf_pmc_read_crspace_event() argument
1567 addr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_crspace_event()
1584 static int mlxbf_pmc_read_event(unsigned int blk_num, u32 cnt_num, bool is_l3, u64 *result) in mlxbf_pmc_read_event() argument
1589 if (cnt_num >= pmc->block[blk_num].counters) in mlxbf_pmc_read_event()
1593 return mlxbf_pmc_read_l3_event(blk_num, cnt_num, result); in mlxbf_pmc_read_event()
1595 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) in mlxbf_pmc_read_event()
1596 return mlxbf_pmc_read_crspace_event(blk_num, cnt_num, result); in mlxbf_pmc_read_event()
1600 pmc->block[blk_num].counters * MLXBF_PMC_REG_SIZE; in mlxbf_pmc_read_event()
1608 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + perfcfg_offset, in mlxbf_pmc_read_event()
1613 if (mlxbf_pmc_read(pmc->block[blk_num].mmio_base + perfval_offset, in mlxbf_pmc_read_event()
1623 static int mlxbf_pmc_read_reg(unsigned int blk_num, u32 offset, u64 *result) in mlxbf_pmc_read_reg() argument
1627 if ((strstr(pmc->block_name[blk_num], "ecc")) || in mlxbf_pmc_read_reg()
1628 (strstr(pmc->block_name[blk_num], "clock_measure"))) { in mlxbf_pmc_read_reg()
1629 if (mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_read_reg()
1637 if (mlxbf_pmc_valid_range(blk_num, offset)) in mlxbf_pmc_read_reg()
1638 return mlxbf_pmc_read(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_read_reg()
1645 static int mlxbf_pmc_write_reg(unsigned int blk_num, u32 offset, u64 data) in mlxbf_pmc_write_reg() argument
1647 if (strstr(pmc->block_name[blk_num], "clock_measure")) in mlxbf_pmc_write_reg()
1650 if (strstr(pmc->block_name[blk_num], "ecc")) { in mlxbf_pmc_write_reg()
1651 return mlxbf_pmc_write(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_write_reg()
1655 if (mlxbf_pmc_valid_range(blk_num, offset)) in mlxbf_pmc_write_reg()
1656 return mlxbf_pmc_write(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_write_reg()
1668 unsigned int blk_num, cnt_num; in mlxbf_pmc_counter_show() local
1673 blk_num = attr_counter->nr; in mlxbf_pmc_counter_show()
1676 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_counter_show()
1679 if ((pmc->block[blk_num].type == MLXBF_PMC_TYPE_COUNTER) || in mlxbf_pmc_counter_show()
1680 (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE)) { in mlxbf_pmc_counter_show()
1681 if (mlxbf_pmc_read_counter(blk_num, cnt_num, is_l3, &value)) in mlxbf_pmc_counter_show()
1683 } else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_REGISTER) { in mlxbf_pmc_counter_show()
1684 offset = mlxbf_pmc_get_event_num(pmc->block_name[blk_num], in mlxbf_pmc_counter_show()
1688 if (mlxbf_pmc_read_reg(blk_num, offset, &value)) in mlxbf_pmc_counter_show()
1703 unsigned int blk_num, cnt_num, data; in mlxbf_pmc_counter_store() local
1709 blk_num = attr_counter->nr; in mlxbf_pmc_counter_store()
1717 if (!(strstr(pmc->block_name[blk_num], "ecc")) && data) in mlxbf_pmc_counter_store()
1721 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_counter_store()
1724 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_COUNTER) { in mlxbf_pmc_counter_store()
1725 err = mlxbf_pmc_read_event(blk_num, cnt_num, is_l3, &evt_num); in mlxbf_pmc_counter_store()
1728 err = mlxbf_pmc_program_counter(blk_num, cnt_num, evt_num, in mlxbf_pmc_counter_store()
1732 } else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_REGISTER) { in mlxbf_pmc_counter_store()
1733 offset = mlxbf_pmc_get_event_num(pmc->block_name[blk_num], in mlxbf_pmc_counter_store()
1737 err = mlxbf_pmc_write_reg(blk_num, offset, data); in mlxbf_pmc_counter_store()
1740 } else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) { in mlxbf_pmc_counter_store()
1743 err = mlxbf_pmc_clear_crspace_counter(blk_num, cnt_num); in mlxbf_pmc_counter_store()
1756 unsigned int blk_num, cnt_num; in mlxbf_pmc_event_show() local
1762 blk_num = attr_event->nr; in mlxbf_pmc_event_show()
1765 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_event_show()
1768 err = mlxbf_pmc_read_event(blk_num, cnt_num, is_l3, &evt_num); in mlxbf_pmc_event_show()
1772 evt_name = mlxbf_pmc_get_event_name(pmc->block_name[blk_num], evt_num); in mlxbf_pmc_event_show()
1786 unsigned int blk_num, cnt_num; in mlxbf_pmc_event_store() local
1792 blk_num = attr_event->nr; in mlxbf_pmc_event_store()
1801 evt_num = mlxbf_pmc_get_event_num(pmc->block_name[blk_num], in mlxbf_pmc_event_store()
1811 if (!mlxbf_pmc_get_event_name(pmc->block_name[blk_num], evt_num)) in mlxbf_pmc_event_store()
1815 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_event_store()
1818 err = mlxbf_pmc_program_counter(blk_num, cnt_num, evt_num, is_l3); in mlxbf_pmc_event_store()
1834 unsigned int blk_num, i, len = 0; in mlxbf_pmc_event_list_show() local
1838 blk_num = attr_event_list->nr; in mlxbf_pmc_event_list_show()
1840 events = mlxbf_pmc_event_list(pmc->block_name[blk_num], &size); in mlxbf_pmc_event_list_show()
1862 unsigned int blk_num, value; in mlxbf_pmc_enable_show() local
1865 blk_num = attr_enable->nr; in mlxbf_pmc_enable_show()
1867 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) { in mlxbf_pmc_enable_show()
1868 if (mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_enable_show()
1869 MLXBF_PMC_CRSPACE_PERFMON_CTL(pmc->block[blk_num].counters), in mlxbf_pmc_enable_show()
1875 if (mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_enable_show()
1893 unsigned int blk_num; in mlxbf_pmc_enable_store() local
1898 blk_num = attr_enable->nr; in mlxbf_pmc_enable_store()
1904 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) { in mlxbf_pmc_enable_store()
1905 err = mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_enable_store()
1906 MLXBF_PMC_CRSPACE_PERFMON_CTL(pmc->block[blk_num].counters), in mlxbf_pmc_enable_store()
1916 mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_enable_store()
1917 MLXBF_PMC_CRSPACE_PERFMON_CTL(pmc->block[blk_num].counters), in mlxbf_pmc_enable_store()
1920 err = mlxbf_pmc_config_l3_counters(blk_num, false, !!en); in mlxbf_pmc_enable_store()
1925 err = mlxbf_pmc_config_l3_counters(blk_num, true, false); in mlxbf_pmc_enable_store()
1940 unsigned int blk_num; in mlxbf_pmc_count_clock_show() local
1943 blk_num = attr_count_clock->nr; in mlxbf_pmc_count_clock_show()
1945 if (mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_count_clock_show()
1946 MLXBF_PMC_CRSPACE_PERFMON_COUNT_CLOCK(pmc->block[blk_num].counters), in mlxbf_pmc_count_clock_show()
1960 unsigned int blk_num; in mlxbf_pmc_count_clock_store() local
1964 blk_num = attr_count_clock->nr; in mlxbf_pmc_count_clock_store()
1970 mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_count_clock_store()
1971 MLXBF_PMC_CRSPACE_PERFMON_COUNT_CLOCK(pmc->block[blk_num].counters), in mlxbf_pmc_count_clock_store()
1978 static int mlxbf_pmc_init_perftype_counter(struct device *dev, unsigned int blk_num) in mlxbf_pmc_init_perftype_counter() argument
1983 if (!mlxbf_pmc_event_supported(pmc->block_name[blk_num])) in mlxbf_pmc_init_perftype_counter()
1987 attr = &pmc->block[blk_num].attr_event_list; in mlxbf_pmc_init_perftype_counter()
1991 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
1995 pmc->block[blk_num].block_attr[i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
1999 if (strstr(pmc->block_name[blk_num], "l3cache") || in mlxbf_pmc_init_perftype_counter()
2000 ((pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE))) { in mlxbf_pmc_init_perftype_counter()
2001 attr = &pmc->block[blk_num].attr_enable; in mlxbf_pmc_init_perftype_counter()
2006 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
2011 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
2015 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) { in mlxbf_pmc_init_perftype_counter()
2017 attr = &pmc->block[blk_num].attr_count_clock; in mlxbf_pmc_init_perftype_counter()
2021 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
2026 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
2030 pmc->block[blk_num].attr_counter = devm_kcalloc( in mlxbf_pmc_init_perftype_counter()
2031 dev, pmc->block[blk_num].counters, in mlxbf_pmc_init_perftype_counter()
2033 if (!pmc->block[blk_num].attr_counter) in mlxbf_pmc_init_perftype_counter()
2036 pmc->block[blk_num].attr_event = devm_kcalloc( in mlxbf_pmc_init_perftype_counter()
2037 dev, pmc->block[blk_num].counters, in mlxbf_pmc_init_perftype_counter()
2039 if (!pmc->block[blk_num].attr_event) in mlxbf_pmc_init_perftype_counter()
2043 for (j = 0; j < pmc->block[blk_num].counters; ++j) { in mlxbf_pmc_init_perftype_counter()
2044 attr = &pmc->block[blk_num].attr_counter[j]; in mlxbf_pmc_init_perftype_counter()
2050 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
2054 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
2057 attr = &pmc->block[blk_num].attr_event[j]; in mlxbf_pmc_init_perftype_counter()
2063 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
2067 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
2075 static int mlxbf_pmc_init_perftype_reg(struct device *dev, unsigned int blk_num) in mlxbf_pmc_init_perftype_reg() argument
2082 events = mlxbf_pmc_event_list(pmc->block_name[blk_num], &count); in mlxbf_pmc_init_perftype_reg()
2086 pmc->block[blk_num].attr_event = devm_kcalloc( in mlxbf_pmc_init_perftype_reg()
2088 if (!pmc->block[blk_num].attr_event) in mlxbf_pmc_init_perftype_reg()
2093 attr = &pmc->block[blk_num].attr_event[count]; in mlxbf_pmc_init_perftype_reg()
2098 attr->nr = blk_num; in mlxbf_pmc_init_perftype_reg()
2103 pmc->block[blk_num].block_attr[i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_reg()
2112 static int mlxbf_pmc_create_groups(struct device *dev, unsigned int blk_num) in mlxbf_pmc_create_groups() argument
2117 if ((pmc->block[blk_num].type == MLXBF_PMC_TYPE_COUNTER) || in mlxbf_pmc_create_groups()
2118 (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE)) in mlxbf_pmc_create_groups()
2119 err = mlxbf_pmc_init_perftype_counter(dev, blk_num); in mlxbf_pmc_create_groups()
2120 else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_REGISTER) in mlxbf_pmc_create_groups()
2121 err = mlxbf_pmc_init_perftype_reg(dev, blk_num); in mlxbf_pmc_create_groups()
2129 pmc->block[blk_num].block_attr_grp.attrs = pmc->block[blk_num].block_attr; in mlxbf_pmc_create_groups()
2130 pmc->block[blk_num].block_attr_grp.name = devm_kasprintf( in mlxbf_pmc_create_groups()
2131 dev, GFP_KERNEL, pmc->block_name[blk_num]); in mlxbf_pmc_create_groups()
2132 if (!pmc->block[blk_num].block_attr_grp.name) in mlxbf_pmc_create_groups()
2134 pmc->groups[pmc->group_num] = &pmc->block[blk_num].block_attr_grp; in mlxbf_pmc_create_groups()