Lines Matching full:pmc
23 #include <linux/platform_data/x86/clk-pmc-atom.h>
212 static inline u32 pmc_reg_read(struct pmc_dev *pmc, int reg_offset) in pmc_reg_read() argument
214 return readl(pmc->regmap + reg_offset); in pmc_reg_read()
217 static inline void pmc_reg_write(struct pmc_dev *pmc, int reg_offset, u32 val) in pmc_reg_write() argument
219 writel(val, pmc->regmap + reg_offset); in pmc_reg_write()
224 struct pmc_dev *pmc = &pmc_device; in pmc_atom_read() local
226 if (!pmc->init) in pmc_atom_read()
229 *value = pmc_reg_read(pmc, offset); in pmc_atom_read()
236 struct pmc_dev *pmc = &pmc_device; in pmc_atom_write() local
238 if (!pmc->init) in pmc_atom_write()
241 pmc_reg_write(pmc, offset, value); in pmc_atom_write()
263 static void pmc_hw_reg_setup(struct pmc_dev *pmc) in pmc_hw_reg_setup() argument
266 * Disable PMC S0IX_WAKE_EN events coming from: in pmc_hw_reg_setup()
273 pmc_reg_write(pmc, PMC_S0IX_WAKE_EN, (u32)PMC_WAKE_EN_SETTING); in pmc_hw_reg_setup()
294 struct pmc_dev *pmc = s->private; in pmc_dev_state_show() local
295 const struct pmc_reg_map *m = pmc->map; in pmc_dev_state_show()
299 func_dis = pmc_reg_read(pmc, PMC_FUNC_DIS); in pmc_dev_state_show()
300 func_dis_2 = pmc_reg_read(pmc, PMC_FUNC_DIS_2); in pmc_dev_state_show()
301 d3_sts_0 = pmc_reg_read(pmc, PMC_D3_STS_0); in pmc_dev_state_show()
302 d3_sts_1 = pmc_reg_read(pmc, PMC_D3_STS_1); in pmc_dev_state_show()
317 struct pmc_dev *pmc = s->private; in pmc_pss_state_show() local
318 const struct pmc_bit_map *map = pmc->map->pss; in pmc_pss_state_show()
319 u32 pss = pmc_reg_read(pmc, PMC_PSS); in pmc_pss_state_show()
334 struct pmc_dev *pmc = s->private; in pmc_sleep_tmr_show() local
337 s0ir_tmr = (u64)pmc_reg_read(pmc, PMC_S0IR_TMR) << PMC_TMR_SHIFT; in pmc_sleep_tmr_show()
338 s0i1_tmr = (u64)pmc_reg_read(pmc, PMC_S0I1_TMR) << PMC_TMR_SHIFT; in pmc_sleep_tmr_show()
339 s0i2_tmr = (u64)pmc_reg_read(pmc, PMC_S0I2_TMR) << PMC_TMR_SHIFT; in pmc_sleep_tmr_show()
340 s0i3_tmr = (u64)pmc_reg_read(pmc, PMC_S0I3_TMR) << PMC_TMR_SHIFT; in pmc_sleep_tmr_show()
341 s0_tmr = (u64)pmc_reg_read(pmc, PMC_S0_TMR) << PMC_TMR_SHIFT; in pmc_sleep_tmr_show()
353 static void pmc_dbgfs_unregister(struct pmc_dev *pmc) in pmc_dbgfs_unregister() argument
355 debugfs_remove_recursive(pmc->dbgfs_dir); in pmc_dbgfs_unregister()
358 static int pmc_dbgfs_register(struct pmc_dev *pmc) in pmc_dbgfs_register() argument
366 pmc->dbgfs_dir = dir; in pmc_dbgfs_register()
369 dir, pmc, &pmc_dev_state_fops); in pmc_dbgfs_register()
374 dir, pmc, &pmc_pss_state_fops); in pmc_dbgfs_register()
379 dir, pmc, &pmc_sleep_tmr_fops); in pmc_dbgfs_register()
385 pmc_dbgfs_unregister(pmc); in pmc_dbgfs_register()
389 static int pmc_dbgfs_register(struct pmc_dev *pmc) in pmc_dbgfs_register() argument
492 clkdev = platform_device_register_data(&pdev->dev, "clk-pmc-atom", in pmc_setup_clks()
507 struct pmc_dev *pmc = &pmc_device; in pmc_setup_dev() local
520 pci_read_config_dword(pdev, PMC_BASE_ADDR_OFFSET, &pmc->base_addr); in pmc_setup_dev()
521 pmc->base_addr &= PMC_BASE_ADDR_MASK; in pmc_setup_dev()
523 pmc->regmap = ioremap_nocache(pmc->base_addr, PMC_MMIO_REG_LEN); in pmc_setup_dev()
524 if (!pmc->regmap) { in pmc_setup_dev()
529 pmc->map = map; in pmc_setup_dev()
531 /* PMC hardware registers setup */ in pmc_setup_dev()
532 pmc_hw_reg_setup(pmc); in pmc_setup_dev()
534 ret = pmc_dbgfs_register(pmc); in pmc_setup_dev()
539 ret = pmc_setup_clks(pdev, pmc->regmap, data); in pmc_setup_dev()
544 pmc->init = true; in pmc_setup_dev()
564 /* We look for our device - PCU PMC in pmc_atom_init()