Hi Scott,
Hmm, also bcm_kp_start() and bcm_kp_stop() should check if kp->clk isI checked and other keyboard drivers do not check this. I return an
valid before trying to enable/disable it.
error in bcm_kp_start if the clk enable fails. On stop, if the clk
is not valid something is really, really wrong as well.
The other drivers simply abort probe() if they can't get clock, you
decided to allow probe() to finish and assume that clock is already
enabled, leaving kp->clk == ERR_PTR(-ENOENT) in your version. If you try
then calling clk_prepare_enable() with that pointer it is going to bomb,
that is why I said you need to check pointer validity in bcm_kp_start()
and bcm_kp_stop().
Thanks.