unsigned int max_channels;
 };
 
-static void rockchip_dfi_start_hardware_counter(struct devfreq_event_dev *edev)
+static void rockchip_dfi_start_hardware_counter(struct rockchip_dfi *dfi)
 {
-       struct rockchip_dfi *dfi = devfreq_event_get_drvdata(edev);
        void __iomem *dfi_regs = dfi->regs;
 
        /* clear DDRMON_CTRL setting */
                       dfi_regs + DDRMON_CTRL);
 }
 
-static void rockchip_dfi_stop_hardware_counter(struct devfreq_event_dev *edev)
+static void rockchip_dfi_stop_hardware_counter(struct rockchip_dfi *dfi)
 {
-       struct rockchip_dfi *dfi = devfreq_event_get_drvdata(edev);
        void __iomem *dfi_regs = dfi->regs;
 
        writel_relaxed(HIWORD_UPDATE(0, DDRMON_CTRL_SOFTWARE_EN),
                       dfi_regs + DDRMON_CTRL);
 }
 
-static void rockchip_dfi_read_counters(struct devfreq_event_dev *edev, struct dmc_count *count)
+static void rockchip_dfi_read_counters(struct rockchip_dfi *dfi, struct dmc_count *count)
 {
-       struct rockchip_dfi *dfi = devfreq_event_get_drvdata(edev);
        u32 i;
        void __iomem *dfi_regs = dfi->regs;
 
 {
        struct rockchip_dfi *dfi = devfreq_event_get_drvdata(edev);
 
-       rockchip_dfi_stop_hardware_counter(edev);
+       rockchip_dfi_stop_hardware_counter(dfi);
        clk_disable_unprepare(dfi->clk);
 
        return 0;
                return ret;
        }
 
-       rockchip_dfi_start_hardware_counter(edev);
+       rockchip_dfi_start_hardware_counter(dfi);
        return 0;
 }
 
        u32 access = 0, total = 0;
        int i;
 
-       rockchip_dfi_read_counters(edev, &count);
+       rockchip_dfi_read_counters(dfi, &count);
 
        /* We can only report one channel, so find the busiest one */
        for (i = 0; i < dfi->max_channels; i++) {