struct delayed_work dwork;
- struct pm_qos_request req;
+ struct pm_qos_request dev_req;
+ struct pm_qos_request bus_req;
struct list_head qos_node;
u64 r_bw;
u64 w_bw;
#include <linux/workqueue.h>
#ifdef CONFIG_PM_DEVFREQ
-static void g2d_pm_qos_update_devfreq(struct pm_qos_request *req, u32 freq)
+static void g2d_pm_qos_update_devfreq(struct pm_qos_request *req, u32 freq,
+ int class)
{
if (!pm_qos_request_active(req))
- pm_qos_add_request(req, PM_QOS_DEVICE_THROUGHPUT, 0);
+ pm_qos_add_request(req, class, 0);
pm_qos_update_request(req, freq);
}
}
}
- if (!ip_clock)
- g2d_pm_qos_remove_devfreq(&g2d_ctx->req);
- else if (ip_clock)
- g2d_pm_qos_update_devfreq(&g2d_ctx->req, ip_clock);
+ if (!ip_clock) {
+ g2d_pm_qos_remove_devfreq(&g2d_ctx->dev_req);
+ g2d_pm_qos_remove_devfreq(&g2d_ctx->bus_req);
+ } else if (ip_clock) {
+ g2d_pm_qos_update_devfreq(&g2d_ctx->dev_req, ip_clock,
+ PM_QOS_DEVICE_THROUGHPUT);
+ g2d_pm_qos_update_devfreq(&g2d_ctx->bus_req, 845000,
+ PM_QOS_BUS_THROUGHPUT);
+ }
}
static void g2d_set_qos_frequency(struct g2d_context *g2d_ctx,