In an environment where the hi655x pmic is being built as a standalone module, it fails to automatically load resulting in boot failures, machine hangs, etc. First we correct this by setting an appropriate module dependency. Then we bump the module use count on the mfd/pmic driver so that it cannot be unloaded when in use. This avoids an unload warning and crashes like:
Unable to handle kernel paging request at virtual address ffff800078fc5c78 pgd = ffff00000a150000 *pgd=000000007ffc0003, *pud=000000007ffc0003, *pmd=00e8000060000711 Internal error: Oops: 8600000e [#1] SMP ... [<ffff800078fc5c78>] 0xffff800078fc5c78 [<ffff0000086248f8>] regulator_set_voltage_sel_regmap+0x50/0x98 [<ffff00000861e830>] _regulator_do_set_voltage+0x4c8/0x7c0 [<ffff000008620804>] regulator_set_voltage_unlocked+0xc4/0x258 [<ffff0000086209d4>] regulator_set_voltage+0x3c/0x70 [<ffff000000af1b30>] mmc_regulator_set_ocr+0x48/0x100 [mmc_core] [<ffff000000c93da8>] dw_mci_set_ios+0x1e8/0x280 [dw_mmc] [<ffff000000af483c>] mmc_set_initial_state+0x84/0xf8 [mmc_core] [<ffff000000af490c>] mmc_power_up.part.13+0x5c/0x1f8 [mmc_core] [<ffff000000af5c20>] mmc_rescan+0x270/0x3b0 [mmc_core] [<ffff0000080f3a14>] process_one_work+0x264/0x7c0 [<ffff0000080f3fc4>] worker_thread+0x54/0x430 [<ffff0000080fc5dc>] kthread+0x104/0x130 [<ffff000008083380>] ret_from_fork+0x10/0x50 V1->V2: Change from a module post call to a module_device_table. Jeremy Linton (2): regulator: hi655x: Describe consumed platform device regulator: hi655x: Bump parent pmic module use count drivers/regulator/hi655x-regulator.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) -- 2.10.2