/* CPU table initialization */ static int __init rm696_opp_init(void) { int r = 0; struct device *mpu_dev; r = omap3_opp_init(); if (IS_ERR_VALUE(r) && (r != -EEXIST)) { pr_err("opp default init failed\n"); return r; } mpu_dev = omap_device_get_by_hwmod_name("mpu"); if (IS_ERR(mpu_dev)) { pr_err("no mpu_dev error\n"); return -ENODEV; } /* Enable MPU 800MHz and lower opps */ r = opp_enable(mpu_dev, 800000000); if (r) pr_err("failed to enable higher (800MHz) opp\n"); /* Enable MPU 1GHz and lower opps */ r = opp_enable(mpu_dev, 1000000000); if (r) pr_err("failed to enable higher (1GHz) opp\n"); return 0; }
static void __init beagle_opp_init(void) { int r = 0; /* Initialize the omap3 opp table */ if (omap3_opp_init()) { pr_err("%s: opp default init failed\n", __func__); return; } /* Custom OPP enabled for XM */ if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM || omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XMC) { struct omap_hwmod *mh = omap_hwmod_lookup("mpu"); struct omap_hwmod *dh = omap_hwmod_lookup("iva"); struct device *dev; if (!mh || !dh) { pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n", __func__, mh, dh); r = -EINVAL; } else { /* Enable MPU 1GHz and lower opps */ dev = &mh->od->pdev.dev; r = opp_enable(dev, 800000000); r |= opp_enable(dev, 1000000000); /* Enable IVA 800MHz and lower opps */ dev = &dh->od->pdev.dev; r |= opp_enable(dev, 660000000); r |= opp_enable(dev, 800000000); } if (r) { pr_err("%s: failed to enable higher opp %d\n", __func__, r); /* * Cleanup - disable the higher freqs - we dont care * about the results */ dev = &mh->od->pdev.dev; opp_disable(dev, 800000000); opp_disable(dev, 1000000000); dev = &dh->od->pdev.dev; opp_disable(dev, 660000000); opp_disable(dev, 800000000); } else { pr_err("%s: turbo OPPs enabled!\n", __func__); } } }
static void __init overo_opp_init(void) { int r = 0; /* Initialize the omap3 opp table */ if (omap3_opp_init()) { pr_err("%s: opp default init failed\n", __func__); return; } /* Custom OPP enabled for 36/3730 */ if (cpu_is_omap3630()) { struct device *mpu_dev, *iva_dev; mpu_dev = omap_device_get_by_hwmod_name("mpu"); if (omap3_has_iva()) iva_dev = omap_device_get_by_hwmod_name("iva"); if (!mpu_dev) { pr_err("%s: Aiee.. no mpu device? %p\n", __func__, mpu_dev); return; } /* Enable MPU 1GHz and lower opps */ r = opp_enable(mpu_dev, 800000000); r |= opp_enable(mpu_dev, 1000000000); if (omap3_has_iva()) { /* Enable IVA 800MHz and lower opps */ r |= opp_enable(iva_dev, 660000000); r |= opp_enable(iva_dev, 800000000); } if (r) { pr_err("%s: failed to enable higher opp %d\n", __func__, r); opp_disable(mpu_dev, 800000000); opp_disable(mpu_dev, 1000000000); if (omap3_has_iva()) { opp_disable(iva_dev, 660000000); opp_disable(iva_dev, 800000000); } } } return; }
static int __init beagle_opp_init(void) { int r = 0; if (!machine_is_omap3_beagle()) return 0; /* Initialize the omap3 opp table if not already created. */ r = omap3_opp_init(); if (r < 0 && (r != -EEXIST)) { pr_err("%s: opp default init failed\n", __func__); return r; } /* Custom OPP enabled for all xM versions */ if (cpu_is_omap3630()) { struct device *mpu_dev, *iva_dev; mpu_dev = get_cpu_device(0); iva_dev = omap_device_get_by_hwmod_name("iva"); if (!mpu_dev || IS_ERR(iva_dev)) { pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n", __func__, mpu_dev, iva_dev); return -ENODEV; } /* Enable MPU 1GHz and lower opps */ r = dev_pm_opp_enable(mpu_dev, 800000000); /* TODO: MPU 1GHz needs SR and ABB */ /* Enable IVA 800MHz and lower opps */ r |= dev_pm_opp_enable(iva_dev, 660000000); /* TODO: DSP 800MHz needs SR and ABB */ if (r) { pr_err("%s: failed to enable higher opp %d\n", __func__, r); /* * Cleanup - disable the higher freqs - we dont care * about the results */ dev_pm_opp_disable(mpu_dev, 800000000); dev_pm_opp_disable(iva_dev, 660000000); } } return 0; }
static void __init beagle_opp_init(void) { int r = 0; /* Initialize the omap3 opp table */ if (omap3_opp_init()) { pr_err("%s: opp default init failed\n", __func__); return; } /* Custom OPP enabled for all xM versions */ if (cpu_is_omap3630()) { struct omap_hwmod *mh = omap_hwmod_lookup("mpu"); struct omap_hwmod *dh = omap_hwmod_lookup("iva"); struct device *dev; if (!mh || !dh) { pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n", __func__, mh, dh); return; } /* Enable MPU 1GHz and lower opps */ dev = &mh->od->pdev.dev; r = opp_enable(dev, 800000000); /* TODO: MPU 1GHz needs SR and ABB */ /* Enable IVA 800MHz and lower opps */ dev = &dh->od->pdev.dev; r |= opp_enable(dev, 660000000); /* TODO: DSP 800MHz needs SR and ABB */ if (r) { pr_err("%s: failed to enable higher opp %d\n", __func__, r); /* * Cleanup - disable the higher freqs - we dont care * about the results */ dev = &mh->od->pdev.dev; opp_disable(dev, 800000000); dev = &dh->od->pdev.dev; opp_disable(dev, 660000000); } } return; }
static void __init beagle_opp_init(void) { int r = 0; /* Initialize the omap3 opp table */ if (omap3_opp_init()) { pr_err("%s: opp default init failed\n", __func__); return; } /* Custom OPP enabled for all xM versions */ if (cpu_is_omap3630()) { struct device *mpu_dev, *iva_dev; mpu_dev = omap_device_get_by_hwmod_name("mpu"); iva_dev = omap_device_get_by_hwmod_name("iva"); if (!mpu_dev || !iva_dev) { pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n", __func__, mpu_dev, iva_dev); return; } /* Enable MPU 1GHz and lower opps */ r = opp_enable(mpu_dev, 800000000); /* TODO: MPU 1GHz needs SR and ABB */ /* Enable IVA 800MHz and lower opps */ r |= opp_enable(iva_dev, 660000000); /* TODO: DSP 800MHz needs SR and ABB */ if (r) { pr_err("%s: failed to enable higher opp %d\n", __func__, r); /* * Cleanup - disable the higher freqs - we dont care * about the results */ opp_disable(mpu_dev, 800000000); opp_disable(iva_dev, 660000000); } } return; }