On Mon, Jul 11, 2011 at 04:59:11PM +0530, Tarun Kanti DebBarma wrote: > Add routines to converts dmtimers to platform devices. The device data > is obtained from hwmod database of respective platform and is registered > to device model after successful binding to driver. > In addition, capability attribute of each of the timers is added in > hwmod database. > ... > +static int omap2_dm_timer_set_src(struct platform_device *pdev, int source) > +{ > + int ret; > + struct dmtimer_platform_data *pdata = pdev->dev.platform_data; > + struct clk *fclk, *parent; > + char *parent_name = NULL; > + > + fclk = clk_get(&pdev->dev, "fck"); > + if (IS_ERR_OR_NULL(fclk)) { > + dev_err(&pdev->dev, "%s: %d: clk_get() FAILED\n", > + __func__, __LINE__); > + return -EINVAL; > + } > + > + switch (source) { > + case OMAP_TIMER_SRC_SYS_CLK: > + parent_name = "sys_ck"; > + break; > + > + case OMAP_TIMER_SRC_32_KHZ: > + parent_name = "32k_ck"; > + break; > + > + case OMAP_TIMER_SRC_EXT_CLK: > + if (pdata->timer_ip_type == OMAP_TIMER_IP_VERSION_1) { > + parent_name = "alt_ck"; > + break; > + } > + dev_err(&pdev->dev, "%s: %d: invalid clk src.\n", > + __func__, __LINE__); > + return -EINVAL; Should clk_put(fclk); ... > + pdata = kzalloc(sizeof(*pdata), GFP_KERNEL); > + if (!pdata) { > + pr_err("%s: No memory for [%s]\n", __func__, oh->name); > + return -ENOMEM; > + } > + > + /* > + * Extract the IDs from name field in hwmod database > + * and use the same for constructing ids' for the > + * timer devices. In a way, we are avoiding usage of > + * static variable witin the function to do the same. > + * CAUTION: We have to be careful and make sure the > + * name in hwmod database does not change in which case > + * we might either make corresponding change here or > + * switch back static variable mechanism. > + */ > + sscanf(oh->name, "timer%2d", &id); > + > + pdata->set_timer_src = omap2_dm_timer_set_src; > + pdata->timer_ip_type = oh->class->rev; > + pdata->needs_manual_reset = 0; Can omit init to zero of kzalloc'ed mem. Todd -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html