On 27.11.2012 01:39, Stephen Warren wrote:
Clock names shouldn't be passed in platform data; instead, clk_get() should be passed the device object and device-relative (i.e. not global) clock name. I expect if the driver is fixed to make this change, the changes to tegra*_clocks_data.c won't be needed either.
Isn't this code doing exactly that - getting a device relative clock, nvhost_module_init() in nvhost.acm.c:
(...) /* initialize clocks to known state */ while (pdata->clocks[i].name && i < NVHOST_MODULE_MAX_CLOCKS) { long rate = pdata->clocks[i].default_rate; struct clk *c;
c = devm_clk_get(&dev->dev, pdata->clocks[i].name); if (IS_ERR_OR_NULL(c)) { dev_err(&dev->dev, "Cannot get clock %s\n", pdata->clocks[i].name); return -ENODEV; }
rate = clk_round_rate(c, rate); clk_prepare_enable(c); clk_set_rate(c, rate); clk_disable_unprepare(c); pdata->clk[i] = c; i++; } (...)
Without the clock changes, the clocks in board files are now assigned to devid "tegra_grhost". I guess the correct way to do this would be to assign them to "tegra-gr2d" (2d, epp) and "host1x" - except if we also want to drop "tegra-" from the device name.
Terje