/openbmc/linux/drivers/net/wireless/ath/wil6210/ |
H A D | pmc.c | 14 #include "pmc.h" 21 static int wil_is_pmc_allocated(struct pmc_ctx *pmc) in wil_is_pmc_allocated() argument 23 return !!pmc->pring_va; in wil_is_pmc_allocated() 28 memset(&wil->pmc, 0, sizeof(struct pmc_ctx)); in wil_pmc_init() 29 mutex_init(&wil->pmc.lock); in wil_pmc_init() 34 * Initialize the descriptors as required by pmc dma. 44 struct pmc_ctx *pmc = &wil->pmc; in wil_pmc_alloc() local 50 mutex_lock(&pmc->lock); in wil_pmc_alloc() 52 if (wil_is_pmc_allocated(pmc)) { in wil_pmc_alloc() 54 wil_err(wil, "ERROR pmc is already allocated\n"); in wil_pmc_alloc() [all …]
|
/openbmc/linux/tools/testing/selftests/powerpc/pmu/sampling_tests/ |
H A D | misc.h | 61 static inline int get_mmcr0_fc56(u64 mmcr0, int pmc) in get_mmcr0_fc56() argument 66 static inline int get_mmcr0_pmccext(u64 mmcr0, int pmc) in get_mmcr0_pmccext() argument 71 static inline int get_mmcr0_pmao(u64 mmcr0, int pmc) in get_mmcr0_pmao() argument 76 static inline int get_mmcr0_cc56run(u64 mmcr0, int pmc) in get_mmcr0_cc56run() argument 81 static inline int get_mmcr0_pmcjce(u64 mmcr0, int pmc) in get_mmcr0_pmcjce() argument 86 static inline int get_mmcr0_pmc1ce(u64 mmcr0, int pmc) in get_mmcr0_pmc1ce() argument 91 static inline int get_mmcr0_pmae(u64 mmcr0, int pmc) in get_mmcr0_pmae() argument 96 static inline int get_mmcr1_pmcxsel(u64 mmcr1, int pmc) in get_mmcr1_pmcxsel() argument 98 return ((mmcr1 >> ((24 - (((pmc) - 1) * 8))) & 0xff)); in get_mmcr1_pmcxsel() 101 static inline int get_mmcr1_unit(u64 mmcr1, int pmc) in get_mmcr1_unit() argument [all …]
|
/openbmc/linux/drivers/soc/tegra/ |
H A D | pmc.c | 3 * drivers/soc/tegra/pmc.c 12 #define pr_fmt(fmt) "tegra-pmc: " fmt 54 #include <soc/tegra/pmc.h> 61 #include <dt-bindings/soc/tegra-pmc.h> 197 /* for secure PMC */ 269 struct tegra_pmc *pmc; member 357 void (*init)(struct tegra_pmc *pmc); 358 void (*setup_irq_polarity)(struct tegra_pmc *pmc, 361 void (*set_wake_filters)(struct tegra_pmc *pmc); 364 int (*powergate_set)(struct tegra_pmc *pmc, unsigned int id, [all …]
|
/openbmc/linux/drivers/platform/x86/intel/pmc/ |
H A D | core.c | 56 static inline u32 pmc_core_reg_read(struct pmc *pmc, int reg_offset) in pmc_core_reg_read() argument 58 return readl(pmc->regbase + reg_offset); in pmc_core_reg_read() 61 static inline void pmc_core_reg_write(struct pmc *pmc, int reg_offset, in pmc_core_reg_write() argument 64 writel(val, pmc->regbase + reg_offset); in pmc_core_reg_write() 67 static inline u64 pmc_core_adjust_slp_s0_step(struct pmc *pmc, u32 value) in pmc_core_adjust_slp_s0_step() argument 75 const int lpm_adj_x2 = pmc->map->lpm_res_counter_step_x2; in pmc_core_adjust_slp_s0_step() 77 if (pmc->map == &adl_reg_map) in pmc_core_adjust_slp_s0_step() 80 return (u64)value * pmc->map->slp_s0_res_counter_step; in pmc_core_adjust_slp_s0_step() 85 struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN]; in set_etr3() local 86 const struct pmc_reg_map *map = pmc->map; in set_etr3() [all …]
|
H A D | core_ssram.c | 3 * This file contains functions to handle discovery of PMC metrics located 4 * in the PMC SSRAM PCI device. 42 struct pmc *pmc = pmcdev->pmcs[pmc_index]; in pmc_core_pmc_add() local 47 /* Memory for primary PMC has been allocated in core.c */ in pmc_core_pmc_add() 48 if (!pmc) { in pmc_core_pmc_add() 49 pmc = devm_kzalloc(&pmcdev->pdev->dev, sizeof(*pmc), GFP_KERNEL); in pmc_core_pmc_add() 50 if (!pmc) in pmc_core_pmc_add() 54 pmc->map = reg_map; in pmc_core_pmc_add() 55 pmc->base_addr = pwrm_base; in pmc_core_pmc_add() 56 pmc->regbase = ioremap(pmc->base_addr, pmc->map->regmap_length); in pmc_core_pmc_add() [all …]
|
/openbmc/linux/arch/x86/kvm/ |
H A D | pmu.c | 55 * - There are three types of index to access perf counters (PMC): 65 * 3. Global PMC Index (named pmc): pmc is an index specific to PMU 66 * code. Each pmc, stored in kvm_pmc.idx field, is unique across 68 * between pmc and perf counters is as the following: 96 static inline void __kvm_perf_overflow(struct kvm_pmc *pmc, bool in_pmi) in __kvm_perf_overflow() argument 98 struct kvm_pmu *pmu = pmc_to_pmu(pmc); in __kvm_perf_overflow() 101 if (pmc->perf_event && pmc->perf_event->attr.precise_ip) { in __kvm_perf_overflow() 116 __set_bit(pmc->idx, (unsigned long *)&pmu->global_status); in __kvm_perf_overflow() 119 if (pmc->intr && !skip_pmi) in __kvm_perf_overflow() 120 kvm_make_request(KVM_REQ_PMI, pmc->vcpu); in __kvm_perf_overflow() [all …]
|
H A D | pmu.h | 9 #define pmc_to_pmu(pmc) (&(pmc)->vcpu->arch.pmu) argument 22 bool (*hw_event_available)(struct kvm_pmc *pmc); 58 static inline u64 pmc_bitmask(struct kvm_pmc *pmc) in pmc_bitmask() argument 60 struct kvm_pmu *pmu = pmc_to_pmu(pmc); in pmc_bitmask() 62 return pmu->counter_bitmask[pmc->type]; in pmc_bitmask() 65 static inline u64 pmc_read_counter(struct kvm_pmc *pmc) in pmc_read_counter() argument 69 counter = pmc->counter; in pmc_read_counter() 70 if (pmc->perf_event && !pmc->is_paused) in pmc_read_counter() 71 counter += perf_event_read_value(pmc->perf_event, in pmc_read_counter() 74 return counter & pmc_bitmask(pmc); in pmc_read_counter() [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/clock/ |
H A D | atmel,at91rm9200-pmc.yaml | 4 $id: http://devicetree.org/schemas/clock/atmel,at91rm9200-pmc.yaml# 7 title: Atmel Power Management Controller (PMC) 14 system and user peripheral clocks. The PMC enables/disables the clock inputs 21 - const: atmel,at91sam9g20-pmc 22 - const: atmel,at91sam9260-pmc 26 - atmel,at91sam9g15-pmc 27 - atmel,at91sam9g25-pmc 28 - atmel,at91sam9g35-pmc 29 - atmel,at91sam9x25-pmc 30 - atmel,at91sam9x35-pmc [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/powerpc/fsl/ |
H A D | pmc.txt | 4 - compatible: "fsl,<chip>-pmc". 6 "fsl,mpc8349-pmc" should be listed for any chip whose PMC is 7 compatible. "fsl,mpc8313-pmc" should also be listed for any chip 8 whose PMC is compatible, and implies deep-sleep capability. 10 "fsl,mpc8548-pmc" should be listed for any chip whose PMC is 11 compatible. "fsl,mpc8536-pmc" should also be listed for any chip 12 whose PMC is compatible, and implies deep-sleep capability. 14 "fsl,mpc8641d-pmc" should be listed for any chip whose PMC is 15 compatible; all statements below that apply to "fsl,mpc8548-pmc" also 16 apply to "fsl,mpc8641d-pmc". [all …]
|
/openbmc/linux/arch/riscv/kvm/ |
H A D | vcpu_pmu.c | 36 static u64 kvm_pmu_get_sample_period(struct kvm_pmc *pmc) in kvm_pmu_get_sample_period() argument 38 u64 counter_val_mask = GENMASK(pmc->cinfo.width, 0); in kvm_pmu_get_sample_period() 41 if (!pmc->counter_val) in kvm_pmu_get_sample_period() 44 sample_period = (-pmc->counter_val) & counter_val_mask; in kvm_pmu_get_sample_period() 77 static void kvm_pmu_release_perf_event(struct kvm_pmc *pmc) in kvm_pmu_release_perf_event() argument 79 if (pmc->perf_event) { in kvm_pmu_release_perf_event() 80 perf_event_disable(pmc->perf_event); in kvm_pmu_release_perf_event() 81 perf_event_release_kernel(pmc->perf_event); in kvm_pmu_release_perf_event() 82 pmc->perf_event = NULL; in kvm_pmu_release_perf_event() 203 struct kvm_pmc *pmc; in pmu_ctr_read() local [all …]
|
/openbmc/linux/drivers/mfd/ |
H A D | intel_pmc_bxt.c | 3 * Driver for the Intel Broxton PMC 10 * The PMC (Power Management Controller) running on the ARC processor 13 * turn sends messages between the IA and the PMC. 52 * BIOS does not create an ACPI device for each PMC function, but 74 * intel_pmc_gcr_read64() - Read a 64-bit PMC GCR register 75 * @pmc: PMC device pointer 79 * Reads the 64-bit PMC GCR register at given offset. 83 int intel_pmc_gcr_read64(struct intel_pmc_dev *pmc, u32 offset, u64 *data) in intel_pmc_gcr_read64() argument 88 spin_lock(&pmc->gcr_lock); in intel_pmc_gcr_read64() 89 *data = readq(pmc->gcr_mem_base + offset); in intel_pmc_gcr_read64() [all …]
|
/openbmc/u-boot/arch/arm/mach-at91/ |
H A D | clock.c | 16 struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; in at91_periph_clk_enable() local 25 writel(id, &pmc->pcr); in at91_periph_clk_enable() 27 div_value = readl(&pmc->pcr) & AT91_PMC_PCR_DIV; in at91_periph_clk_enable() 31 writel(regval, &pmc->pcr); in at91_periph_clk_enable() 33 writel(0x01 << id, &pmc->pcer); in at91_periph_clk_enable() 39 struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; in at91_periph_clk_disable() local 49 writel(regval, &pmc->pcr); in at91_periph_clk_disable() 51 writel(0x01 << id, &pmc->pcdr); in at91_periph_clk_disable() 57 struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; in at91_system_clk_enable() local 59 writel(sys_clk, &pmc->scer); in at91_system_clk_enable() [all …]
|
/openbmc/linux/net/ipv4/ |
H A D | igmp.c | 160 static int sf_setstate(struct ip_mc_list *pmc); 161 static void sf_markstate(struct ip_mc_list *pmc); 163 static void ip_mc_clear_src(struct ip_mc_list *pmc); 175 #define for_each_pmc_rcu(in_dev, pmc) \ argument 176 for (pmc = rcu_dereference(in_dev->mc_list); \ 177 pmc != NULL; \ 178 pmc = rcu_dereference(pmc->next_rcu)) 180 #define for_each_pmc_rtnl(in_dev, pmc) \ argument 181 for (pmc = rtnl_dereference(in_dev->mc_list); \ 182 pmc != NULL; \ [all …]
|
/openbmc/linux/arch/arm/mach-at91/ |
H A D | pm_suspend.S | 22 pmc .req r0 label 42 2: ldr r8, [pmc, #AT91_PMC_SR] 54 1: ldr r7, [pmc, #AT91_PMC_SR] 65 1: ldr r7, [pmc, #AT91_PMC_SR] 79 str r7, [pmc, #AT91_PMC_SCDR] 476 ldr pmc, .pmc_base 485 ldr tmp1, [pmc, tmp3] 488 str tmp1, [pmc, tmp3] 496 ldr tmp1, [pmc, #AT91_CKGR_MOR] 499 str tmp1, [pmc, #AT91_CKGR_MOR] [all …]
|
/openbmc/linux/arch/arm/boot/dts/microchip/ |
H A D | sama7g5.dtsi | 37 clocks = <&pmc PMC_TYPE_CORE PMC_CPUPLL>; 192 clocks = <&pmc PMC_TYPE_CORE PMC_MCK1>; 210 clocks = <&pmc PMC_TYPE_PERIPHERAL 18>; 241 clocks = <&pmc PMC_TYPE_PERIPHERAL 11>; 244 pmc: clock-controller@e0018000 { label 245 compatible = "microchip,sama7g5-pmc", "syscon"; 315 …clocks = <&pmc PMC_TYPE_PERIPHERAL 91>, <&pmc PMC_TYPE_PERIPHERAL 92>, <&pmc PMC_TYPE_PERIPHERAL 9… 323 clocks = <&pmc PMC_TYPE_PERIPHERAL 21>; 343 clocks = <&pmc PMC_TYPE_PERIPHERAL 78>, <&pmc PMC_TYPE_GCK 78>; 358 clocks = <&pmc PMC_TYPE_PERIPHERAL 79>, <&pmc PMC_TYPE_GCK 79>; [all …]
|
H A D | sama5d2.dtsi | 48 clocks = <&pmc PMC_TYPE_CORE PMC_MCK>; 64 clocks = <&pmc PMC_TYPE_CORE PMC_MCK>; 134 clocks = <&pmc PMC_TYPE_PERIPHERAL 42>, <&pmc PMC_TYPE_CORE PMC_UTMI>; 143 clocks = <&pmc PMC_TYPE_PERIPHERAL 41>, <&pmc PMC_TYPE_PERIPHERAL 41>, <&pmc PMC_TYPE_SYSTEM 6>; 152 clocks = <&pmc PMC_TYPE_CORE PMC_UTMI>, <&pmc PMC_TYPE_PERIPHERAL 41>; 176 clocks = <&pmc PMC_TYPE_CORE PMC_MCK2>; 195 clocks = <&pmc PMC_TYPE_PERIPHERAL 31>, <&pmc PMC_TYPE_GCK 31>, <&pmc PMC_TYPE_CORE PMC_MAIN>; 197 assigned-clocks = <&pmc PMC_TYPE_GCK 31>; 206 clocks = <&pmc PMC_TYPE_PERIPHERAL 32>, <&pmc PMC_TYPE_GCK 32>, <&pmc PMC_TYPE_CORE PMC_MAIN>; 208 assigned-clocks = <&pmc PMC_TYPE_GCK 32>; [all …]
|
/openbmc/linux/arch/arm64/kvm/ |
H A D | pmu-emul.c | 26 static void kvm_pmu_create_perf_event(struct kvm_pmc *pmc); 27 static void kvm_pmu_release_perf_event(struct kvm_pmc *pmc); 29 static struct kvm_vcpu *kvm_pmc_to_vcpu(const struct kvm_pmc *pmc) in kvm_pmc_to_vcpu() argument 31 return container_of(pmc, struct kvm_vcpu, arch.pmu.pmc[pmc->idx]); in kvm_pmc_to_vcpu() 36 return &vcpu->arch.pmu.pmc[cnt_idx]; in kvm_vcpu_idx_to_pmc() 65 * @pmc: counter context 67 static bool kvm_pmc_is_64bit(struct kvm_pmc *pmc) in kvm_pmc_is_64bit() argument 69 return (pmc->idx == ARMV8_PMU_CYCLE_IDX || in kvm_pmc_is_64bit() 70 kvm_pmu_is_3p5(kvm_pmc_to_vcpu(pmc))); in kvm_pmc_is_64bit() 73 static bool kvm_pmc_has_64bit_overflow(struct kvm_pmc *pmc) in kvm_pmc_has_64bit_overflow() argument [all …]
|
/openbmc/linux/drivers/usb/typec/mux/ |
H A D | intel_pmc_mux.c | 3 * Driver for Intel PMC USB mux control 136 struct pmc_usb *pmc; member 173 port->iom_status = readl(port->pmc->iom_base + in update_port_status() 174 port->pmc->iom_port_status_offset + in update_port_status() 175 port_num * port->pmc->iom_port_status_size); in update_port_status() 230 * If PMC is busy then retry the command once again in pmc_usb_command() 233 ret = pmc_usb_send_command(port->pmc->ipc, msg, len); in pmc_usb_command() 334 if (acpi_dev_hid_uid_match(port->pmc->iom_adev, "INTC1072", NULL) || in pmc_usb_mux_tbt() 335 acpi_dev_hid_uid_match(port->pmc->iom_adev, "INTC1079", NULL)) { in pmc_usb_mux_tbt() 385 if (!acpi_dev_hid_uid_match(port->pmc->iom_adev, "INTC1072", NULL) || in pmc_usb_mux_usb4() [all …]
|
/openbmc/u-boot/arch/arm/mach-at91/armv7/ |
H A D | clock.c | 58 struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; in at91_clock_init() local 69 tmp = readl(&pmc->mcfr); in at91_clock_init() 78 gd->arch.plla_rate_hz = at91_pll_rate(main_clock, readl(&pmc->pllar)); in at91_clock_init() 84 mckr = readl(&pmc->mckr); in at91_clock_init() 117 struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; in at91_plla_init() local 119 writel(pllar, &pmc->pllar); in at91_plla_init() 120 while (!(readl(&pmc->sr) & (AT91_PMC_LOCKA | AT91_PMC_MCKRDY))) in at91_plla_init() 126 struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; in at91_mck_init() local 129 tmp = readl(&pmc->mckr); in at91_mck_init() 146 writel(tmp, &pmc->mckr); in at91_mck_init() [all …]
|
/openbmc/linux/net/ipv6/ |
H A D | mcast.c | 79 static int sf_setstate(struct ifmcaddr6 *pmc); 80 static void sf_markstate(struct ifmcaddr6 *pmc); 81 static void ip6_mc_clear_src(struct ifmcaddr6 *pmc); 117 #define for_each_pmc_socklock(np, sk, pmc) \ argument 118 for (pmc = sock_dereference((np)->ipv6_mc_list, sk); \ 119 pmc; \ 120 pmc = sock_dereference(pmc->next, sk)) 122 #define for_each_pmc_rcu(np, pmc) \ argument 123 for (pmc = rcu_dereference((np)->ipv6_mc_list); \ 124 pmc; \ [all …]
|
/openbmc/linux/drivers/platform/x86/ |
H A D | pmc_atom.c | 14 #include <linux/platform_data/x86/clk-pmc-atom.h> 204 static inline u32 pmc_reg_read(struct pmc_dev *pmc, int reg_offset) in pmc_reg_read() argument 206 return readl(pmc->regmap + reg_offset); in pmc_reg_read() 209 static inline void pmc_reg_write(struct pmc_dev *pmc, int reg_offset, u32 val) in pmc_reg_write() argument 211 writel(val, pmc->regmap + reg_offset); in pmc_reg_write() 216 struct pmc_dev *pmc = &pmc_device; in pmc_atom_read() local 218 if (!pmc->init) in pmc_atom_read() 221 *value = pmc_reg_read(pmc, offset); in pmc_atom_read() 242 static void pmc_hw_reg_setup(struct pmc_dev *pmc) in pmc_hw_reg_setup() argument 245 * Disable PMC S0IX_WAKE_EN events coming from: in pmc_hw_reg_setup() [all …]
|
/openbmc/linux/drivers/platform/mellanox/ |
H A D | mlxbf-pmc.c | 97 * @mmio_base: The VA at which the PMC block is mapped 122 * struct mlxbf_pmc_context - Structure to hold PMC context info 432 static struct mlxbf_pmc_context *pmc; variable 444 arm_smccc_smc(command, pmc->sreg_tbl_perf, (uintptr_t)addr, 0, 0, 0, 0, in mlxbf_pmc_secure_read() 468 if (pmc->svc_sreg_support) in mlxbf_pmc_read() 500 arm_smccc_smc(command, pmc->sreg_tbl_perf, value, (uintptr_t)addr, 0, 0, in mlxbf_pmc_secure_write() 520 if (pmc->svc_sreg_support) in mlxbf_pmc_write() 535 (offset + MLXBF_PMC_REG_SIZE <= pmc->block[blk_num].blk_size)) in mlxbf_pmc_valid_range() 536 return true; /* inside the mapped PMC space */ in mlxbf_pmc_valid_range() 557 switch (pmc->event_set) { in mlxbf_pmc_event_list() [all …]
|
/openbmc/linux/arch/powerpc/perf/ |
H A D | power7-pmu.c | 18 #define PM_PMC_SH 16 /* PMC number (1-based) for direct events */ 86 int pmc, sh, unit; in power7_get_constraint() local 89 pmc = (event >> PM_PMC_SH) & PM_PMC_MSK; in power7_get_constraint() 90 if (pmc) { in power7_get_constraint() 91 if (pmc > 6) in power7_get_constraint() 93 sh = (pmc - 1) * 2; in power7_get_constraint() 96 if (pmc >= 5 && !(event == 0x500fa || event == 0x600f4)) in power7_get_constraint() 99 if (pmc < 5) { in power7_get_constraint() 146 int pmc, psel; in find_alternative_decode() local 149 pmc = (event >> PM_PMC_SH) & PM_PMC_MSK; in find_alternative_decode() [all …]
|
/openbmc/qemu/hw/ppc/ |
H A D | e500plat.c | 35 PPCE500MachineClass *pmc = PPCE500_MACHINE_GET_CLASS(machine); in e500plat_init() local 39 pmc->mpic_version = OPENPIC_MODEL_FSL_MPIC_20; in e500plat_init() 73 PPCE500MachineClass *pmc = PPCE500_MACHINE_CLASS(oc); in e500plat_machine_class_init() local 81 pmc->pci_first_slot = 0x1; in e500plat_machine_class_init() 82 pmc->pci_nr_slots = PCI_SLOT_MAX - 1; in e500plat_machine_class_init() 83 pmc->fixup_devtree = e500plat_fixup_devtree; in e500plat_machine_class_init() 84 pmc->mpic_version = OPENPIC_MODEL_FSL_MPIC_42; in e500plat_machine_class_init() 85 pmc->has_mpc8xxx_gpio = true; in e500plat_machine_class_init() 86 pmc->has_esdhc = true; in e500plat_machine_class_init() 87 pmc->platform_bus_base = 0xf00000000ULL; in e500plat_machine_class_init() [all …]
|
/openbmc/u-boot/arch/arm/mach-at91/arm926ejs/ |
H A D | clock.c | 116 at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC; in at91_clock_init() local 127 tmp = readl(&pmc->mcfr); in at91_clock_init() 136 gd->arch.plla_rate_hz = at91_pll_rate(main_clock, readl(&pmc->pllar)); in at91_clock_init() 155 mckr = readl(&pmc->mckr); in at91_clock_init() 204 struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; in at91_plla_init() local 206 writel(pllar, &pmc->pllar); in at91_plla_init() 207 while (!(readl(&pmc->sr) & AT91_PMC_LOCKA)) in at91_plla_init() 212 struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; in at91_pllb_init() local 214 writel(pllbr, &pmc->pllbr); in at91_pllb_init() 215 while (!(readl(&pmc->sr) & AT91_PMC_LOCKB)) in at91_pllb_init() [all …]
|