pmcdev 368 drivers/platform/x86/intel_pmc_core.c static inline u8 pmc_core_reg_read_byte(struct pmc_dev *pmcdev, int offset) pmcdev 370 drivers/platform/x86/intel_pmc_core.c return readb(pmcdev->regbase + offset); pmcdev 373 drivers/platform/x86/intel_pmc_core.c static inline u32 pmc_core_reg_read(struct pmc_dev *pmcdev, int reg_offset) pmcdev 375 drivers/platform/x86/intel_pmc_core.c return readl(pmcdev->regbase + reg_offset); pmcdev 378 drivers/platform/x86/intel_pmc_core.c static inline void pmc_core_reg_write(struct pmc_dev *pmcdev, int pmcdev 381 drivers/platform/x86/intel_pmc_core.c writel(val, pmcdev->regbase + reg_offset); pmcdev 391 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = data; pmcdev 392 drivers/platform/x86/intel_pmc_core.c const struct pmc_reg_map *map = pmcdev->map; pmcdev 395 drivers/platform/x86/intel_pmc_core.c value = pmc_core_reg_read(pmcdev, map->slp_s0_offset); pmcdev 405 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = &pmc; pmcdev 408 drivers/platform/x86/intel_pmc_core.c value = pmc_core_reg_read(pmcdev, pmcdev->map->pm_cfg_offset); pmcdev 409 drivers/platform/x86/intel_pmc_core.c return value & BIT(pmcdev->map->pm_read_disable_bit); pmcdev 425 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = s->private; pmcdev 426 drivers/platform/x86/intel_pmc_core.c const struct pmc_bit_map *map = pmcdev->map->pfear_sts; pmcdev 430 drivers/platform/x86/intel_pmc_core.c iter = pmcdev->map->ppfear0_offset; pmcdev 432 drivers/platform/x86/intel_pmc_core.c for (index = 0; index < pmcdev->map->ppfear_buckets && pmcdev 434 drivers/platform/x86/intel_pmc_core.c pf_regs[index] = pmc_core_reg_read_byte(pmcdev, iter); pmcdev 437 drivers/platform/x86/intel_pmc_core.c index < pmcdev->map->ppfear_buckets * 8; index++) pmcdev 447 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = &pmc; pmcdev 450 drivers/platform/x86/intel_pmc_core.c value = pmc_core_reg_read(pmcdev, SPT_PMC_PM_STS_OFFSET); pmcdev 456 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = &pmc; pmcdev 470 drivers/platform/x86/intel_pmc_core.c pmc_core_reg_write(pmcdev, SPT_PMC_MTPMC_OFFSET, dest); pmcdev 476 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = s->private; pmcdev 477 drivers/platform/x86/intel_pmc_core.c const struct pmc_bit_map *map = pmcdev->map->mphy_sts; pmcdev 482 drivers/platform/x86/intel_pmc_core.c if (pmcdev->pmc_xram_read_bit) { pmcdev 490 drivers/platform/x86/intel_pmc_core.c mutex_lock(&pmcdev->lock); pmcdev 498 drivers/platform/x86/intel_pmc_core.c val_low = pmc_core_reg_read(pmcdev, SPT_PMC_MFPMC_OFFSET); pmcdev 506 drivers/platform/x86/intel_pmc_core.c val_high = pmc_core_reg_read(pmcdev, SPT_PMC_MFPMC_OFFSET); pmcdev 523 drivers/platform/x86/intel_pmc_core.c mutex_unlock(&pmcdev->lock); pmcdev 530 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = s->private; pmcdev 531 drivers/platform/x86/intel_pmc_core.c const struct pmc_bit_map *map = pmcdev->map->pll_sts; pmcdev 535 drivers/platform/x86/intel_pmc_core.c if (pmcdev->pmc_xram_read_bit) { pmcdev 541 drivers/platform/x86/intel_pmc_core.c mutex_lock(&pmcdev->lock); pmcdev 550 drivers/platform/x86/intel_pmc_core.c val = pmc_core_reg_read(pmcdev, SPT_PMC_MFPMC_OFFSET); pmcdev 559 drivers/platform/x86/intel_pmc_core.c mutex_unlock(&pmcdev->lock); pmcdev 567 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = &pmc; pmcdev 568 drivers/platform/x86/intel_pmc_core.c const struct pmc_reg_map *map = pmcdev->map; pmcdev 573 drivers/platform/x86/intel_pmc_core.c mutex_lock(&pmcdev->lock); pmcdev 585 drivers/platform/x86/intel_pmc_core.c fd = pmc_core_reg_read(pmcdev, map->ltr_ignore_offset); pmcdev 587 drivers/platform/x86/intel_pmc_core.c pmc_core_reg_write(pmcdev, map->ltr_ignore_offset, fd); pmcdev 590 drivers/platform/x86/intel_pmc_core.c mutex_unlock(&pmcdev->lock); pmcdev 612 drivers/platform/x86/intel_pmc_core.c static void pmc_core_slps0_dbg_latch(struct pmc_dev *pmcdev, bool reset) pmcdev 614 drivers/platform/x86/intel_pmc_core.c const struct pmc_reg_map *map = pmcdev->map; pmcdev 617 drivers/platform/x86/intel_pmc_core.c mutex_lock(&pmcdev->lock); pmcdev 622 drivers/platform/x86/intel_pmc_core.c fd = pmc_core_reg_read(pmcdev, map->slps0_dbg_offset); pmcdev 627 drivers/platform/x86/intel_pmc_core.c pmc_core_reg_write(pmcdev, map->slps0_dbg_offset, fd); pmcdev 632 drivers/platform/x86/intel_pmc_core.c mutex_unlock(&pmcdev->lock); pmcdev 637 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = s->private; pmcdev 638 drivers/platform/x86/intel_pmc_core.c const struct pmc_bit_map **maps = pmcdev->map->slps0_dbg_maps; pmcdev 643 drivers/platform/x86/intel_pmc_core.c pmc_core_slps0_dbg_latch(pmcdev, false); pmcdev 644 drivers/platform/x86/intel_pmc_core.c offset = pmcdev->map->slps0_dbg_offset; pmcdev 647 drivers/platform/x86/intel_pmc_core.c data = pmc_core_reg_read(pmcdev, offset); pmcdev 658 drivers/platform/x86/intel_pmc_core.c pmc_core_slps0_dbg_latch(pmcdev, true); pmcdev 699 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = s->private; pmcdev 700 drivers/platform/x86/intel_pmc_core.c const struct pmc_bit_map *map = pmcdev->map->ltr_show_sts; pmcdev 708 drivers/platform/x86/intel_pmc_core.c ltr_raw_data = pmc_core_reg_read(pmcdev, pmcdev 736 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = s->private; pmcdev 737 drivers/platform/x86/intel_pmc_core.c const struct pmc_bit_map *map = pmcdev->map->msr_sts; pmcdev 755 drivers/platform/x86/intel_pmc_core.c static void pmc_core_dbgfs_unregister(struct pmc_dev *pmcdev) pmcdev 757 drivers/platform/x86/intel_pmc_core.c debugfs_remove_recursive(pmcdev->dbgfs_dir); pmcdev 760 drivers/platform/x86/intel_pmc_core.c static void pmc_core_dbgfs_register(struct pmc_dev *pmcdev) pmcdev 765 drivers/platform/x86/intel_pmc_core.c pmcdev->dbgfs_dir = dir; pmcdev 767 drivers/platform/x86/intel_pmc_core.c debugfs_create_file("slp_s0_residency_usec", 0444, dir, pmcdev, pmcdev 770 drivers/platform/x86/intel_pmc_core.c debugfs_create_file("pch_ip_power_gating_status", 0444, dir, pmcdev, pmcdev 773 drivers/platform/x86/intel_pmc_core.c debugfs_create_file("ltr_ignore", 0644, dir, pmcdev, pmcdev 776 drivers/platform/x86/intel_pmc_core.c debugfs_create_file("ltr_show", 0444, dir, pmcdev, &pmc_core_ltr_fops); pmcdev 778 drivers/platform/x86/intel_pmc_core.c debugfs_create_file("package_cstate_show", 0444, dir, pmcdev, pmcdev 781 drivers/platform/x86/intel_pmc_core.c if (pmcdev->map->pll_sts) pmcdev 782 drivers/platform/x86/intel_pmc_core.c debugfs_create_file("pll_status", 0444, dir, pmcdev, pmcdev 785 drivers/platform/x86/intel_pmc_core.c if (pmcdev->map->mphy_sts) pmcdev 787 drivers/platform/x86/intel_pmc_core.c 0444, dir, pmcdev, pmcdev 790 drivers/platform/x86/intel_pmc_core.c if (pmcdev->map->slps0_dbg_maps) { pmcdev 792 drivers/platform/x86/intel_pmc_core.c dir, pmcdev, pmcdev 800 drivers/platform/x86/intel_pmc_core.c static inline void pmc_core_dbgfs_register(struct pmc_dev *pmcdev) pmcdev 804 drivers/platform/x86/intel_pmc_core.c static inline void pmc_core_dbgfs_unregister(struct pmc_dev *pmcdev) pmcdev 836 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = &pmc; pmcdev 839 drivers/platform/x86/intel_pmc_core.c value = pmc_core_reg_read(pmcdev, pmcdev->map->pm_vric1_offset); pmcdev 844 drivers/platform/x86/intel_pmc_core.c pmc_core_reg_write(pmcdev, pmcdev->map->pm_vric1_offset, value); pmcdev 863 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = &pmc; pmcdev 874 drivers/platform/x86/intel_pmc_core.c pmcdev->map = (struct pmc_reg_map *)cpu_id->driver_data; pmcdev 881 drivers/platform/x86/intel_pmc_core.c if (pmcdev->map == &spt_reg_map && !pci_dev_present(pmc_pci_ids)) pmcdev 882 drivers/platform/x86/intel_pmc_core.c pmcdev->map = &cnp_reg_map; pmcdev 885 drivers/platform/x86/intel_pmc_core.c pmcdev->base_addr = PMC_BASE_ADDR_DEFAULT; pmcdev 887 drivers/platform/x86/intel_pmc_core.c if (page_is_ram(PHYS_PFN(pmcdev->base_addr))) pmcdev 890 drivers/platform/x86/intel_pmc_core.c pmcdev->base_addr = slp_s0_addr - pmcdev->map->slp_s0_offset; pmcdev 893 drivers/platform/x86/intel_pmc_core.c pmcdev->regbase = ioremap(pmcdev->base_addr, pmcdev 894 drivers/platform/x86/intel_pmc_core.c pmcdev->map->regmap_length); pmcdev 895 drivers/platform/x86/intel_pmc_core.c if (!pmcdev->regbase) pmcdev 898 drivers/platform/x86/intel_pmc_core.c mutex_init(&pmcdev->lock); pmcdev 899 drivers/platform/x86/intel_pmc_core.c platform_set_drvdata(pdev, pmcdev); pmcdev 900 drivers/platform/x86/intel_pmc_core.c pmcdev->pmc_xram_read_bit = pmc_core_check_read_lock_bit(); pmcdev 903 drivers/platform/x86/intel_pmc_core.c pmc_core_dbgfs_register(pmcdev); pmcdev 913 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = platform_get_drvdata(pdev); pmcdev 915 drivers/platform/x86/intel_pmc_core.c pmc_core_dbgfs_unregister(pmcdev); pmcdev 917 drivers/platform/x86/intel_pmc_core.c mutex_destroy(&pmcdev->lock); pmcdev 918 drivers/platform/x86/intel_pmc_core.c iounmap(pmcdev->regbase); pmcdev 930 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = dev_get_drvdata(dev); pmcdev 932 drivers/platform/x86/intel_pmc_core.c pmcdev->check_counters = false; pmcdev 943 drivers/platform/x86/intel_pmc_core.c if (rdmsrl_safe(MSR_PKG_C10_RESIDENCY, &pmcdev->pc10_counter)) pmcdev 947 drivers/platform/x86/intel_pmc_core.c if (pmc_core_dev_state_get(pmcdev, &pmcdev->s0ix_counter)) pmcdev 950 drivers/platform/x86/intel_pmc_core.c pmcdev->check_counters = true; pmcdev 954 drivers/platform/x86/intel_pmc_core.c static inline bool pmc_core_is_pc10_failed(struct pmc_dev *pmcdev) pmcdev 961 drivers/platform/x86/intel_pmc_core.c if (pc10_counter == pmcdev->pc10_counter) pmcdev 967 drivers/platform/x86/intel_pmc_core.c static inline bool pmc_core_is_s0ix_failed(struct pmc_dev *pmcdev) pmcdev 971 drivers/platform/x86/intel_pmc_core.c if (pmc_core_dev_state_get(pmcdev, &s0ix_counter)) pmcdev 974 drivers/platform/x86/intel_pmc_core.c if (s0ix_counter == pmcdev->s0ix_counter) pmcdev 982 drivers/platform/x86/intel_pmc_core.c struct pmc_dev *pmcdev = dev_get_drvdata(dev); pmcdev 983 drivers/platform/x86/intel_pmc_core.c const struct pmc_bit_map **maps = pmcdev->map->slps0_dbg_maps; pmcdev 984 drivers/platform/x86/intel_pmc_core.c int offset = pmcdev->map->slps0_dbg_offset; pmcdev 988 drivers/platform/x86/intel_pmc_core.c if (!pmcdev->check_counters) pmcdev 991 drivers/platform/x86/intel_pmc_core.c if (!pmc_core_is_s0ix_failed(pmcdev)) pmcdev 994 drivers/platform/x86/intel_pmc_core.c if (pmc_core_is_pc10_failed(pmcdev)) { pmcdev 997 drivers/platform/x86/intel_pmc_core.c pmcdev->pc10_counter); pmcdev 1003 drivers/platform/x86/intel_pmc_core.c pmcdev->s0ix_counter); pmcdev 1006 drivers/platform/x86/intel_pmc_core.c data = pmc_core_reg_read(pmcdev, offset);