本文整理汇总了C++中cpu_is_omap446x函数的典型用法代码示例。如果您正苦于以下问题:C++ cpu_is_omap446x函数的具体用法?C++ cpu_is_omap446x怎么用?C++ cpu_is_omap446x使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cpu_is_omap446x函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: omap_twl4030_init
int __init omap_twl4030_init(void)
{
/* Reuse OMAP3430 values */
if (cpu_is_omap3630()) {
omap3_mpu_pmic.vp_vddmin = OMAP3630_VP1_VLIMITTO_VDDMIN;
omap3_mpu_pmic.vp_vddmax = OMAP3630_VP1_VLIMITTO_VDDMAX;
omap3_core_pmic.vp_vddmin = OMAP3630_VP2_VLIMITTO_VDDMIN;
omap3_core_pmic.vp_vddmax = OMAP3630_VP2_VLIMITTO_VDDMAX;
}
if (cpu_is_omap446x()) {
/* use SMPS1 for CORE instead of SMPS3 on 4430 */
omap_twl_map[1].pmic_data->volt_reg_addr = OMAP4_VDD_MPU_SR_VOLT_REG;
omap_twl_map[1].pmic_data->cmd_reg_addr = OMAP4_VDD_MPU_SR_CMD_REG;
/* Adjust min / max voltages */
omap_twl_map[0].pmic_data->vp_vddmin = OMAP4460_VP_MPU_VLIMITTO_VDDMIN;
omap_twl_map[0].pmic_data->vp_vddmax = OMAP4460_VP_MPU_VLIMITTO_VDDMAX;
omap_twl_map[1].pmic_data->vp_vddmin = OMAP4460_VP_CORE_VLIMITTO_VDDMIN;
omap_twl_map[1].pmic_data->vp_vddmax = OMAP4460_VP_CORE_VLIMITTO_VDDMAX;
omap_twl_map[2].pmic_data->vp_vddmin = OMAP4460_VP_IVA_VLIMITTO_VDDMIN;
omap_twl_map[2].pmic_data->vp_vddmax = OMAP4460_VP_IVA_VLIMITTO_VDDMAX;
}
if (cpu_is_omap34xx())
return omap_pmic_register_data(omap3_twl_map);
else if (cpu_is_omap443x())
return omap_pmic_register_data(&omap_twl_map[0]);
else if (cpu_is_omap446x()) /* mpu from tps6236x */
return omap_pmic_register_data(&omap_twl_map[1]);
else
return 0;
}
开发者ID:koh523,项目名称:kernel-pandaboard-ES-RevB3,代码行数:32,代码来源:omap_twl4030.c
示例2: omap4_panda_init
static void __init omap4_panda_init(void)
{
int package = OMAP_PACKAGE_CBS;
int ret;
if (omap_rev() == OMAP4430_REV_ES1_0)
package = OMAP_PACKAGE_CBL;
omap_emif_set_device_details(1, &lpddr2_elpida_2G_S4_x2_info,
lpddr2_elpida_2G_S4_timings,
ARRAY_SIZE(lpddr2_elpida_2G_S4_timings),
&lpddr2_elpida_S4_min_tck,
&custom_configs);
omap_emif_set_device_details(2, &lpddr2_elpida_2G_S4_x2_info,
lpddr2_elpida_2G_S4_timings,
ARRAY_SIZE(lpddr2_elpida_2G_S4_timings),
&lpddr2_elpida_S4_min_tck,
&custom_configs);
if (cpu_is_omap446x())
gpio_leds[0].gpio = 110;
omap4_mux_init(board_mux, NULL, package);
omap_panda_wlan_data.irq = gpio_to_irq(GPIO_WIFI_IRQ);
omap_register_mac_device_fixup_paths(panda_fixup_mac_device_paths,
ARRAY_SIZE(panda_fixup_mac_device_paths));
ret = wl12xx_set_platform_data(&omap_panda_wlan_data);
if (ret)
pr_err("error setting wl12xx data: %d\n", ret);
omap4_panda_init_rev();
omap4_panda_i2c_init();
platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices));
platform_device_register(&omap_vwlan_device);
omap_serial_init();
omap_sdrc_init(NULL, NULL);
omap4_twl6030_hsmmc_init(mmc);
omap4_ehci_init();
usb_musb_init(&musb_board_data);
omap4_panda_display_init();
#ifdef CONFIG_MACH_OMAP4_PANDA_CAMERA_SUPPORT
panda_camera_init(&panda_camera_board_info);
#endif
if (cpu_is_omap446x()) {
/* Vsel0 = gpio, vsel1 = gnd */
ret = omap_tps6236x_board_setup(true, TPS62361_GPIO, -1,
OMAP_PIN_OFF_OUTPUT_HIGH, -1);
if (ret)
pr_err("TPS62361 initialization failed: %d\n", ret);
}
omap_enable_smartreflex_on_init();
}
开发者ID:alessandroste,项目名称:testBSP,代码行数:56,代码来源:board-omap4panda.c
示例3: omap44xx_voltagedomains_init
void __init omap44xx_voltagedomains_init(void)
{
struct voltagedomain *voltdm;
int i;
/*
* XXX Will depend on the process, validation, and binning
* for the currently-running IC
*/
#ifdef CONFIG_PM_OPP
if (cpu_is_omap443x()) {
omap4_voltdm_mpu.volt_data = omap443x_vdd_mpu_volt_data;
omap4_voltdm_iva.volt_data = omap443x_vdd_iva_volt_data;
omap4_voltdm_core.volt_data = omap443x_vdd_core_volt_data;
} else if (cpu_is_omap446x()) {
omap4_voltdm_mpu.volt_data = omap446x_vdd_mpu_volt_data;
omap4_voltdm_iva.volt_data = omap446x_vdd_iva_volt_data;
omap4_voltdm_core.volt_data = omap446x_vdd_core_volt_data;
}
#endif
omap4_voltdm_mpu.vp_param = &omap4_mpu_vp_data;
omap4_voltdm_iva.vp_param = &omap4_iva_vp_data;
omap4_voltdm_core.vp_param = &omap4_core_vp_data;
omap4_voltdm_mpu.vc_param = &omap4_mpu_vc_data;
omap4_voltdm_iva.vc_param = &omap4_iva_vc_data;
omap4_voltdm_core.vc_param = &omap4_core_vc_data;
for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++)
voltdm->sys_clk.name = sys_clk_name;
voltdm_init(voltagedomains_omap4);
};
开发者ID:BinVul,项目名称:linux2.6.32,代码行数:34,代码来源:voltagedomains44xx_data.c
示例4: omap4_opp_init
/**
* omap4_opp_init() - initialize omap4 opp table
*/
int __init omap4_opp_init(void)
{
int r = -ENODEV;
int trimmed = 1;
if (!cpu_is_omap44xx())
return r;
if (cpu_is_omap443x())
r = omap_init_opp_table(omap443x_opp_def_list,
ARRAY_SIZE(omap443x_opp_def_list));
else if (cpu_is_omap446x()) {
r = omap_init_opp_table(omap446x_opp_def_list,
ARRAY_SIZE(omap446x_opp_def_list));
trimmed = omap_readl(0x4a002268) & ((1 << 18) | (1 << 19));
/* if device is untrimmed override DPLL TRIM register */
if (!trimmed)
omap_writel(0x29, 0x4a002330);
}
if (!r) {
if (omap4_has_mpu_1_2ghz())
omap4_mpu_opp_enable(1200000000);
if (!trimmed)
pr_info("This is DPLL un-trimmed SOM. OPP is limited at 1.2 GHz\n");
if (omap4_has_mpu_1_5ghz() && trimmed)
omap4_mpu_opp_enable(1500000000);
}
return r;
}
开发者ID:ARMP,项目名称:ARM-Project,代码行数:33,代码来源:opp4xxx_data.c
示例5: omap4_opp_init
/**
* omap4_opp_init() - initialize omap4 opp table
*/
int __init omap4_opp_init(void)
{
int r = -ENODEV;
if (!cpu_is_omap44xx())
return r;
if (cpu_is_omap443x())
r = omap_init_opp_table(omap443x_opp_def_list,
ARRAY_SIZE(omap443x_opp_def_list));
else if (cpu_is_omap446x())
r = omap_init_opp_table(omap446x_opp_def_list,
ARRAY_SIZE(omap446x_opp_def_list));
if (!r) {
if (omap4_has_mpu_1_2ghz())
omap4_mpu_opp_enable(1200000000);
/* 1.8Ghz까지 오버클럭 */
if (omap4_has_mpu_1_5ghz())
omap4_mpu_opp_enable(1340000000);
omap4_mpu_opp_enable(1520000000);
omap4_mpu_opp_enable(1650000000);
}
return r;
}
开发者ID:HDMasTer,项目名称:Air_Kernel_for_GN,代码行数:28,代码来源:opp4xxx_data.c
示例6: omap4_smp_prepare_cpus
static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)
{
void *startup_addr = omap4_secondary_startup;
void __iomem *base = omap_get_wakeupgen_base();
/*
* Initialise the SCU and wake up the secondary core using
* wakeup_secondary().
*/
if (scu_base)
scu_enable(scu_base);
if (cpu_is_omap446x()) {
startup_addr = omap4460_secondary_startup;
pm44xx_errata |= PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD;
}
/*
* Write the address of secondary startup routine into the
* AuxCoreBoot1 where ROM code will jump and start executing
* on secondary core once out of WFE
* A barrier is added to ensure that write buffer is drained
*/
if (omap_secure_apis_support())
omap_auxcoreboot_addr(virt_to_phys(startup_addr));
else
__raw_writel(virt_to_phys(omap5_secondary_startup),
base + OMAP_AUX_CORE_BOOT_1);
}
开发者ID:03199618,项目名称:linux,代码行数:30,代码来源:omap-smp.c
示例7: omap_4430sdp_display_init
static void __init omap_4430sdp_display_init(void)
{
int r;
/* Enable LCD2 by default (instead of Pico DLP) */
r = gpio_request_one(DISPLAY_SEL_GPIO, GPIOF_OUT_INIT_HIGH,
"display_sel");
if (r)
pr_err("%s: Could not get display_sel GPIO\n", __func__);
sdp4430_picodlp_init();
omap_display_init(&sdp4430_dss_data);
/*
* OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and
* later have external pull up on the HDMI I2C lines
*/
if (cpu_is_omap446x() || omap_rev() > OMAP4430_REV_ES2_2)
omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
else
omap_hdmi_init(0);
omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
}
开发者ID:250bpm,项目名称:linux,代码行数:25,代码来源:board-4430sdp.c
示例8: wakeup_secondary
static void __init wakeup_secondary(void)
{
void *startup_addr = omap_secondary_startup;
void __iomem *base = omap_get_wakeupgen_base();
if (cpu_is_omap446x()) {
startup_addr = omap_secondary_startup_4460;
pm44xx_errata |= PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD;
}
/*
* Write the address of secondary startup routine into the
* AuxCoreBoot1 where ROM code will jump and start executing
* on secondary core once out of WFE
* A barrier is added to ensure that write buffer is drained
*/
if (omap_secure_apis_support())
omap_auxcoreboot_addr(virt_to_phys(startup_addr));
else
__raw_writel(virt_to_phys(omap5_secondary_startup),
base + OMAP_AUX_CORE_BOOT_1);
smp_wmb();
/*
* Send a 'sev' to wake the secondary core from WFE.
* Drain the outstanding writes to memory
*/
dsb_sev();
mb();
}
开发者ID:Lillianlewang,项目名称:linux-3.8.13,代码行数:31,代码来源:omap-smp.c
示例9: pcb_temp_sensor_init
int __init pcb_temp_sensor_init(void)
{
if (!cpu_is_omap446x())
return 0;
return platform_driver_register(&pcb_temp_sensor_driver);
}
开发者ID:STS-Dev-Team,项目名称:kernel_omap4_xt910s,代码行数:7,代码来源:pcb_temp_sensor.c
示例10: platform_secondary_init
void __cpuinit platform_secondary_init(unsigned int cpu)
{
u32 diag0_errata_flags = 0;
/* Enable NS access to SMP bit for this CPU on HS devices */
if (cpu_is_omap446x() || cpu_is_omap443x()) {
if (omap_type() != OMAP2_DEVICE_TYPE_GP)
omap4_secure_dispatcher(PPA_SERVICE_DEFAULT_POR_NS_SMP,
FLAG_START_CRITICAL,
0, 0, 0, 0, 0);
else {
diag0_errata_flags =
omap4_get_diagctrl0_errata_flags();
if (diag0_errata_flags)
omap_smc1(HAL_DIAGREG_0, diag0_errata_flags);
}
}
/*
* If any interrupts are already enabled for the primary
* core (e.g. timer irq), then they will not have been enabled
* for us: do so
*/
gic_secondary_init(0);
/*
* Synchronise with the boot thread.
*/
spin_lock(&boot_lock);
spin_unlock(&boot_lock);
}
开发者ID:qkdxorjs1002,项目名称:nov_kernel_razr,代码行数:31,代码来源:omap-smp.c
示例11: omap4_sar_save
/*
* omap4_sar_save -
* Save the context to SAR_RAM1 and SAR_RAM2 as per
* omap4xxx_sar_ram1_layout and omap4xxx_sar_ram2_layout for the device OFF
* mode
*/
int omap4_sar_save(void)
{
/*
* Not supported on ES1.0 silicon
*/
if (omap_rev() == OMAP4430_REV_ES1_0) {
WARN_ONCE(1, "omap4: SAR backup not supported on ES1.0 ..\n");
return -ENODEV;
}
if (omap4_sar_not_accessible()) {
pr_debug("%s: USB SAR CNTX registers are not accessible!\n",
__func__);
return -EBUSY;
}
/*
* SAR bits and clocks needs to be enabled
*/
clkdm_wakeup(l3init_clkdm);
pwrdm_enable_hdwr_sar(l3init_pwrdm);
clk_enable(usb_host_ck);
clk_enable(usb_tll_ck);
/* Save SAR BANK1 */
if (cpu_is_omap446x())
sar_save(ARRAY_SIZE(omap446x_sar_ram1_layout), SAR_BANK1_OFFSET,
omap446x_sar_ram1_layout);
else
sar_save(ARRAY_SIZE(omap443x_sar_ram1_layout), SAR_BANK1_OFFSET,
omap443x_sar_ram1_layout);
clk_disable(usb_host_ck);
clk_disable(usb_tll_ck);
pwrdm_disable_hdwr_sar(l3init_pwrdm);
clkdm_allow_idle(l3init_clkdm);
/* Save SAR BANK2 */
if (cpu_is_omap446x())
sar_save(ARRAY_SIZE(omap446x_sar_ram2_layout), SAR_BANK2_OFFSET,
omap446x_sar_ram2_layout);
else
sar_save(ARRAY_SIZE(omap443x_sar_ram2_layout), SAR_BANK2_OFFSET,
omap443x_sar_ram2_layout);
return 0;
}
开发者ID:Superdallas,项目名称:JBX_Kernel,代码行数:53,代码来源:omap4-sar.c
示例12: omap_devinit_temp_sensor
int __init omap_devinit_temp_sensor(void)
{
if (!cpu_is_omap446x() && !cpu_is_omap447x())
return 0;
return omap_hwmod_for_each_by_class("thermal_sensor",
temp_sensor_dev_init, NULL);
}
开发者ID:0xD34D,项目名称:kernel_omap_bowser-common,代码行数:8,代码来源:temp_sensor_device.c
示例13: omap_die_governor_init
static int __init omap_die_governor_init(void)
{
struct thermal_dev *thermal_fw;
omap_gov = kzalloc(sizeof(struct omap_die_governor), GFP_KERNEL);
if (!omap_gov) {
pr_err("%s:Cannot allocate memory\n", __func__);
return -ENOMEM;
}
thermal_fw = kzalloc(sizeof(struct thermal_dev), GFP_KERNEL);
if (thermal_fw) {
thermal_fw->name = "omap_ondie_governor";
thermal_fw->domain_name = "cpu";
thermal_fw->dev_ops = &omap_gov_ops;
thermal_governor_dev_register(thermal_fw);
therm_fw = thermal_fw;
} else {
pr_err("%s: Cannot allocate memory\n", __func__);
kfree(omap_gov);
return -ENOMEM;
}
if (cpu_is_omap446x()) {
omap_gov->gradient_slope = OMAP_GRADIENT_SLOPE_4460;
omap_gov->gradient_const = OMAP_GRADIENT_CONST_4460;
omap_gov->gradient_slope_w_pcb = OMAP_GRADIENT_SLOPE_W_PCB_4460;
omap_gov->gradient_const_w_pcb = OMAP_GRADIENT_CONST_W_PCB_4460;
} else if (cpu_is_omap447x()) {
omap_gov->gradient_slope = OMAP_GRADIENT_SLOPE_4470;
omap_gov->gradient_const = OMAP_GRADIENT_CONST_4470;
omap_gov->gradient_slope_w_pcb = OMAP_GRADIENT_SLOPE_W_PCB_4470;
omap_gov->gradient_const_w_pcb = OMAP_GRADIENT_CONST_W_PCB_4470;
} else {
omap_gov->gradient_slope = 0;
omap_gov->gradient_const = 0;
omap_gov->gradient_slope_w_pcb = 0;
omap_gov->gradient_const_w_pcb = 0;
}
/* Init delayed work to average on-die temperature */
INIT_DELAYED_WORK(&omap_gov->average_cpu_sensor_work,
average_cpu_sensor_delayed_work_fn);
INIT_DELAYED_WORK(&omap_gov->decrease_mpu_freq_work,
decrease_mpu_freq_fn);
omap_gov->average_period = NORMAL_TEMP_MONITORING_RATE;
omap_gov->decrease_mpu_freq_period = DECREASE_MPU_FREQ_PERIOD;
omap_gov->avg_is_valid = 0;
if (register_pm_notifier(&omap_die_pm_notifier))
pr_err("%s: omap_die pm registration failed!\n", __func__);
schedule_delayed_work(&omap_gov->average_cpu_sensor_work,
msecs_to_jiffies(0));
return 0;
}
开发者ID:b7acc,项目名称:kernel_omap_bowser-common,代码行数:58,代码来源:omap_die_governor.c
示例14: sar_save
static void sar_save(u32 nb_regs, u32 sar_bank, const u32 sar_layout_table[][4])
{
u32 reg_val, size, i, j;
void __iomem *reg_read_addr, *sar_wr_addr;
void *usb_sar_start;
void *usb_sar_end;
int usb_sar_table = 0;
usb_sar_start = sar_ram_base + sar_bank + USB_SAR_AREA_START;
usb_sar_end = sar_ram_base + sar_bank + USB_SAR_AREA_END;
/* 4460 USB SAR Registers are offset by 4 bytes */
if (cpu_is_omap446x()) {
usb_sar_start += 0x04;
usb_sar_end += 0x04;
}
if ((sar_layout_table == omap443x_sar_ram1_layout) ||
(sar_layout_table == omap446x_sar_ram1_layout))
usb_sar_table = 1;
for (i = 0; i < nb_regs; i++) {
if (omap4_sar_modules[(sar_layout_table[i][MODULE_ADDR_IDX])]) {
size = sar_layout_table[i][MODULE_NB_REGS_IDX];
reg_read_addr =
omap4_sar_modules[sar_layout_table[i]
[MODULE_ADDR_IDX]]
+ sar_layout_table[i][MODULE_OFFSET_IDX];
sar_wr_addr = sar_ram_base + sar_bank +
sar_layout_table[i][SAR_RAM_OFFSET_IDX];
for (j = 0; j < size; j++) {
reg_val = __raw_readl(reg_read_addr + j * 4);
if (usb_sar_table &&
sar_wr_addr+j*4 >= usb_sar_start &&
sar_wr_addr+j*4 < usb_sar_end) {
if (!sar_needs_ehci_saving) {
/* Use the stored version */
reg_val =
usb_sar_data
[(sar_wr_addr-usb_sar_start)/4
+ j].val;
} else {
/* Save the USB SAR register */
usb_sar_data
[(sar_wr_addr-usb_sar_start)/4
+ j].val = reg_val;
usb_sar_data
[(sar_wr_addr-usb_sar_start)/4
+ j].reg_addr = reg_read_addr;
}
}
__raw_writel(reg_val, sar_wr_addr + j * 4);
}
}
}
if (usb_sar_table)
sar_needs_ehci_saving = 0;
}
开发者ID:Superdallas,项目名称:JBX_Kernel,代码行数:58,代码来源:omap4-sar.c
示例15: omap_tablet_init
static void __init omap_tablet_init(void)
{
int status;
int package = OMAP_PACKAGE_CBS;
int tablet_rev = 0;
if (omap_rev() == OMAP4430_REV_ES1_0)
package = OMAP_PACKAGE_CBL;
omap4_mux_init(board_mux, NULL, package);
omap_emif_setup_device_details(&emif_devices, &emif_devices);
omap_board_config = tablet_config;
omap_board_config_size = ARRAY_SIZE(tablet_config);
tablet_rev = omap_init_board_version(0);
omap4_create_board_props();
omap4_audio_conf();
omap4_i2c_init();
tablet_touch_init();
tablet_camera_mux_init();
omap_dmm_init();
tablet_panel_init();
tablet_pmic_mux_init();
tablet_set_osc_timings();
tablet_button_init();
omap4_register_ion();
board_serial_init();
omap4_tablet_wifi_init();
omap4_twl6030_hsmmc_init(mmc);
tablet_sensor_init();
platform_add_devices(tablet4430_devices,
ARRAY_SIZE(tablet4430_devices));
wake_lock_init(&st_wk_lock, WAKE_LOCK_SUSPEND, "st_wake_lock");
omap4_ehci_ohci_init();
usb_musb_init(&musb_board_data);
status = omap_ethernet_init();
if (status) {
pr_err("Ethernet initialization failed: %d\n", status);
} else {
tablet_spi_board_info[0].irq = gpio_to_irq(ETH_KS8851_IRQ);
spi_register_board_info(tablet_spi_board_info,
ARRAY_SIZE(tablet_spi_board_info));
}
if (cpu_is_omap446x()) {
/* Vsel0 = gpio, vsel1 = gnd */
status = omap_tps6236x_board_setup(true, TPS62361_GPIO, -1,
OMAP_PIN_OFF_OUTPUT_HIGH, -1);
if (status)
pr_err("TPS62361 initialization failed: %d\n", status);
}
omap_enable_smartreflex_on_init();
if (enable_suspend_off)
omap_pm_enable_off_mode();
}
开发者ID:jacksion,项目名称:kernel_huawei_front,代码行数:58,代码来源:board-44xx-tablet.c
示例16: omap44xx_powerdomains_init
void __init omap44xx_powerdomains_init(void)
{
pwrdm_register_platform_funcs(&omap4_pwrdm_operations);
pwrdm_register_pwrdms(powerdomains_omap44xx);
if (cpu_is_omap443x())
pwrdm_register_pwrdms(powerdomains_omap443x);
if (cpu_is_omap446x())
pwrdm_register_pwrdms(powerdomains_omap446x);
pwrdm_complete_init();
}
开发者ID:lchao-bit,项目名称:linaro-kernel,代码行数:10,代码来源:powerdomains44xx_data.c
示例17: omap_temp_sensor_idle
void omap_temp_sensor_idle(int idle_state)
{
if (!cpu_is_omap446x() && !cpu_is_omap447x())
return;
if (idle_state)
omap_temp_sensor_disable(temp_sensor_pm);
else
omap_temp_sensor_enable(temp_sensor_pm);
}
开发者ID:b7acc,项目名称:kernel_omap_bowser-common,代码行数:10,代码来源:omap_temp_sensor.c
示例18: omap44xx_voltagedomains_init
void __init omap44xx_voltagedomains_init(void)
{
struct voltagedomain *voltdm;
int i;
omap4_voltdm_mpu.vp->vlimits->vddmax = OMAP4460_VP_MPU_VLIMITTO_VDDMAX;
omap4_voltdm_iva.vp->vlimits->vddmax = OMAP4460_VP_IVA_VLIMITTO_VDDMAX;
omap4_voltdm_core.vp->vlimits->vddmax = OMAP4460_VP_CORE_VLIMITTO_VDDMAX;
/*
* XXX Will depend on the process, validation, and binning
* for the currently-running IC
*/
if (cpu_is_omap443x()) {
struct setup_time_ramp_params *params =
omap4_vc_core.common->setup_time_params;
if (params) {
params->pre_scaler_to_sysclk_cycles =
pre_scaler_to_sysclk_cycles_443x;
}
omap4_vdd_mpu_info.volt_data = omap443x_vdd_mpu_volt_data;
omap4_vdd_iva_info.volt_data = omap443x_vdd_iva_volt_data;
omap4_vdd_core_info.volt_data = omap443x_vdd_core_volt_data;
omap4_vdd_mpu_info.dep_vdd_info = omap443x_vddmpu_dep_info;
omap4_vdd_iva_info.dep_vdd_info = omap443x_vddiva_dep_info;
omap4_voltdm_mpu.vp->vlimits->vddmax =
OMAP4430_VP_MPU_VLIMITTO_VDDMAX;
omap4_voltdm_iva.vp->vlimits->vddmax =
OMAP4430_VP_IVA_VLIMITTO_VDDMAX;
omap4_voltdm_core.vp->vlimits->vddmax =
OMAP4430_VP_CORE_VLIMITTO_VDDMAX;
} else if (cpu_is_omap446x()) {
omap4_vdd_mpu_info.volt_data = omap446x_vdd_mpu_volt_data;
omap4_vdd_iva_info.volt_data = omap446x_vdd_iva_volt_data;
omap4_vdd_core_info.volt_data = omap446x_vdd_core_volt_data;
omap4_vdd_mpu_info.dep_vdd_info = omap446x_vddmpu_dep_info;
omap4_vdd_iva_info.dep_vdd_info = omap446x_vddiva_dep_info;
} else if (cpu_is_omap447x()) {
omap4_vdd_mpu_info.volt_data = omap447x_vdd_mpu_volt_data;
omap4_vdd_iva_info.volt_data = omap447x_vdd_iva_volt_data;
omap4_vdd_core_info.volt_data = omap447x_vdd_core_volt_data;
omap4_vdd_mpu_info.dep_vdd_info = omap447x_vddmpu_dep_info;
omap4_vdd_iva_info.dep_vdd_info = omap447x_vddiva_dep_info;
} else {
return;
}
for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++)
voltdm->sys_clk.name = sys_clk_name;
voltdm_init(voltagedomains_omap4);
};
开发者ID:achaykin,项目名称:android_kernel_huawei_viva,代码行数:53,代码来源:voltagedomains44xx_data.c
示例19: omap4_sar_overwrite
/**
* omap4_sar_overwrite :
* This API overwrite some of the SAR locations as a special cases
* The register content to be saved can be the register value before
* going into OFF-mode or a value that is required on wake up. This means
* that the restored register value can be different from the last value
* of the register before going into OFF-mode
* - CM1 and CM2 configuration
* Bits 0 of the CM_SHADOW_FREQ_CONFIG1 regiser and the
* CM_SHADOW_FREQ_CONFIG2 register are self-clearing and must
* be set at restore time. Thus, these data must always be
* overwritten in the SAR RAM.
* - Because USBHOSTHS and USBTLL restore needs a particular
* sequencing, the software must overwrite data read from
* the following registers implied in phase2a and phase 2b
*/
void omap4_sar_overwrite(void)
{
u32 val = 0;
u32 offset = 0;
if (cpu_is_omap446x())
offset = 0x04;
/* Overwriting Phase1 data to be restored */
/* CM2 MEMIF_CLKTRCTRL = SW_WKUP, before FREQ UPDATE */
__raw_writel(0x2, sar_ram_base + SAR_BANK1_OFFSET + 0xd0);
/* CM1 CM_SHADOW_FREQ_CONFIG2, Enable FREQ UPDATE */
val = __raw_readl(OMAP4430_CM_SHADOW_FREQ_CONFIG2);
/*
* FIXME: Implement FREQ UPDATE for L#/M5 before enabling this
* val |= 1 << OMAP4430_FREQ_UPDATE_SHIFT;
*/
__raw_writel(val, sar_ram_base + SAR_BANK1_OFFSET + 0x100);
/* CM1 CM_SHADOW_FREQ_CONFIG1, Enable FREQ UPDATE */
val = __raw_readl(OMAP4430_CM_SHADOW_FREQ_CONFIG1);
val |= 1 << OMAP4430_FREQ_UPDATE_SHIFT;
val &= ~OMAP4430_DLL_OVERRIDE_MASK;
__raw_writel(val, sar_ram_base + SAR_BANK1_OFFSET + 0x104);
/* CM2 MEMIF_CLKTRCTRL = HW_AUTO, after FREQ UPDATE */
__raw_writel(0x3, sar_ram_base + SAR_BANK1_OFFSET + 0x124);
/* Overwriting Phase2a data to be restored */
/* CM_L3INIT_USB_HOST_CLKCTRL: SAR_MODE = 1, MODULEMODE = 2 */
__raw_writel(0x00000012,
sar_ram_base + SAR_BANK1_OFFSET + 0x2ec + offset);
/* CM_L3INIT_USB_TLL_CLKCTRL: SAR_MODE = 1, MODULEMODE = 1 */
__raw_writel(0x00000011,
sar_ram_base + SAR_BANK1_OFFSET + 0x2f0 + offset);
/* CM2 CM_SDMA_STATICDEP : Enable static depedency for SAR modules */
__raw_writel(0x000090e8,
sar_ram_base + SAR_BANK1_OFFSET + 0x2f4 + offset);
/* Overwriting Phase2b data to be restored */
/* CM_L3INIT_USB_HOST_CLKCTRL: SAR_MODE = 0, MODULEMODE = 0 */
val = __raw_readl(OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL);
val &= (OMAP4430_CLKSEL_UTMI_P1_MASK | OMAP4430_CLKSEL_UTMI_P2_MASK);
__raw_writel(val, sar_ram_base + SAR_BANK1_OFFSET + 0x91c + offset);
/* CM_L3INIT_USB_TLL_CLKCTRL: SAR_MODE = 0, MODULEMODE = 0 */
__raw_writel(0x0000000,
sar_ram_base + SAR_BANK1_OFFSET + 0x920 + offset);
/* CM2 CM_SDMA_STATICDEP : Clear the static depedency */
__raw_writel(0x00000040,
sar_ram_base + SAR_BANK1_OFFSET + 0x924 + offset);
/* readback to ensure data reaches to SAR RAM */
barrier();
val = __raw_readl(sar_ram_base + SAR_BANK1_OFFSET + 0x924 + offset);
}
开发者ID:Superdallas,项目名称:JBX_Kernel,代码行数:69,代码来源:omap4-sar.c
示例20: omap_init_gpu
static void omap_init_gpu(void)
{
struct omap_hwmod *oh;
struct omap_device *od;
int max_omap_gpu_hwmod_name_len = 16;
char oh_name[max_omap_gpu_hwmod_name_len];
int l;
struct gpu_platform_data *pdata;
char *name = "pvrsrvkm";
l = snprintf(oh_name, max_omap_gpu_hwmod_name_len,
"gpu");
WARN(l >= max_omap_gpu_hwmod_name_len,
"String buffer overflow in GPU device setup\n");
oh = omap_hwmod_lookup(oh_name);
if (!oh) {
pr_err("omap_init_gpu: Could not look up %s\n", oh_name);
return;
}
pdata = kzalloc(sizeof(struct gpu_platform_data),
GFP_KERNEL);
if (!pdata) {
pr_err("omap_init_gpu: Platform data memory allocation failed\n");
return;
}
#ifdef CONFIG_OMAP4_DPLL_CASCADING
pdata->device_scale = omap_device_scale_gpu;
#else
pdata->device_scale = omap_device_scale;
#endif
pdata->device_enable = omap_device_enable;
pdata->device_idle = omap_device_idle;
pdata->device_shutdown = omap_device_shutdown;
pdata->opp_get_opp_count = opp_get_opp_count;
pdata->opp_find_freq_ceil = opp_find_freq_ceil;
pdata->access_process_vm = access_process_vm;
pdata->ovfreqs = 0;
if (cpu_is_omap446x())
pdata->ovfreqs = 1;
od = omap_device_build(name, 0, oh, pdata,
sizeof(struct gpu_platform_data),
omap_gpu_latency, ARRAY_SIZE(omap_gpu_latency), 0);
WARN(IS_ERR(od), "Could not build omap_device for %s %s\n",
name, oh_name);
kfree(pdata);
}
开发者ID:achaykin,项目名称:android_kernel_huawei_viva,代码行数:52,代码来源:devices.c
注:本文中的cpu_is_omap446x函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论