A slave platform_device will be registered when we initialize the
master device. But if modprobe to init master device again, it will
try to initialize slave platform device again then oops happens.
And if we registered a platform_device in kernel, we normally don't
release it. So introduce a flag of nvhost_device_data to indicate
the status of slave and skip the slave init.
Bug
1377330
Change-Id: Ia4dfe6f8046952e2642343d23e39a14b6eb021b4
Signed-off-by: Bryan Wu <pengw@nvidia.com>
Reviewed-on: http://git-master/r/289326
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
dev_info(&dev->dev, "initialized\n");
- if (pdata->slave) {
+ if (pdata->slave && !pdata->slave_initialized) {
pdata->slave->dev.parent = dev->dev.parent;
platform_device_register(pdata->slave);
+ pdata->slave_initialized = 1;
}
return 0;
struct platform_device *master; /* Master of a slave device */
struct platform_device *slave; /* Slave device to create in probe */
+ int slave_initialized;
int num_clks; /* Number of clocks opened for dev */
struct clk *clk[NVHOST_MODULE_MAX_CLOCKS];