• Home
  • Raw
  • Download

Lines Matching +full:ddr +full:- +full:pmu

3  * Author: Lin Huang <hl@rock-chips.com>
16 #include <linux/devfreq-event.h>
46 /* pmu grf */
64 * The dfi controller can monitor DDR load. It has an upper and lower threshold
66 * generated to indicate the DDR frequency should be changed.
81 void __iomem *dfi_regs = info->regs; in rockchip_dfi_start_hardware_counter()
85 /* get ddr type */ in rockchip_dfi_start_hardware_counter()
86 regmap_read(info->regmap_pmu, PMUGRF_OS_REG2, &val); in rockchip_dfi_start_hardware_counter()
92 /* set ddr type to dfi */ in rockchip_dfi_start_hardware_counter()
105 void __iomem *dfi_regs = info->regs; in rockchip_dfi_stop_hardware_counter()
115 void __iomem *dfi_regs = info->regs; in rockchip_dfi_get_busier_ch()
121 info->ch_usage[i].access = readl_relaxed(dfi_regs + in rockchip_dfi_get_busier_ch()
123 info->ch_usage[i].total = readl_relaxed(dfi_regs + in rockchip_dfi_get_busier_ch()
125 tmp = info->ch_usage[i].access; in rockchip_dfi_get_busier_ch()
141 clk_disable_unprepare(info->clk); in rockchip_dfi_disable()
151 ret = clk_prepare_enable(info->clk); in rockchip_dfi_enable()
153 dev_err(&edev->dev, "failed to enable dfi clk: %d\n", ret); in rockchip_dfi_enable()
174 edata->load_count = info->ch_usage[busier_ch].access; in rockchip_dfi_get_event()
175 edata->total_count = info->ch_usage[busier_ch].total; in rockchip_dfi_get_event()
188 { .compatible = "rockchip,rk3399-dfi" },
195 struct device *dev = &pdev->dev; in rockchip_dfi_probe()
199 struct device_node *np = pdev->dev.of_node, *node; in rockchip_dfi_probe()
203 return -ENOMEM; in rockchip_dfi_probe()
206 data->regs = devm_ioremap_resource(&pdev->dev, res); in rockchip_dfi_probe()
207 if (IS_ERR(data->regs)) in rockchip_dfi_probe()
208 return PTR_ERR(data->regs); in rockchip_dfi_probe()
210 data->clk = devm_clk_get(dev, "pclk_ddr_mon"); in rockchip_dfi_probe()
211 if (IS_ERR(data->clk)) { in rockchip_dfi_probe()
213 return PTR_ERR(data->clk); in rockchip_dfi_probe()
216 /* try to find the optional reference to the pmu syscon */ in rockchip_dfi_probe()
217 node = of_parse_phandle(np, "rockchip,pmu", 0); in rockchip_dfi_probe()
219 data->regmap_pmu = syscon_node_to_regmap(node); in rockchip_dfi_probe()
220 if (IS_ERR(data->regmap_pmu)) in rockchip_dfi_probe()
221 return PTR_ERR(data->regmap_pmu); in rockchip_dfi_probe()
223 data->dev = dev; in rockchip_dfi_probe()
227 return -ENOMEM; in rockchip_dfi_probe()
229 desc->ops = &rockchip_dfi_ops; in rockchip_dfi_probe()
230 desc->driver_data = data; in rockchip_dfi_probe()
231 desc->name = np->name; in rockchip_dfi_probe()
232 data->desc = desc; in rockchip_dfi_probe()
234 data->edev = devm_devfreq_event_add_edev(&pdev->dev, desc); in rockchip_dfi_probe()
235 if (IS_ERR(data->edev)) { in rockchip_dfi_probe()
236 dev_err(&pdev->dev, in rockchip_dfi_probe()
237 "failed to add devfreq-event device\n"); in rockchip_dfi_probe()
238 return PTR_ERR(data->edev); in rockchip_dfi_probe()
249 .name = "rockchip-dfi",
256 MODULE_AUTHOR("Lin Huang <hl@rock-chips.com>");