mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-06 01:09:08 +00:00
Merge branch 'samsung/cleanup' into next/cleanup
This commit is contained in:
commit
da1c5afee0
@ -1455,7 +1455,7 @@ Applicable to the H264 encoder.</entry>
|
||||
</row>
|
||||
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-video-h264-vui-sar-idc">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_video_h264_vui_sar_idc</entry>
|
||||
</row>
|
||||
@ -1561,7 +1561,7 @@ Applicable to the H264 encoder.</entry>
|
||||
</row>
|
||||
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-video-h264-level">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LEVEL</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_video_h264_level</entry>
|
||||
</row>
|
||||
@ -1641,7 +1641,7 @@ Possible values are:</entry>
|
||||
</row>
|
||||
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-video-mpeg4-level">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_video_mpeg4_level</entry>
|
||||
</row>
|
||||
@ -1689,9 +1689,9 @@ Possible values are:</entry>
|
||||
</row>
|
||||
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-video-h264-profile">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_PROFILE</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_h264_profile</entry>
|
||||
<entry>enum v4l2_mpeg_video_h264_profile</entry>
|
||||
</row>
|
||||
<row><entry spanname="descr">The profile information for H264.
|
||||
Applicable to the H264 encoder.
|
||||
@ -1774,9 +1774,9 @@ Possible values are:</entry>
|
||||
</row>
|
||||
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-video-mpeg4-profile">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_mpeg4_profile</entry>
|
||||
<entry>enum v4l2_mpeg_video_mpeg4_profile</entry>
|
||||
</row>
|
||||
<row><entry spanname="descr">The profile information for MPEG4.
|
||||
Applicable to the MPEG4 encoder.
|
||||
@ -1820,9 +1820,9 @@ Applicable to the encoder.
|
||||
</row>
|
||||
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-video-multi-slice-mode">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_multi_slice_mode</entry>
|
||||
<entry>enum v4l2_mpeg_video_multi_slice_mode</entry>
|
||||
</row>
|
||||
<row><entry spanname="descr">Determines how the encoder should handle division of frame into slices.
|
||||
Applicable to the encoder.
|
||||
@ -1868,9 +1868,9 @@ Applicable to the encoder.</entry>
|
||||
</row>
|
||||
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-video-h264-loop-filter-mode">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_h264_loop_filter_mode</entry>
|
||||
<entry>enum v4l2_mpeg_video_h264_loop_filter_mode</entry>
|
||||
</row>
|
||||
<row><entry spanname="descr">Loop filter mode for H264 encoder.
|
||||
Possible values are:</entry>
|
||||
@ -1913,9 +1913,9 @@ Applicable to the H264 encoder.</entry>
|
||||
</row>
|
||||
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-video-h264-entropy-mode">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_h264_symbol_mode</entry>
|
||||
<entry>enum v4l2_mpeg_video_h264_entropy_mode</entry>
|
||||
</row>
|
||||
<row><entry spanname="descr">Entropy coding mode for H264 - CABAC/CAVALC.
|
||||
Applicable to the H264 encoder.
|
||||
@ -2140,9 +2140,9 @@ previous frames. Applicable to the H264 encoder.</entry>
|
||||
</row>
|
||||
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-video-header-mode">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_HEADER_MODE</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_header_mode</entry>
|
||||
<entry>enum v4l2_mpeg_video_header_mode</entry>
|
||||
</row>
|
||||
<row><entry spanname="descr">Determines whether the header is returned as the first buffer or is
|
||||
it returned together with the first frame. Applicable to encoders.
|
||||
@ -2320,9 +2320,9 @@ Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPE
|
||||
Applicable to the H264 encoder.</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-mfc51-video-frame-skip-mode">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_mfc51_frame_skip_mode</entry>
|
||||
<entry>enum v4l2_mpeg_mfc51_video_frame_skip_mode</entry>
|
||||
</row>
|
||||
<row><entry spanname="descr">
|
||||
Indicates in what conditions the encoder should skip frames. If encoding a frame would cause the encoded stream to be larger then
|
||||
@ -2361,9 +2361,9 @@ the stream will meet tight bandwidth contraints. Applicable to encoders.
|
||||
</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<row id="v4l2-mpeg-mfc51-video-force-frame-type">
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE</constant> </entry>
|
||||
<entry>enum v4l2_mpeg_mfc51_force_frame_type</entry>
|
||||
<entry>enum v4l2_mpeg_mfc51_video_force_frame_type</entry>
|
||||
</row>
|
||||
<row><entry spanname="descr">Force a frame type for the next queued buffer. Applicable to encoders.
|
||||
Possible values are:</entry>
|
||||
|
@ -592,3 +592,11 @@ Why: In 3.0, we can now autodetect internal 3G device and already have
|
||||
interface that was used by acer-wmi driver. It will replaced by
|
||||
information log when acer-wmi initial.
|
||||
Who: Lee, Chun-Yi <jlee@novell.com>
|
||||
|
||||
----------------------------
|
||||
What: The XFS nodelaylog mount option
|
||||
When: 3.3
|
||||
Why: The delaylog mode that has been the default since 2.6.39 has proven
|
||||
stable, and the old code is in the way of additional improvements in
|
||||
the log code.
|
||||
Who: Christoph Hellwig <hch@lst.de>
|
||||
|
@ -62,6 +62,13 @@ can be safely used to identify the chip. You will have to instantiate
|
||||
the devices explicitly. Please see Documentation/i2c/instantiating-devices for
|
||||
details.
|
||||
|
||||
WARNING: Do not access chip registers using the i2cdump command, and do not use
|
||||
any of the i2ctools commands on a command register (0xa5 to 0xac). The chips
|
||||
supported by this driver interpret any access to a command register (including
|
||||
read commands) as request to execute the command in question. This may result in
|
||||
power loss, board resets, and/or Flash corruption. Worst case, your board may
|
||||
turn into a brick.
|
||||
|
||||
|
||||
Sysfs entries
|
||||
-------------
|
||||
|
@ -319,4 +319,6 @@ Code Seq#(hex) Include File Comments
|
||||
<mailto:thomas@winischhofer.net>
|
||||
0xF4 00-1F video/mbxfb.h mbxfb
|
||||
<mailto:raph@8d.com>
|
||||
0xF6 all LTTng Linux Trace Toolkit Next Generation
|
||||
<mailto:mathieu.desnoyers@efficios.com>
|
||||
0xFD all linux/dm-ioctl.h
|
||||
|
@ -2649,11 +2649,11 @@ F: drivers/net/wan/dlci.c
|
||||
F: drivers/net/wan/sdla.c
|
||||
|
||||
FRAMEBUFFER LAYER
|
||||
M: Paul Mundt <lethal@linux-sh.org>
|
||||
M: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
|
||||
L: linux-fbdev@vger.kernel.org
|
||||
W: http://linux-fbdev.sourceforge.net/
|
||||
Q: http://patchwork.kernel.org/project/linux-fbdev/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6.git
|
||||
T: git git://github.com/schandinat/linux-2.6.git fbdev-next
|
||||
S: Maintained
|
||||
F: Documentation/fb/
|
||||
F: Documentation/devicetree/bindings/fb/
|
||||
@ -4450,8 +4450,8 @@ M: "David S. Miller" <davem@davemloft.net>
|
||||
L: netdev@vger.kernel.org
|
||||
W: http://www.linuxfoundation.org/en/Net
|
||||
W: http://patchwork.ozlabs.org/project/netdev/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
|
||||
S: Maintained
|
||||
F: net/
|
||||
F: include/net/
|
||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 3
|
||||
PATCHLEVEL = 1
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc4
|
||||
EXTRAVERSION = -rc6
|
||||
NAME = "Divemaster Edition"
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
@ -1272,6 +1272,18 @@ config ARM_ERRATA_754327
|
||||
This workaround defines cpu_relax() as smp_mb(), preventing correctly
|
||||
written polling loops from denying visibility of updates to memory.
|
||||
|
||||
config ARM_ERRATA_364296
|
||||
bool "ARM errata: Possible cache data corruption with hit-under-miss enabled"
|
||||
depends on CPU_V6 && !SMP
|
||||
help
|
||||
This options enables the workaround for the 364296 ARM1136
|
||||
r0p2 erratum (possible cache data corruption with
|
||||
hit-under-miss enabled). It sets the undocumented bit 31 in
|
||||
the auxiliary control register and the FI bit in the control
|
||||
register, thus disabling hit-under-miss without putting the
|
||||
processor into full low interrupt latency mode. ARM11MPCore
|
||||
is not affected.
|
||||
|
||||
endmenu
|
||||
|
||||
source "arch/arm/common/Kconfig"
|
||||
|
@ -82,7 +82,7 @@ asmlinkage void mmc_loader(unsigned char *buf, unsigned long len)
|
||||
|
||||
|
||||
/* Disable clock to MMC hardware block */
|
||||
__raw_writel(__raw_readl(SMSTPCR3) & (1 << 12), SMSTPCR3);
|
||||
__raw_writel(__raw_readl(SMSTPCR3) | (1 << 12), SMSTPCR3);
|
||||
|
||||
mmc_update_progress(MMC_PROGRESS_DONE);
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ asmlinkage void mmc_loader(unsigned short *buf, unsigned long len)
|
||||
goto err;
|
||||
|
||||
/* Disable clock to SDHI1 hardware block */
|
||||
__raw_writel(__raw_readl(SMSTPCR3) & (1 << 13), SMSTPCR3);
|
||||
__raw_writel(__raw_readl(SMSTPCR3) | (1 << 13), SMSTPCR3);
|
||||
|
||||
mmc_update_progress(MMC_PROGRESS_DONE);
|
||||
|
||||
|
@ -45,8 +45,13 @@
|
||||
#define L2X0_CLEAN_INV_LINE_PA 0x7F0
|
||||
#define L2X0_CLEAN_INV_LINE_IDX 0x7F8
|
||||
#define L2X0_CLEAN_INV_WAY 0x7FC
|
||||
#define L2X0_LOCKDOWN_WAY_D 0x900
|
||||
#define L2X0_LOCKDOWN_WAY_I 0x904
|
||||
/*
|
||||
* The lockdown registers repeat 8 times for L310, the L210 has only one
|
||||
* D and one I lockdown register at 0x0900 and 0x0904.
|
||||
*/
|
||||
#define L2X0_LOCKDOWN_WAY_D_BASE 0x900
|
||||
#define L2X0_LOCKDOWN_WAY_I_BASE 0x904
|
||||
#define L2X0_LOCKDOWN_STRIDE 0x08
|
||||
#define L2X0_TEST_OPERATION 0xF00
|
||||
#define L2X0_LINE_DATA 0xF10
|
||||
#define L2X0_LINE_TAG 0xF30
|
||||
@ -64,7 +69,7 @@
|
||||
#define L2X0_AUX_CTRL_MASK 0xc0000fff
|
||||
#define L2X0_AUX_CTRL_ASSOCIATIVITY_SHIFT 16
|
||||
#define L2X0_AUX_CTRL_WAY_SIZE_SHIFT 17
|
||||
#define L2X0_AUX_CTRL_WAY_SIZE_MASK (0x3 << 17)
|
||||
#define L2X0_AUX_CTRL_WAY_SIZE_MASK (0x7 << 17)
|
||||
#define L2X0_AUX_CTRL_SHARE_OVERRIDE_SHIFT 22
|
||||
#define L2X0_AUX_CTRL_NS_LOCKDOWN_SHIFT 26
|
||||
#define L2X0_AUX_CTRL_NS_INT_CTRL_SHIFT 27
|
||||
|
@ -41,7 +41,7 @@ struct arm_pmu_platdata {
|
||||
* encoded error on failure.
|
||||
*/
|
||||
extern struct platform_device *
|
||||
reserve_pmu(enum arm_pmu_type device);
|
||||
reserve_pmu(enum arm_pmu_type type);
|
||||
|
||||
/**
|
||||
* release_pmu() - Relinquish control of the performance counters
|
||||
@ -62,26 +62,26 @@ release_pmu(enum arm_pmu_type type);
|
||||
* the actual hardware initialisation.
|
||||
*/
|
||||
extern int
|
||||
init_pmu(enum arm_pmu_type device);
|
||||
init_pmu(enum arm_pmu_type type);
|
||||
|
||||
#else /* CONFIG_CPU_HAS_PMU */
|
||||
|
||||
#include <linux/err.h>
|
||||
|
||||
static inline struct platform_device *
|
||||
reserve_pmu(enum arm_pmu_type device)
|
||||
reserve_pmu(enum arm_pmu_type type)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline int
|
||||
release_pmu(struct platform_device *pdev)
|
||||
release_pmu(enum arm_pmu_type type)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int
|
||||
init_pmu(enum arm_pmu_type device)
|
||||
init_pmu(enum arm_pmu_type type)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ static int __devinit pmu_register(struct platform_device *pdev,
|
||||
{
|
||||
if (type < 0 || type >= ARM_NUM_PMU_DEVICES) {
|
||||
pr_warning("received registration request for unknown "
|
||||
"device %d\n", type);
|
||||
"PMU device type %d\n", type);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -112,17 +112,17 @@ static int __init register_pmu_driver(void)
|
||||
device_initcall(register_pmu_driver);
|
||||
|
||||
struct platform_device *
|
||||
reserve_pmu(enum arm_pmu_type device)
|
||||
reserve_pmu(enum arm_pmu_type type)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
|
||||
if (test_and_set_bit_lock(device, &pmu_lock)) {
|
||||
if (test_and_set_bit_lock(type, &pmu_lock)) {
|
||||
pdev = ERR_PTR(-EBUSY);
|
||||
} else if (pmu_devices[device] == NULL) {
|
||||
clear_bit_unlock(device, &pmu_lock);
|
||||
} else if (pmu_devices[type] == NULL) {
|
||||
clear_bit_unlock(type, &pmu_lock);
|
||||
pdev = ERR_PTR(-ENODEV);
|
||||
} else {
|
||||
pdev = pmu_devices[device];
|
||||
pdev = pmu_devices[type];
|
||||
}
|
||||
|
||||
return pdev;
|
||||
@ -130,11 +130,11 @@ reserve_pmu(enum arm_pmu_type device)
|
||||
EXPORT_SYMBOL_GPL(reserve_pmu);
|
||||
|
||||
int
|
||||
release_pmu(enum arm_pmu_type device)
|
||||
release_pmu(enum arm_pmu_type type)
|
||||
{
|
||||
if (WARN_ON(!pmu_devices[device]))
|
||||
if (WARN_ON(!pmu_devices[type]))
|
||||
return -EINVAL;
|
||||
clear_bit_unlock(device, &pmu_lock);
|
||||
clear_bit_unlock(type, &pmu_lock);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(release_pmu);
|
||||
@ -182,17 +182,17 @@ init_cpu_pmu(void)
|
||||
}
|
||||
|
||||
int
|
||||
init_pmu(enum arm_pmu_type device)
|
||||
init_pmu(enum arm_pmu_type type)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
switch (device) {
|
||||
switch (type) {
|
||||
case ARM_PMU_DEVICE_CPU:
|
||||
err = init_cpu_pmu();
|
||||
break;
|
||||
default:
|
||||
pr_warning("attempt to initialise unknown device %d\n",
|
||||
device);
|
||||
pr_warning("attempt to initialise PMU of unknown "
|
||||
"type %d\n", type);
|
||||
err = -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,8 @@ relocate_new_kernel:
|
||||
mov r0,#0
|
||||
ldr r1,kexec_mach_type
|
||||
ldr r2,kexec_boot_atags
|
||||
mov pc,lr
|
||||
ARM( mov pc, lr )
|
||||
THUMB( bx lr )
|
||||
|
||||
.align
|
||||
|
||||
|
@ -280,18 +280,19 @@ static void __init cacheid_init(void)
|
||||
if (arch >= CPU_ARCH_ARMv6) {
|
||||
if ((cachetype & (7 << 29)) == 4 << 29) {
|
||||
/* ARMv7 register format */
|
||||
arch = CPU_ARCH_ARMv7;
|
||||
cacheid = CACHEID_VIPT_NONALIASING;
|
||||
if ((cachetype & (3 << 14)) == 1 << 14)
|
||||
cacheid |= CACHEID_ASID_TAGGED;
|
||||
else if (cpu_has_aliasing_icache(CPU_ARCH_ARMv7))
|
||||
cacheid |= CACHEID_VIPT_I_ALIASING;
|
||||
} else if (cachetype & (1 << 23)) {
|
||||
cacheid = CACHEID_VIPT_ALIASING;
|
||||
} else {
|
||||
cacheid = CACHEID_VIPT_NONALIASING;
|
||||
if (cpu_has_aliasing_icache(CPU_ARCH_ARMv6))
|
||||
cacheid |= CACHEID_VIPT_I_ALIASING;
|
||||
arch = CPU_ARCH_ARMv6;
|
||||
if (cachetype & (1 << 23))
|
||||
cacheid = CACHEID_VIPT_ALIASING;
|
||||
else
|
||||
cacheid = CACHEID_VIPT_NONALIASING;
|
||||
}
|
||||
if (cpu_has_aliasing_icache(arch))
|
||||
cacheid |= CACHEID_VIPT_I_ALIASING;
|
||||
} else {
|
||||
cacheid = CACHEID_VIVT;
|
||||
}
|
||||
|
@ -137,8 +137,8 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk)
|
||||
clk->max_delta_ns = clockevent_delta2ns(0xffffffff, clk);
|
||||
clk->min_delta_ns = clockevent_delta2ns(0xf, clk);
|
||||
|
||||
clockevents_register_device(clk);
|
||||
|
||||
/* Make sure our local interrupt controller has this enabled */
|
||||
gic_enable_ppi(clk->irq);
|
||||
|
||||
clockevents_register_device(clk);
|
||||
}
|
||||
|
@ -157,7 +157,7 @@ static struct clk_lookup periph_clocks_lookups[] = {
|
||||
CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk),
|
||||
CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tc0_clk),
|
||||
CLKDEV_CON_DEV_ID("t1_clk", "atmel_tcb.0", &tc1_clk),
|
||||
CLKDEV_CON_DEV_ID("t2_clk", "atmel_tcb.0", &tc1_clk),
|
||||
CLKDEV_CON_DEV_ID("t2_clk", "atmel_tcb.0", &tc2_clk),
|
||||
CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk),
|
||||
CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk),
|
||||
CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk),
|
||||
|
@ -8,7 +8,6 @@
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <asm/hardware/entry-macro-gic.S>
|
||||
|
||||
.macro disable_fiq
|
||||
|
@ -13,7 +13,6 @@
|
||||
|
||||
#include <linux/io.h>
|
||||
#include <asm/proc-fns.h>
|
||||
#include <mach/hardware.h>
|
||||
|
||||
static inline void arch_idle(void)
|
||||
{
|
||||
|
@ -8,7 +8,6 @@
|
||||
*/
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/cns3xxx.h>
|
||||
|
||||
#define AMBA_UART_DR(base) (*(volatile unsigned char *)((base) + 0x00))
|
||||
|
@ -49,7 +49,7 @@ static struct cns3xxx_pcie *sysdata_to_cnspci(void *sysdata)
|
||||
return &cns3xxx_pcie[root->domain];
|
||||
}
|
||||
|
||||
static struct cns3xxx_pcie *pdev_to_cnspci(struct pci_dev *dev)
|
||||
static struct cns3xxx_pcie *pdev_to_cnspci(const struct pci_dev *dev)
|
||||
{
|
||||
return sysdata_to_cnspci(dev->sysdata);
|
||||
}
|
||||
|
@ -115,6 +115,32 @@ static struct spi_board_info da850evm_spi_info[] = {
|
||||
},
|
||||
};
|
||||
|
||||
#ifdef CONFIG_MTD
|
||||
static void da850_evm_m25p80_notify_add(struct mtd_info *mtd)
|
||||
{
|
||||
char *mac_addr = davinci_soc_info.emac_pdata->mac_addr;
|
||||
size_t retlen;
|
||||
|
||||
if (!strcmp(mtd->name, "MAC-Address")) {
|
||||
mtd->read(mtd, 0, ETH_ALEN, &retlen, mac_addr);
|
||||
if (retlen == ETH_ALEN)
|
||||
pr_info("Read MAC addr from SPI Flash: %pM\n",
|
||||
mac_addr);
|
||||
}
|
||||
}
|
||||
|
||||
static struct mtd_notifier da850evm_spi_notifier = {
|
||||
.add = da850_evm_m25p80_notify_add,
|
||||
};
|
||||
|
||||
static void da850_evm_setup_mac_addr(void)
|
||||
{
|
||||
register_mtd_user(&da850evm_spi_notifier);
|
||||
}
|
||||
#else
|
||||
static void da850_evm_setup_mac_addr(void) { }
|
||||
#endif
|
||||
|
||||
static struct mtd_partition da850_evm_norflash_partition[] = {
|
||||
{
|
||||
.name = "bootloaders + env",
|
||||
@ -1244,6 +1270,8 @@ static __init void da850_evm_init(void)
|
||||
if (ret)
|
||||
pr_warning("da850_evm_init: sata registration failed: %d\n",
|
||||
ret);
|
||||
|
||||
da850_evm_setup_mac_addr();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SERIAL_8250_CONSOLE
|
||||
|
@ -243,7 +243,7 @@
|
||||
#define PSC_STATE_DISABLE 2
|
||||
#define PSC_STATE_ENABLE 3
|
||||
|
||||
#define MDSTAT_STATE_MASK 0x1f
|
||||
#define MDSTAT_STATE_MASK 0x3f
|
||||
#define MDCTL_FORCE BIT(31)
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
@ -217,7 +217,11 @@ ddr2clk_stop_done:
|
||||
ENDPROC(davinci_ddr_psc_config)
|
||||
|
||||
CACHE_FLUSH:
|
||||
.word arm926_flush_kern_cache_all
|
||||
#ifdef CONFIG_CPU_V6
|
||||
.word v6_flush_kern_cache_all
|
||||
#else
|
||||
.word arm926_flush_kern_cache_all
|
||||
#endif
|
||||
|
||||
ENTRY(davinci_cpu_suspend_sz)
|
||||
.word . - davinci_cpu_suspend
|
||||
|
@ -6,7 +6,7 @@
|
||||
* TS72xx memory map:
|
||||
*
|
||||
* virt phys size
|
||||
* febff000 22000000 4K model number register
|
||||
* febff000 22000000 4K model number register (bits 0-2)
|
||||
* febfe000 22400000 4K options register
|
||||
* febfd000 22800000 4K options register #2
|
||||
* febf9000 10800000 4K TS-5620 RTC index register
|
||||
@ -20,6 +20,9 @@
|
||||
#define TS72XX_MODEL_TS7200 0x00
|
||||
#define TS72XX_MODEL_TS7250 0x01
|
||||
#define TS72XX_MODEL_TS7260 0x02
|
||||
#define TS72XX_MODEL_TS7300 0x03
|
||||
#define TS72XX_MODEL_TS7400 0x04
|
||||
#define TS72XX_MODEL_MASK 0x07
|
||||
|
||||
|
||||
#define TS72XX_OPTIONS_PHYS_BASE 0x22400000
|
||||
@ -51,19 +54,34 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
static inline int ts72xx_model(void)
|
||||
{
|
||||
return __raw_readb(TS72XX_MODEL_VIRT_BASE) & TS72XX_MODEL_MASK;
|
||||
}
|
||||
|
||||
static inline int board_is_ts7200(void)
|
||||
{
|
||||
return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7200;
|
||||
return ts72xx_model() == TS72XX_MODEL_TS7200;
|
||||
}
|
||||
|
||||
static inline int board_is_ts7250(void)
|
||||
{
|
||||
return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7250;
|
||||
return ts72xx_model() == TS72XX_MODEL_TS7250;
|
||||
}
|
||||
|
||||
static inline int board_is_ts7260(void)
|
||||
{
|
||||
return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7260;
|
||||
return ts72xx_model() == TS72XX_MODEL_TS7260;
|
||||
}
|
||||
|
||||
static inline int board_is_ts7300(void)
|
||||
{
|
||||
return ts72xx_model() == TS72XX_MODEL_TS7300;
|
||||
}
|
||||
|
||||
static inline int board_is_ts7400(void)
|
||||
{
|
||||
return ts72xx_model() == TS72XX_MODEL_TS7400;
|
||||
}
|
||||
|
||||
static inline int is_max197_installed(void)
|
||||
|
@ -113,22 +113,7 @@ menu "EXYNOS4 Machines"
|
||||
|
||||
config MACH_SMDKC210
|
||||
bool "SMDKC210"
|
||||
select CPU_EXYNOS4210
|
||||
select S5P_DEV_FIMD0
|
||||
select S3C_DEV_RTC
|
||||
select S3C_DEV_WDT
|
||||
select S3C_DEV_I2C1
|
||||
select S3C_DEV_HSMMC
|
||||
select S3C_DEV_HSMMC1
|
||||
select S3C_DEV_HSMMC2
|
||||
select S3C_DEV_HSMMC3
|
||||
select SAMSUNG_DEV_PWM
|
||||
select SAMSUNG_DEV_BACKLIGHT
|
||||
select EXYNOS4_DEV_PD
|
||||
select EXYNOS4_DEV_SYSMMU
|
||||
select EXYNOS4_SETUP_FIMD0
|
||||
select EXYNOS4_SETUP_I2C1
|
||||
select EXYNOS4_SETUP_SDHCI
|
||||
select MACH_SMDKV310
|
||||
help
|
||||
Machine support for Samsung SMDKC210
|
||||
|
||||
|
@ -25,7 +25,7 @@ obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
||||
|
||||
# machine support
|
||||
|
||||
obj-$(CONFIG_MACH_SMDKC210) += mach-smdkc210.o
|
||||
obj-$(CONFIG_MACH_SMDKC210) += mach-smdkv310.o
|
||||
obj-$(CONFIG_MACH_SMDKV310) += mach-smdkv310.o
|
||||
obj-$(CONFIG_MACH_ARMLEX4210) += mach-armlex4210.o
|
||||
obj-$(CONFIG_MACH_UNIVERSAL_C210) += mach-universal_c210.o
|
||||
|
@ -520,7 +520,7 @@ static struct clk init_clocks_off[] = {
|
||||
.ctrlbit = (1 << 21),
|
||||
}, {
|
||||
.name = "ac97",
|
||||
.id = -1,
|
||||
.devname = "samsung-ac97",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 27),
|
||||
}, {
|
||||
|
@ -24,12 +24,13 @@
|
||||
#include <plat/exynos4.h>
|
||||
#include <plat/adc-core.h>
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/fb-core.h>
|
||||
#include <plat/fimc-core.h>
|
||||
#include <plat/iic-core.h>
|
||||
#include <plat/reset.h>
|
||||
|
||||
#include <mach/regs-irq.h>
|
||||
#include <mach/regs-pmu.h>
|
||||
|
||||
extern int combiner_init(unsigned int combiner_nr, void __iomem *base,
|
||||
unsigned int irq_start);
|
||||
@ -128,6 +129,11 @@ static void exynos4_idle(void)
|
||||
local_irq_enable();
|
||||
}
|
||||
|
||||
static void exynos4_sw_reset(void)
|
||||
{
|
||||
__raw_writel(0x1, S5P_SWRESET);
|
||||
}
|
||||
|
||||
/*
|
||||
* exynos4_map_io
|
||||
*
|
||||
@ -241,5 +247,8 @@ int __init exynos4_init(void)
|
||||
/* set idle function */
|
||||
pm_idle = exynos4_idle;
|
||||
|
||||
/* set sw_reset function */
|
||||
s5p_reset_hook = exynos4_sw_reset;
|
||||
|
||||
return sysdev_register(&exynos4_sysdev);
|
||||
}
|
||||
|
@ -80,9 +80,8 @@
|
||||
#define IRQ_HSMMC3 IRQ_SPI(76)
|
||||
#define IRQ_DWMCI IRQ_SPI(77)
|
||||
|
||||
#define IRQ_MIPICSI0 IRQ_SPI(78)
|
||||
|
||||
#define IRQ_MIPICSI1 IRQ_SPI(80)
|
||||
#define IRQ_MIPI_CSIS0 IRQ_SPI(78)
|
||||
#define IRQ_MIPI_CSIS1 IRQ_SPI(80)
|
||||
|
||||
#define IRQ_ONENAND_AUDI IRQ_SPI(82)
|
||||
#define IRQ_ROTATOR IRQ_SPI(83)
|
||||
|
@ -29,6 +29,8 @@
|
||||
#define S5P_USE_STANDBY_WFE1 (1 << 25)
|
||||
#define S5P_USE_MASK ((0x3 << 16) | (0x3 << 24))
|
||||
|
||||
#define S5P_SWRESET S5P_PMUREG(0x0400)
|
||||
|
||||
#define S5P_WAKEUP_STAT S5P_PMUREG(0x0600)
|
||||
#define S5P_EINT_WAKEUP_MASK S5P_PMUREG(0x0604)
|
||||
#define S5P_WAKEUP_MASK S5P_PMUREG(0x0608)
|
||||
|
@ -23,6 +23,8 @@
|
||||
|
||||
#include <mach/regs-gpio.h>
|
||||
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
static DEFINE_SPINLOCK(eint_lock);
|
||||
|
||||
static unsigned int eint0_15_data[16];
|
||||
@ -184,8 +186,11 @@ static inline void exynos4_irq_demux_eint(unsigned int start)
|
||||
|
||||
static void exynos4_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
struct irq_chip *chip = irq_get_chip(irq);
|
||||
chained_irq_enter(chip, desc);
|
||||
exynos4_irq_demux_eint(IRQ_EINT(16));
|
||||
exynos4_irq_demux_eint(IRQ_EINT(24));
|
||||
chained_irq_exit(chip, desc);
|
||||
}
|
||||
|
||||
static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
|
||||
@ -193,6 +198,7 @@ static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
|
||||
u32 *irq_data = irq_get_handler_data(irq);
|
||||
struct irq_chip *chip = irq_get_chip(irq);
|
||||
|
||||
chained_irq_enter(chip, desc);
|
||||
chip->irq_mask(&desc->irq_data);
|
||||
|
||||
if (chip->irq_ack)
|
||||
@ -201,6 +207,7 @@ static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
|
||||
generic_handle_irq(*irq_data);
|
||||
|
||||
chip->irq_unmask(&desc->irq_data);
|
||||
chained_irq_exit(chip, desc);
|
||||
}
|
||||
|
||||
int __init exynos4_init_irq_eint(void)
|
||||
|
@ -1,309 +0,0 @@
|
||||
/* linux/arch/arm/mach-exynos4/mach-smdkc210.c
|
||||
*
|
||||
* Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
|
||||
* http://www.samsung.com
|
||||
*
|
||||
* 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/serial_core.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/lcd.h>
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/smsc911x.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/pwm_backlight.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include <video/platform_lcd.h>
|
||||
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/regs-srom.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
#include <plat/exynos4.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/iic.h>
|
||||
#include <plat/pd.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/backlight.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
|
||||
/* Following are default values for UCON, ULCON and UFCON UART registers */
|
||||
#define SMDKC210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
|
||||
S3C2410_UCON_RXILEVEL | \
|
||||
S3C2410_UCON_TXIRQMODE | \
|
||||
S3C2410_UCON_RXIRQMODE | \
|
||||
S3C2410_UCON_RXFIFO_TOI | \
|
||||
S3C2443_UCON_RXERR_IRQEN)
|
||||
|
||||
#define SMDKC210_ULCON_DEFAULT S3C2410_LCON_CS8
|
||||
|
||||
#define SMDKC210_UFCON_DEFAULT (S3C2410_UFCON_FIFOMODE | \
|
||||
S5PV210_UFCON_TXTRIG4 | \
|
||||
S5PV210_UFCON_RXTRIG4)
|
||||
|
||||
static struct s3c2410_uartcfg smdkc210_uartcfgs[] __initdata = {
|
||||
[0] = {
|
||||
.hwport = 0,
|
||||
.flags = 0,
|
||||
.ucon = SMDKC210_UCON_DEFAULT,
|
||||
.ulcon = SMDKC210_ULCON_DEFAULT,
|
||||
.ufcon = SMDKC210_UFCON_DEFAULT,
|
||||
},
|
||||
[1] = {
|
||||
.hwport = 1,
|
||||
.flags = 0,
|
||||
.ucon = SMDKC210_UCON_DEFAULT,
|
||||
.ulcon = SMDKC210_ULCON_DEFAULT,
|
||||
.ufcon = SMDKC210_UFCON_DEFAULT,
|
||||
},
|
||||
[2] = {
|
||||
.hwport = 2,
|
||||
.flags = 0,
|
||||
.ucon = SMDKC210_UCON_DEFAULT,
|
||||
.ulcon = SMDKC210_ULCON_DEFAULT,
|
||||
.ufcon = SMDKC210_UFCON_DEFAULT,
|
||||
},
|
||||
[3] = {
|
||||
.hwport = 3,
|
||||
.flags = 0,
|
||||
.ucon = SMDKC210_UCON_DEFAULT,
|
||||
.ulcon = SMDKC210_ULCON_DEFAULT,
|
||||
.ufcon = SMDKC210_UFCON_DEFAULT,
|
||||
},
|
||||
};
|
||||
|
||||
static struct s3c_sdhci_platdata smdkc210_hsmmc0_pdata __initdata = {
|
||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
||||
.ext_cd_gpio = EXYNOS4_GPK0(2),
|
||||
.ext_cd_gpio_invert = 1,
|
||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
||||
#ifdef CONFIG_EXYNOS4_SDHCI_CH0_8BIT
|
||||
.max_width = 8,
|
||||
.host_caps = MMC_CAP_8_BIT_DATA,
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct s3c_sdhci_platdata smdkc210_hsmmc1_pdata __initdata = {
|
||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
||||
.ext_cd_gpio = EXYNOS4_GPK0(2),
|
||||
.ext_cd_gpio_invert = 1,
|
||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
||||
};
|
||||
|
||||
static struct s3c_sdhci_platdata smdkc210_hsmmc2_pdata __initdata = {
|
||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
||||
.ext_cd_gpio = EXYNOS4_GPK2(2),
|
||||
.ext_cd_gpio_invert = 1,
|
||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
||||
#ifdef CONFIG_EXYNOS4_SDHCI_CH2_8BIT
|
||||
.max_width = 8,
|
||||
.host_caps = MMC_CAP_8_BIT_DATA,
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct s3c_sdhci_platdata smdkc210_hsmmc3_pdata __initdata = {
|
||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
||||
.ext_cd_gpio = EXYNOS4_GPK2(2),
|
||||
.ext_cd_gpio_invert = 1,
|
||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
||||
};
|
||||
|
||||
static void lcd_lte480wv_set_power(struct plat_lcd_data *pd,
|
||||
unsigned int power)
|
||||
{
|
||||
if (power) {
|
||||
#if !defined(CONFIG_BACKLIGHT_PWM)
|
||||
gpio_request_one(EXYNOS4_GPD0(1), GPIOF_OUT_INIT_HIGH, "GPD0");
|
||||
gpio_free(EXYNOS4_GPD0(1));
|
||||
#endif
|
||||
/* fire nRESET on power up */
|
||||
gpio_request(EXYNOS4_GPX0(6), "GPX0");
|
||||
|
||||
gpio_direction_output(EXYNOS4_GPX0(6), 1);
|
||||
mdelay(100);
|
||||
|
||||
gpio_set_value(EXYNOS4_GPX0(6), 0);
|
||||
mdelay(10);
|
||||
|
||||
gpio_set_value(EXYNOS4_GPX0(6), 1);
|
||||
mdelay(10);
|
||||
|
||||
gpio_free(EXYNOS4_GPX0(6));
|
||||
} else {
|
||||
#if !defined(CONFIG_BACKLIGHT_PWM)
|
||||
gpio_request_one(EXYNOS4_GPD0(1), GPIOF_OUT_INIT_LOW, "GPD0");
|
||||
gpio_free(EXYNOS4_GPD0(1));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
static struct plat_lcd_data smdkc210_lcd_lte480wv_data = {
|
||||
.set_power = lcd_lte480wv_set_power,
|
||||
};
|
||||
|
||||
static struct platform_device smdkc210_lcd_lte480wv = {
|
||||
.name = "platform-lcd",
|
||||
.dev.parent = &s5p_device_fimd0.dev,
|
||||
.dev.platform_data = &smdkc210_lcd_lte480wv_data,
|
||||
};
|
||||
|
||||
static struct s3c_fb_pd_win smdkc210_fb_win0 = {
|
||||
.win_mode = {
|
||||
.left_margin = 13,
|
||||
.right_margin = 8,
|
||||
.upper_margin = 7,
|
||||
.lower_margin = 5,
|
||||
.hsync_len = 3,
|
||||
.vsync_len = 1,
|
||||
.xres = 800,
|
||||
.yres = 480,
|
||||
},
|
||||
.max_bpp = 32,
|
||||
.default_bpp = 24,
|
||||
};
|
||||
|
||||
static struct s3c_fb_platdata smdkc210_lcd0_pdata __initdata = {
|
||||
.win[0] = &smdkc210_fb_win0,
|
||||
.vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
|
||||
.vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
||||
.setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
|
||||
};
|
||||
|
||||
static struct resource smdkc210_smsc911x_resources[] = {
|
||||
[0] = {
|
||||
.start = EXYNOS4_PA_SROM_BANK(1),
|
||||
.end = EXYNOS4_PA_SROM_BANK(1) + SZ_64K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = IRQ_EINT(5),
|
||||
.end = IRQ_EINT(5),
|
||||
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW,
|
||||
},
|
||||
};
|
||||
|
||||
static struct smsc911x_platform_config smsc9215_config = {
|
||||
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
||||
.irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
|
||||
.flags = SMSC911X_USE_16BIT | SMSC911X_FORCE_INTERNAL_PHY,
|
||||
.phy_interface = PHY_INTERFACE_MODE_MII,
|
||||
.mac = {0x00, 0x80, 0x00, 0x23, 0x45, 0x67},
|
||||
};
|
||||
|
||||
static struct platform_device smdkc210_smsc911x = {
|
||||
.name = "smsc911x",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(smdkc210_smsc911x_resources),
|
||||
.resource = smdkc210_smsc911x_resources,
|
||||
.dev = {
|
||||
.platform_data = &smsc9215_config,
|
||||
},
|
||||
};
|
||||
|
||||
static struct i2c_board_info i2c_devs1[] __initdata = {
|
||||
{I2C_BOARD_INFO("wm8994", 0x1a),},
|
||||
};
|
||||
|
||||
static struct platform_device *smdkc210_devices[] __initdata = {
|
||||
&s3c_device_hsmmc0,
|
||||
&s3c_device_hsmmc1,
|
||||
&s3c_device_hsmmc2,
|
||||
&s3c_device_hsmmc3,
|
||||
&s3c_device_i2c1,
|
||||
&s3c_device_rtc,
|
||||
&s3c_device_wdt,
|
||||
&exynos4_device_ac97,
|
||||
&exynos4_device_i2s0,
|
||||
&exynos4_device_pd[PD_MFC],
|
||||
&exynos4_device_pd[PD_G3D],
|
||||
&exynos4_device_pd[PD_LCD0],
|
||||
&exynos4_device_pd[PD_LCD1],
|
||||
&exynos4_device_pd[PD_CAM],
|
||||
&exynos4_device_pd[PD_TV],
|
||||
&exynos4_device_pd[PD_GPS],
|
||||
&exynos4_device_sysmmu,
|
||||
&samsung_asoc_dma,
|
||||
&s5p_device_fimd0,
|
||||
&smdkc210_lcd_lte480wv,
|
||||
&smdkc210_smsc911x,
|
||||
};
|
||||
|
||||
static void __init smdkc210_smsc911x_init(void)
|
||||
{
|
||||
u32 cs1;
|
||||
|
||||
/* configure nCS1 width to 16 bits */
|
||||
cs1 = __raw_readl(S5P_SROM_BW) &
|
||||
~(S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS1__SHIFT);
|
||||
cs1 |= ((1 << S5P_SROM_BW__DATAWIDTH__SHIFT) |
|
||||
(1 << S5P_SROM_BW__WAITENABLE__SHIFT) |
|
||||
(1 << S5P_SROM_BW__BYTEENABLE__SHIFT)) <<
|
||||
S5P_SROM_BW__NCS1__SHIFT;
|
||||
__raw_writel(cs1, S5P_SROM_BW);
|
||||
|
||||
/* set timing for nCS1 suitable for ethernet chip */
|
||||
__raw_writel((0x1 << S5P_SROM_BCX__PMC__SHIFT) |
|
||||
(0x9 << S5P_SROM_BCX__TACP__SHIFT) |
|
||||
(0xc << S5P_SROM_BCX__TCAH__SHIFT) |
|
||||
(0x1 << S5P_SROM_BCX__TCOH__SHIFT) |
|
||||
(0x6 << S5P_SROM_BCX__TACC__SHIFT) |
|
||||
(0x1 << S5P_SROM_BCX__TCOS__SHIFT) |
|
||||
(0x1 << S5P_SROM_BCX__TACS__SHIFT), S5P_SROM_BC1);
|
||||
}
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdkc210_bl_gpio_info = {
|
||||
.no = EXYNOS4_GPD0(1),
|
||||
.func = S3C_GPIO_SFN(2),
|
||||
};
|
||||
|
||||
static struct platform_pwm_backlight_data smdkc210_bl_data = {
|
||||
.pwm_id = 1,
|
||||
.pwm_period_ns = 1000,
|
||||
};
|
||||
|
||||
static void __init smdkc210_map_io(void)
|
||||
{
|
||||
s5p_init_io(NULL, 0, S5P_VA_CHIPID);
|
||||
s3c24xx_init_clocks(24000000);
|
||||
s3c24xx_init_uarts(smdkc210_uartcfgs, ARRAY_SIZE(smdkc210_uartcfgs));
|
||||
}
|
||||
|
||||
static void __init smdkc210_machine_init(void)
|
||||
{
|
||||
s3c_i2c1_set_platdata(NULL);
|
||||
i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
|
||||
|
||||
smdkc210_smsc911x_init();
|
||||
|
||||
s3c_sdhci0_set_platdata(&smdkc210_hsmmc0_pdata);
|
||||
s3c_sdhci1_set_platdata(&smdkc210_hsmmc1_pdata);
|
||||
s3c_sdhci2_set_platdata(&smdkc210_hsmmc2_pdata);
|
||||
s3c_sdhci3_set_platdata(&smdkc210_hsmmc3_pdata);
|
||||
|
||||
samsung_bl_set(&smdkc210_bl_gpio_info, &smdkc210_bl_data);
|
||||
s5p_fimd0_set_platdata(&smdkc210_lcd0_pdata);
|
||||
|
||||
platform_add_devices(smdkc210_devices, ARRAY_SIZE(smdkc210_devices));
|
||||
}
|
||||
|
||||
MACHINE_START(SMDKC210, "SMDKC210")
|
||||
/* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
|
||||
.boot_params = S5P_PA_SDRAM + 0x100,
|
||||
.init_irq = exynos4_init_irq,
|
||||
.map_io = smdkc210_map_io,
|
||||
.init_machine = smdkc210_machine_init,
|
||||
.timer = &exynos4_timer,
|
||||
MACHINE_END
|
@ -9,7 +9,9 @@
|
||||
*/
|
||||
|
||||
#include <linux/serial_core.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/lcd.h>
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/smsc911x.h>
|
||||
@ -21,11 +23,14 @@
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include <video/platform_lcd.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/regs-srom.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
#include <plat/exynos4.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/keypad.h>
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/iic.h>
|
||||
@ -112,6 +117,67 @@ static struct s3c_sdhci_platdata smdkv310_hsmmc3_pdata __initdata = {
|
||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
||||
};
|
||||
|
||||
static void lcd_lte480wv_set_power(struct plat_lcd_data *pd,
|
||||
unsigned int power)
|
||||
{
|
||||
if (power) {
|
||||
#if !defined(CONFIG_BACKLIGHT_PWM)
|
||||
gpio_request_one(EXYNOS4_GPD0(1), GPIOF_OUT_INIT_HIGH, "GPD0");
|
||||
gpio_free(EXYNOS4_GPD0(1));
|
||||
#endif
|
||||
/* fire nRESET on power up */
|
||||
gpio_request(EXYNOS4_GPX0(6), "GPX0");
|
||||
|
||||
gpio_direction_output(EXYNOS4_GPX0(6), 1);
|
||||
mdelay(100);
|
||||
|
||||
gpio_set_value(EXYNOS4_GPX0(6), 0);
|
||||
mdelay(10);
|
||||
|
||||
gpio_set_value(EXYNOS4_GPX0(6), 1);
|
||||
mdelay(10);
|
||||
|
||||
gpio_free(EXYNOS4_GPX0(6));
|
||||
} else {
|
||||
#if !defined(CONFIG_BACKLIGHT_PWM)
|
||||
gpio_request_one(EXYNOS4_GPD0(1), GPIOF_OUT_INIT_LOW, "GPD0");
|
||||
gpio_free(EXYNOS4_GPD0(1));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
static struct plat_lcd_data smdkv310_lcd_lte480wv_data = {
|
||||
.set_power = lcd_lte480wv_set_power,
|
||||
};
|
||||
|
||||
static struct platform_device smdkv310_lcd_lte480wv = {
|
||||
.name = "platform-lcd",
|
||||
.dev.parent = &s5p_device_fimd0.dev,
|
||||
.dev.platform_data = &smdkv310_lcd_lte480wv_data,
|
||||
};
|
||||
|
||||
static struct s3c_fb_pd_win smdkv310_fb_win0 = {
|
||||
.win_mode = {
|
||||
.left_margin = 13,
|
||||
.right_margin = 8,
|
||||
.upper_margin = 7,
|
||||
.lower_margin = 5,
|
||||
.hsync_len = 3,
|
||||
.vsync_len = 1,
|
||||
.xres = 800,
|
||||
.yres = 480,
|
||||
},
|
||||
.max_bpp = 32,
|
||||
.default_bpp = 24,
|
||||
};
|
||||
|
||||
static struct s3c_fb_platdata smdkv310_lcd0_pdata __initdata = {
|
||||
.win[0] = &smdkv310_fb_win0,
|
||||
.vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
|
||||
.vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
||||
.setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
|
||||
};
|
||||
|
||||
static struct resource smdkv310_smsc911x_resources[] = {
|
||||
[0] = {
|
||||
.start = EXYNOS4_PA_SROM_BANK(1),
|
||||
@ -188,6 +254,8 @@ static struct platform_device *smdkv310_devices[] __initdata = {
|
||||
&exynos4_device_sysmmu,
|
||||
&samsung_asoc_dma,
|
||||
&samsung_asoc_idma,
|
||||
&s5p_device_fimd0,
|
||||
&smdkv310_lcd_lte480wv,
|
||||
&smdkv310_smsc911x,
|
||||
&exynos4_device_ahci,
|
||||
};
|
||||
@ -248,6 +316,7 @@ static void __init smdkv310_machine_init(void)
|
||||
samsung_keypad_set_platdata(&smdkv310_keypad_data);
|
||||
|
||||
samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data);
|
||||
s5p_fimd0_set_platdata(&smdkv310_lcd0_pdata);
|
||||
|
||||
platform_add_devices(smdkv310_devices, ARRAY_SIZE(smdkv310_devices));
|
||||
}
|
||||
@ -261,3 +330,12 @@ MACHINE_START(SMDKV310, "SMDKV310")
|
||||
.init_machine = smdkv310_machine_init,
|
||||
.timer = &exynos4_timer,
|
||||
MACHINE_END
|
||||
|
||||
MACHINE_START(SMDKC210, "SMDKC210")
|
||||
/* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
|
||||
.boot_params = S5P_PA_SDRAM + 0x100,
|
||||
.init_irq = exynos4_init_irq,
|
||||
.map_io = smdkv310_map_io,
|
||||
.init_machine = smdkv310_machine_init,
|
||||
.timer = &exynos4_timer,
|
||||
MACHINE_END
|
||||
|
@ -79,7 +79,7 @@ static struct s3c2410_uartcfg universal_uartcfgs[] __initdata = {
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply max8952_consumer =
|
||||
REGULATOR_SUPPLY("vddarm", NULL);
|
||||
REGULATOR_SUPPLY("vdd_arm", NULL);
|
||||
|
||||
static struct max8952_platform_data universal_max8952_pdata __initdata = {
|
||||
.gpio_vid0 = EXYNOS4_GPX0(3),
|
||||
@ -105,7 +105,7 @@ static struct max8952_platform_data universal_max8952_pdata __initdata = {
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply lp3974_buck1_consumer =
|
||||
REGULATOR_SUPPLY("vddint", NULL);
|
||||
REGULATOR_SUPPLY("vdd_int", NULL);
|
||||
|
||||
static struct regulator_consumer_supply lp3974_buck2_consumer =
|
||||
REGULATOR_SUPPLY("vddg3d", NULL);
|
||||
|
@ -82,7 +82,7 @@ static int exynos4_usb_phy1_init(struct platform_device *pdev)
|
||||
|
||||
rstcon &= ~(HOST_LINK_PORT_SWRST_MASK | PHY1_SWRST_MASK);
|
||||
writel(rstcon, EXYNOS4_RSTCON);
|
||||
udelay(50);
|
||||
udelay(80);
|
||||
|
||||
clk_disable(otg_clk);
|
||||
clk_put(otg_clk);
|
||||
|
@ -62,6 +62,7 @@ config ARCH_EBSA285_HOST
|
||||
config ARCH_NETWINDER
|
||||
bool "NetWinder"
|
||||
select CLKSRC_I8253
|
||||
select CLKEVT_I8253
|
||||
select FOOTBRIDGE_HOST
|
||||
select ISA
|
||||
select ISA_DMA
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <linux/irq.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <video/vga.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
#include <asm/system.h>
|
||||
|
@ -310,7 +310,7 @@ static struct sys_timer eukrea_cpuimx27_timer = {
|
||||
.init = eukrea_cpuimx27_timer_init,
|
||||
};
|
||||
|
||||
MACHINE_START(CPUIMX27, "EUKREA CPUIMX27")
|
||||
MACHINE_START(EUKREA_CPUIMX27, "EUKREA CPUIMX27")
|
||||
.boot_params = MX27_PHYS_OFFSET + 0x100,
|
||||
.map_io = mx27_map_io,
|
||||
.init_early = imx27_init_early,
|
||||
|
@ -192,7 +192,7 @@ struct sys_timer eukrea_cpuimx35_timer = {
|
||||
.init = eukrea_cpuimx35_timer_init,
|
||||
};
|
||||
|
||||
MACHINE_START(EUKREA_CPUIMX35, "Eukrea CPUIMX35")
|
||||
MACHINE_START(EUKREA_CPUIMX35SD, "Eukrea CPUIMX35")
|
||||
/* Maintainer: Eukrea Electromatique */
|
||||
.boot_params = MX3x_PHYS_OFFSET + 0x100,
|
||||
.map_io = mx35_map_io,
|
||||
|
@ -161,7 +161,7 @@ static struct sys_timer eukrea_cpuimx25_timer = {
|
||||
.init = eukrea_cpuimx25_timer_init,
|
||||
};
|
||||
|
||||
MACHINE_START(EUKREA_CPUIMX25, "Eukrea CPUIMX25")
|
||||
MACHINE_START(EUKREA_CPUIMX25SD, "Eukrea CPUIMX25")
|
||||
/* Maintainer: Eukrea Electromatique */
|
||||
.boot_params = MX25_PHYS_OFFSET + 0x100,
|
||||
.map_io = mx25_map_io,
|
||||
|
@ -337,15 +337,15 @@ static unsigned long timer_reload;
|
||||
static void integrator_clocksource_init(u32 khz)
|
||||
{
|
||||
void __iomem *base = (void __iomem *)TIMER2_VA_BASE;
|
||||
u32 ctrl = TIMER_CTRL_ENABLE;
|
||||
u32 ctrl = TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC;
|
||||
|
||||
if (khz >= 1500) {
|
||||
khz /= 16;
|
||||
ctrl = TIMER_CTRL_DIV16;
|
||||
ctrl |= TIMER_CTRL_DIV16;
|
||||
}
|
||||
|
||||
writel(ctrl, base + TIMER_CTRL);
|
||||
writel(0xffff, base + TIMER_LOAD);
|
||||
writel(ctrl, base + TIMER_CTRL);
|
||||
|
||||
clocksource_mmio_init(base + TIMER_VALUE, "timer2",
|
||||
khz * 1000, 200, 16, clocksource_mmio_readl_down);
|
||||
|
@ -77,7 +77,7 @@ static int __init dns323_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||
/*
|
||||
* Check for devices with hard-wired IRQs.
|
||||
*/
|
||||
irq = orion5x_pci_map_irq(const dev, slot, pin);
|
||||
irq = orion5x_pci_map_irq(dev, slot, pin);
|
||||
if (irq != -1)
|
||||
return irq;
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include <linux/pci.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/mbus.h>
|
||||
#include <video/vga.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/mach/pci.h>
|
||||
#include <plat/pcie.h>
|
||||
|
@ -481,6 +481,7 @@ static void __init sirfsoc_clk_init(void)
|
||||
|
||||
static struct of_device_id clkc_ids[] = {
|
||||
{ .compatible = "sirf,prima2-clkc" },
|
||||
{},
|
||||
};
|
||||
|
||||
void __init sirfsoc_of_clk_init(void)
|
||||
|
@ -51,6 +51,7 @@ static __init void sirfsoc_irq_init(void)
|
||||
|
||||
static struct of_device_id intc_ids[] = {
|
||||
{ .compatible = "sirf,prima2-intc" },
|
||||
{},
|
||||
};
|
||||
|
||||
void __init sirfsoc_of_irq_init(void)
|
||||
|
@ -19,6 +19,7 @@ static DEFINE_MUTEX(rstc_lock);
|
||||
|
||||
static struct of_device_id rstc_ids[] = {
|
||||
{ .compatible = "sirf,prima2-rstc" },
|
||||
{},
|
||||
};
|
||||
|
||||
static int __init sirfsoc_of_rstc_init(void)
|
||||
|
@ -190,6 +190,7 @@ static void __init sirfsoc_timer_init(void)
|
||||
|
||||
static struct of_device_id timer_ids[] = {
|
||||
{ .compatible = "sirf,prima2-tick" },
|
||||
{},
|
||||
};
|
||||
|
||||
static void __init sirfsoc_of_timer_map(void)
|
||||
|
@ -44,6 +44,7 @@ static inline void arch_reset(char mode, const char *cmd)
|
||||
*/
|
||||
if (realview_reset)
|
||||
realview_reset(mode);
|
||||
dsb();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -8,7 +8,6 @@ config CPU_S3C2410
|
||||
select CPU_ARM920T
|
||||
select S3C_GPIO_PULL_UP
|
||||
select S3C2410_CLOCK
|
||||
select S3C2410_GPIO
|
||||
select CPU_LLSERIAL_S3C2410
|
||||
select S3C2410_PM if PM
|
||||
select S3C2410_CPUFREQ if CPU_FREQ_S3C24XX
|
||||
@ -28,11 +27,6 @@ config S3C2410_PM
|
||||
help
|
||||
Power Management code common to S3C2410 and better
|
||||
|
||||
config S3C2410_GPIO
|
||||
bool
|
||||
help
|
||||
GPIO code for S3C2410 and similar processors
|
||||
|
||||
config SIMTEC_NOR
|
||||
bool
|
||||
help
|
||||
|
@ -13,7 +13,6 @@ obj-$(CONFIG_CPU_S3C2410) += s3c2410.o
|
||||
obj-$(CONFIG_CPU_S3C2410_DMA) += dma.o
|
||||
obj-$(CONFIG_CPU_S3C2410_DMA) += dma.o
|
||||
obj-$(CONFIG_S3C2410_PM) += pm.o sleep.o
|
||||
obj-$(CONFIG_S3C2410_GPIO) += gpio.o
|
||||
obj-$(CONFIG_S3C2410_CPUFREQ) += cpu-freq.o
|
||||
obj-$(CONFIG_S3C2410_PLLTABLE) += pll.o
|
||||
|
||||
|
@ -47,38 +47,26 @@ static struct s3c24xx_dma_map __initdata s3c2410_dma_mappings[] = {
|
||||
.channels[0] = S3C2410_DCON_CH0_SDI | DMA_CH_VALID,
|
||||
.channels[2] = S3C2410_DCON_CH2_SDI | DMA_CH_VALID,
|
||||
.channels[3] = S3C2410_DCON_CH3_SDI | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
},
|
||||
[DMACH_SPI0] = {
|
||||
.name = "spi0",
|
||||
.channels[1] = S3C2410_DCON_CH1_SPI | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_SPI + S3C2410_SPTDAT,
|
||||
.hw_addr.from = S3C2410_PA_SPI + S3C2410_SPRDAT,
|
||||
},
|
||||
[DMACH_SPI1] = {
|
||||
.name = "spi1",
|
||||
.channels[3] = S3C2410_DCON_CH3_SPI | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_SPI + 0x20 + S3C2410_SPTDAT,
|
||||
.hw_addr.from = S3C2410_PA_SPI + 0x20 + S3C2410_SPRDAT,
|
||||
},
|
||||
[DMACH_UART0] = {
|
||||
.name = "uart0",
|
||||
.channels[0] = S3C2410_DCON_CH0_UART0 | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART1] = {
|
||||
.name = "uart1",
|
||||
.channels[1] = S3C2410_DCON_CH1_UART1 | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART2] = {
|
||||
.name = "uart2",
|
||||
.channels[3] = S3C2410_DCON_CH3_UART2 | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_TIMER] = {
|
||||
.name = "timer",
|
||||
@ -90,12 +78,10 @@ static struct s3c24xx_dma_map __initdata s3c2410_dma_mappings[] = {
|
||||
.name = "i2s-sdi",
|
||||
.channels[1] = S3C2410_DCON_CH1_I2SSDI | DMA_CH_VALID,
|
||||
.channels[2] = S3C2410_DCON_CH2_I2SSDI | DMA_CH_VALID,
|
||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
},
|
||||
[DMACH_I2S_OUT] = {
|
||||
.name = "i2s-sdo",
|
||||
.channels[2] = S3C2410_DCON_CH2_I2SSDO | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
},
|
||||
[DMACH_USB_EP1] = {
|
||||
.name = "usb-ep1",
|
||||
|
@ -1,72 +0,0 @@
|
||||
/* linux/arch/arm/mach-s3c2410/gpio.c
|
||||
*
|
||||
* Copyright (c) 2004-2006 Simtec Electronics
|
||||
* Ben Dooks <ben@simtec.co.uk>
|
||||
*
|
||||
* S3C2410 GPIO support
|
||||
*
|
||||
* 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/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/gpio-fns.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <mach/regs-gpio.h>
|
||||
|
||||
int s3c2410_gpio_irqfilter(unsigned int pin, unsigned int on,
|
||||
unsigned int config)
|
||||
{
|
||||
void __iomem *reg = S3C24XX_EINFLT0;
|
||||
unsigned long flags;
|
||||
unsigned long val;
|
||||
|
||||
if (pin < S3C2410_GPG(8) || pin > S3C2410_GPG(15))
|
||||
return -EINVAL;
|
||||
|
||||
config &= 0xff;
|
||||
|
||||
pin -= S3C2410_GPG(8);
|
||||
reg += pin & ~3;
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
/* update filter width and clock source */
|
||||
|
||||
val = __raw_readl(reg);
|
||||
val &= ~(0xff << ((pin & 3) * 8));
|
||||
val |= config << ((pin & 3) * 8);
|
||||
__raw_writel(val, reg);
|
||||
|
||||
/* update filter enable */
|
||||
|
||||
val = __raw_readl(S3C24XX_EXTINT2);
|
||||
val &= ~(1 << ((pin * 4) + 3));
|
||||
val |= on << ((pin * 4) + 3);
|
||||
__raw_writel(val, S3C24XX_EXTINT2);
|
||||
|
||||
local_irq_restore(flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(s3c2410_gpio_irqfilter);
|
@ -14,9 +14,53 @@
|
||||
#define __ASM_ARCH_MAP_H
|
||||
|
||||
#include <plat/map-base.h>
|
||||
#include <plat/map.h>
|
||||
|
||||
#define S3C2410_ADDR(x) S3C_ADDR(x)
|
||||
/*
|
||||
* S3C2410 UART offset is 0x4000 but the other SoCs are 0x400.
|
||||
* So need to define it, and here is to avoid redefinition warning.
|
||||
*/
|
||||
#define S3C_UART_OFFSET (0x4000)
|
||||
|
||||
#include <plat/map-s3c.h>
|
||||
|
||||
/*
|
||||
* interrupt controller is the first thing we put in, to make
|
||||
* the assembly code for the irq detection easier
|
||||
*/
|
||||
#define S3C2410_PA_IRQ (0x4A000000)
|
||||
#define S3C24XX_SZ_IRQ SZ_1M
|
||||
|
||||
/* memory controller registers */
|
||||
#define S3C2410_PA_MEMCTRL (0x48000000)
|
||||
#define S3C24XX_SZ_MEMCTRL SZ_1M
|
||||
|
||||
/* UARTs */
|
||||
#define S3C_VA_UARTx(uart) (S3C_VA_UART + ((uart * S3C_UART_OFFSET)))
|
||||
|
||||
/* Timers */
|
||||
#define S3C2410_PA_TIMER (0x51000000)
|
||||
#define S3C24XX_SZ_TIMER SZ_1M
|
||||
|
||||
/* Clock and Power management */
|
||||
#define S3C24XX_SZ_CLKPWR SZ_1M
|
||||
|
||||
/* USB Device port */
|
||||
#define S3C2410_PA_USBDEV (0x52000000)
|
||||
#define S3C24XX_SZ_USBDEV SZ_1M
|
||||
|
||||
/* Watchdog */
|
||||
#define S3C2410_PA_WATCHDOG (0x53000000)
|
||||
#define S3C24XX_SZ_WATCHDOG SZ_1M
|
||||
|
||||
/* Standard size definitions for peripheral blocks. */
|
||||
|
||||
#define S3C24XX_SZ_UART SZ_1M
|
||||
#define S3C24XX_SZ_IIS SZ_1M
|
||||
#define S3C24XX_SZ_ADC SZ_1M
|
||||
#define S3C24XX_SZ_SPI SZ_1M
|
||||
#define S3C24XX_SZ_SDI SZ_1M
|
||||
#define S3C24XX_SZ_NAND SZ_1M
|
||||
#define S3C24XX_SZ_GPIO SZ_1M
|
||||
|
||||
/* USB host controller */
|
||||
#define S3C2410_PA_USBHOST (0x49000000)
|
||||
@ -75,10 +119,8 @@
|
||||
|
||||
/* S3C2412 memory and IO controls */
|
||||
#define S3C2412_PA_SSMC (0x4F000000)
|
||||
#define S3C2412_VA_SSMC S3C_ADDR_CPU(0x00000000)
|
||||
|
||||
#define S3C2412_PA_EBI (0x48800000)
|
||||
#define S3C2412_VA_EBI S3C_ADDR_CPU(0x00010000)
|
||||
|
||||
/* physical addresses of all the chip-select areas */
|
||||
|
||||
@ -100,12 +142,10 @@
|
||||
#define S3C24XX_PA_DMA S3C2410_PA_DMA
|
||||
#define S3C24XX_PA_CLKPWR S3C2410_PA_CLKPWR
|
||||
#define S3C24XX_PA_LCD S3C2410_PA_LCD
|
||||
#define S3C24XX_PA_UART S3C2410_PA_UART
|
||||
#define S3C24XX_PA_TIMER S3C2410_PA_TIMER
|
||||
#define S3C24XX_PA_USBDEV S3C2410_PA_USBDEV
|
||||
#define S3C24XX_PA_WATCHDOG S3C2410_PA_WATCHDOG
|
||||
#define S3C24XX_PA_IIS S3C2410_PA_IIS
|
||||
#define S3C24XX_PA_GPIO S3C2410_PA_GPIO
|
||||
#define S3C24XX_PA_RTC S3C2410_PA_RTC
|
||||
#define S3C24XX_PA_ADC S3C2410_PA_ADC
|
||||
#define S3C24XX_PA_SPI S3C2410_PA_SPI
|
||||
|
@ -9,7 +9,6 @@ config CPU_S3C2412
|
||||
select CPU_LLSERIAL_S3C2440
|
||||
select S3C2412_PM if PM
|
||||
select S3C2412_DMA if S3C2410_DMA
|
||||
select S3C2410_GPIO
|
||||
help
|
||||
Support for the S3C2412 and S3C2413 SoCs from the S3C24XX line
|
||||
|
||||
|
@ -12,7 +12,6 @@ obj- :=
|
||||
obj-$(CONFIG_CPU_S3C2412) += s3c2412.o
|
||||
obj-$(CONFIG_CPU_S3C2412) += irq.o
|
||||
obj-$(CONFIG_CPU_S3C2412) += clock.o
|
||||
obj-$(CONFIG_CPU_S3C2412) += gpio.o
|
||||
obj-$(CONFIG_S3C2412_DMA) += dma.o
|
||||
obj-$(CONFIG_S3C2412_PM) += pm.o
|
||||
obj-$(CONFIG_S3C2412_PM_SLEEP) += sleep.o
|
||||
|
@ -50,64 +50,46 @@ static struct s3c24xx_dma_map __initdata s3c2412_dma_mappings[] = {
|
||||
.name = "sdi",
|
||||
.channels = MAP(S3C2412_DMAREQSEL_SDI),
|
||||
.channels_rx = MAP(S3C2412_DMAREQSEL_SDI),
|
||||
.hw_addr.to = S3C2410_PA_SDI + S3C2410_SDIDATA,
|
||||
.hw_addr.from = S3C2410_PA_SDI + S3C2410_SDIDATA,
|
||||
},
|
||||
[DMACH_SPI0] = {
|
||||
.name = "spi0",
|
||||
.channels = MAP(S3C2412_DMAREQSEL_SPI0TX),
|
||||
.channels_rx = MAP(S3C2412_DMAREQSEL_SPI0RX),
|
||||
.hw_addr.to = S3C2410_PA_SPI + S3C2410_SPTDAT,
|
||||
.hw_addr.from = S3C2410_PA_SPI + S3C2410_SPRDAT,
|
||||
},
|
||||
[DMACH_SPI1] = {
|
||||
.name = "spi1",
|
||||
.channels = MAP(S3C2412_DMAREQSEL_SPI1TX),
|
||||
.channels_rx = MAP(S3C2412_DMAREQSEL_SPI1RX),
|
||||
.hw_addr.to = S3C2410_PA_SPI + S3C2412_SPI1 + S3C2410_SPTDAT,
|
||||
.hw_addr.from = S3C2410_PA_SPI + S3C2412_SPI1 + S3C2410_SPRDAT,
|
||||
},
|
||||
[DMACH_UART0] = {
|
||||
.name = "uart0",
|
||||
.channels = MAP(S3C2412_DMAREQSEL_UART0_0),
|
||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART0_0),
|
||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART1] = {
|
||||
.name = "uart1",
|
||||
.channels = MAP(S3C2412_DMAREQSEL_UART1_0),
|
||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART1_0),
|
||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART2] = {
|
||||
.name = "uart2",
|
||||
.channels = MAP(S3C2412_DMAREQSEL_UART2_0),
|
||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART2_0),
|
||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART0_SRC2] = {
|
||||
.name = "uart0",
|
||||
.channels = MAP(S3C2412_DMAREQSEL_UART0_1),
|
||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART0_1),
|
||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART1_SRC2] = {
|
||||
.name = "uart1",
|
||||
.channels = MAP(S3C2412_DMAREQSEL_UART1_1),
|
||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART1_1),
|
||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART2_SRC2] = {
|
||||
.name = "uart2",
|
||||
.channels = MAP(S3C2412_DMAREQSEL_UART2_1),
|
||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART2_1),
|
||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_TIMER] = {
|
||||
.name = "timer",
|
||||
|
@ -1,62 +0,0 @@
|
||||
/* linux/arch/arm/mach-s3c2412/gpio.c
|
||||
*
|
||||
* Copyright (c) 2007 Simtec Electronics
|
||||
* Ben Dooks <ben@simtec.co.uk>
|
||||
*
|
||||
* http://armlinux.simtec.co.uk/.
|
||||
*
|
||||
* S3C2412/S3C2413 specific GPIO support
|
||||
*
|
||||
* 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/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <mach/regs-gpio.h>
|
||||
#include <mach/hardware.h>
|
||||
|
||||
#include <plat/gpio-core.h>
|
||||
|
||||
int s3c2412_gpio_set_sleepcfg(unsigned int pin, unsigned int state)
|
||||
{
|
||||
struct s3c_gpio_chip *chip = s3c_gpiolib_getchip(pin);
|
||||
unsigned long offs = pin - chip->chip.base;
|
||||
unsigned long flags;
|
||||
unsigned long slpcon;
|
||||
|
||||
offs *= 2;
|
||||
|
||||
if (pin < S3C2410_GPB(0))
|
||||
return -EINVAL;
|
||||
|
||||
if (pin >= S3C2410_GPF(0) &&
|
||||
pin <= S3C2410_GPG(16))
|
||||
return -EINVAL;
|
||||
|
||||
if (pin > S3C2410_GPH(16))
|
||||
return -EINVAL;
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
slpcon = __raw_readl(chip->base + 0x0C);
|
||||
|
||||
slpcon &= ~(3 << offs);
|
||||
slpcon |= state << offs;
|
||||
|
||||
__raw_writel(slpcon, chip->base + 0x0C);
|
||||
|
||||
local_irq_restore(flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(s3c2412_gpio_set_sleepcfg);
|
@ -8,7 +8,6 @@ config CPU_S3C2440
|
||||
select S3C_GPIO_PULL_UP
|
||||
select S3C2410_CLOCK
|
||||
select S3C2410_PM if PM
|
||||
select S3C2410_GPIO
|
||||
select S3C2440_DMA if S3C2410_DMA
|
||||
select CPU_S3C244X
|
||||
select CPU_LLSERIAL_S3C2440
|
||||
@ -20,7 +19,6 @@ config CPU_S3C2442
|
||||
select CPU_ARM920T
|
||||
select S3C_GPIO_PULL_DOWN
|
||||
select S3C2410_CLOCK
|
||||
select S3C2410_GPIO
|
||||
select S3C2410_PM if PM
|
||||
select CPU_S3C244X
|
||||
select CPU_LLSERIAL_S3C2440
|
||||
|
@ -48,38 +48,26 @@ static struct s3c24xx_dma_map __initdata s3c2440_dma_mappings[] = {
|
||||
.channels[1] = S3C2440_DCON_CH1_SDI | DMA_CH_VALID,
|
||||
.channels[2] = S3C2410_DCON_CH2_SDI | DMA_CH_VALID,
|
||||
.channels[3] = S3C2410_DCON_CH3_SDI | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
},
|
||||
[DMACH_SPI0] = {
|
||||
.name = "spi0",
|
||||
.channels[1] = S3C2410_DCON_CH1_SPI | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_SPI + S3C2410_SPTDAT,
|
||||
.hw_addr.from = S3C2410_PA_SPI + S3C2410_SPRDAT,
|
||||
},
|
||||
[DMACH_SPI1] = {
|
||||
.name = "spi1",
|
||||
.channels[3] = S3C2410_DCON_CH3_SPI | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_SPI + 0x20 + S3C2410_SPTDAT,
|
||||
.hw_addr.from = S3C2410_PA_SPI + 0x20 + S3C2410_SPRDAT,
|
||||
},
|
||||
[DMACH_UART0] = {
|
||||
.name = "uart0",
|
||||
.channels[0] = S3C2410_DCON_CH0_UART0 | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART1] = {
|
||||
.name = "uart1",
|
||||
.channels[1] = S3C2410_DCON_CH1_UART1 | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART2] = {
|
||||
.name = "uart2",
|
||||
.channels[3] = S3C2410_DCON_CH3_UART2 | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_TIMER] = {
|
||||
.name = "timer",
|
||||
@ -91,31 +79,26 @@ static struct s3c24xx_dma_map __initdata s3c2440_dma_mappings[] = {
|
||||
.name = "i2s-sdi",
|
||||
.channels[1] = S3C2410_DCON_CH1_I2SSDI | DMA_CH_VALID,
|
||||
.channels[2] = S3C2410_DCON_CH2_I2SSDI | DMA_CH_VALID,
|
||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
},
|
||||
[DMACH_I2S_OUT] = {
|
||||
.name = "i2s-sdo",
|
||||
.channels[0] = S3C2440_DCON_CH0_I2SSDO | DMA_CH_VALID,
|
||||
.channels[2] = S3C2410_DCON_CH2_I2SSDO | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
},
|
||||
[DMACH_PCM_IN] = {
|
||||
.name = "pcm-in",
|
||||
.channels[0] = S3C2440_DCON_CH0_PCMIN | DMA_CH_VALID,
|
||||
.channels[2] = S3C2440_DCON_CH2_PCMIN | DMA_CH_VALID,
|
||||
.hw_addr.from = S3C2440_PA_AC97 + S3C_AC97_PCM_DATA,
|
||||
},
|
||||
[DMACH_PCM_OUT] = {
|
||||
.name = "pcm-out",
|
||||
.channels[1] = S3C2440_DCON_CH1_PCMOUT | DMA_CH_VALID,
|
||||
.channels[3] = S3C2440_DCON_CH3_PCMOUT | DMA_CH_VALID,
|
||||
.hw_addr.to = S3C2440_PA_AC97 + S3C_AC97_PCM_DATA,
|
||||
},
|
||||
[DMACH_MIC_IN] = {
|
||||
.name = "mic-in",
|
||||
.channels[2] = S3C2440_DCON_CH2_MICIN | DMA_CH_VALID,
|
||||
.channels[3] = S3C2440_DCON_CH3_MICIN | DMA_CH_VALID,
|
||||
.hw_addr.from = S3C2440_PA_AC97 + S3C_AC97_MIC_DATA,
|
||||
},
|
||||
[DMACH_USB_EP1] = {
|
||||
.name = "usb-ep1",
|
||||
|
@ -54,68 +54,46 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
|
||||
[DMACH_SDI] = {
|
||||
.name = "sdi",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_SDI),
|
||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
},
|
||||
[DMACH_SPI0] = {
|
||||
.name = "spi0",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_SPI0TX),
|
||||
.hw_addr.to = S3C2410_PA_SPI + S3C2410_SPTDAT,
|
||||
.hw_addr.from = S3C2410_PA_SPI + S3C2410_SPRDAT,
|
||||
},
|
||||
[DMACH_SPI1] = {
|
||||
.name = "spi1",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_SPI1TX),
|
||||
.hw_addr.to = S3C2410_PA_SPI + 0x20 + S3C2410_SPTDAT,
|
||||
.hw_addr.from = S3C2410_PA_SPI + 0x20 + S3C2410_SPRDAT,
|
||||
},
|
||||
[DMACH_UART0] = {
|
||||
.name = "uart0",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_UART0_0),
|
||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART1] = {
|
||||
.name = "uart1",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_UART1_0),
|
||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART2] = {
|
||||
.name = "uart2",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_UART2_0),
|
||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART3] = {
|
||||
.name = "uart3",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_UART3_0),
|
||||
.hw_addr.to = S3C2443_PA_UART3 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2443_PA_UART3 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART0_SRC2] = {
|
||||
.name = "uart0",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_UART0_1),
|
||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART1_SRC2] = {
|
||||
.name = "uart1",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_UART1_1),
|
||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART2_SRC2] = {
|
||||
.name = "uart2",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_UART2_1),
|
||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_UART3_SRC2] = {
|
||||
.name = "uart3",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_UART3_1),
|
||||
.hw_addr.to = S3C2443_PA_UART3 + S3C2410_UTXH,
|
||||
.hw_addr.from = S3C2443_PA_UART3 + S3C2410_URXH,
|
||||
},
|
||||
[DMACH_TIMER] = {
|
||||
.name = "timer",
|
||||
@ -124,27 +102,22 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
|
||||
[DMACH_I2S_IN] = {
|
||||
.name = "i2s-sdi",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_I2SRX),
|
||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
},
|
||||
[DMACH_I2S_OUT] = {
|
||||
.name = "i2s-sdo",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_I2STX),
|
||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
||||
},
|
||||
[DMACH_PCM_IN] = {
|
||||
.name = "pcm-in",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_PCMIN),
|
||||
.hw_addr.from = S3C2440_PA_AC97 + S3C_AC97_PCM_DATA,
|
||||
},
|
||||
[DMACH_PCM_OUT] = {
|
||||
.name = "pcm-out",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_PCMOUT),
|
||||
.hw_addr.to = S3C2440_PA_AC97 + S3C_AC97_PCM_DATA,
|
||||
},
|
||||
[DMACH_MIC_IN] = {
|
||||
.name = "mic-in",
|
||||
.channels = MAP(S3C2443_DMAREQSEL_MICIN),
|
||||
.hw_addr.from = S3C2440_PA_AC97 + S3C_AC97_MIC_DATA,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
#define __ASM_ARCH_MAP_H __FILE__
|
||||
|
||||
#include <plat/map-base.h>
|
||||
#include <plat/map-s3c.h>
|
||||
|
||||
/*
|
||||
* Post-mux Chip Select Regions Xm0CSn_
|
||||
@ -83,7 +84,6 @@
|
||||
#define S3C64XX_PA_IIC1 (0x7F00F000)
|
||||
|
||||
#define S3C64XX_PA_GPIO (0x7F008000)
|
||||
#define S3C64XX_VA_GPIO S3C_ADDR_CPU(0x00000000)
|
||||
#define S3C64XX_SZ_GPIO SZ_4K
|
||||
|
||||
#define S3C64XX_PA_SDRAM (0x50000000)
|
||||
@ -94,16 +94,10 @@
|
||||
#define S3C64XX_PA_VIC1 (0x71300000)
|
||||
|
||||
#define S3C64XX_PA_MODEM (0x74108000)
|
||||
#define S3C64XX_VA_MODEM S3C_ADDR_CPU(0x00100000)
|
||||
|
||||
#define S3C64XX_PA_USBHOST (0x74300000)
|
||||
|
||||
#define S3C64XX_PA_USB_HSPHY (0x7C100000)
|
||||
#define S3C64XX_VA_USB_HSPHY S3C_ADDR_CPU(0x00200000)
|
||||
|
||||
/* place VICs close together */
|
||||
#define VA_VIC0 (S3C_VA_IRQ + 0x00)
|
||||
#define VA_VIC1 (S3C_VA_IRQ + 0x10000)
|
||||
|
||||
/* compatibiltiy defines. */
|
||||
#define S3C_PA_TIMER S3C64XX_PA_TIMER
|
||||
@ -119,7 +113,6 @@
|
||||
#define S3C_PA_FB S3C64XX_PA_FB
|
||||
#define S3C_PA_USBHOST S3C64XX_PA_USBHOST
|
||||
#define S3C_PA_USB_HSOTG S3C64XX_PA_USB_HSOTG
|
||||
#define S3C_VA_USB_HSPHY S3C64XX_VA_USB_HSPHY
|
||||
#define S3C_PA_RTC S3C64XX_PA_RTC
|
||||
#define S3C_PA_WDT S3C64XX_PA_WATCHDOG
|
||||
|
||||
|
@ -329,9 +329,6 @@ static struct platform_device *crag6410_devices[] __initdata = {
|
||||
&s3c_device_fb,
|
||||
&s3c_device_ohci,
|
||||
&s3c_device_usb_hsotg,
|
||||
&s3c_device_adc,
|
||||
&s3c_device_rtc,
|
||||
&s3c_device_ts,
|
||||
&s3c_device_timer[0],
|
||||
&s3c64xx_device_iis0,
|
||||
&s3c64xx_device_iis1,
|
||||
|
@ -205,12 +205,6 @@ static struct platform_device mini6410_lcd_powerdev = {
|
||||
.dev.platform_data = &mini6410_lcd_power_data,
|
||||
};
|
||||
|
||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.delay = 10000,
|
||||
.presc = 49,
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
static struct platform_device *mini6410_devices[] __initdata = {
|
||||
&mini6410_device_eth,
|
||||
&s3c_device_hsmmc0,
|
||||
@ -319,7 +313,7 @@ static void __init mini6410_machine_init(void)
|
||||
|
||||
s3c_nand_set_platdata(&mini6410_nand_info);
|
||||
s3c_fb_set_platdata(&mini6410_lcd_pdata);
|
||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
||||
s3c24xx_ts_set_platdata(NULL);
|
||||
|
||||
/* configure nCS1 width to 16 bits */
|
||||
|
||||
|
@ -198,12 +198,6 @@ static struct platform_device *real6410_devices[] __initdata = {
|
||||
&s3c_device_ohci,
|
||||
};
|
||||
|
||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.delay = 10000,
|
||||
.presc = 49,
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
static void __init real6410_map_io(void)
|
||||
{
|
||||
u32 tmp;
|
||||
@ -300,7 +294,7 @@ static void __init real6410_machine_init(void)
|
||||
|
||||
s3c_fb_set_platdata(&real6410_lcd_pdata);
|
||||
s3c_nand_set_platdata(&real6410_nand_info);
|
||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
||||
s3c24xx_ts_set_platdata(NULL);
|
||||
|
||||
/* configure nCS1 width to 16 bits */
|
||||
|
||||
|
@ -658,12 +658,6 @@ static struct i2c_board_info i2c_devs1[] __initdata = {
|
||||
{ I2C_BOARD_INFO("24c128", 0x57), }, /* Samsung S524AD0XD1 */
|
||||
};
|
||||
|
||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.delay = 10000,
|
||||
.presc = 49,
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdk6410_bl_gpio_info = {
|
||||
.no = S3C64XX_GPF(15),
|
||||
@ -705,7 +699,7 @@ static void __init smdk6410_machine_init(void)
|
||||
|
||||
samsung_keypad_set_platdata(&smdk6410_keypad_data);
|
||||
|
||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
||||
s3c24xx_ts_set_platdata(NULL);
|
||||
|
||||
/* configure nCS1 width to 16 bits */
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/serial_core.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/irqs.h>
|
||||
|
@ -129,7 +129,7 @@ static int s5p64x0_alloc_gc(void)
|
||||
}
|
||||
|
||||
ct = gc->chip_types;
|
||||
ct->chip.irq_ack = irq_gc_ack;
|
||||
ct->chip.irq_ack = irq_gc_ack_set_bit;
|
||||
ct->chip.irq_mask = irq_gc_mask_set_bit;
|
||||
ct->chip.irq_unmask = irq_gc_mask_clr_bit;
|
||||
ct->chip.irq_set_type = s5p64x0_irq_eint_set_type;
|
||||
|
@ -129,12 +129,6 @@ static struct i2c_board_info smdk6440_i2c_devs1[] __initdata = {
|
||||
/* To be populated */
|
||||
};
|
||||
|
||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.delay = 10000,
|
||||
.presc = 49,
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdk6440_bl_gpio_info = {
|
||||
.no = S5P6440_GPF(15),
|
||||
@ -155,7 +149,7 @@ static void __init smdk6440_map_io(void)
|
||||
|
||||
static void __init smdk6440_machine_init(void)
|
||||
{
|
||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
||||
s3c24xx_ts_set_platdata(NULL);
|
||||
|
||||
s3c_i2c0_set_platdata(&s5p6440_i2c0_data);
|
||||
s3c_i2c1_set_platdata(&s5p6440_i2c1_data);
|
||||
|
@ -148,12 +148,6 @@ static struct i2c_board_info smdk6450_i2c_devs1[] __initdata = {
|
||||
{ I2C_BOARD_INFO("24c128", 0x57), },/* Samsung S524AD0XD1 EEPROM */
|
||||
};
|
||||
|
||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.delay = 10000,
|
||||
.presc = 49,
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdk6450_bl_gpio_info = {
|
||||
.no = S5P6450_GPF(15),
|
||||
@ -174,7 +168,7 @@ static void __init smdk6450_map_io(void)
|
||||
|
||||
static void __init smdk6450_machine_init(void)
|
||||
{
|
||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
||||
s3c24xx_ts_set_platdata(NULL);
|
||||
|
||||
s3c_i2c0_set_platdata(&s5p6450_i2c0_data);
|
||||
s3c_i2c1_set_platdata(&s5p6450_i2c1_data);
|
||||
|
@ -203,12 +203,6 @@ static struct platform_device *smdkc100_devices[] __initdata = {
|
||||
&s5pc100_device_spdif,
|
||||
};
|
||||
|
||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.delay = 10000,
|
||||
.presc = 49,
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdkc100_bl_gpio_info = {
|
||||
.no = S5PC100_GPD(0),
|
||||
@ -228,7 +222,7 @@ static void __init smdkc100_map_io(void)
|
||||
|
||||
static void __init smdkc100_machine_init(void)
|
||||
{
|
||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
||||
s3c24xx_ts_set_platdata(NULL);
|
||||
|
||||
/* I2C */
|
||||
s3c_i2c0_set_platdata(NULL);
|
||||
|
@ -14,7 +14,6 @@ config CPU_S5PV210
|
||||
select S3C_PL330_DMA
|
||||
select S5P_EXT_INT
|
||||
select S5P_HRT
|
||||
select S5PV210_PM if PM
|
||||
help
|
||||
Enable S5PV210 CPU support
|
||||
|
||||
@ -169,9 +168,4 @@ config MACH_TORBRECK
|
||||
|
||||
endmenu
|
||||
|
||||
config S5PV210_PM
|
||||
bool
|
||||
help
|
||||
Power Management code common to S5PV210
|
||||
|
||||
endif
|
||||
|
@ -14,7 +14,7 @@ obj- :=
|
||||
|
||||
obj-$(CONFIG_CPU_S5PV210) += cpu.o init.o clock.o dma.o
|
||||
obj-$(CONFIG_CPU_S5PV210) += setup-i2c0.o
|
||||
obj-$(CONFIG_S5PV210_PM) += pm.o sleep.o
|
||||
obj-$(CONFIG_PM) += pm.o sleep.o
|
||||
|
||||
# machine support
|
||||
|
||||
|
@ -265,12 +265,6 @@ static struct i2c_board_info smdkv210_i2c_devs2[] __initdata = {
|
||||
/* To Be Updated */
|
||||
};
|
||||
|
||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.delay = 10000,
|
||||
.presc = 49,
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdkv210_bl_gpio_info = {
|
||||
.no = S5PV210_GPD0(3),
|
||||
@ -296,7 +290,7 @@ static void __init smdkv210_machine_init(void)
|
||||
smdkv210_dm9000_init();
|
||||
|
||||
samsung_keypad_set_platdata(&smdkv210_keypad_data);
|
||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
||||
s3c24xx_ts_set_platdata(NULL);
|
||||
|
||||
s3c_i2c0_set_platdata(NULL);
|
||||
s3c_i2c1_set_platdata(NULL);
|
||||
|
@ -88,7 +88,7 @@ static struct sleep_save s5pv210_core_save[] = {
|
||||
SAVE_ITEM(S3C2410_TCNTO(0)),
|
||||
};
|
||||
|
||||
void s5pv210_cpu_suspend(unsigned long arg)
|
||||
static int s5pv210_cpu_suspend(unsigned long arg)
|
||||
{
|
||||
unsigned long tmp;
|
||||
|
||||
|
@ -341,6 +341,7 @@ static struct platform_device mipidsi0_device = {
|
||||
static struct sh_mobile_sdhi_info sdhi0_info = {
|
||||
.dma_slave_tx = SHDMA_SLAVE_SDHI0_TX,
|
||||
.dma_slave_rx = SHDMA_SLAVE_SDHI0_RX,
|
||||
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT,
|
||||
.tmio_caps = MMC_CAP_SD_HIGHSPEED,
|
||||
.tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29,
|
||||
};
|
||||
@ -382,7 +383,7 @@ void ag5evm_sdhi1_set_pwr(struct platform_device *pdev, int state)
|
||||
}
|
||||
|
||||
static struct sh_mobile_sdhi_info sh_sdhi1_info = {
|
||||
.tmio_flags = TMIO_MMC_WRPROTECT_DISABLE,
|
||||
.tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT,
|
||||
.tmio_caps = MMC_CAP_NONREMOVABLE | MMC_CAP_SDIO_IRQ,
|
||||
.tmio_ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
|
||||
.set_pwr = ag5evm_sdhi1_set_pwr,
|
||||
|
@ -641,6 +641,8 @@ static struct usbhs_private usbhs0_private = {
|
||||
},
|
||||
.driver_param = {
|
||||
.buswait_bwait = 4,
|
||||
.d0_tx_id = SHDMA_SLAVE_USB0_TX,
|
||||
.d1_rx_id = SHDMA_SLAVE_USB0_RX,
|
||||
},
|
||||
},
|
||||
};
|
||||
@ -810,6 +812,8 @@ static struct usbhs_private usbhs1_private = {
|
||||
.buswait_bwait = 4,
|
||||
.pipe_type = usbhs1_pipe_cfg,
|
||||
.pipe_size = ARRAY_SIZE(usbhs1_pipe_cfg),
|
||||
.d0_tx_id = SHDMA_SLAVE_USB1_TX,
|
||||
.d1_rx_id = SHDMA_SLAVE_USB1_RX,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@ -503,16 +503,17 @@ static struct clk *late_main_clks[] = {
|
||||
&sh7372_fsidivb_clk,
|
||||
};
|
||||
|
||||
enum { MSTP001,
|
||||
enum { MSTP001, MSTP000,
|
||||
MSTP131, MSTP130,
|
||||
MSTP129, MSTP128, MSTP127, MSTP126, MSTP125,
|
||||
MSTP118, MSTP117, MSTP116, MSTP113,
|
||||
MSTP106, MSTP101, MSTP100,
|
||||
MSTP223,
|
||||
MSTP218, MSTP217, MSTP216,
|
||||
MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
|
||||
MSTP329, MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312,
|
||||
MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP406, MSTP403,
|
||||
MSTP218, MSTP217, MSTP216, MSTP214, MSTP208, MSTP207,
|
||||
MSTP206, MSTP205, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
|
||||
MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312,
|
||||
MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP407, MSTP406,
|
||||
MSTP405, MSTP404, MSTP403, MSTP400,
|
||||
MSTP_NR };
|
||||
|
||||
#define MSTP(_parent, _reg, _bit, _flags) \
|
||||
@ -520,6 +521,7 @@ enum { MSTP001,
|
||||
|
||||
static struct clk mstp_clks[MSTP_NR] = {
|
||||
[MSTP001] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR0, 1, 0), /* IIC2 */
|
||||
[MSTP000] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR0, 0, 0), /* MSIOF0 */
|
||||
[MSTP131] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 31, 0), /* VEU3 */
|
||||
[MSTP130] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 30, 0), /* VEU2 */
|
||||
[MSTP129] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 29, 0), /* VEU1 */
|
||||
@ -538,14 +540,16 @@ static struct clk mstp_clks[MSTP_NR] = {
|
||||
[MSTP218] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* DMAC1 */
|
||||
[MSTP217] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */
|
||||
[MSTP216] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 16, 0), /* DMAC3 */
|
||||
[MSTP214] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 14, 0), /* USBDMAC */
|
||||
[MSTP208] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 8, 0), /* MSIOF1 */
|
||||
[MSTP207] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 7, 0), /* SCIFA5 */
|
||||
[MSTP206] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 6, 0), /* SCIFB */
|
||||
[MSTP205] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 5, 0), /* MSIOF2 */
|
||||
[MSTP204] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 4, 0), /* SCIFA0 */
|
||||
[MSTP203] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 3, 0), /* SCIFA1 */
|
||||
[MSTP202] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 2, 0), /* SCIFA2 */
|
||||
[MSTP201] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 1, 0), /* SCIFA3 */
|
||||
[MSTP200] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 0, 0), /* SCIFA4 */
|
||||
[MSTP329] = MSTP(&r_clk, SMSTPCR3, 29, 0), /* CMT10 */
|
||||
[MSTP328] = MSTP(&div6_clks[DIV6_SPU], SMSTPCR3, 28, 0), /* FSI2 */
|
||||
[MSTP323] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 23, 0), /* IIC1 */
|
||||
[MSTP322] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 22, 0), /* USB0 */
|
||||
@ -557,8 +561,12 @@ static struct clk mstp_clks[MSTP_NR] = {
|
||||
[MSTP413] = MSTP(&pllc1_div2_clk, SMSTPCR4, 13, 0), /* HDMI */
|
||||
[MSTP411] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 11, 0), /* IIC3 */
|
||||
[MSTP410] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 10, 0), /* IIC4 */
|
||||
[MSTP407] = MSTP(&div4_clks[DIV4_HP], SMSTPCR4, 7, 0), /* USB-DMAC1 */
|
||||
[MSTP406] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 6, 0), /* USB1 */
|
||||
[MSTP405] = MSTP(&r_clk, SMSTPCR4, 5, 0), /* CMT4 */
|
||||
[MSTP404] = MSTP(&r_clk, SMSTPCR4, 4, 0), /* CMT3 */
|
||||
[MSTP403] = MSTP(&r_clk, SMSTPCR4, 3, 0), /* KEYSC */
|
||||
[MSTP400] = MSTP(&r_clk, SMSTPCR4, 0, 0), /* CMT2 */
|
||||
};
|
||||
|
||||
static struct clk_lookup lookups[] = {
|
||||
@ -609,6 +617,7 @@ static struct clk_lookup lookups[] = {
|
||||
|
||||
/* MSTP32 clocks */
|
||||
CLKDEV_DEV_ID("i2c-sh_mobile.2", &mstp_clks[MSTP001]), /* IIC2 */
|
||||
CLKDEV_DEV_ID("spi_sh_msiof.0", &mstp_clks[MSTP000]), /* MSIOF0 */
|
||||
CLKDEV_DEV_ID("uio_pdrv_genirq.4", &mstp_clks[MSTP131]), /* VEU3 */
|
||||
CLKDEV_DEV_ID("uio_pdrv_genirq.3", &mstp_clks[MSTP130]), /* VEU2 */
|
||||
CLKDEV_DEV_ID("uio_pdrv_genirq.2", &mstp_clks[MSTP129]), /* VEU1 */
|
||||
@ -629,14 +638,16 @@ static struct clk_lookup lookups[] = {
|
||||
CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]), /* DMAC1 */
|
||||
CLKDEV_DEV_ID("sh-dma-engine.1", &mstp_clks[MSTP217]), /* DMAC2 */
|
||||
CLKDEV_DEV_ID("sh-dma-engine.2", &mstp_clks[MSTP216]), /* DMAC3 */
|
||||
CLKDEV_DEV_ID("sh-dma-engine.3", &mstp_clks[MSTP214]), /* USB-DMAC0 */
|
||||
CLKDEV_DEV_ID("spi_sh_msiof.1", &mstp_clks[MSTP208]), /* MSIOF1 */
|
||||
CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP207]), /* SCIFA5 */
|
||||
CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP206]), /* SCIFB */
|
||||
CLKDEV_DEV_ID("spi_sh_msiof.2", &mstp_clks[MSTP205]), /* MSIOF2 */
|
||||
CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */
|
||||
CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]), /* SCIFA1 */
|
||||
CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP202]), /* SCIFA2 */
|
||||
CLKDEV_DEV_ID("sh-sci.3", &mstp_clks[MSTP201]), /* SCIFA3 */
|
||||
CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP200]), /* SCIFA4 */
|
||||
CLKDEV_DEV_ID("sh_cmt.10", &mstp_clks[MSTP329]), /* CMT10 */
|
||||
CLKDEV_DEV_ID("sh_fsi2", &mstp_clks[MSTP328]), /* FSI2 */
|
||||
CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP323]), /* IIC1 */
|
||||
CLKDEV_DEV_ID("r8a66597_hcd.0", &mstp_clks[MSTP322]), /* USB0 */
|
||||
@ -650,10 +661,14 @@ static struct clk_lookup lookups[] = {
|
||||
CLKDEV_DEV_ID("sh-mobile-hdmi", &mstp_clks[MSTP413]), /* HDMI */
|
||||
CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* IIC3 */
|
||||
CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* IIC4 */
|
||||
CLKDEV_DEV_ID("sh-dma-engine.4", &mstp_clks[MSTP407]), /* USB-DMAC1 */
|
||||
CLKDEV_DEV_ID("r8a66597_hcd.1", &mstp_clks[MSTP406]), /* USB1 */
|
||||
CLKDEV_DEV_ID("r8a66597_udc.1", &mstp_clks[MSTP406]), /* USB1 */
|
||||
CLKDEV_DEV_ID("renesas_usbhs.1", &mstp_clks[MSTP406]), /* USB1 */
|
||||
CLKDEV_DEV_ID("sh_cmt.4", &mstp_clks[MSTP405]), /* CMT4 */
|
||||
CLKDEV_DEV_ID("sh_cmt.3", &mstp_clks[MSTP404]), /* CMT3 */
|
||||
CLKDEV_DEV_ID("sh_keysc.0", &mstp_clks[MSTP403]), /* KEYSC */
|
||||
CLKDEV_DEV_ID("sh_cmt.2", &mstp_clks[MSTP400]), /* CMT2 */
|
||||
|
||||
CLKDEV_ICK_ID("hdmi", "sh_mobile_lcdc_fb.1",
|
||||
&div6_reparent_clks[DIV6_HDMI]),
|
||||
|
@ -365,7 +365,7 @@ void __init sh73a0_clock_init(void)
|
||||
__raw_writel(0x108, SD2CKCR);
|
||||
|
||||
/* detect main clock parent */
|
||||
switch ((__raw_readl(CKSCR) >> 24) & 0x03) {
|
||||
switch ((__raw_readl(CKSCR) >> 28) & 0x03) {
|
||||
case 0:
|
||||
main_clk.parent = &sh73a0_extal1_clk;
|
||||
break;
|
||||
|
@ -459,6 +459,10 @@ enum {
|
||||
SHDMA_SLAVE_SDHI2_TX,
|
||||
SHDMA_SLAVE_MMCIF_RX,
|
||||
SHDMA_SLAVE_MMCIF_TX,
|
||||
SHDMA_SLAVE_USB0_TX,
|
||||
SHDMA_SLAVE_USB0_RX,
|
||||
SHDMA_SLAVE_USB1_TX,
|
||||
SHDMA_SLAVE_USB1_RX,
|
||||
};
|
||||
|
||||
extern struct clk sh7372_extal1_clk;
|
||||
|
@ -379,7 +379,7 @@ enum {
|
||||
/* BBIF2 */
|
||||
VPU,
|
||||
TSIF1,
|
||||
_3DG_SGX530,
|
||||
/* 3DG */
|
||||
_2DDMAC,
|
||||
IIC2_ALI2, IIC2_TACKI2, IIC2_WAITI2, IIC2_DTEI2,
|
||||
IPMMU_IPMMUR, IPMMU_IPMMUR2,
|
||||
@ -436,7 +436,7 @@ static struct intc_vect intcs_vectors[] = {
|
||||
/* BBIF2 */
|
||||
INTCS_VECT(VPU, 0x980),
|
||||
INTCS_VECT(TSIF1, 0x9a0),
|
||||
INTCS_VECT(_3DG_SGX530, 0x9e0),
|
||||
/* 3DG */
|
||||
INTCS_VECT(_2DDMAC, 0xa00),
|
||||
INTCS_VECT(IIC2_ALI2, 0xa80), INTCS_VECT(IIC2_TACKI2, 0xaa0),
|
||||
INTCS_VECT(IIC2_WAITI2, 0xac0), INTCS_VECT(IIC2_DTEI2, 0xae0),
|
||||
@ -521,7 +521,7 @@ static struct intc_mask_reg intcs_mask_registers[] = {
|
||||
RTDMAC_1_DEI3, RTDMAC_1_DEI2, RTDMAC_1_DEI1, RTDMAC_1_DEI0 } },
|
||||
{ 0xffd20198, 0xffd201d8, 8, /* IMR6SA / IMCR6SA */
|
||||
{ 0, 0, MSIOF, 0,
|
||||
_3DG_SGX530, 0, 0, 0 } },
|
||||
0, 0, 0, 0 } },
|
||||
{ 0xffd2019c, 0xffd201dc, 8, /* IMR7SA / IMCR7SA */
|
||||
{ 0, TMU_TUNI2, TMU_TUNI1, TMU_TUNI0,
|
||||
0, 0, 0, 0 } },
|
||||
@ -561,7 +561,6 @@ static struct intc_prio_reg intcs_prio_registers[] = {
|
||||
TMU_TUNI2, TSIF1 } },
|
||||
{ 0xffd2001c, 0, 16, 4, /* IPRHS */ { 0, 0, VEU, BEU } },
|
||||
{ 0xffd20020, 0, 16, 4, /* IPRIS */ { 0, MSIOF, TSIF0, IIC0 } },
|
||||
{ 0xffd20024, 0, 16, 4, /* IPRJS */ { 0, _3DG_SGX530, 0, 0 } },
|
||||
{ 0xffd20028, 0, 16, 4, /* IPRKS */ { 0, 0, LMB, 0 } },
|
||||
{ 0xffd2002c, 0, 16, 4, /* IPRLS */ { IPMMU, 0, 0, 0 } },
|
||||
{ 0xffd20030, 0, 16, 4, /* IPRMS */ { IIC2, 0, 0, 0 } },
|
||||
|
@ -169,35 +169,35 @@ static struct platform_device scif6_device = {
|
||||
};
|
||||
|
||||
/* CMT */
|
||||
static struct sh_timer_config cmt10_platform_data = {
|
||||
.name = "CMT10",
|
||||
.channel_offset = 0x10,
|
||||
.timer_bit = 0,
|
||||
static struct sh_timer_config cmt2_platform_data = {
|
||||
.name = "CMT2",
|
||||
.channel_offset = 0x40,
|
||||
.timer_bit = 5,
|
||||
.clockevent_rating = 125,
|
||||
.clocksource_rating = 125,
|
||||
};
|
||||
|
||||
static struct resource cmt10_resources[] = {
|
||||
static struct resource cmt2_resources[] = {
|
||||
[0] = {
|
||||
.name = "CMT10",
|
||||
.start = 0xe6138010,
|
||||
.end = 0xe613801b,
|
||||
.name = "CMT2",
|
||||
.start = 0xe6130040,
|
||||
.end = 0xe613004b,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = evt2irq(0x0b00), /* CMT1_CMT10 */
|
||||
.start = evt2irq(0x0b80), /* CMT2 */
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device cmt10_device = {
|
||||
static struct platform_device cmt2_device = {
|
||||
.name = "sh_cmt",
|
||||
.id = 10,
|
||||
.id = 2,
|
||||
.dev = {
|
||||
.platform_data = &cmt10_platform_data,
|
||||
.platform_data = &cmt2_platform_data,
|
||||
},
|
||||
.resource = cmt10_resources,
|
||||
.num_resources = ARRAY_SIZE(cmt10_resources),
|
||||
.resource = cmt2_resources,
|
||||
.num_resources = ARRAY_SIZE(cmt2_resources),
|
||||
};
|
||||
|
||||
/* TMU */
|
||||
@ -602,6 +602,150 @@ static struct platform_device dma2_device = {
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* USB-DMAC
|
||||
*/
|
||||
|
||||
unsigned int usbts_shift[] = {3, 4, 5};
|
||||
|
||||
enum {
|
||||
XMIT_SZ_8BYTE = 0,
|
||||
XMIT_SZ_16BYTE = 1,
|
||||
XMIT_SZ_32BYTE = 2,
|
||||
};
|
||||
|
||||
#define USBTS_INDEX2VAL(i) (((i) & 3) << 6)
|
||||
|
||||
static const struct sh_dmae_channel sh7372_usb_dmae_channels[] = {
|
||||
{
|
||||
.offset = 0,
|
||||
}, {
|
||||
.offset = 0x20,
|
||||
},
|
||||
};
|
||||
|
||||
/* USB DMAC0 */
|
||||
static const struct sh_dmae_slave_config sh7372_usb_dmae0_slaves[] = {
|
||||
{
|
||||
.slave_id = SHDMA_SLAVE_USB0_TX,
|
||||
.chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE),
|
||||
}, {
|
||||
.slave_id = SHDMA_SLAVE_USB0_RX,
|
||||
.chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE),
|
||||
},
|
||||
};
|
||||
|
||||
static struct sh_dmae_pdata usb_dma0_platform_data = {
|
||||
.slave = sh7372_usb_dmae0_slaves,
|
||||
.slave_num = ARRAY_SIZE(sh7372_usb_dmae0_slaves),
|
||||
.channel = sh7372_usb_dmae_channels,
|
||||
.channel_num = ARRAY_SIZE(sh7372_usb_dmae_channels),
|
||||
.ts_low_shift = 6,
|
||||
.ts_low_mask = 0xc0,
|
||||
.ts_high_shift = 0,
|
||||
.ts_high_mask = 0,
|
||||
.ts_shift = usbts_shift,
|
||||
.ts_shift_num = ARRAY_SIZE(usbts_shift),
|
||||
.dmaor_init = DMAOR_DME,
|
||||
.chcr_offset = 0x14,
|
||||
.chcr_ie_bit = 1 << 5,
|
||||
.dmaor_is_32bit = 1,
|
||||
.needs_tend_set = 1,
|
||||
.no_dmars = 1,
|
||||
};
|
||||
|
||||
static struct resource sh7372_usb_dmae0_resources[] = {
|
||||
{
|
||||
/* Channel registers and DMAOR */
|
||||
.start = 0xe68a0020,
|
||||
.end = 0xe68a0064 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
/* VCR/SWR/DMICR */
|
||||
.start = 0xe68a0000,
|
||||
.end = 0xe68a0014 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
/* IRQ for channels */
|
||||
.start = evt2irq(0x0a00),
|
||||
.end = evt2irq(0x0a00),
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device usb_dma0_device = {
|
||||
.name = "sh-dma-engine",
|
||||
.id = 3,
|
||||
.resource = sh7372_usb_dmae0_resources,
|
||||
.num_resources = ARRAY_SIZE(sh7372_usb_dmae0_resources),
|
||||
.dev = {
|
||||
.platform_data = &usb_dma0_platform_data,
|
||||
},
|
||||
};
|
||||
|
||||
/* USB DMAC1 */
|
||||
static const struct sh_dmae_slave_config sh7372_usb_dmae1_slaves[] = {
|
||||
{
|
||||
.slave_id = SHDMA_SLAVE_USB1_TX,
|
||||
.chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE),
|
||||
}, {
|
||||
.slave_id = SHDMA_SLAVE_USB1_RX,
|
||||
.chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE),
|
||||
},
|
||||
};
|
||||
|
||||
static struct sh_dmae_pdata usb_dma1_platform_data = {
|
||||
.slave = sh7372_usb_dmae1_slaves,
|
||||
.slave_num = ARRAY_SIZE(sh7372_usb_dmae1_slaves),
|
||||
.channel = sh7372_usb_dmae_channels,
|
||||
.channel_num = ARRAY_SIZE(sh7372_usb_dmae_channels),
|
||||
.ts_low_shift = 6,
|
||||
.ts_low_mask = 0xc0,
|
||||
.ts_high_shift = 0,
|
||||
.ts_high_mask = 0,
|
||||
.ts_shift = usbts_shift,
|
||||
.ts_shift_num = ARRAY_SIZE(usbts_shift),
|
||||
.dmaor_init = DMAOR_DME,
|
||||
.chcr_offset = 0x14,
|
||||
.chcr_ie_bit = 1 << 5,
|
||||
.dmaor_is_32bit = 1,
|
||||
.needs_tend_set = 1,
|
||||
.no_dmars = 1,
|
||||
};
|
||||
|
||||
static struct resource sh7372_usb_dmae1_resources[] = {
|
||||
{
|
||||
/* Channel registers and DMAOR */
|
||||
.start = 0xe68c0020,
|
||||
.end = 0xe68c0064 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
/* VCR/SWR/DMICR */
|
||||
.start = 0xe68c0000,
|
||||
.end = 0xe68c0014 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
/* IRQ for channels */
|
||||
.start = evt2irq(0x1d00),
|
||||
.end = evt2irq(0x1d00),
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device usb_dma1_device = {
|
||||
.name = "sh-dma-engine",
|
||||
.id = 4,
|
||||
.resource = sh7372_usb_dmae1_resources,
|
||||
.num_resources = ARRAY_SIZE(sh7372_usb_dmae1_resources),
|
||||
.dev = {
|
||||
.platform_data = &usb_dma1_platform_data,
|
||||
},
|
||||
};
|
||||
|
||||
/* VPU */
|
||||
static struct uio_info vpu_platform_data = {
|
||||
.name = "VPU5HG",
|
||||
@ -818,7 +962,7 @@ static struct platform_device *sh7372_early_devices[] __initdata = {
|
||||
&scif4_device,
|
||||
&scif5_device,
|
||||
&scif6_device,
|
||||
&cmt10_device,
|
||||
&cmt2_device,
|
||||
&tmu00_device,
|
||||
&tmu01_device,
|
||||
};
|
||||
@ -829,6 +973,8 @@ static struct platform_device *sh7372_late_devices[] __initdata = {
|
||||
&dma0_device,
|
||||
&dma1_device,
|
||||
&dma2_device,
|
||||
&usb_dma0_device,
|
||||
&usb_dma1_device,
|
||||
&vpu_device,
|
||||
&veu0_device,
|
||||
&veu1_device,
|
||||
|
@ -318,6 +318,10 @@ static struct clk v2m_sp804_clk = {
|
||||
.rate = 1000000,
|
||||
};
|
||||
|
||||
static struct clk v2m_ref_clk = {
|
||||
.rate = 32768,
|
||||
};
|
||||
|
||||
static struct clk dummy_apb_pclk;
|
||||
|
||||
static struct clk_lookup v2m_lookups[] = {
|
||||
@ -348,6 +352,9 @@ static struct clk_lookup v2m_lookups[] = {
|
||||
}, { /* CLCD */
|
||||
.dev_id = "mb:clcd",
|
||||
.clk = &osc1_clk,
|
||||
}, { /* SP805 WDT */
|
||||
.dev_id = "mb:wdt",
|
||||
.clk = &v2m_ref_clk,
|
||||
}, { /* SP804 timers */
|
||||
.dev_id = "sp804",
|
||||
.con_id = "v2m-timer0",
|
||||
|
@ -17,7 +17,7 @@
|
||||
cmp \tmp, # 0x5600 @ Is it ldrsb?
|
||||
orreq \tmp, \tmp, #1 << 11 @ Set L-bit if yes
|
||||
tst \tmp, #1 << 11 @ L = 0 -> write
|
||||
orreq \psr, \psr, #1 << 11 @ yes.
|
||||
orreq \fsr, \fsr, #1 << 11 @ yes.
|
||||
b do_DataAbort
|
||||
not_thumb:
|
||||
.endm
|
||||
|
@ -277,6 +277,25 @@ static void l2x0_disable(void)
|
||||
spin_unlock_irqrestore(&l2x0_lock, flags);
|
||||
}
|
||||
|
||||
static void __init l2x0_unlock(__u32 cache_id)
|
||||
{
|
||||
int lockregs;
|
||||
int i;
|
||||
|
||||
if (cache_id == L2X0_CACHE_ID_PART_L310)
|
||||
lockregs = 8;
|
||||
else
|
||||
/* L210 and unknown types */
|
||||
lockregs = 1;
|
||||
|
||||
for (i = 0; i < lockregs; i++) {
|
||||
writel_relaxed(0x0, l2x0_base + L2X0_LOCKDOWN_WAY_D_BASE +
|
||||
i * L2X0_LOCKDOWN_STRIDE);
|
||||
writel_relaxed(0x0, l2x0_base + L2X0_LOCKDOWN_WAY_I_BASE +
|
||||
i * L2X0_LOCKDOWN_STRIDE);
|
||||
}
|
||||
}
|
||||
|
||||
void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
|
||||
{
|
||||
__u32 aux;
|
||||
@ -328,6 +347,8 @@ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
|
||||
* accessing the below registers will fault.
|
||||
*/
|
||||
if (!(readl_relaxed(l2x0_base + L2X0_CTRL) & 1)) {
|
||||
/* Make sure that I&D is not locked down when starting */
|
||||
l2x0_unlock(cache_id);
|
||||
|
||||
/* l2x0 controller is disabled */
|
||||
writel_relaxed(aux, l2x0_base + L2X0_AUX_CTRL);
|
||||
|
@ -298,7 +298,7 @@ static void __init arm_bootmem_free(unsigned long min, unsigned long max_low,
|
||||
#ifdef CONFIG_HAVE_ARCH_PFN_VALID
|
||||
int pfn_valid(unsigned long pfn)
|
||||
{
|
||||
return memblock_is_memory(pfn << PAGE_SHIFT);
|
||||
return memblock_is_memory(__pfn_to_phys(pfn));
|
||||
}
|
||||
EXPORT_SYMBOL(pfn_valid);
|
||||
#endif
|
||||
|
@ -379,7 +379,7 @@ ENTRY(cpu_arm920_set_pte_ext)
|
||||
|
||||
/* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */
|
||||
.globl cpu_arm920_suspend_size
|
||||
.equ cpu_arm920_suspend_size, 4 * 3
|
||||
.equ cpu_arm920_suspend_size, 4 * 4
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
ENTRY(cpu_arm920_do_suspend)
|
||||
stmfd sp!, {r4 - r7, lr}
|
||||
|
@ -394,7 +394,7 @@ ENTRY(cpu_arm926_set_pte_ext)
|
||||
|
||||
/* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */
|
||||
.globl cpu_arm926_suspend_size
|
||||
.equ cpu_arm926_suspend_size, 4 * 3
|
||||
.equ cpu_arm926_suspend_size, 4 * 4
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
ENTRY(cpu_arm926_do_suspend)
|
||||
stmfd sp!, {r4 - r7, lr}
|
||||
|
@ -182,11 +182,11 @@ ENDPROC(cpu_sa1100_do_suspend)
|
||||
|
||||
ENTRY(cpu_sa1100_do_resume)
|
||||
ldmia r0, {r4 - r7} @ load cp regs
|
||||
mov r1, #0
|
||||
mcr p15, 0, r1, c8, c7, 0 @ flush I+D TLBs
|
||||
mcr p15, 0, r1, c7, c7, 0 @ flush I&D cache
|
||||
mcr p15, 0, r1, c9, c0, 0 @ invalidate RB
|
||||
mcr p15, 0, r1, c9, c0, 5 @ allow user space to use RB
|
||||
mov ip, #0
|
||||
mcr p15, 0, ip, c8, c7, 0 @ flush I+D TLBs
|
||||
mcr p15, 0, ip, c7, c7, 0 @ flush I&D cache
|
||||
mcr p15, 0, ip, c9, c0, 0 @ invalidate RB
|
||||
mcr p15, 0, ip, c9, c0, 5 @ allow user space to use RB
|
||||
|
||||
mcr p15, 0, r4, c3, c0, 0 @ domain ID
|
||||
mcr p15, 0, r5, c2, c0, 0 @ translation table base addr
|
||||
|
@ -223,6 +223,22 @@ __v6_setup:
|
||||
mrc p15, 0, r0, c1, c0, 0 @ read control register
|
||||
bic r0, r0, r5 @ clear bits them
|
||||
orr r0, r0, r6 @ set them
|
||||
#ifdef CONFIG_ARM_ERRATA_364296
|
||||
/*
|
||||
* Workaround for the 364296 ARM1136 r0p2 erratum (possible cache data
|
||||
* corruption with hit-under-miss enabled). The conditional code below
|
||||
* (setting the undocumented bit 31 in the auxiliary control register
|
||||
* and the FI bit in the control register) disables hit-under-miss
|
||||
* without putting the processor into full low interrupt latency mode.
|
||||
*/
|
||||
ldr r6, =0x4107b362 @ id for ARM1136 r0p2
|
||||
mrc p15, 0, r5, c0, c0, 0 @ get processor id
|
||||
teq r5, r6 @ check for the faulty core
|
||||
mrceq p15, 0, r5, c1, c0, 1 @ load aux control reg
|
||||
orreq r5, r5, #(1 << 31) @ set the undocumented bit 31
|
||||
mcreq p15, 0, r5, c1, c0, 1 @ write aux control reg
|
||||
orreq r0, r0, #(1 << 21) @ low interrupt latency configuration
|
||||
#endif
|
||||
mov pc, lr @ return to head.S:__ret
|
||||
|
||||
/*
|
||||
|
@ -66,6 +66,7 @@ ENDPROC(cpu_v7_proc_fin)
|
||||
ENTRY(cpu_v7_reset)
|
||||
mrc p15, 0, r1, c1, c0, 0 @ ctrl register
|
||||
bic r1, r1, #0x1 @ ...............m
|
||||
THUMB( bic r1, r1, #1 << 30 ) @ SCTLR.TE (Thumb exceptions)
|
||||
mcr p15, 0, r1, c1, c0, 0 @ disable MMU
|
||||
isb
|
||||
mov pc, r0
|
||||
@ -247,13 +248,16 @@ ENTRY(cpu_v7_do_resume)
|
||||
mcr p15, 0, r7, c2, c0, 0 @ TTB 0
|
||||
mcr p15, 0, r8, c2, c0, 1 @ TTB 1
|
||||
mcr p15, 0, ip, c2, c0, 2 @ TTB control register
|
||||
mcr p15, 0, r10, c1, c0, 1 @ Auxiliary control register
|
||||
mrc p15, 0, r4, c1, c0, 1 @ Read Auxiliary control register
|
||||
teq r4, r10 @ Is it already set?
|
||||
mcrne p15, 0, r10, c1, c0, 1 @ No, so write it
|
||||
mcr p15, 0, r11, c1, c0, 2 @ Co-processor access control
|
||||
ldr r4, =PRRR @ PRRR
|
||||
ldr r5, =NMRR @ NMRR
|
||||
mcr p15, 0, r4, c10, c2, 0 @ write PRRR
|
||||
mcr p15, 0, r5, c10, c2, 1 @ write NMRR
|
||||
isb
|
||||
dsb
|
||||
mov r0, r9 @ control register
|
||||
mov r2, r7, lsr #14 @ get TTB0 base
|
||||
mov r2, r2, lsl #14
|
||||
|
@ -406,7 +406,7 @@ ENTRY(cpu_xsc3_set_pte_ext)
|
||||
.align
|
||||
|
||||
.globl cpu_xsc3_suspend_size
|
||||
.equ cpu_xsc3_suspend_size, 4 * 8
|
||||
.equ cpu_xsc3_suspend_size, 4 * 7
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
ENTRY(cpu_xsc3_do_suspend)
|
||||
stmfd sp!, {r4 - r10, lr}
|
||||
@ -418,12 +418,12 @@ ENTRY(cpu_xsc3_do_suspend)
|
||||
mrc p15, 0, r9, c1, c0, 1 @ auxiliary control reg
|
||||
mrc p15, 0, r10, c1, c0, 0 @ control reg
|
||||
bic r4, r4, #2 @ clear frequency change bit
|
||||
stmia r0, {r1, r4 - r10} @ store v:p offset + cp regs
|
||||
stmia r0, {r4 - r10} @ store cp regs
|
||||
ldmia sp!, {r4 - r10, pc}
|
||||
ENDPROC(cpu_xsc3_do_suspend)
|
||||
|
||||
ENTRY(cpu_xsc3_do_resume)
|
||||
ldmia r0, {r1, r4 - r10} @ load v:p offset + cp regs
|
||||
ldmia r0, {r4 - r10} @ load cp regs
|
||||
mov ip, #0
|
||||
mcr p15, 0, ip, c7, c7, 0 @ invalidate I & D caches, BTB
|
||||
mcr p15, 0, ip, c7, c10, 4 @ drain write (&fill) buffer
|
||||
|
@ -615,6 +615,9 @@ static int _od_resume_noirq(struct device *dev)
|
||||
|
||||
return pm_generic_resume_noirq(dev);
|
||||
}
|
||||
#else
|
||||
#define _od_suspend_noirq NULL
|
||||
#define _od_resume_noirq NULL
|
||||
#endif
|
||||
|
||||
static struct dev_pm_domain omap_device_pm_domain = {
|
||||
|
@ -1,100 +0,0 @@
|
||||
/* linux/include/asm-arm/plat-s3c24xx/map.h
|
||||
*
|
||||
* Copyright (c) 2008 Simtec Electronics
|
||||
* Ben Dooks <ben@simtec.co.uk>
|
||||
*
|
||||
* S3C24XX - Memory map definitions
|
||||
*
|
||||
* 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_PLAT_S3C24XX_MAP_H
|
||||
#define __ASM_PLAT_S3C24XX_MAP_H
|
||||
|
||||
/* interrupt controller is the first thing we put in, to make
|
||||
* the assembly code for the irq detection easier
|
||||
*/
|
||||
#define S3C24XX_VA_IRQ S3C_VA_IRQ
|
||||
#define S3C2410_PA_IRQ (0x4A000000)
|
||||
#define S3C24XX_SZ_IRQ SZ_1M
|
||||
|
||||
/* memory controller registers */
|
||||
#define S3C24XX_VA_MEMCTRL S3C_VA_MEM
|
||||
#define S3C2410_PA_MEMCTRL (0x48000000)
|
||||
#define S3C24XX_SZ_MEMCTRL SZ_1M
|
||||
|
||||
/* UARTs */
|
||||
#define S3C24XX_VA_UART S3C_VA_UART
|
||||
#define S3C2410_PA_UART (0x50000000)
|
||||
#define S3C24XX_SZ_UART SZ_1M
|
||||
#define S3C_UART_OFFSET (0x4000)
|
||||
|
||||
#define S3C_VA_UARTx(uart) (S3C_VA_UART + ((uart * S3C_UART_OFFSET)))
|
||||
|
||||
/* Timers */
|
||||
#define S3C24XX_VA_TIMER S3C_VA_TIMER
|
||||
#define S3C2410_PA_TIMER (0x51000000)
|
||||
#define S3C24XX_SZ_TIMER SZ_1M
|
||||
|
||||
/* Clock and Power management */
|
||||
#define S3C24XX_VA_CLKPWR S3C_VA_SYS
|
||||
#define S3C24XX_SZ_CLKPWR SZ_1M
|
||||
|
||||
/* USB Device port */
|
||||
#define S3C2410_PA_USBDEV (0x52000000)
|
||||
#define S3C24XX_SZ_USBDEV SZ_1M
|
||||
|
||||
/* Watchdog */
|
||||
#define S3C24XX_VA_WATCHDOG S3C_VA_WATCHDOG
|
||||
#define S3C2410_PA_WATCHDOG (0x53000000)
|
||||
#define S3C24XX_SZ_WATCHDOG SZ_1M
|
||||
|
||||
/* Standard size definitions for peripheral blocks. */
|
||||
|
||||
#define S3C24XX_SZ_IIS SZ_1M
|
||||
#define S3C24XX_SZ_ADC SZ_1M
|
||||
#define S3C24XX_SZ_SPI SZ_1M
|
||||
#define S3C24XX_SZ_SDI SZ_1M
|
||||
#define S3C24XX_SZ_NAND SZ_1M
|
||||
|
||||
/* GPIO ports */
|
||||
|
||||
/* the calculation for the VA of this must ensure that
|
||||
* it is the same distance apart from the UART in the
|
||||
* phsyical address space, as the initial mapping for the IO
|
||||
* is done as a 1:1 mapping. This puts it (currently) at
|
||||
* 0xFA800000, which is not in the way of any current mapping
|
||||
* by the base system.
|
||||
*/
|
||||
|
||||
#define S3C2410_PA_GPIO (0x56000000)
|
||||
#define S3C24XX_VA_GPIO ((S3C24XX_PA_GPIO - S3C24XX_PA_UART) + S3C24XX_VA_UART)
|
||||
#define S3C24XX_SZ_GPIO SZ_1M
|
||||
|
||||
|
||||
/* ISA style IO, for each machine to sort out mappings for, if it
|
||||
* implements it. We reserve two 16M regions for ISA.
|
||||
*/
|
||||
|
||||
#define S3C24XX_VA_ISA_WORD S3C2410_ADDR(0x02000000)
|
||||
#define S3C24XX_VA_ISA_BYTE S3C2410_ADDR(0x03000000)
|
||||
|
||||
/* deal with the registers that move under the 2412/2413 */
|
||||
|
||||
#if defined(CONFIG_CPU_S3C2412) || defined(CONFIG_CPU_S3C2413)
|
||||
#ifndef __ASSEMBLY__
|
||||
extern void __iomem *s3c24xx_va_gpio2;
|
||||
#endif
|
||||
#ifdef CONFIG_CPU_S3C2412_ONLY
|
||||
#define S3C24XX_VA_GPIO2 (S3C24XX_VA_GPIO + 0x10)
|
||||
#else
|
||||
#define S3C24XX_VA_GPIO2 s3c24xx_va_gpio2
|
||||
#endif
|
||||
#else
|
||||
#define s3c24xx_va_gpio2 S3C24XX_VA_GPIO
|
||||
#define S3C24XX_VA_GPIO2 S3C24XX_VA_GPIO
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_PLAT_S3C24XX_MAP_H */
|
@ -192,7 +192,7 @@ unsigned long s5p_spdif_get_rate(struct clk *clk)
|
||||
if (IS_ERR(pclk))
|
||||
return -EINVAL;
|
||||
|
||||
rate = pclk->ops->get_rate(clk);
|
||||
rate = pclk->ops->get_rate(pclk);
|
||||
clk_put(pclk);
|
||||
|
||||
return rate;
|
||||
|
@ -72,7 +72,6 @@ static inline unsigned long s5p_get_pll46xx(unsigned long baseclk,
|
||||
mdiv = (pll_con0 >> PLL46XX_MDIV_SHIFT) & PLL46XX_MDIV_MASK;
|
||||
pdiv = (pll_con0 >> PLL46XX_PDIV_SHIFT) & PLL46XX_PDIV_MASK;
|
||||
sdiv = (pll_con0 >> PLL46XX_SDIV_SHIFT) & PLL46XX_SDIV_MASK;
|
||||
kdiv = pll_con1 & PLL46XX_KDIV_MASK;
|
||||
|
||||
if (pll_type == pll_4650c)
|
||||
kdiv = pll_con1 & PLL4650C_KDIV_MASK;
|
||||
|
@ -23,6 +23,8 @@
|
||||
#include <plat/gpio-core.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#define GPIO_BASE(chip) (((unsigned long)(chip)->base) & 0xFFFFF000u)
|
||||
|
||||
#define CON_OFFSET 0x700
|
||||
@ -81,6 +83,9 @@ static void s5p_gpioint_handler(unsigned int irq, struct irq_desc *desc)
|
||||
int group, pend_offset, mask_offset;
|
||||
unsigned int pend, mask;
|
||||
|
||||
struct irq_chip *chip = irq_get_chip(irq);
|
||||
chained_irq_enter(chip, desc);
|
||||
|
||||
for (group = 0; group < bank->nr_groups; group++) {
|
||||
struct s3c_gpio_chip *chip = bank->chips[group];
|
||||
if (!chip)
|
||||
@ -102,6 +107,7 @@ static void s5p_gpioint_handler(unsigned int irq, struct irq_desc *desc)
|
||||
pend &= ~BIT(offset);
|
||||
}
|
||||
}
|
||||
chained_irq_exit(chip, desc);
|
||||
}
|
||||
|
||||
static __init int s5p_gpioint_add(struct s3c_gpio_chip *chip)
|
||||
|
@ -58,22 +58,5 @@ struct platform_device s3c_device_hsmmc0 = {
|
||||
|
||||
void s3c_sdhci0_set_platdata(struct s3c_sdhci_platdata *pd)
|
||||
{
|
||||
struct s3c_sdhci_platdata *set = &s3c_hsmmc0_def_platdata;
|
||||
|
||||
set->cd_type = pd->cd_type;
|
||||
set->ext_cd_init = pd->ext_cd_init;
|
||||
set->ext_cd_cleanup = pd->ext_cd_cleanup;
|
||||
set->ext_cd_gpio = pd->ext_cd_gpio;
|
||||
set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
|
||||
|
||||
if (pd->max_width)
|
||||
set->max_width = pd->max_width;
|
||||
if (pd->cfg_gpio)
|
||||
set->cfg_gpio = pd->cfg_gpio;
|
||||
if (pd->cfg_card)
|
||||
set->cfg_card = pd->cfg_card;
|
||||
if (pd->host_caps)
|
||||
set->host_caps |= pd->host_caps;
|
||||
if (pd->clk_type)
|
||||
set->clk_type = pd->clk_type;
|
||||
s3c_sdhci_set_platdata(pd, &s3c_hsmmc0_def_platdata);
|
||||
}
|
||||
|
@ -58,22 +58,5 @@ struct platform_device s3c_device_hsmmc1 = {
|
||||
|
||||
void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd)
|
||||
{
|
||||
struct s3c_sdhci_platdata *set = &s3c_hsmmc1_def_platdata;
|
||||
|
||||
set->cd_type = pd->cd_type;
|
||||
set->ext_cd_init = pd->ext_cd_init;
|
||||
set->ext_cd_cleanup = pd->ext_cd_cleanup;
|
||||
set->ext_cd_gpio = pd->ext_cd_gpio;
|
||||
set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
|
||||
|
||||
if (pd->max_width)
|
||||
set->max_width = pd->max_width;
|
||||
if (pd->cfg_gpio)
|
||||
set->cfg_gpio = pd->cfg_gpio;
|
||||
if (pd->cfg_card)
|
||||
set->cfg_card = pd->cfg_card;
|
||||
if (pd->host_caps)
|
||||
set->host_caps |= pd->host_caps;
|
||||
if (pd->clk_type)
|
||||
set->clk_type = pd->clk_type;
|
||||
s3c_sdhci_set_platdata(pd, &s3c_hsmmc1_def_platdata);
|
||||
}
|
||||
|
@ -59,22 +59,5 @@ struct platform_device s3c_device_hsmmc2 = {
|
||||
|
||||
void s3c_sdhci2_set_platdata(struct s3c_sdhci_platdata *pd)
|
||||
{
|
||||
struct s3c_sdhci_platdata *set = &s3c_hsmmc2_def_platdata;
|
||||
|
||||
set->cd_type = pd->cd_type;
|
||||
set->ext_cd_init = pd->ext_cd_init;
|
||||
set->ext_cd_cleanup = pd->ext_cd_cleanup;
|
||||
set->ext_cd_gpio = pd->ext_cd_gpio;
|
||||
set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
|
||||
|
||||
if (pd->max_width)
|
||||
set->max_width = pd->max_width;
|
||||
if (pd->cfg_gpio)
|
||||
set->cfg_gpio = pd->cfg_gpio;
|
||||
if (pd->cfg_card)
|
||||
set->cfg_card = pd->cfg_card;
|
||||
if (pd->host_caps)
|
||||
set->host_caps |= pd->host_caps;
|
||||
if (pd->clk_type)
|
||||
set->clk_type = pd->clk_type;
|
||||
s3c_sdhci_set_platdata(pd, &s3c_hsmmc2_def_platdata);
|
||||
}
|
||||
|
@ -62,22 +62,5 @@ struct platform_device s3c_device_hsmmc3 = {
|
||||
|
||||
void s3c_sdhci3_set_platdata(struct s3c_sdhci_platdata *pd)
|
||||
{
|
||||
struct s3c_sdhci_platdata *set = &s3c_hsmmc3_def_platdata;
|
||||
|
||||
set->cd_type = pd->cd_type;
|
||||
set->ext_cd_init = pd->ext_cd_init;
|
||||
set->ext_cd_cleanup = pd->ext_cd_cleanup;
|
||||
set->ext_cd_gpio = pd->ext_cd_gpio;
|
||||
set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
|
||||
|
||||
if (pd->max_width)
|
||||
set->max_width = pd->max_width;
|
||||
if (pd->cfg_gpio)
|
||||
set->cfg_gpio = pd->cfg_gpio;
|
||||
if (pd->cfg_card)
|
||||
set->cfg_card = pd->cfg_card;
|
||||
if (pd->host_caps)
|
||||
set->host_caps |= pd->host_caps;
|
||||
if (pd->clk_type)
|
||||
set->clk_type = pd->clk_type;
|
||||
s3c_sdhci_set_platdata(pd, &s3c_hsmmc3_def_platdata);
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user