Lines Matching refs:pd
18 #define domain_to_rpmpd(domain) container_of(domain, struct rpmpd, pd)
44 .pd = { .name = #_name, }, \
51 .pd = { .name = #_active, }, \
61 .pd = { .name = #_name, }, \
69 .pd = { .name = #_name, }, \
77 .pd = { .name = #_name, }, \
85 .pd = { .name = #_name, }, \
98 struct generic_pm_domain pd; member
232 static int rpmpd_send_enable(struct rpmpd *pd, bool enable) in rpmpd_send_enable() argument
240 return qcom_rpm_smd_write(pd->rpm, QCOM_SMD_RPM_ACTIVE_STATE, in rpmpd_send_enable()
241 pd->res_type, pd->res_id, &req, sizeof(req)); in rpmpd_send_enable()
244 static int rpmpd_send_corner(struct rpmpd *pd, int state, unsigned int corner) in rpmpd_send_corner() argument
247 .key = pd->key, in rpmpd_send_corner()
252 return qcom_rpm_smd_write(pd->rpm, state, pd->res_type, pd->res_id, in rpmpd_send_corner()
256 static void to_active_sleep(struct rpmpd *pd, unsigned int corner, in to_active_sleep() argument
261 if (pd->active_only) in to_active_sleep()
267 static int rpmpd_aggregate_corner(struct rpmpd *pd) in rpmpd_aggregate_corner() argument
270 struct rpmpd *peer = pd->peer; in rpmpd_aggregate_corner()
275 to_active_sleep(pd, pd->corner, &this_active_corner, &this_sleep_corner); in rpmpd_aggregate_corner()
283 ret = rpmpd_send_corner(pd, QCOM_SMD_RPM_ACTIVE_STATE, active_corner); in rpmpd_aggregate_corner()
289 return rpmpd_send_corner(pd, QCOM_SMD_RPM_SLEEP_STATE, sleep_corner); in rpmpd_aggregate_corner()
295 struct rpmpd *pd = domain_to_rpmpd(domain); in rpmpd_power_on() local
299 ret = rpmpd_send_enable(pd, true); in rpmpd_power_on()
303 pd->enabled = true; in rpmpd_power_on()
305 if (pd->corner) in rpmpd_power_on()
306 ret = rpmpd_aggregate_corner(pd); in rpmpd_power_on()
317 struct rpmpd *pd = domain_to_rpmpd(domain); in rpmpd_power_off() local
321 ret = rpmpd_send_enable(pd, false); in rpmpd_power_off()
323 pd->enabled = false; in rpmpd_power_off()
334 struct rpmpd *pd = domain_to_rpmpd(domain); in rpmpd_set_performance() local
336 if (state > pd->max_state) in rpmpd_set_performance()
337 state = pd->max_state; in rpmpd_set_performance()
341 pd->corner = state; in rpmpd_set_performance()
344 if (!pd->enabled && pd->key != KEY_FLOOR_CORNER && in rpmpd_set_performance()
345 pd->key != KEY_FLOOR_LEVEL) in rpmpd_set_performance()
348 ret = rpmpd_aggregate_corner(pd); in rpmpd_set_performance()
401 rpmpds[i]->pd.power_off = rpmpd_power_off; in rpmpd_probe()
402 rpmpds[i]->pd.power_on = rpmpd_power_on; in rpmpd_probe()
403 rpmpds[i]->pd.set_performance_state = rpmpd_set_performance; in rpmpd_probe()
404 rpmpds[i]->pd.opp_to_performance_state = rpmpd_get_performance; in rpmpd_probe()
405 pm_genpd_init(&rpmpds[i]->pd, NULL, true); in rpmpd_probe()
407 data->domains[i] = &rpmpds[i]->pd; in rpmpd_probe()