@@ -37,11 +37,24 @@ static struct of_device_id omap_dt_match_table[] __initdata = {
{ }
};
+/*
+ * Lookup table for attaching a specific name and platform_data pointer to
+ * devices as they get created by of_platform_populate(). Ideally this table
+ * would not exist, but the current clock implementation depends on some devices
+ * having a specific name.
+ */
+static const struct of_dev_auxdata omap_auxdata_lookup[] __initconst = {
+ OF_DEV_AUXDATA("bosch,d_can", 0x481cc000, "d_can.0", NULL),
+ OF_DEV_AUXDATA("bosch,d_can", 0x481d0000, "d_can.1", NULL),
+ { },
+};
+
+
static void __init omap_generic_init(void)
{
omap_sdrc_init(NULL, NULL);
- of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
+ of_platform_populate(NULL, omap_dt_match_table, omap_auxdata_lookup, NULL);
}
#ifdef CONFIG_SOC_OMAP2420
@@ -1028,6 +1028,8 @@ static struct omap_clk am33xx_clks[] = {
CLK(NULL, "clkdiv32k_ick", &clkdiv32k_ick, CK_AM33XX),
CLK(NULL, "dcan0_fck", &dcan0_fck, CK_AM33XX),
CLK(NULL, "dcan1_fck", &dcan1_fck, CK_AM33XX),
+ CLK("d_can.0", NULL, &dcan0_fck, CK_AM33XX),
+ CLK("d_can.1", NULL, &dcan1_fck, CK_AM33XX),
CLK(NULL, "debugss_ick", &debugss_ick, CK_AM33XX),
CLK(NULL, "pruss_ocp_gclk", &pruss_ocp_gclk, CK_AM33XX),
CLK("davinci-mcasp.0", NULL, &mcasp0_fck, CK_AM33XX),