Re: [PATCH v7 2/8] power: add power sequence library
From: Peter Chen <hidden>
Date: 2016-10-13 08:58:17
Also in:
linux-arm-kernel, linux-pm, lkml
On Thu, Oct 13, 2016 at 09:04:42AM +0200, Heiko Stuebner wrote:
quoted
quoted
quoted
+static int __init pwrseq_generic_register(void) +{ + struct pwrseq_generic *pwrseq_gen; + int i; + + for (i = 0; i < CONFIG_PWRSEQ_GENERIC_INSTANCE_NUMBER; i++) { + pwrseq_gen = kzalloc(sizeof(*pwrseq_gen), GFP_KERNEL); + if (!pwrseq_gen) + return -ENOMEM; + + pwrseq_gen->pwrseq.pwrseq_of_match_table = generic_id_table; + pwrseq_gen->pwrseq.get = pwrseq_generic_get; + pwrseq_gen->pwrseq.on = pwrseq_generic_on; + pwrseq_gen->pwrseq.off = pwrseq_generic_off; + pwrseq_gen->pwrseq.put = pwrseq_generic_put; + pwrseq_gen->pwrseq.free = pwrseq_generic_free; + + pwrseq_register(&pwrseq_gen->pwrseq); + } + + return 0; +} +postcore_initcall(pwrseq_generic_register)I see that you need to have it preallocated for the compatible matching, but wouldn't it also work to either just register the type and allocate dynamically or otherwise just allocate a new spare everytime pwrseq_generic_get() picks up the previous spare?Before compatible matching, the host driver doesn't know which pwrseq type for its child node, then doesn't know which pwrseq instance needs to be allocated. From dts, we don't know which pwrseq type for the node.yes, that is why I was suggesting allocating one (or two) here in pwrseq_generic_register() and every time pwrseq_generic_get() grabs the last free sequence instance, you allocate a new free spare one in that function.
Good idea. -- Best Regards, Peter Chen