Merge tag 'v4.11-rc1' into omap-for-v4.11/fixes
Linux 4.11-rc1
This commit is contained in:
@@ -78,8 +78,6 @@ int __init omap2_clk_setup_ll_ops(void)
|
||||
* OMAP2+ specific clock functions
|
||||
*/
|
||||
|
||||
/* Private functions */
|
||||
|
||||
/* Public functions */
|
||||
|
||||
/**
|
||||
@@ -112,65 +110,6 @@ void omap2_init_clk_clkdm(struct clk_hw *hw)
|
||||
}
|
||||
}
|
||||
|
||||
static int __initdata mpurate;
|
||||
|
||||
/*
|
||||
* By default we use the rate set by the bootloader.
|
||||
* You can override this with mpurate= cmdline option.
|
||||
*/
|
||||
static int __init omap_clk_setup(char *str)
|
||||
{
|
||||
get_option(&str, &mpurate);
|
||||
|
||||
if (!mpurate)
|
||||
return 1;
|
||||
|
||||
if (mpurate < 1000)
|
||||
mpurate *= 1000000;
|
||||
|
||||
return 1;
|
||||
}
|
||||
__setup("mpurate=", omap_clk_setup);
|
||||
|
||||
/**
|
||||
* omap2_clk_print_new_rates - print summary of current clock tree rates
|
||||
* @hfclkin_ck_name: clk name for the off-chip HF oscillator
|
||||
* @core_ck_name: clk name for the on-chip CORE_CLK
|
||||
* @mpu_ck_name: clk name for the ARM MPU clock
|
||||
*
|
||||
* Prints a short message to the console with the HFCLKIN oscillator
|
||||
* rate, the rate of the CORE clock, and the rate of the ARM MPU clock.
|
||||
* Called by the boot-time MPU rate switching code. XXX This is intended
|
||||
* to be handled by the OPP layer code in the near future and should be
|
||||
* removed from the clock code. No return value.
|
||||
*/
|
||||
void __init omap2_clk_print_new_rates(const char *hfclkin_ck_name,
|
||||
const char *core_ck_name,
|
||||
const char *mpu_ck_name)
|
||||
{
|
||||
struct clk *hfclkin_ck, *core_ck, *mpu_ck;
|
||||
unsigned long hfclkin_rate;
|
||||
|
||||
mpu_ck = clk_get(NULL, mpu_ck_name);
|
||||
if (WARN(IS_ERR(mpu_ck), "clock: failed to get %s.\n", mpu_ck_name))
|
||||
return;
|
||||
|
||||
core_ck = clk_get(NULL, core_ck_name);
|
||||
if (WARN(IS_ERR(core_ck), "clock: failed to get %s.\n", core_ck_name))
|
||||
return;
|
||||
|
||||
hfclkin_ck = clk_get(NULL, hfclkin_ck_name);
|
||||
if (WARN(IS_ERR(hfclkin_ck), "Failed to get %s.\n", hfclkin_ck_name))
|
||||
return;
|
||||
|
||||
hfclkin_rate = clk_get_rate(hfclkin_ck);
|
||||
|
||||
pr_info("Switched to new clocking rate (Crystal/Core/MPU): %ld.%01ld/%ld/%ld MHz\n",
|
||||
(hfclkin_rate / 1000000), ((hfclkin_rate / 100000) % 10),
|
||||
(clk_get_rate(core_ck) / 1000000),
|
||||
(clk_get_rate(mpu_ck) / 1000000));
|
||||
}
|
||||
|
||||
/**
|
||||
* ti_clk_init_features - init clock features struct for the SoC
|
||||
*
|
||||
|
@@ -64,10 +64,6 @@
|
||||
#define OMAP4XXX_EN_DPLL_FRBYPASS 0x6
|
||||
#define OMAP4XXX_EN_DPLL_LOCKED 0x7
|
||||
|
||||
void omap2_clk_print_new_rates(const char *hfclkin_ck_name,
|
||||
const char *core_ck_name,
|
||||
const char *mpu_ck_name);
|
||||
|
||||
extern u16 cpu_mask;
|
||||
|
||||
extern const struct clkops clkops_omap2_dflt_wait;
|
||||
|
@@ -315,15 +315,15 @@ void omap3_save_scratchpad_contents(void)
|
||||
scratchpad_contents.boot_config_ptr = 0x0;
|
||||
if (cpu_is_omap3630())
|
||||
scratchpad_contents.public_restore_ptr =
|
||||
virt_to_phys(omap3_restore_3630);
|
||||
__pa_symbol(omap3_restore_3630);
|
||||
else if (omap_rev() != OMAP3430_REV_ES3_0 &&
|
||||
omap_rev() != OMAP3430_REV_ES3_1 &&
|
||||
omap_rev() != OMAP3430_REV_ES3_1_2)
|
||||
scratchpad_contents.public_restore_ptr =
|
||||
virt_to_phys(omap3_restore);
|
||||
__pa_symbol(omap3_restore);
|
||||
else
|
||||
scratchpad_contents.public_restore_ptr =
|
||||
virt_to_phys(omap3_restore_es3);
|
||||
__pa_symbol(omap3_restore_es3);
|
||||
|
||||
if (omap_type() == OMAP2_DEVICE_TYPE_GP)
|
||||
scratchpad_contents.secure_ram_restore_ptr = 0x0;
|
||||
@@ -395,7 +395,7 @@ void omap3_save_scratchpad_contents(void)
|
||||
sdrc_block_contents.flags = 0x0;
|
||||
sdrc_block_contents.block_size = 0x0;
|
||||
|
||||
arm_context_addr = virt_to_phys(omap3_arm_context);
|
||||
arm_context_addr = __pa_symbol(omap3_arm_context);
|
||||
|
||||
/* Copy all the contents to the scratchpad location */
|
||||
scratchpad_address = OMAP2_L4_IO_ADDRESS(OMAP343X_SCRATCHPAD);
|
||||
|
@@ -46,8 +46,6 @@
|
||||
#define DISPC_CONTROL3 0x0848
|
||||
#define DISPC_IRQSTATUS 0x0018
|
||||
|
||||
#define DSS_SYSCONFIG 0x10
|
||||
#define DSS_SYSSTATUS 0x14
|
||||
#define DSS_CONTROL 0x40
|
||||
#define DSS_SDI_CONTROL 0x44
|
||||
#define DSS_PLL_CONTROL 0x48
|
||||
@@ -76,36 +74,6 @@ static struct platform_device omap_display_device = {
|
||||
},
|
||||
};
|
||||
|
||||
struct omap_dss_hwmod_data {
|
||||
const char *oh_name;
|
||||
const char *dev_name;
|
||||
const int id;
|
||||
};
|
||||
|
||||
static const struct omap_dss_hwmod_data omap2_dss_hwmod_data[] __initconst = {
|
||||
{ "dss_core", "omapdss_dss", -1 },
|
||||
{ "dss_dispc", "omapdss_dispc", -1 },
|
||||
{ "dss_rfbi", "omapdss_rfbi", -1 },
|
||||
{ "dss_venc", "omapdss_venc", -1 },
|
||||
};
|
||||
|
||||
static const struct omap_dss_hwmod_data omap3_dss_hwmod_data[] __initconst = {
|
||||
{ "dss_core", "omapdss_dss", -1 },
|
||||
{ "dss_dispc", "omapdss_dispc", -1 },
|
||||
{ "dss_rfbi", "omapdss_rfbi", -1 },
|
||||
{ "dss_venc", "omapdss_venc", -1 },
|
||||
{ "dss_dsi1", "omapdss_dsi", 0 },
|
||||
};
|
||||
|
||||
static const struct omap_dss_hwmod_data omap4_dss_hwmod_data[] __initconst = {
|
||||
{ "dss_core", "omapdss_dss", -1 },
|
||||
{ "dss_dispc", "omapdss_dispc", -1 },
|
||||
{ "dss_rfbi", "omapdss_rfbi", -1 },
|
||||
{ "dss_dsi1", "omapdss_dsi", 0 },
|
||||
{ "dss_dsi2", "omapdss_dsi", 1 },
|
||||
{ "dss_hdmi", "omapdss_hdmi", -1 },
|
||||
};
|
||||
|
||||
#define OMAP4_DSIPHY_SYSCON_OFFSET 0x78
|
||||
|
||||
static struct regmap *omap4_dsi_mux_syscon;
|
||||
@@ -162,104 +130,6 @@ static int omap_dss_set_min_bus_tput(struct device *dev, unsigned long tput)
|
||||
return omap_pm_set_min_bus_tput(dev, OCP_INITIATOR_AGENT, tput);
|
||||
}
|
||||
|
||||
static struct platform_device *create_dss_pdev(const char *pdev_name,
|
||||
int pdev_id, const char *oh_name, void *pdata, int pdata_len,
|
||||
struct platform_device *parent)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
struct omap_device *od;
|
||||
struct omap_hwmod *ohs[1];
|
||||
struct omap_hwmod *oh;
|
||||
int r;
|
||||
|
||||
oh = omap_hwmod_lookup(oh_name);
|
||||
if (!oh) {
|
||||
pr_err("Could not look up %s\n", oh_name);
|
||||
r = -ENODEV;
|
||||
goto err;
|
||||
}
|
||||
|
||||
pdev = platform_device_alloc(pdev_name, pdev_id);
|
||||
if (!pdev) {
|
||||
pr_err("Could not create pdev for %s\n", pdev_name);
|
||||
r = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (parent != NULL)
|
||||
pdev->dev.parent = &parent->dev;
|
||||
|
||||
if (pdev->id != -1)
|
||||
dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id);
|
||||
else
|
||||
dev_set_name(&pdev->dev, "%s", pdev->name);
|
||||
|
||||
ohs[0] = oh;
|
||||
od = omap_device_alloc(pdev, ohs, 1);
|
||||
if (IS_ERR(od)) {
|
||||
pr_err("Could not alloc omap_device for %s\n", pdev_name);
|
||||
r = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
r = platform_device_add_data(pdev, pdata, pdata_len);
|
||||
if (r) {
|
||||
pr_err("Could not set pdata for %s\n", pdev_name);
|
||||
goto err;
|
||||
}
|
||||
|
||||
r = omap_device_register(pdev);
|
||||
if (r) {
|
||||
pr_err("Could not register omap_device for %s\n", pdev_name);
|
||||
goto err;
|
||||
}
|
||||
|
||||
return pdev;
|
||||
|
||||
err:
|
||||
return ERR_PTR(r);
|
||||
}
|
||||
|
||||
static struct platform_device *create_simple_dss_pdev(const char *pdev_name,
|
||||
int pdev_id, void *pdata, int pdata_len,
|
||||
struct platform_device *parent)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
int r;
|
||||
|
||||
pdev = platform_device_alloc(pdev_name, pdev_id);
|
||||
if (!pdev) {
|
||||
pr_err("Could not create pdev for %s\n", pdev_name);
|
||||
r = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (parent != NULL)
|
||||
pdev->dev.parent = &parent->dev;
|
||||
|
||||
if (pdev->id != -1)
|
||||
dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id);
|
||||
else
|
||||
dev_set_name(&pdev->dev, "%s", pdev->name);
|
||||
|
||||
r = platform_device_add_data(pdev, pdata, pdata_len);
|
||||
if (r) {
|
||||
pr_err("Could not set pdata for %s\n", pdev_name);
|
||||
goto err;
|
||||
}
|
||||
|
||||
r = platform_device_add(pdev);
|
||||
if (r) {
|
||||
pr_err("Could not register platform_device for %s\n", pdev_name);
|
||||
goto err;
|
||||
}
|
||||
|
||||
return pdev;
|
||||
|
||||
err:
|
||||
return ERR_PTR(r);
|
||||
}
|
||||
|
||||
static enum omapdss_version __init omap_display_get_version(void)
|
||||
{
|
||||
if (cpu_is_omap24xx())
|
||||
@@ -293,132 +163,6 @@ static enum omapdss_version __init omap_display_get_version(void)
|
||||
return OMAPDSS_VER_UNKNOWN;
|
||||
}
|
||||
|
||||
int __init omap_display_init(struct omap_dss_board_info *board_data)
|
||||
{
|
||||
int r = 0;
|
||||
struct platform_device *pdev;
|
||||
int i, oh_count;
|
||||
const struct omap_dss_hwmod_data *curr_dss_hwmod;
|
||||
struct platform_device *dss_pdev;
|
||||
enum omapdss_version ver;
|
||||
|
||||
/* create omapdss device */
|
||||
|
||||
ver = omap_display_get_version();
|
||||
|
||||
if (ver == OMAPDSS_VER_UNKNOWN) {
|
||||
pr_err("DSS not supported on this SoC\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
board_data->version = ver;
|
||||
board_data->dsi_enable_pads = omap_dsi_enable_pads;
|
||||
board_data->dsi_disable_pads = omap_dsi_disable_pads;
|
||||
board_data->set_min_bus_tput = omap_dss_set_min_bus_tput;
|
||||
|
||||
omap_display_device.dev.platform_data = board_data;
|
||||
|
||||
r = platform_device_register(&omap_display_device);
|
||||
if (r < 0) {
|
||||
pr_err("Unable to register omapdss device\n");
|
||||
return r;
|
||||
}
|
||||
|
||||
/* create devices for dss hwmods */
|
||||
|
||||
if (cpu_is_omap24xx()) {
|
||||
curr_dss_hwmod = omap2_dss_hwmod_data;
|
||||
oh_count = ARRAY_SIZE(omap2_dss_hwmod_data);
|
||||
} else if (cpu_is_omap34xx()) {
|
||||
curr_dss_hwmod = omap3_dss_hwmod_data;
|
||||
oh_count = ARRAY_SIZE(omap3_dss_hwmod_data);
|
||||
} else {
|
||||
curr_dss_hwmod = omap4_dss_hwmod_data;
|
||||
oh_count = ARRAY_SIZE(omap4_dss_hwmod_data);
|
||||
}
|
||||
|
||||
/*
|
||||
* First create the pdev for dss_core, which is used as a parent device
|
||||
* by the other dss pdevs. Note: dss_core has to be the first item in
|
||||
* the hwmod list.
|
||||
*/
|
||||
dss_pdev = create_dss_pdev(curr_dss_hwmod[0].dev_name,
|
||||
curr_dss_hwmod[0].id,
|
||||
curr_dss_hwmod[0].oh_name,
|
||||
board_data, sizeof(*board_data),
|
||||
NULL);
|
||||
|
||||
if (IS_ERR(dss_pdev)) {
|
||||
pr_err("Could not build omap_device for %s\n",
|
||||
curr_dss_hwmod[0].oh_name);
|
||||
|
||||
return PTR_ERR(dss_pdev);
|
||||
}
|
||||
|
||||
for (i = 1; i < oh_count; i++) {
|
||||
pdev = create_dss_pdev(curr_dss_hwmod[i].dev_name,
|
||||
curr_dss_hwmod[i].id,
|
||||
curr_dss_hwmod[i].oh_name,
|
||||
board_data, sizeof(*board_data),
|
||||
dss_pdev);
|
||||
|
||||
if (IS_ERR(pdev)) {
|
||||
pr_err("Could not build omap_device for %s\n",
|
||||
curr_dss_hwmod[i].oh_name);
|
||||
|
||||
return PTR_ERR(pdev);
|
||||
}
|
||||
}
|
||||
|
||||
/* Create devices for DPI and SDI */
|
||||
|
||||
pdev = create_simple_dss_pdev("omapdss_dpi", 0,
|
||||
board_data, sizeof(*board_data), dss_pdev);
|
||||
if (IS_ERR(pdev)) {
|
||||
pr_err("Could not build platform_device for omapdss_dpi\n");
|
||||
return PTR_ERR(pdev);
|
||||
}
|
||||
|
||||
if (cpu_is_omap34xx()) {
|
||||
pdev = create_simple_dss_pdev("omapdss_sdi", 0,
|
||||
board_data, sizeof(*board_data), dss_pdev);
|
||||
if (IS_ERR(pdev)) {
|
||||
pr_err("Could not build platform_device for omapdss_sdi\n");
|
||||
return PTR_ERR(pdev);
|
||||
}
|
||||
}
|
||||
|
||||
/* create DRM device */
|
||||
r = omap_init_drm();
|
||||
if (r < 0) {
|
||||
pr_err("Unable to register omapdrm device\n");
|
||||
return r;
|
||||
}
|
||||
|
||||
/* create vrfb device */
|
||||
r = omap_init_vrfb();
|
||||
if (r < 0) {
|
||||
pr_err("Unable to register omapvrfb device\n");
|
||||
return r;
|
||||
}
|
||||
|
||||
/* create FB device */
|
||||
r = omap_init_fb();
|
||||
if (r < 0) {
|
||||
pr_err("Unable to register omapfb device\n");
|
||||
return r;
|
||||
}
|
||||
|
||||
/* create V4L2 display device */
|
||||
r = omap_init_vout();
|
||||
if (r < 0) {
|
||||
pr_err("Unable to register omap_vout device\n");
|
||||
return r;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void dispc_disable_outputs(void)
|
||||
{
|
||||
u32 v, irq_mask = 0;
|
||||
@@ -573,7 +317,7 @@ static const char * const omapdss_compat_names[] __initconst = {
|
||||
"ti,dra7-dss",
|
||||
};
|
||||
|
||||
struct device_node * __init omapdss_find_dss_of_node(void)
|
||||
static struct device_node * __init omapdss_find_dss_of_node(void)
|
||||
{
|
||||
struct device_node *node;
|
||||
int i;
|
||||
|
@@ -31,11 +31,4 @@ int omap_init_vrfb(void);
|
||||
int omap_init_fb(void);
|
||||
int omap_init_vout(void);
|
||||
|
||||
struct device_node * __init omapdss_find_dss_of_node(void);
|
||||
|
||||
struct omap_dss_board_info;
|
||||
|
||||
/* Init with the board info */
|
||||
int omap_display_init(struct omap_dss_board_info *board_data);
|
||||
|
||||
#endif
|
||||
|
@@ -223,7 +223,15 @@ static void __init omap3_cpuinfo(void)
|
||||
* and CPU class bits.
|
||||
*/
|
||||
if (soc_is_omap3630()) {
|
||||
cpu_name = "OMAP3630";
|
||||
if (omap3_has_iva() && omap3_has_sgx()) {
|
||||
cpu_name = (omap3_has_isp()) ? "OMAP3630/DM3730" : "OMAP3621";
|
||||
} else if (omap3_has_iva()) {
|
||||
cpu_name = "DM3725";
|
||||
} else if (omap3_has_sgx()) {
|
||||
cpu_name = "OMAP3615/AM3715";
|
||||
} else {
|
||||
cpu_name = (omap3_has_isp()) ? "AM3703" : "OMAP3611";
|
||||
}
|
||||
} else if (soc_is_am35xx()) {
|
||||
cpu_name = (omap3_has_sgx()) ? "AM3517" : "AM3505";
|
||||
} else if (soc_is_ti816x()) {
|
||||
|
@@ -273,7 +273,7 @@ int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state)
|
||||
cpu_clear_prev_logic_pwrst(cpu);
|
||||
pwrdm_set_next_pwrst(pm_info->pwrdm, power_state);
|
||||
pwrdm_set_logic_retst(pm_info->pwrdm, cpu_logic_state);
|
||||
set_cpu_wakeup_addr(cpu, virt_to_phys(omap_pm_ops.resume));
|
||||
set_cpu_wakeup_addr(cpu, __pa_symbol(omap_pm_ops.resume));
|
||||
omap_pm_ops.scu_prepare(cpu, power_state);
|
||||
l2x0_pwrst_prepare(cpu, save_state);
|
||||
|
||||
@@ -325,7 +325,7 @@ int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state)
|
||||
|
||||
pwrdm_clear_all_prev_pwrst(pm_info->pwrdm);
|
||||
pwrdm_set_next_pwrst(pm_info->pwrdm, power_state);
|
||||
set_cpu_wakeup_addr(cpu, virt_to_phys(omap_pm_ops.hotplug_restart));
|
||||
set_cpu_wakeup_addr(cpu, __pa_symbol(omap_pm_ops.hotplug_restart));
|
||||
omap_pm_ops.scu_prepare(cpu, power_state);
|
||||
|
||||
/*
|
||||
@@ -467,13 +467,13 @@ void __init omap4_mpuss_early_init(void)
|
||||
sar_base = omap4_get_sar_ram_base();
|
||||
|
||||
if (cpu_is_omap443x())
|
||||
startup_pa = virt_to_phys(omap4_secondary_startup);
|
||||
startup_pa = __pa_symbol(omap4_secondary_startup);
|
||||
else if (cpu_is_omap446x())
|
||||
startup_pa = virt_to_phys(omap4460_secondary_startup);
|
||||
startup_pa = __pa_symbol(omap4460_secondary_startup);
|
||||
else if ((__boot_cpu_mode & MODE_MASK) == HYP_MODE)
|
||||
startup_pa = virt_to_phys(omap5_secondary_hyp_startup);
|
||||
startup_pa = __pa_symbol(omap5_secondary_hyp_startup);
|
||||
else
|
||||
startup_pa = virt_to_phys(omap5_secondary_startup);
|
||||
startup_pa = __pa_symbol(omap5_secondary_startup);
|
||||
|
||||
if (cpu_is_omap44xx())
|
||||
writel_relaxed(startup_pa, sar_base +
|
||||
|
@@ -316,9 +316,9 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)
|
||||
* A barrier is added to ensure that write buffer is drained
|
||||
*/
|
||||
if (omap_secure_apis_support())
|
||||
omap_auxcoreboot_addr(virt_to_phys(cfg.startup_addr));
|
||||
omap_auxcoreboot_addr(__pa_symbol(cfg.startup_addr));
|
||||
else
|
||||
writel_relaxed(virt_to_phys(cfg.startup_addr),
|
||||
writel_relaxed(__pa_symbol(cfg.startup_addr),
|
||||
base + OMAP_AUX_CORE_BOOT_1);
|
||||
}
|
||||
|
||||
|
@@ -3248,6 +3248,36 @@ int __init omap_hwmod_setup_one(const char *oh_name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* omap_hwmod_setup_earlycon_flags - set up flags for early console
|
||||
*
|
||||
* Enable DEBUG_OMAPUART_FLAGS for uart hwmod that is being used as
|
||||
* early concole so that hwmod core doesn't reset and keep it in idle
|
||||
* that specific uart.
|
||||
*/
|
||||
#ifdef CONFIG_SERIAL_EARLYCON
|
||||
static void __init omap_hwmod_setup_earlycon_flags(void)
|
||||
{
|
||||
struct device_node *np;
|
||||
struct omap_hwmod *oh;
|
||||
const char *uart;
|
||||
|
||||
np = of_find_node_by_path("/chosen");
|
||||
if (np) {
|
||||
uart = of_get_property(np, "stdout-path", NULL);
|
||||
if (uart) {
|
||||
np = of_find_node_by_path(uart);
|
||||
if (np) {
|
||||
uart = of_get_property(np, "ti,hwmods", NULL);
|
||||
oh = omap_hwmod_lookup(uart);
|
||||
if (oh)
|
||||
oh->flags |= DEBUG_OMAPUART_FLAGS;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* omap_hwmod_setup_all - set up all registered IP blocks
|
||||
*
|
||||
@@ -3261,6 +3291,9 @@ static int __init omap_hwmod_setup_all(void)
|
||||
_ensure_mpu_hwmod_is_setup(NULL);
|
||||
|
||||
omap_hwmod_for_each(_init, NULL);
|
||||
#ifdef CONFIG_SERIAL_EARLYCON
|
||||
omap_hwmod_setup_earlycon_flags();
|
||||
#endif
|
||||
omap_hwmod_for_each(_setup, NULL);
|
||||
|
||||
return 0;
|
||||
|
@@ -1748,6 +1748,7 @@ static struct omap_hwmod omap54xx_uart1_hwmod = {
|
||||
.name = "uart1",
|
||||
.class = &omap54xx_uart_hwmod_class,
|
||||
.clkdm_name = "l4per_clkdm",
|
||||
.flags = HWMOD_SWSUP_SIDLE_ACT,
|
||||
.main_clk = "func_48m_fclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
@@ -1763,6 +1764,7 @@ static struct omap_hwmod omap54xx_uart2_hwmod = {
|
||||
.name = "uart2",
|
||||
.class = &omap54xx_uart_hwmod_class,
|
||||
.clkdm_name = "l4per_clkdm",
|
||||
.flags = HWMOD_SWSUP_SIDLE_ACT,
|
||||
.main_clk = "func_48m_fclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
@@ -1778,7 +1780,7 @@ static struct omap_hwmod omap54xx_uart3_hwmod = {
|
||||
.name = "uart3",
|
||||
.class = &omap54xx_uart_hwmod_class,
|
||||
.clkdm_name = "l4per_clkdm",
|
||||
.flags = DEBUG_OMAP4UART3_FLAGS,
|
||||
.flags = DEBUG_OMAP4UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
|
||||
.main_clk = "func_48m_fclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
@@ -1794,7 +1796,7 @@ static struct omap_hwmod omap54xx_uart4_hwmod = {
|
||||
.name = "uart4",
|
||||
.class = &omap54xx_uart_hwmod_class,
|
||||
.clkdm_name = "l4per_clkdm",
|
||||
.flags = DEBUG_OMAP4UART4_FLAGS,
|
||||
.flags = DEBUG_OMAP4UART4_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
|
||||
.main_clk = "func_48m_fclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
@@ -1810,6 +1812,7 @@ static struct omap_hwmod omap54xx_uart5_hwmod = {
|
||||
.name = "uart5",
|
||||
.class = &omap54xx_uart_hwmod_class,
|
||||
.clkdm_name = "l4per_clkdm",
|
||||
.flags = HWMOD_SWSUP_SIDLE_ACT,
|
||||
.main_clk = "func_48m_fclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
@@ -1825,6 +1828,7 @@ static struct omap_hwmod omap54xx_uart6_hwmod = {
|
||||
.name = "uart6",
|
||||
.class = &omap54xx_uart_hwmod_class,
|
||||
.clkdm_name = "l4per_clkdm",
|
||||
.flags = HWMOD_SWSUP_SIDLE_ACT,
|
||||
.main_clk = "func_48m_fclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* OMAP and TWL PMIC specific intializations.
|
||||
* OMAP and TWL PMIC specific initializations.
|
||||
*
|
||||
* Copyright (C) 2010 Texas Instruments Incorporated.
|
||||
* Thara Gopinath
|
||||
|
@@ -484,15 +484,15 @@ static struct pwm_omap_dmtimer_pdata pwm_dmtimer_pdata = {
|
||||
};
|
||||
#endif
|
||||
|
||||
static struct lirc_rx51_platform_data __maybe_unused rx51_lirc_data = {
|
||||
static struct ir_rx51_platform_data __maybe_unused rx51_ir_data = {
|
||||
.set_max_mpu_wakeup_lat = omap_pm_set_max_mpu_wakeup_lat,
|
||||
};
|
||||
|
||||
static struct platform_device __maybe_unused rx51_lirc_device = {
|
||||
.name = "lirc_rx51",
|
||||
static struct platform_device __maybe_unused rx51_ir_device = {
|
||||
.name = "ir_rx51",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &rx51_lirc_data,
|
||||
.platform_data = &rx51_ir_data,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -533,7 +533,7 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
|
||||
&omap3_iommu_pdata),
|
||||
OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x4809c000, "4809c000.mmc", &mmc_pdata[0]),
|
||||
OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x480b4000, "480b4000.mmc", &mmc_pdata[1]),
|
||||
OF_DEV_AUXDATA("nokia,n900-ir", 0, "n900-ir", &rx51_lirc_data),
|
||||
OF_DEV_AUXDATA("nokia,n900-ir", 0, "n900-ir", &rx51_ir_data),
|
||||
/* Only on am3517 */
|
||||
OF_DEV_AUXDATA("ti,davinci_mdio", 0x5c030000, "davinci_mdio.0", NULL),
|
||||
OF_DEV_AUXDATA("ti,am3517-emac", 0x5c000000, "davinci_emac.0",
|
||||
@@ -599,7 +599,6 @@ static void pdata_quirks_check(struct pdata_init *quirks)
|
||||
if (of_machine_is_compatible(quirks->compatible)) {
|
||||
if (quirks->fn)
|
||||
quirks->fn();
|
||||
break;
|
||||
}
|
||||
quirks++;
|
||||
}
|
||||
|
@@ -21,6 +21,7 @@
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/sched/clock.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/io.h>
|
||||
|
@@ -130,17 +130,16 @@ static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
|
||||
freq = clk_get_rate(clk);
|
||||
clk_put(clk);
|
||||
|
||||
rcu_read_lock();
|
||||
opp = dev_pm_opp_find_freq_ceil(dev, &freq);
|
||||
if (IS_ERR(opp)) {
|
||||
rcu_read_unlock();
|
||||
pr_err("%s: unable to find boot up OPP for vdd_%s\n",
|
||||
__func__, vdd_name);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
bootup_volt = dev_pm_opp_get_voltage(opp);
|
||||
rcu_read_unlock();
|
||||
dev_pm_opp_put(opp);
|
||||
|
||||
if (!bootup_volt) {
|
||||
pr_err("%s: unable to find voltage corresponding to the bootup OPP for vdd_%s\n",
|
||||
__func__, vdd_name);
|
||||
|
Reference in New Issue
Block a user