Clean-up for omaps for v4.4 merge window:
- Remove legacy omap3 ISP code as the driver is DT only - Remove VoiceBlue board support as it's been unused over 10 years now - Remove unused polarity control macros for TWL - Remove two unneeded semicolons - Remove unused core dpll code for reprogramming the rates Note that this branch is against v4.3-rc4 as that contains critical MMC related fixes to boot with MMC working on most omaps. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJWHrwcAAoJEBvUPslcq6Vzv+EP/joH02GVQmwJKREznkp1L+Jg eaJ3P9Os7p2cHkz68XEq79Cq/O4Zh3yupS4O9OeGn6XhqcG+MnXFETVYKIV3WJ7s QvSuRxJrc6dStbPKAcsmgczJNNE+8mgFkI4rrJ75d17SZ+ybaQVQRziuRLMq9YX5 GIQDayYKlBYs5gb21h7qU9O4zHzkNIga/yKydOZJQ0GZ8ZJhQ68KZtfXPCrZUquD x2DVecGsPe+CfoDjGppjngD7suTQteIALno/VoIXPhtewwDKuYXW82hfNL9/WXF3 OSVWkxp/mcldJJzwJhoCv2kN4Dmp0GaDVqTNn2tpxMUpEeDGjRnrDc3al4z2k87f 9A2qs4CRSSnDcTpVqNBUSSF6BOBpacHrUZVtlm9YF5e+UyIzI+MCwOM6Sn5EusNg ENyPgV1HGkUhyRPEeBJsPzRF4NOMDyyLiPeIpwcTXATl6udBHTV1L9yM7yhPEtJg 9ftCz9JGVO1EjD90By9YZcCK37LV1MaFRliWfnXjodGraWY7x3WlYsdLV4Cv3t+t yp6HFufciHrthfoSERnb2nEK6g2N9nITeaiBhknrTN/spfs+0uwkjumwa7AIdfNl 4kvJpdge+UmhrNiFktvbhjtqEP5Nq3LUGDdvMr2rvppP8HCiss6+K51otzSeo8ny BTrFLhEU8GEzVplgg7Er =d5vJ -----END PGP SIGNATURE----- Merge tag 'omap-for-v4.4/cleanup-pt1' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/cleanup Merge "Clean-up for omaps for v4.4 merge window" from Tony Lindgren: - Remove legacy omap3 ISP code as the driver is DT only - Remove VoiceBlue board support as it's been unused over 10 years now - Remove unused polarity control macros for TWL - Remove two unneeded semicolons - Remove unused core dpll code for reprogramming the rates Note that this branch is against v4.3-rc4 as that contains critical MMC related fixes to boot with MMC working on most omaps. * tag 'omap-for-v4.4/cleanup-pt1' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: ARM: OMAP3: clock: remove un-used core dpll re-program code ARM: OMAP2+: Remove unneeded semicolons ARM: OMAP3: vc: Remove unused macros ARM: OMAP1: Remove board support for VoiceBlue board ARM: OMAP2+: Remove legacy OMAP3 ISP instantiation
This commit is contained in:
commit
5f1e3c9100
|
@ -90,13 +90,6 @@ config MACH_OMAP_FSAMPLE
|
|||
Support for TI OMAP 850 F-Sample board. Say Y here if you have such
|
||||
a board.
|
||||
|
||||
config MACH_VOICEBLUE
|
||||
bool "Voiceblue"
|
||||
depends on ARCH_OMAP1 && ARCH_OMAP15XX
|
||||
help
|
||||
Support for Voiceblue GSM/VoIP gateway. Say Y here if you have
|
||||
such a board.
|
||||
|
||||
config MACH_OMAP_PALMTE
|
||||
bool "Palm Tungsten E"
|
||||
depends on ARCH_OMAP1 && ARCH_OMAP15XX
|
||||
|
|
|
@ -37,7 +37,6 @@ obj-$(CONFIG_MACH_OMAP_FSAMPLE) += board-fsample.o board-nand.o
|
|||
obj-$(CONFIG_MACH_OMAP_OSK) += board-osk.o
|
||||
obj-$(CONFIG_MACH_OMAP_H3) += board-h3.o board-h3-mmc.o \
|
||||
board-nand.o
|
||||
obj-$(CONFIG_MACH_VOICEBLUE) += board-voiceblue.o
|
||||
obj-$(CONFIG_MACH_OMAP_PALMTE) += board-palmte.o
|
||||
obj-$(CONFIG_MACH_OMAP_PALMZ71) += board-palmz71.o
|
||||
obj-$(CONFIG_MACH_OMAP_PALMTT) += board-palmtt.o
|
||||
|
|
|
@ -1,296 +0,0 @@
|
|||
/*
|
||||
* linux/arch/arm/mach-omap1/board-voiceblue.c
|
||||
*
|
||||
* Modified from board-generic.c
|
||||
*
|
||||
* Copyright (C) 2004 2N Telekomunikace, Ladislav Michl <michl@2n.cz>
|
||||
*
|
||||
* Code for OMAP5910 based VoiceBlue board (VoIP to GSM gateway).
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/notifier.h>
|
||||
#include <linux/reboot.h>
|
||||
#include <linux/serial_8250.h>
|
||||
#include <linux/serial_reg.h>
|
||||
#include <linux/smc91x.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/reboot.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <mach/board-voiceblue.h>
|
||||
#include <mach/flash.h>
|
||||
#include <mach/mux.h>
|
||||
#include <mach/tc.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/usb.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
static struct plat_serial8250_port voiceblue_ports[] = {
|
||||
{
|
||||
.mapbase = (unsigned long)(OMAP_CS1_PHYS + 0x40000),
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 1,
|
||||
.uartclk = 3686400,
|
||||
},
|
||||
{
|
||||
.mapbase = (unsigned long)(OMAP_CS1_PHYS + 0x50000),
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 1,
|
||||
.uartclk = 3686400,
|
||||
},
|
||||
{
|
||||
.mapbase = (unsigned long)(OMAP_CS1_PHYS + 0x60000),
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 1,
|
||||
.uartclk = 3686400,
|
||||
},
|
||||
{
|
||||
.mapbase = (unsigned long)(OMAP_CS1_PHYS + 0x70000),
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 1,
|
||||
.uartclk = 3686400,
|
||||
},
|
||||
{ },
|
||||
};
|
||||
|
||||
static struct platform_device serial_device = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM1,
|
||||
};
|
||||
|
||||
static int __init ext_uart_init(void)
|
||||
{
|
||||
if (!machine_is_voiceblue())
|
||||
return -ENODEV;
|
||||
|
||||
voiceblue_ports[0].irq = gpio_to_irq(12);
|
||||
voiceblue_ports[1].irq = gpio_to_irq(13);
|
||||
voiceblue_ports[2].irq = gpio_to_irq(14);
|
||||
voiceblue_ports[3].irq = gpio_to_irq(15);
|
||||
serial_device.dev.platform_data = voiceblue_ports;
|
||||
return platform_device_register(&serial_device);
|
||||
}
|
||||
arch_initcall(ext_uart_init);
|
||||
|
||||
static struct physmap_flash_data voiceblue_flash_data = {
|
||||
.width = 2,
|
||||
.set_vpp = omap1_set_vpp,
|
||||
};
|
||||
|
||||
static struct resource voiceblue_flash_resource = {
|
||||
.start = OMAP_CS0_PHYS,
|
||||
.end = OMAP_CS0_PHYS + SZ_32M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
};
|
||||
|
||||
static struct platform_device voiceblue_flash_device = {
|
||||
.name = "physmap-flash",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = &voiceblue_flash_data,
|
||||
},
|
||||
.num_resources = 1,
|
||||
.resource = &voiceblue_flash_resource,
|
||||
};
|
||||
|
||||
static struct smc91x_platdata voiceblue_smc91x_info = {
|
||||
.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
|
||||
.leda = RPC_LED_100_10,
|
||||
.ledb = RPC_LED_TX_RX,
|
||||
};
|
||||
|
||||
static struct resource voiceblue_smc91x_resources[] = {
|
||||
[0] = {
|
||||
.start = OMAP_CS2_PHYS + 0x300,
|
||||
.end = OMAP_CS2_PHYS + 0x300 + 16,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device voiceblue_smc91x_device = {
|
||||
.name = "smc91x",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = &voiceblue_smc91x_info,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(voiceblue_smc91x_resources),
|
||||
.resource = voiceblue_smc91x_resources,
|
||||
};
|
||||
|
||||
static struct platform_device *voiceblue_devices[] __initdata = {
|
||||
&voiceblue_flash_device,
|
||||
&voiceblue_smc91x_device,
|
||||
};
|
||||
|
||||
static struct omap_usb_config voiceblue_usb_config __initdata = {
|
||||
.hmc_mode = 3,
|
||||
.register_host = 1,
|
||||
.register_dev = 1,
|
||||
.pins[0] = 2,
|
||||
.pins[1] = 6,
|
||||
.pins[2] = 6,
|
||||
};
|
||||
|
||||
#define MACHINE_PANICED 1
|
||||
#define MACHINE_REBOOTING 2
|
||||
#define MACHINE_REBOOT 4
|
||||
static unsigned long machine_state;
|
||||
|
||||
static int panic_event(struct notifier_block *this, unsigned long event,
|
||||
void *ptr)
|
||||
{
|
||||
if (test_and_set_bit(MACHINE_PANICED, &machine_state))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
/* Flash power LED */
|
||||
omap_writeb(0x78, OMAP_LPG1_LCR);
|
||||
omap_writeb(0x01, OMAP_LPG1_PMR); /* Enable clock */
|
||||
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
static struct notifier_block panic_block = {
|
||||
.notifier_call = panic_event,
|
||||
};
|
||||
|
||||
static int __init voiceblue_setup(void)
|
||||
{
|
||||
if (!machine_is_voiceblue())
|
||||
return -ENODEV;
|
||||
|
||||
/* Setup panic notifier */
|
||||
atomic_notifier_chain_register(&panic_notifier_list, &panic_block);
|
||||
|
||||
return 0;
|
||||
}
|
||||
postcore_initcall(voiceblue_setup);
|
||||
|
||||
static int wdt_gpio_state;
|
||||
|
||||
void voiceblue_wdt_enable(void)
|
||||
{
|
||||
gpio_direction_output(0, 0);
|
||||
gpio_set_value(0, 1);
|
||||
gpio_set_value(0, 0);
|
||||
wdt_gpio_state = 0;
|
||||
}
|
||||
|
||||
void voiceblue_wdt_disable(void)
|
||||
{
|
||||
gpio_set_value(0, 0);
|
||||
gpio_set_value(0, 1);
|
||||
gpio_set_value(0, 0);
|
||||
gpio_direction_input(0);
|
||||
}
|
||||
|
||||
void voiceblue_wdt_ping(void)
|
||||
{
|
||||
if (test_bit(MACHINE_REBOOT, &machine_state))
|
||||
return;
|
||||
|
||||
wdt_gpio_state = !wdt_gpio_state;
|
||||
gpio_set_value(0, wdt_gpio_state);
|
||||
}
|
||||
|
||||
static void voiceblue_restart(enum reboot_mode mode, const char *cmd)
|
||||
{
|
||||
/*
|
||||
* Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28
|
||||
* "Global Software Reset Affects Traffic Controller Frequency".
|
||||
*/
|
||||
if (cpu_is_omap5912()) {
|
||||
omap_writew(omap_readw(DPLL_CTL) & ~(1 << 4), DPLL_CTL);
|
||||
omap_writew(0x8, ARM_RSTCT1);
|
||||
}
|
||||
|
||||
set_bit(MACHINE_REBOOT, &machine_state);
|
||||
voiceblue_wdt_enable();
|
||||
while (1) ;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(voiceblue_wdt_enable);
|
||||
EXPORT_SYMBOL(voiceblue_wdt_disable);
|
||||
EXPORT_SYMBOL(voiceblue_wdt_ping);
|
||||
|
||||
static void __init voiceblue_init(void)
|
||||
{
|
||||
/* mux pins for uarts */
|
||||
omap_cfg_reg(UART1_TX);
|
||||
omap_cfg_reg(UART1_RTS);
|
||||
omap_cfg_reg(UART2_TX);
|
||||
omap_cfg_reg(UART2_RTS);
|
||||
omap_cfg_reg(UART3_TX);
|
||||
omap_cfg_reg(UART3_RX);
|
||||
|
||||
/* Watchdog */
|
||||
gpio_request(0, "Watchdog");
|
||||
/* smc91x reset */
|
||||
gpio_request(7, "SMC91x reset");
|
||||
gpio_direction_output(7, 1);
|
||||
udelay(2); /* wait at least 100ns */
|
||||
gpio_set_value(7, 0);
|
||||
mdelay(50); /* 50ms until PHY ready */
|
||||
/* smc91x interrupt pin */
|
||||
gpio_request(8, "SMC91x irq");
|
||||
/* 16C554 reset*/
|
||||
gpio_request(6, "16C554 reset");
|
||||
gpio_direction_output(6, 0);
|
||||
/* 16C554 interrupt pins */
|
||||
gpio_request(12, "16C554 irq");
|
||||
gpio_request(13, "16C554 irq");
|
||||
gpio_request(14, "16C554 irq");
|
||||
gpio_request(15, "16C554 irq");
|
||||
irq_set_irq_type(gpio_to_irq(12), IRQ_TYPE_EDGE_RISING);
|
||||
irq_set_irq_type(gpio_to_irq(13), IRQ_TYPE_EDGE_RISING);
|
||||
irq_set_irq_type(gpio_to_irq(14), IRQ_TYPE_EDGE_RISING);
|
||||
irq_set_irq_type(gpio_to_irq(15), IRQ_TYPE_EDGE_RISING);
|
||||
|
||||
voiceblue_smc91x_resources[1].start = gpio_to_irq(8);
|
||||
voiceblue_smc91x_resources[1].end = gpio_to_irq(8);
|
||||
platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
|
||||
omap_serial_init();
|
||||
omap1_usb_init(&voiceblue_usb_config);
|
||||
omap_register_i2c_bus(1, 100, NULL, 0);
|
||||
|
||||
/* There is a good chance board is going up, so enable power LED
|
||||
* (it is connected through invertor) */
|
||||
omap_writeb(0x00, OMAP_LPG1_LCR);
|
||||
omap_writeb(0x00, OMAP_LPG1_PMR); /* Disable clock */
|
||||
}
|
||||
|
||||
MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
|
||||
/* Maintainer: Ladislav Michl <michl@2n.cz> */
|
||||
.atag_offset = 0x100,
|
||||
.map_io = omap15xx_map_io,
|
||||
.init_early = omap1_init_early,
|
||||
.init_irq = omap1_init_irq,
|
||||
.handle_irq = omap1_handle_irq,
|
||||
.init_machine = voiceblue_init,
|
||||
.init_late = omap1_init_late,
|
||||
.init_time = omap1_timer_init,
|
||||
.restart = voiceblue_restart,
|
||||
MACHINE_END
|
|
@ -1,19 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2004 2N Telekomunikace, Ladislav Michl <michl@2n.cz>
|
||||
*
|
||||
* Hardware definitions for OMAP5910 based VoiceBlue board.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_VOICEBLUE_H
|
||||
#define __ASM_ARCH_VOICEBLUE_H
|
||||
|
||||
extern void voiceblue_wdt_enable(void);
|
||||
extern void voiceblue_wdt_disable(void);
|
||||
extern void voiceblue_wdt_ping(void);
|
||||
|
||||
#endif /* __ASM_ARCH_VOICEBLUE_H */
|
||||
|
|
@ -48,11 +48,9 @@ AFLAGS_sleep44xx.o :=-Wa,-march=armv7-a$(plus_sec)
|
|||
# Functions loaded to SRAM
|
||||
obj-$(CONFIG_SOC_OMAP2420) += sram242x.o
|
||||
obj-$(CONFIG_SOC_OMAP2430) += sram243x.o
|
||||
obj-$(CONFIG_ARCH_OMAP3) += sram34xx.o
|
||||
|
||||
AFLAGS_sram242x.o :=-Wa,-march=armv6
|
||||
AFLAGS_sram243x.o :=-Wa,-march=armv6
|
||||
AFLAGS_sram34xx.o :=-Wa,-march=armv7-a
|
||||
|
||||
# Restart code (OMAP4/5 currently in omap4-common.c)
|
||||
obj-$(CONFIG_SOC_OMAP2420) += omap2-restart.o
|
||||
|
@ -186,7 +184,6 @@ obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_dpllcore.o
|
|||
obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_virt_prcm_set.o
|
||||
obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_dpll.o
|
||||
obj-$(CONFIG_ARCH_OMAP3) += $(clock-common)
|
||||
obj-$(CONFIG_ARCH_OMAP3) += clkt34xx_dpll3m2.o
|
||||
obj-$(CONFIG_ARCH_OMAP4) += $(clock-common)
|
||||
obj-$(CONFIG_SOC_AM33XX) += $(clock-common)
|
||||
obj-$(CONFIG_SOC_OMAP5) += $(clock-common)
|
||||
|
|
|
@ -1,122 +0,0 @@
|
|||
/*
|
||||
* OMAP34xx M2 divider clock code
|
||||
*
|
||||
* Copyright (C) 2007-2008 Texas Instruments, Inc.
|
||||
* Copyright (C) 2007-2010 Nokia Corporation
|
||||
*
|
||||
* Paul Walmsley
|
||||
* Jouni Högander
|
||||
*
|
||||
* Parts of this code are based on code written by
|
||||
* Richard Woodruff, Tony Lindgren, Tuukka Tikkanen, Karthik Dasu
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#undef DEBUG
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include "clock.h"
|
||||
#include "clock3xxx.h"
|
||||
#include "sdrc.h"
|
||||
#include "sram.h"
|
||||
|
||||
#define CYCLES_PER_MHZ 1000000
|
||||
|
||||
struct clk *sdrc_ick_p, *arm_fck_p;
|
||||
|
||||
/*
|
||||
* CORE DPLL (DPLL3) M2 divider rate programming functions
|
||||
*
|
||||
* These call into SRAM code to do the actual CM writes, since the SDRAM
|
||||
* is clocked from DPLL3.
|
||||
*/
|
||||
|
||||
/**
|
||||
* omap3_core_dpll_m2_set_rate - set CORE DPLL M2 divider
|
||||
* @clk: struct clk * of DPLL to set
|
||||
* @rate: rounded target rate
|
||||
*
|
||||
* Program the DPLL M2 divider with the rounded target rate. Returns
|
||||
* -EINVAL upon error, or 0 upon success.
|
||||
*/
|
||||
int omap3_core_dpll_m2_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||
unsigned long parent_rate)
|
||||
{
|
||||
struct clk_hw_omap *clk = to_clk_hw_omap(hw);
|
||||
u32 new_div = 0;
|
||||
u32 unlock_dll = 0;
|
||||
u32 c;
|
||||
unsigned long validrate, sdrcrate, _mpurate;
|
||||
struct omap_sdrc_params *sdrc_cs0;
|
||||
struct omap_sdrc_params *sdrc_cs1;
|
||||
int ret;
|
||||
unsigned long clkrate;
|
||||
|
||||
if (!clk || !rate)
|
||||
return -EINVAL;
|
||||
|
||||
new_div = DIV_ROUND_UP(parent_rate, rate);
|
||||
validrate = parent_rate / new_div;
|
||||
|
||||
if (validrate != rate)
|
||||
return -EINVAL;
|
||||
|
||||
sdrcrate = clk_get_rate(sdrc_ick_p);
|
||||
clkrate = clk_hw_get_rate(hw);
|
||||
if (rate > clkrate)
|
||||
sdrcrate <<= ((rate / clkrate) >> 1);
|
||||
else
|
||||
sdrcrate >>= ((clkrate / rate) >> 1);
|
||||
|
||||
ret = omap2_sdrc_get_params(sdrcrate, &sdrc_cs0, &sdrc_cs1);
|
||||
if (ret)
|
||||
return -EINVAL;
|
||||
|
||||
if (sdrcrate < MIN_SDRC_DLL_LOCK_FREQ) {
|
||||
pr_debug("clock: will unlock SDRC DLL\n");
|
||||
unlock_dll = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* XXX This only needs to be done when the CPU frequency changes
|
||||
*/
|
||||
_mpurate = clk_get_rate(arm_fck_p) / CYCLES_PER_MHZ;
|
||||
c = (_mpurate << SDRC_MPURATE_SCALE) >> SDRC_MPURATE_BASE_SHIFT;
|
||||
c += 1; /* for safety */
|
||||
c *= SDRC_MPURATE_LOOPS;
|
||||
c >>= SDRC_MPURATE_SCALE;
|
||||
if (c == 0)
|
||||
c = 1;
|
||||
|
||||
pr_debug("clock: changing CORE DPLL rate from %lu to %lu\n",
|
||||
clkrate, validrate);
|
||||
pr_debug("clock: SDRC CS0 timing params used: RFR %08x CTRLA %08x CTRLB %08x MR %08x\n",
|
||||
sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla,
|
||||
sdrc_cs0->actim_ctrlb, sdrc_cs0->mr);
|
||||
if (sdrc_cs1)
|
||||
pr_debug("clock: SDRC CS1 timing params used: RFR %08x CTRLA %08x CTRLB %08x MR %08x\n",
|
||||
sdrc_cs1->rfr_ctrl, sdrc_cs1->actim_ctrla,
|
||||
sdrc_cs1->actim_ctrlb, sdrc_cs1->mr);
|
||||
|
||||
if (sdrc_cs1)
|
||||
omap3_configure_core_dpll(
|
||||
new_div, unlock_dll, c, rate > clkrate,
|
||||
sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla,
|
||||
sdrc_cs0->actim_ctrlb, sdrc_cs0->mr,
|
||||
sdrc_cs1->rfr_ctrl, sdrc_cs1->actim_ctrla,
|
||||
sdrc_cs1->actim_ctrlb, sdrc_cs1->mr);
|
||||
else
|
||||
omap3_configure_core_dpll(
|
||||
new_div, unlock_dll, c, rate > clkrate,
|
||||
sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla,
|
||||
sdrc_cs0->actim_ctrlb, sdrc_cs0->mr,
|
||||
0, 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -33,7 +33,6 @@
|
|||
#include "common.h"
|
||||
#include "mux.h"
|
||||
#include "control.h"
|
||||
#include "devices.h"
|
||||
#include "display.h"
|
||||
|
||||
#define L3_MODULES_MAX_LEN 12
|
||||
|
@ -67,58 +66,6 @@ static int __init omap3_l3_init(void)
|
|||
}
|
||||
omap_postcore_initcall(omap3_l3_init);
|
||||
|
||||
#if defined(CONFIG_IOMMU_API)
|
||||
|
||||
#include <linux/platform_data/iommu-omap.h>
|
||||
|
||||
static struct resource omap3isp_resources[] = {
|
||||
{
|
||||
.start = OMAP3430_ISP_BASE,
|
||||
.end = OMAP3430_ISP_BASE + 0x12fc,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = OMAP3430_ISP_BASE2,
|
||||
.end = OMAP3430_ISP_BASE2 + 0x0600,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = 24 + OMAP_INTC_START,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device omap3isp_device = {
|
||||
.name = "omap3isp",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(omap3isp_resources),
|
||||
.resource = omap3isp_resources,
|
||||
};
|
||||
|
||||
static struct omap_iommu_arch_data omap3_isp_iommu = {
|
||||
.name = "mmu_isp",
|
||||
};
|
||||
|
||||
int omap3_init_camera(struct isp_platform_data *pdata)
|
||||
{
|
||||
if (of_have_populated_dt())
|
||||
omap3_isp_iommu.name = "480bd400.mmu";
|
||||
|
||||
omap3isp_device.dev.platform_data = pdata;
|
||||
omap3isp_device.dev.archdata.iommu = &omap3_isp_iommu;
|
||||
|
||||
return platform_device_register(&omap3isp_device);
|
||||
}
|
||||
|
||||
#else /* !CONFIG_IOMMU_API */
|
||||
|
||||
int omap3_init_camera(struct isp_platform_data *pdata)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_OMAP2PLUS_MBOX) || defined(CONFIG_OMAP2PLUS_MBOX_MODULE)
|
||||
static inline void __init omap_init_mbox(void)
|
||||
{
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
/*
|
||||
* arch/arm/mach-omap2/devices.h
|
||||
*
|
||||
* OMAP2 platform device setup/initialization
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_ARM_MACH_OMAP_DEVICES_H
|
||||
#define __ARCH_ARM_MACH_OMAP_DEVICES_H
|
||||
|
||||
struct isp_platform_data;
|
||||
|
||||
int omap3_init_camera(struct isp_platform_data *pdata);
|
||||
|
||||
#endif
|
|
@ -210,7 +210,7 @@ static inline int omap4plus_init_static_deps(const struct static_dep_map *map)
|
|||
}
|
||||
|
||||
map++;
|
||||
};
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -582,7 +582,7 @@ void __init omap3xxx_powerdomains_init(void)
|
|||
|
||||
/* Only 81xx needs custom pwrdm_operations */
|
||||
if (!cpu_is_ti81xx())
|
||||
pwrdm_register_platform_funcs(&omap3_pwrdm_operations);;
|
||||
pwrdm_register_platform_funcs(&omap3_pwrdm_operations);
|
||||
|
||||
rev = omap_rev();
|
||||
|
||||
|
|
|
@ -211,35 +211,10 @@ static inline int omap243x_sram_init(void)
|
|||
|
||||
#ifdef CONFIG_ARCH_OMAP3
|
||||
|
||||
static u32 (*_omap3_sram_configure_core_dpll)(
|
||||
u32 m2, u32 unlock_dll, u32 f, u32 inc,
|
||||
u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0,
|
||||
u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0,
|
||||
u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1,
|
||||
u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1);
|
||||
|
||||
u32 omap3_configure_core_dpll(u32 m2, u32 unlock_dll, u32 f, u32 inc,
|
||||
u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0,
|
||||
u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0,
|
||||
u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1,
|
||||
u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1)
|
||||
{
|
||||
BUG_ON(!_omap3_sram_configure_core_dpll);
|
||||
return _omap3_sram_configure_core_dpll(
|
||||
m2, unlock_dll, f, inc,
|
||||
sdrc_rfr_ctrl_0, sdrc_actim_ctrl_a_0,
|
||||
sdrc_actim_ctrl_b_0, sdrc_mr_0,
|
||||
sdrc_rfr_ctrl_1, sdrc_actim_ctrl_a_1,
|
||||
sdrc_actim_ctrl_b_1, sdrc_mr_1);
|
||||
}
|
||||
|
||||
void omap3_sram_restore_context(void)
|
||||
{
|
||||
omap_sram_reset();
|
||||
|
||||
_omap3_sram_configure_core_dpll =
|
||||
omap_sram_push(omap3_sram_configure_core_dpll,
|
||||
omap3_sram_configure_core_dpll_sz);
|
||||
omap_push_sram_idle();
|
||||
}
|
||||
|
||||
|
|
|
@ -15,12 +15,6 @@ extern void omap2_sram_reprogram_sdrc(u32 perf_level, u32 dll_val,
|
|||
u32 mem_type);
|
||||
extern u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass);
|
||||
|
||||
extern u32 omap3_configure_core_dpll(
|
||||
u32 m2, u32 unlock_dll, u32 f, u32 inc,
|
||||
u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0,
|
||||
u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0,
|
||||
u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1,
|
||||
u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1);
|
||||
extern void omap3_sram_restore_context(void);
|
||||
|
||||
/* Do not use these */
|
||||
|
@ -52,14 +46,6 @@ extern void omap243x_sram_reprogram_sdrc(u32 perf_level, u32 dll_val,
|
|||
u32 mem_type);
|
||||
extern unsigned long omap243x_sram_reprogram_sdrc_sz;
|
||||
|
||||
extern u32 omap3_sram_configure_core_dpll(
|
||||
u32 m2, u32 unlock_dll, u32 f, u32 inc,
|
||||
u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0,
|
||||
u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0,
|
||||
u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1,
|
||||
u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1);
|
||||
extern unsigned long omap3_sram_configure_core_dpll_sz;
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
extern void omap_push_sram_idle(void);
|
||||
#else
|
||||
|
|
|
@ -1,346 +0,0 @@
|
|||
/*
|
||||
* linux/arch/arm/mach-omap3/sram.S
|
||||
*
|
||||
* Omap3 specific functions that need to be run in internal SRAM
|
||||
*
|
||||
* Copyright (C) 2004, 2007, 2008 Texas Instruments, Inc.
|
||||
* Copyright (C) 2008 Nokia Corporation
|
||||
*
|
||||
* Rajendra Nayak <rnayak@ti.com>
|
||||
* Richard Woodruff <r-woodruff2@ti.com>
|
||||
* Paul Walmsley
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
|
||||
#include <asm/assembler.h>
|
||||
|
||||
#include "soc.h"
|
||||
#include "iomap.h"
|
||||
#include "sdrc.h"
|
||||
#include "cm3xxx.h"
|
||||
|
||||
/*
|
||||
* This file needs be built unconditionally as ARM to interoperate correctly
|
||||
* with non-Thumb-2-capable firmware.
|
||||
*/
|
||||
.arm
|
||||
|
||||
.text
|
||||
|
||||
/* r1 parameters */
|
||||
#define SDRC_NO_UNLOCK_DLL 0x0
|
||||
#define SDRC_UNLOCK_DLL 0x1
|
||||
|
||||
/* SDRC_DLLA_CTRL bit settings */
|
||||
#define FIXEDDELAY_SHIFT 24
|
||||
#define FIXEDDELAY_MASK (0xff << FIXEDDELAY_SHIFT)
|
||||
#define DLLIDLE_MASK 0x4
|
||||
|
||||
/*
|
||||
* SDRC_DLLA_CTRL default values: TI hardware team indicates that
|
||||
* FIXEDDELAY should be initialized to 0xf. This apparently was
|
||||
* empirically determined during process testing, so no derivation
|
||||
* was provided.
|
||||
*/
|
||||
#define FIXEDDELAY_DEFAULT (0x0f << FIXEDDELAY_SHIFT)
|
||||
|
||||
/* SDRC_DLLA_STATUS bit settings */
|
||||
#define LOCKSTATUS_MASK 0x4
|
||||
|
||||
/* SDRC_POWER bit settings */
|
||||
#define SRFRONIDLEREQ_MASK 0x40
|
||||
|
||||
/* CM_IDLEST1_CORE bit settings */
|
||||
#define ST_SDRC_MASK 0x2
|
||||
|
||||
/* CM_ICLKEN1_CORE bit settings */
|
||||
#define EN_SDRC_MASK 0x2
|
||||
|
||||
/* CM_CLKSEL1_PLL bit settings */
|
||||
#define CORE_DPLL_CLKOUT_DIV_SHIFT 0x1b
|
||||
|
||||
/*
|
||||
* omap3_sram_configure_core_dpll - change DPLL3 M2 divider
|
||||
*
|
||||
* Params passed in registers:
|
||||
* r0 = new M2 divider setting (only 1 and 2 supported right now)
|
||||
* r1 = unlock SDRC DLL? (1 = yes, 0 = no). Only unlock DLL for
|
||||
* SDRC rates < 83MHz
|
||||
* r2 = number of MPU cycles to wait for SDRC to stabilize after
|
||||
* reprogramming the SDRC when switching to a slower MPU speed
|
||||
* r3 = increasing SDRC rate? (1 = yes, 0 = no)
|
||||
*
|
||||
* Params passed via the stack. The needed params will be copied in SRAM
|
||||
* before use by the code in SRAM (SDRAM is not accessible during SDRC
|
||||
* reconfiguration):
|
||||
* new SDRC_RFR_CTRL_0 register contents
|
||||
* new SDRC_ACTIM_CTRL_A_0 register contents
|
||||
* new SDRC_ACTIM_CTRL_B_0 register contents
|
||||
* new SDRC_MR_0 register value
|
||||
* new SDRC_RFR_CTRL_1 register contents
|
||||
* new SDRC_ACTIM_CTRL_A_1 register contents
|
||||
* new SDRC_ACTIM_CTRL_B_1 register contents
|
||||
* new SDRC_MR_1 register value
|
||||
*
|
||||
* If the param SDRC_RFR_CTRL_1 is 0, the parameters are not programmed into
|
||||
* the SDRC CS1 registers
|
||||
*
|
||||
* NOTE: This code no longer attempts to program the SDRC AC timing and MR
|
||||
* registers. This is because the code currently cannot ensure that all
|
||||
* L3 initiators (e.g., sDMA, IVA, DSS DISPC, etc.) are not accessing the
|
||||
* SDRAM when the registers are written. If the registers are changed while
|
||||
* an initiator is accessing SDRAM, memory can be corrupted and/or the SDRC
|
||||
* may enter an unpredictable state. In the future, the intent is to
|
||||
* re-enable this code in cases where we can ensure that no initiators are
|
||||
* touching the SDRAM. Until that time, users who know that their use case
|
||||
* can satisfy the above requirement can enable the CONFIG_OMAP3_SDRC_AC_TIMING
|
||||
* option.
|
||||
*
|
||||
* Richard Woodruff notes that any changes to this code must be carefully
|
||||
* audited and tested to ensure that they don't cause a TLB miss while
|
||||
* the SDRAM is inaccessible. Such a situation will crash the system
|
||||
* since it will cause the ARM MMU to attempt to walk the page tables.
|
||||
* These crashes may be intermittent.
|
||||
*/
|
||||
.align 3
|
||||
ENTRY(omap3_sram_configure_core_dpll)
|
||||
stmfd sp!, {r1-r12, lr} @ store regs to stack
|
||||
|
||||
@ pull the extra args off the stack
|
||||
@ and store them in SRAM
|
||||
|
||||
/*
|
||||
* PC-relative stores are deprecated in ARMv7 and lead to undefined behaviour
|
||||
* in Thumb-2: use a r7 as a base instead.
|
||||
* Be careful not to clobber r7 when maintaing this file.
|
||||
*/
|
||||
THUMB( adr r7, omap3_sram_configure_core_dpll )
|
||||
.macro strtext Rt:req, label:req
|
||||
ARM( str \Rt, \label )
|
||||
THUMB( str \Rt, [r7, \label - omap3_sram_configure_core_dpll] )
|
||||
.endm
|
||||
|
||||
ldr r4, [sp, #52]
|
||||
strtext r4, omap_sdrc_rfr_ctrl_0_val
|
||||
ldr r4, [sp, #56]
|
||||
strtext r4, omap_sdrc_actim_ctrl_a_0_val
|
||||
ldr r4, [sp, #60]
|
||||
strtext r4, omap_sdrc_actim_ctrl_b_0_val
|
||||
ldr r4, [sp, #64]
|
||||
strtext r4, omap_sdrc_mr_0_val
|
||||
ldr r4, [sp, #68]
|
||||
strtext r4, omap_sdrc_rfr_ctrl_1_val
|
||||
cmp r4, #0 @ if SDRC_RFR_CTRL_1 is 0,
|
||||
beq skip_cs1_params @ do not use cs1 params
|
||||
ldr r4, [sp, #72]
|
||||
strtext r4, omap_sdrc_actim_ctrl_a_1_val
|
||||
ldr r4, [sp, #76]
|
||||
strtext r4, omap_sdrc_actim_ctrl_b_1_val
|
||||
ldr r4, [sp, #80]
|
||||
strtext r4, omap_sdrc_mr_1_val
|
||||
skip_cs1_params:
|
||||
mrc p15, 0, r8, c1, c0, 0 @ read ctrl register
|
||||
bic r10, r8, #0x800 @ clear Z-bit, disable branch prediction
|
||||
mcr p15, 0, r10, c1, c0, 0 @ write ctrl register
|
||||
dsb @ flush buffered writes to interconnect
|
||||
isb @ prevent speculative exec past here
|
||||
cmp r3, #1 @ if increasing SDRC clk rate,
|
||||
bleq configure_sdrc @ program the SDRC regs early (for RFR)
|
||||
cmp r1, #SDRC_UNLOCK_DLL @ set the intended DLL state
|
||||
bleq unlock_dll
|
||||
blne lock_dll
|
||||
bl sdram_in_selfrefresh @ put SDRAM in self refresh, idle SDRC
|
||||
bl configure_core_dpll @ change the DPLL3 M2 divider
|
||||
mov r12, r2
|
||||
bl wait_clk_stable @ wait for SDRC to stabilize
|
||||
bl enable_sdrc @ take SDRC out of idle
|
||||
cmp r1, #SDRC_UNLOCK_DLL @ wait for DLL status to change
|
||||
bleq wait_dll_unlock
|
||||
blne wait_dll_lock
|
||||
cmp r3, #1 @ if increasing SDRC clk rate,
|
||||
beq return_to_sdram @ return to SDRAM code, otherwise,
|
||||
bl configure_sdrc @ reprogram SDRC regs now
|
||||
return_to_sdram:
|
||||
mcr p15, 0, r8, c1, c0, 0 @ restore ctrl register
|
||||
isb @ prevent speculative exec past here
|
||||
mov r0, #0 @ return value
|
||||
ldmfd sp!, {r1-r12, pc} @ restore regs and return
|
||||
unlock_dll:
|
||||
ldr r11, omap3_sdrc_dlla_ctrl
|
||||
ldr r12, [r11]
|
||||
bic r12, r12, #FIXEDDELAY_MASK
|
||||
orr r12, r12, #FIXEDDELAY_DEFAULT
|
||||
orr r12, r12, #DLLIDLE_MASK
|
||||
str r12, [r11] @ (no OCP barrier needed)
|
||||
bx lr
|
||||
lock_dll:
|
||||
ldr r11, omap3_sdrc_dlla_ctrl
|
||||
ldr r12, [r11]
|
||||
bic r12, r12, #DLLIDLE_MASK
|
||||
str r12, [r11] @ (no OCP barrier needed)
|
||||
bx lr
|
||||
sdram_in_selfrefresh:
|
||||
ldr r11, omap3_sdrc_power @ read the SDRC_POWER register
|
||||
ldr r12, [r11] @ read the contents of SDRC_POWER
|
||||
mov r9, r12 @ keep a copy of SDRC_POWER bits
|
||||
orr r12, r12, #SRFRONIDLEREQ_MASK @ enable self refresh on idle
|
||||
str r12, [r11] @ write back to SDRC_POWER register
|
||||
ldr r12, [r11] @ posted-write barrier for SDRC
|
||||
idle_sdrc:
|
||||
ldr r11, omap3_cm_iclken1_core @ read the CM_ICLKEN1_CORE reg
|
||||
ldr r12, [r11]
|
||||
bic r12, r12, #EN_SDRC_MASK @ disable iclk bit for SDRC
|
||||
str r12, [r11]
|
||||
wait_sdrc_idle:
|
||||
ldr r11, omap3_cm_idlest1_core
|
||||
ldr r12, [r11]
|
||||
and r12, r12, #ST_SDRC_MASK @ check for SDRC idle
|
||||
cmp r12, #ST_SDRC_MASK
|
||||
bne wait_sdrc_idle
|
||||
bx lr
|
||||
configure_core_dpll:
|
||||
ldr r11, omap3_cm_clksel1_pll
|
||||
ldr r12, [r11]
|
||||
ldr r10, core_m2_mask_val @ modify m2 for core dpll
|
||||
and r12, r12, r10
|
||||
orr r12, r12, r0, lsl #CORE_DPLL_CLKOUT_DIV_SHIFT
|
||||
str r12, [r11]
|
||||
ldr r12, [r11] @ posted-write barrier for CM
|
||||
bx lr
|
||||
wait_clk_stable:
|
||||
subs r12, r12, #1
|
||||
bne wait_clk_stable
|
||||
bx lr
|
||||
enable_sdrc:
|
||||
ldr r11, omap3_cm_iclken1_core
|
||||
ldr r12, [r11]
|
||||
orr r12, r12, #EN_SDRC_MASK @ enable iclk bit for SDRC
|
||||
str r12, [r11]
|
||||
wait_sdrc_idle1:
|
||||
ldr r11, omap3_cm_idlest1_core
|
||||
ldr r12, [r11]
|
||||
and r12, r12, #ST_SDRC_MASK
|
||||
cmp r12, #0
|
||||
bne wait_sdrc_idle1
|
||||
restore_sdrc_power_val:
|
||||
ldr r11, omap3_sdrc_power
|
||||
str r9, [r11] @ restore SDRC_POWER, no barrier needed
|
||||
bx lr
|
||||
wait_dll_lock:
|
||||
ldr r11, omap3_sdrc_dlla_status
|
||||
ldr r12, [r11]
|
||||
and r12, r12, #LOCKSTATUS_MASK
|
||||
cmp r12, #LOCKSTATUS_MASK
|
||||
bne wait_dll_lock
|
||||
bx lr
|
||||
wait_dll_unlock:
|
||||
ldr r11, omap3_sdrc_dlla_status
|
||||
ldr r12, [r11]
|
||||
and r12, r12, #LOCKSTATUS_MASK
|
||||
cmp r12, #0x0
|
||||
bne wait_dll_unlock
|
||||
bx lr
|
||||
configure_sdrc:
|
||||
ldr r12, omap_sdrc_rfr_ctrl_0_val @ fetch value from SRAM
|
||||
ldr r11, omap3_sdrc_rfr_ctrl_0 @ fetch addr from SRAM
|
||||
str r12, [r11] @ store
|
||||
#ifdef CONFIG_OMAP3_SDRC_AC_TIMING
|
||||
ldr r12, omap_sdrc_actim_ctrl_a_0_val
|
||||
ldr r11, omap3_sdrc_actim_ctrl_a_0
|
||||
str r12, [r11]
|
||||
ldr r12, omap_sdrc_actim_ctrl_b_0_val
|
||||
ldr r11, omap3_sdrc_actim_ctrl_b_0
|
||||
str r12, [r11]
|
||||
ldr r12, omap_sdrc_mr_0_val
|
||||
ldr r11, omap3_sdrc_mr_0
|
||||
str r12, [r11]
|
||||
#endif
|
||||
ldr r12, omap_sdrc_rfr_ctrl_1_val
|
||||
cmp r12, #0 @ if SDRC_RFR_CTRL_1 is 0,
|
||||
beq skip_cs1_prog @ do not program cs1 params
|
||||
ldr r11, omap3_sdrc_rfr_ctrl_1
|
||||
str r12, [r11]
|
||||
#ifdef CONFIG_OMAP3_SDRC_AC_TIMING
|
||||
ldr r12, omap_sdrc_actim_ctrl_a_1_val
|
||||
ldr r11, omap3_sdrc_actim_ctrl_a_1
|
||||
str r12, [r11]
|
||||
ldr r12, omap_sdrc_actim_ctrl_b_1_val
|
||||
ldr r11, omap3_sdrc_actim_ctrl_b_1
|
||||
str r12, [r11]
|
||||
ldr r12, omap_sdrc_mr_1_val
|
||||
ldr r11, omap3_sdrc_mr_1
|
||||
str r12, [r11]
|
||||
#endif
|
||||
skip_cs1_prog:
|
||||
ldr r12, [r11] @ posted-write barrier for SDRC
|
||||
bx lr
|
||||
|
||||
.align
|
||||
omap3_sdrc_power:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_POWER)
|
||||
omap3_cm_clksel1_pll:
|
||||
.word OMAP34XX_CM_REGADDR(PLL_MOD, CM_CLKSEL1)
|
||||
omap3_cm_idlest1_core:
|
||||
.word OMAP34XX_CM_REGADDR(CORE_MOD, CM_IDLEST)
|
||||
omap3_cm_iclken1_core:
|
||||
.word OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1)
|
||||
|
||||
omap3_sdrc_rfr_ctrl_0:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_RFR_CTRL_0)
|
||||
omap3_sdrc_rfr_ctrl_1:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_RFR_CTRL_1)
|
||||
omap3_sdrc_actim_ctrl_a_0:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_ACTIM_CTRL_A_0)
|
||||
omap3_sdrc_actim_ctrl_a_1:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_ACTIM_CTRL_A_1)
|
||||
omap3_sdrc_actim_ctrl_b_0:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_ACTIM_CTRL_B_0)
|
||||
omap3_sdrc_actim_ctrl_b_1:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_ACTIM_CTRL_B_1)
|
||||
omap3_sdrc_mr_0:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_MR_0)
|
||||
omap3_sdrc_mr_1:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_MR_1)
|
||||
omap_sdrc_rfr_ctrl_0_val:
|
||||
.word 0xDEADBEEF
|
||||
omap_sdrc_rfr_ctrl_1_val:
|
||||
.word 0xDEADBEEF
|
||||
omap_sdrc_actim_ctrl_a_0_val:
|
||||
.word 0xDEADBEEF
|
||||
omap_sdrc_actim_ctrl_a_1_val:
|
||||
.word 0xDEADBEEF
|
||||
omap_sdrc_actim_ctrl_b_0_val:
|
||||
.word 0xDEADBEEF
|
||||
omap_sdrc_actim_ctrl_b_1_val:
|
||||
.word 0xDEADBEEF
|
||||
omap_sdrc_mr_0_val:
|
||||
.word 0xDEADBEEF
|
||||
omap_sdrc_mr_1_val:
|
||||
.word 0xDEADBEEF
|
||||
|
||||
omap3_sdrc_dlla_status:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_DLLA_STATUS)
|
||||
omap3_sdrc_dlla_ctrl:
|
||||
.word OMAP34XX_SDRC_REGADDR(SDRC_DLLA_CTRL)
|
||||
core_m2_mask_val:
|
||||
.word 0x07FFFFFF
|
||||
ENDPROC(omap3_sram_configure_core_dpll)
|
||||
|
||||
ENTRY(omap3_sram_configure_core_dpll_sz)
|
||||
.word . - omap3_sram_configure_core_dpll
|
||||
|
|
@ -280,10 +280,6 @@ void omap3_vc_set_pmic_signaling(int core_next_state)
|
|||
}
|
||||
}
|
||||
|
||||
#define PRM_POLCTRL_TWL_MASK (OMAP3430_PRM_POLCTRL_CLKREQ_POL | \
|
||||
OMAP3430_PRM_POLCTRL_CLKREQ_POL)
|
||||
#define PRM_POLCTRL_TWL_VAL OMAP3430_PRM_POLCTRL_CLKREQ_POL
|
||||
|
||||
/*
|
||||
* Configure signal polarity for sys_clkreq and sys_off_mode pins
|
||||
* as the default values are wrong and can cause the system to hang
|
||||
|
|
Loading…
Reference in New Issue