forked from Minki/linux
Merge branch 'next-samsung-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/cleanup
This commit is contained in:
commit
ab2a0e0d13
@ -2,13 +2,7 @@ Intro
|
||||
=====
|
||||
|
||||
This document is designed to provide a list of the minimum levels of
|
||||
software necessary to run the 2.6 kernels, as well as provide brief
|
||||
instructions regarding any other "Gotchas" users may encounter when
|
||||
trying life on the Bleeding Edge. If upgrading from a pre-2.4.x
|
||||
kernel, please consult the Changes file included with 2.4.x kernels for
|
||||
additional information; most of that information will not be repeated
|
||||
here. Basically, this document assumes that your system is already
|
||||
functional and running at least 2.4.x kernels.
|
||||
software necessary to run the 3.0 kernels.
|
||||
|
||||
This document is originally based on my "Changes" file for 2.0.x kernels
|
||||
and therefore owes credit to the same people as that file (Jared Mauch,
|
||||
@ -22,11 +16,10 @@ Upgrade to at *least* these software revisions before thinking you've
|
||||
encountered a bug! If you're unsure what version you're currently
|
||||
running, the suggested command should tell you.
|
||||
|
||||
Again, keep in mind that this list assumes you are already
|
||||
functionally running a Linux 2.4 kernel. Also, not all tools are
|
||||
necessary on all systems; obviously, if you don't have any ISDN
|
||||
hardware, for example, you probably needn't concern yourself with
|
||||
isdn4k-utils.
|
||||
Again, keep in mind that this list assumes you are already functionally
|
||||
running a Linux kernel. Also, not all tools are necessary on all
|
||||
systems; obviously, if you don't have any ISDN hardware, for example,
|
||||
you probably needn't concern yourself with isdn4k-utils.
|
||||
|
||||
o Gnu C 3.2 # gcc --version
|
||||
o Gnu make 3.80 # make --version
|
||||
@ -114,12 +107,12 @@ Ksymoops
|
||||
|
||||
If the unthinkable happens and your kernel oopses, you may need the
|
||||
ksymoops tool to decode it, but in most cases you don't.
|
||||
In the 2.6 kernel it is generally preferred to build the kernel with
|
||||
CONFIG_KALLSYMS so that it produces readable dumps that can be used as-is
|
||||
(this also produces better output than ksymoops).
|
||||
If for some reason your kernel is not build with CONFIG_KALLSYMS and
|
||||
you have no way to rebuild and reproduce the Oops with that option, then
|
||||
you can still decode that Oops with ksymoops.
|
||||
It is generally preferred to build the kernel with CONFIG_KALLSYMS so
|
||||
that it produces readable dumps that can be used as-is (this also
|
||||
produces better output than ksymoops). If for some reason your kernel
|
||||
is not build with CONFIG_KALLSYMS and you have no way to rebuild and
|
||||
reproduce the Oops with that option, then you can still decode that Oops
|
||||
with ksymoops.
|
||||
|
||||
Module-Init-Tools
|
||||
-----------------
|
||||
@ -261,8 +254,8 @@ needs to be recompiled or (preferably) upgraded.
|
||||
NFS-utils
|
||||
---------
|
||||
|
||||
In 2.4 and earlier kernels, the nfs server needed to know about any
|
||||
client that expected to be able to access files via NFS. This
|
||||
In ancient (2.4 and earlier) kernels, the nfs server needed to know
|
||||
about any client that expected to be able to access files via NFS. This
|
||||
information would be given to the kernel by "mountd" when the client
|
||||
mounted the filesystem, or by "exportfs" at system startup. exportfs
|
||||
would take information about active clients from /var/lib/nfs/rmtab.
|
||||
@ -272,11 +265,11 @@ which is not always easy, particularly when trying to implement
|
||||
fail-over. Even when the system is working well, rmtab suffers from
|
||||
getting lots of old entries that never get removed.
|
||||
|
||||
With 2.6 we have the option of having the kernel tell mountd when it
|
||||
gets a request from an unknown host, and mountd can give appropriate
|
||||
export information to the kernel. This removes the dependency on
|
||||
rmtab and means that the kernel only needs to know about currently
|
||||
active clients.
|
||||
With modern kernels we have the option of having the kernel tell mountd
|
||||
when it gets a request from an unknown host, and mountd can give
|
||||
appropriate export information to the kernel. This removes the
|
||||
dependency on rmtab and means that the kernel only needs to know about
|
||||
currently active clients.
|
||||
|
||||
To enable this new functionality, you need to:
|
||||
|
||||
|
@ -680,8 +680,8 @@ ones already enabled by DEBUG.
|
||||
Chapter 14: Allocating memory
|
||||
|
||||
The kernel provides the following general purpose memory allocators:
|
||||
kmalloc(), kzalloc(), kcalloc(), and vmalloc(). Please refer to the API
|
||||
documentation for further information about them.
|
||||
kmalloc(), kzalloc(), kcalloc(), vmalloc(), and vzalloc(). Please refer to
|
||||
the API documentation for further information about them.
|
||||
|
||||
The preferred form for passing a size of a struct is the following:
|
||||
|
||||
|
@ -77,7 +77,7 @@ Throttling/Upper Limit policy
|
||||
- Specify a bandwidth rate on particular device for root group. The format
|
||||
for policy is "<major>:<minor> <byes_per_second>".
|
||||
|
||||
echo "8:16 1048576" > /sys/fs/cgroup/blkio/blkio.read_bps_device
|
||||
echo "8:16 1048576" > /sys/fs/cgroup/blkio/blkio.throttle.read_bps_device
|
||||
|
||||
Above will put a limit of 1MB/second on reads happening for root group
|
||||
on device having major/minor number 8:16.
|
||||
@ -90,7 +90,7 @@ Throttling/Upper Limit policy
|
||||
1024+0 records out
|
||||
4194304 bytes (4.2 MB) copied, 4.0001 s, 1.0 MB/s
|
||||
|
||||
Limits for writes can be put using blkio.write_bps_device file.
|
||||
Limits for writes can be put using blkio.throttle.write_bps_device file.
|
||||
|
||||
Hierarchical Cgroups
|
||||
====================
|
||||
@ -286,28 +286,28 @@ Throttling/Upper limit policy files
|
||||
specified in bytes per second. Rules are per deivce. Following is
|
||||
the format.
|
||||
|
||||
echo "<major>:<minor> <rate_bytes_per_second>" > /cgrp/blkio.read_bps_device
|
||||
echo "<major>:<minor> <rate_bytes_per_second>" > /cgrp/blkio.throttle.read_bps_device
|
||||
|
||||
- blkio.throttle.write_bps_device
|
||||
- Specifies upper limit on WRITE rate to the device. IO rate is
|
||||
specified in bytes per second. Rules are per deivce. Following is
|
||||
the format.
|
||||
|
||||
echo "<major>:<minor> <rate_bytes_per_second>" > /cgrp/blkio.write_bps_device
|
||||
echo "<major>:<minor> <rate_bytes_per_second>" > /cgrp/blkio.throttle.write_bps_device
|
||||
|
||||
- blkio.throttle.read_iops_device
|
||||
- Specifies upper limit on READ rate from the device. IO rate is
|
||||
specified in IO per second. Rules are per deivce. Following is
|
||||
the format.
|
||||
|
||||
echo "<major>:<minor> <rate_io_per_second>" > /cgrp/blkio.read_iops_device
|
||||
echo "<major>:<minor> <rate_io_per_second>" > /cgrp/blkio.throttle.read_iops_device
|
||||
|
||||
- blkio.throttle.write_iops_device
|
||||
- Specifies upper limit on WRITE rate to the device. IO rate is
|
||||
specified in io per second. Rules are per deivce. Following is
|
||||
the format.
|
||||
|
||||
echo "<major>:<minor> <rate_io_per_second>" > /cgrp/blkio.write_iops_device
|
||||
echo "<major>:<minor> <rate_io_per_second>" > /cgrp/blkio.throttle.write_iops_device
|
||||
|
||||
Note: If both BW and IOPS rules are specified for a device, then IO is
|
||||
subjectd to both the constraints.
|
||||
|
@ -583,3 +583,25 @@ Why: Superseded by the UVCIOC_CTRL_QUERY ioctl.
|
||||
Who: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
|
||||
----------------------------
|
||||
|
||||
What: For VIDIOC_S_FREQUENCY the type field must match the device node's type.
|
||||
If not, return -EINVAL.
|
||||
When: 3.2
|
||||
Why: It makes no sense to switch the tuner to radio mode by calling
|
||||
VIDIOC_S_FREQUENCY on a video node, or to switch the tuner to tv mode by
|
||||
calling VIDIOC_S_FREQUENCY on a radio node. This is the first step of a
|
||||
move to more consistent handling of tv and radio tuners.
|
||||
Who: Hans Verkuil <hans.verkuil@cisco.com>
|
||||
|
||||
----------------------------
|
||||
|
||||
What: Opening a radio device node will no longer automatically switch the
|
||||
tuner mode from tv to radio.
|
||||
When: 3.3
|
||||
Why: Just opening a V4L device should not change the state of the hardware
|
||||
like that. It's very unexpected and against the V4L spec. Instead, you
|
||||
switch to radio mode by calling VIDIOC_S_FREQUENCY. This is the second
|
||||
and last step of the move to consistent handling of tv and radio tuners.
|
||||
Who: Hans Verkuil <hans.verkuil@cisco.com>
|
||||
|
||||
----------------------------
|
||||
|
@ -673,6 +673,22 @@ storage request to complete, or it may attempt to cancel the storage request -
|
||||
in which case the page will not be stored in the cache this time.
|
||||
|
||||
|
||||
BULK INODE PAGE UNCACHE
|
||||
-----------------------
|
||||
|
||||
A convenience routine is provided to perform an uncache on all the pages
|
||||
attached to an inode. This assumes that the pages on the inode correspond on a
|
||||
1:1 basis with the pages in the cache.
|
||||
|
||||
void fscache_uncache_all_inode_pages(struct fscache_cookie *cookie,
|
||||
struct inode *inode);
|
||||
|
||||
This takes the netfs cookie that the pages were cached with and the inode that
|
||||
the pages are attached to. This function will wait for pages to finish being
|
||||
written to the cache and for the cache to finish with the page generally. No
|
||||
error is returned.
|
||||
|
||||
|
||||
==========================
|
||||
INDEX AND DATA FILE UPDATE
|
||||
==========================
|
||||
|
@ -2015,6 +2015,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||
the default.
|
||||
off: Turn ECRC off
|
||||
on: Turn ECRC on.
|
||||
realloc reallocate PCI resources if allocations done by BIOS
|
||||
are erroneous.
|
||||
|
||||
pcie_aspm= [PCIE] Forcibly enable or disable PCIe Active State Power
|
||||
Management.
|
||||
|
@ -534,6 +534,8 @@ Events that are never propagated by the driver:
|
||||
0x2404 System is waking up from hibernation to undock
|
||||
0x2405 System is waking up from hibernation to eject bay
|
||||
0x5010 Brightness level changed/control event
|
||||
0x6000 KEYBOARD: Numlock key pressed
|
||||
0x6005 KEYBOARD: Fn key pressed (TO BE VERIFIED)
|
||||
|
||||
Events that are propagated by the driver to userspace:
|
||||
|
||||
@ -545,6 +547,8 @@ Events that are propagated by the driver to userspace:
|
||||
0x3006 Bay hotplug request (hint to power up SATA link when
|
||||
the optical drive tray is ejected)
|
||||
0x4003 Undocked (see 0x2x04), can sleep again
|
||||
0x4010 Docked into hotplug port replicator (non-ACPI dock)
|
||||
0x4011 Undocked from hotplug port replicator (non-ACPI dock)
|
||||
0x500B Tablet pen inserted into its storage bay
|
||||
0x500C Tablet pen removed from its storage bay
|
||||
0x6011 ALARM: battery is too hot
|
||||
@ -552,6 +556,7 @@ Events that are propagated by the driver to userspace:
|
||||
0x6021 ALARM: a sensor is too hot
|
||||
0x6022 ALARM: a sensor is extremely hot
|
||||
0x6030 System thermal table changed
|
||||
0x6040 Nvidia Optimus/AC adapter related (TO BE VERIFIED)
|
||||
|
||||
Battery nearly empty alarms are a last resort attempt to get the
|
||||
operating system to hibernate or shutdown cleanly (0x2313), or shutdown
|
||||
|
@ -13,18 +13,8 @@ static DEFINE_SPINLOCK(xxx_lock);
|
||||
The above is always safe. It will disable interrupts _locally_, but the
|
||||
spinlock itself will guarantee the global lock, so it will guarantee that
|
||||
there is only one thread-of-control within the region(s) protected by that
|
||||
lock. This works well even under UP. The above sequence under UP
|
||||
essentially is just the same as doing
|
||||
|
||||
unsigned long flags;
|
||||
|
||||
save_flags(flags); cli();
|
||||
... critical section ...
|
||||
restore_flags(flags);
|
||||
|
||||
so the code does _not_ need to worry about UP vs SMP issues: the spinlocks
|
||||
work correctly under both (and spinlocks are actually more efficient on
|
||||
architectures that allow doing the "save_flags + cli" in one operation).
|
||||
lock. This works well even under UP also, so the code does _not_ need to
|
||||
worry about UP vs SMP issues: the spinlocks work correctly under both.
|
||||
|
||||
NOTE! Implications of spin_locks for memory are further described in:
|
||||
|
||||
@ -36,27 +26,7 @@ The above is usually pretty simple (you usually need and want only one
|
||||
spinlock for most things - using more than one spinlock can make things a
|
||||
lot more complex and even slower and is usually worth it only for
|
||||
sequences that you _know_ need to be split up: avoid it at all cost if you
|
||||
aren't sure). HOWEVER, it _does_ mean that if you have some code that does
|
||||
|
||||
cli();
|
||||
.. critical section ..
|
||||
sti();
|
||||
|
||||
and another sequence that does
|
||||
|
||||
spin_lock_irqsave(flags);
|
||||
.. critical section ..
|
||||
spin_unlock_irqrestore(flags);
|
||||
|
||||
then they are NOT mutually exclusive, and the critical regions can happen
|
||||
at the same time on two different CPU's. That's fine per se, but the
|
||||
critical regions had better be critical for different things (ie they
|
||||
can't stomp on each other).
|
||||
|
||||
The above is a problem mainly if you end up mixing code - for example the
|
||||
routines in ll_rw_block() tend to use cli/sti to protect the atomicity of
|
||||
their actions, and if a driver uses spinlocks instead then you should
|
||||
think about issues like the above.
|
||||
aren't sure).
|
||||
|
||||
This is really the only really hard part about spinlocks: once you start
|
||||
using spinlocks they tend to expand to areas you might not have noticed
|
||||
@ -120,11 +90,10 @@ Lesson 3: spinlocks revisited.
|
||||
|
||||
The single spin-lock primitives above are by no means the only ones. They
|
||||
are the most safe ones, and the ones that work under all circumstances,
|
||||
but partly _because_ they are safe they are also fairly slow. They are
|
||||
much faster than a generic global cli/sti pair, but slower than they'd
|
||||
need to be, because they do have to disable interrupts (which is just a
|
||||
single instruction on a x86, but it's an expensive one - and on other
|
||||
architectures it can be worse).
|
||||
but partly _because_ they are safe they are also fairly slow. They are slower
|
||||
than they'd need to be, because they do have to disable interrupts
|
||||
(which is just a single instruction on a x86, but it's an expensive one -
|
||||
and on other architectures it can be worse).
|
||||
|
||||
If you have a case where you have to protect a data structure across
|
||||
several CPU's and you want to use spinlocks you can potentially use
|
||||
|
15
MAINTAINERS
15
MAINTAINERS
@ -594,6 +594,16 @@ S: Maintained
|
||||
F: arch/arm/lib/floppydma.S
|
||||
F: arch/arm/include/asm/floppy.h
|
||||
|
||||
ARM PMU PROFILING AND DEBUGGING
|
||||
M: Will Deacon <will.deacon@arm.com>
|
||||
S: Maintained
|
||||
F: arch/arm/kernel/perf_event*
|
||||
F: arch/arm/oprofile/common.c
|
||||
F: arch/arm/kernel/pmu.c
|
||||
F: arch/arm/include/asm/pmu.h
|
||||
F: arch/arm/kernel/hw_breakpoint.c
|
||||
F: arch/arm/include/asm/hw_breakpoint.h
|
||||
|
||||
ARM PORT
|
||||
M: Russell King <linux@arm.linux.org.uk>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
@ -2197,7 +2207,7 @@ F: drivers/acpi/dock.c
|
||||
DOCUMENTATION
|
||||
M: Randy Dunlap <rdunlap@xenotime.net>
|
||||
L: linux-doc@vger.kernel.org
|
||||
T: quilt oss.oracle.com/~rdunlap/kernel-doc-patches/current/
|
||||
T: quilt http://userweb.kernel.org/~rdunlap/kernel-doc-patches/current/
|
||||
S: Maintained
|
||||
F: Documentation/
|
||||
|
||||
@ -4982,7 +4992,7 @@ F: drivers/power/power_supply*
|
||||
|
||||
PNP SUPPORT
|
||||
M: Adam Belay <abelay@mit.edu>
|
||||
M: Bjorn Helgaas <bjorn.helgaas@hp.com>
|
||||
M: Bjorn Helgaas <bhelgaas@google.com>
|
||||
S: Maintained
|
||||
F: drivers/pnp/
|
||||
|
||||
@ -6733,6 +6743,7 @@ F: fs/fat/
|
||||
VIDEOBUF2 FRAMEWORK
|
||||
M: Pawel Osciak <pawel@osciak.com>
|
||||
M: Marek Szyprowski <m.szyprowski@samsung.com>
|
||||
M: Kyungmin Park <kyungmin.park@samsung.com>
|
||||
L: linux-media@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/media/video/videobuf2-*
|
||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 3
|
||||
PATCHLEVEL = 0
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc6
|
||||
EXTRAVERSION = -rc7
|
||||
NAME = Sneaky Weasel
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
@ -682,6 +682,7 @@ config ARCH_S3C2410
|
||||
select GENERIC_GPIO
|
||||
select ARCH_HAS_CPUFREQ
|
||||
select HAVE_CLK
|
||||
select CLKDEV_LOOKUP
|
||||
select ARCH_USES_GETTIMEOFFSET
|
||||
select HAVE_S3C2410_I2C if I2C
|
||||
help
|
||||
@ -699,6 +700,7 @@ config ARCH_S3C64XX
|
||||
select CPU_V6
|
||||
select ARM_VIC
|
||||
select HAVE_CLK
|
||||
select CLKDEV_LOOKUP
|
||||
select NO_IOPORT
|
||||
select ARCH_USES_GETTIMEOFFSET
|
||||
select ARCH_HAS_CPUFREQ
|
||||
@ -723,6 +725,8 @@ config ARCH_S5P64X0
|
||||
select CPU_V6
|
||||
select GENERIC_GPIO
|
||||
select HAVE_CLK
|
||||
select CLKDEV_LOOKUP
|
||||
select CLKSRC_MMIO
|
||||
select HAVE_S3C2410_WATCHDOG if WATCHDOG
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select HAVE_SCHED_CLOCK
|
||||
@ -736,6 +740,7 @@ config ARCH_S5PC100
|
||||
bool "Samsung S5PC100"
|
||||
select GENERIC_GPIO
|
||||
select HAVE_CLK
|
||||
select CLKDEV_LOOKUP
|
||||
select CPU_V7
|
||||
select ARM_L1_CACHE_SHIFT_6
|
||||
select ARCH_USES_GETTIMEOFFSET
|
||||
@ -751,6 +756,8 @@ config ARCH_S5PV210
|
||||
select ARCH_SPARSEMEM_ENABLE
|
||||
select GENERIC_GPIO
|
||||
select HAVE_CLK
|
||||
select CLKDEV_LOOKUP
|
||||
select CLKSRC_MMIO
|
||||
select ARM_L1_CACHE_SHIFT_6
|
||||
select ARCH_HAS_CPUFREQ
|
||||
select GENERIC_CLOCKEVENTS
|
||||
@ -767,6 +774,7 @@ config ARCH_EXYNOS4
|
||||
select ARCH_SPARSEMEM_ENABLE
|
||||
select GENERIC_GPIO
|
||||
select HAVE_CLK
|
||||
select CLKDEV_LOOKUP
|
||||
select ARCH_HAS_CPUFREQ
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select HAVE_S3C_RTC if RTC_CLASS
|
||||
|
@ -255,7 +255,7 @@ static inline dma_addr_t map_single(struct device *dev, void *ptr, size_t size,
|
||||
if (buf == 0) {
|
||||
dev_err(dev, "%s: unable to map unsafe buffer %p!\n",
|
||||
__func__, ptr);
|
||||
return 0;
|
||||
return ~0;
|
||||
}
|
||||
|
||||
dev_dbg(dev,
|
||||
|
@ -583,7 +583,7 @@ static int armpmu_event_init(struct perf_event *event)
|
||||
static void armpmu_enable(struct pmu *pmu)
|
||||
{
|
||||
/* Enable all of the perf events on hardware. */
|
||||
int idx;
|
||||
int idx, enabled = 0;
|
||||
struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
|
||||
|
||||
if (!armpmu)
|
||||
@ -596,9 +596,11 @@ static void armpmu_enable(struct pmu *pmu)
|
||||
continue;
|
||||
|
||||
armpmu->enable(&event->hw, idx);
|
||||
enabled = 1;
|
||||
}
|
||||
|
||||
armpmu->start();
|
||||
if (enabled)
|
||||
armpmu->start();
|
||||
}
|
||||
|
||||
static void armpmu_disable(struct pmu *pmu)
|
||||
|
@ -73,6 +73,7 @@ __setup("fpe=", fpe_setup);
|
||||
#endif
|
||||
|
||||
extern void paging_init(struct machine_desc *desc);
|
||||
extern void sanity_check_meminfo(void);
|
||||
extern void reboot_setup(char *str);
|
||||
|
||||
unsigned int processor_id;
|
||||
@ -900,6 +901,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
|
||||
parse_early_param();
|
||||
|
||||
sanity_check_meminfo();
|
||||
arm_memblock_init(&meminfo, mdesc);
|
||||
|
||||
paging_init(mdesc);
|
||||
|
@ -115,7 +115,7 @@ static void __cpuinit twd_calibrate_rate(void)
|
||||
twd_timer_rate = (0xFFFFFFFFU - count) * (HZ / 5);
|
||||
|
||||
printk("%lu.%02luMHz.\n", twd_timer_rate / 1000000,
|
||||
(twd_timer_rate / 1000000) % 100);
|
||||
(twd_timer_rate / 10000) % 100);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -251,9 +251,9 @@ static void ep93xx_uart_set_mctrl(struct amba_device *dev,
|
||||
unsigned int mcr;
|
||||
|
||||
mcr = 0;
|
||||
if (!(mctrl & TIOCM_RTS))
|
||||
if (mctrl & TIOCM_RTS)
|
||||
mcr |= 2;
|
||||
if (!(mctrl & TIOCM_DTR))
|
||||
if (mctrl & TIOCM_DTR)
|
||||
mcr |= 1;
|
||||
|
||||
__raw_writel(mcr, base + EP93XX_UART_MCR_OFFSET);
|
||||
|
@ -110,6 +110,8 @@ config MACH_SMDKC210
|
||||
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_I2C1
|
||||
@ -127,8 +129,10 @@ config MACH_SMDKV310
|
||||
select S3C_DEV_HSMMC1
|
||||
select S3C_DEV_HSMMC2
|
||||
select S3C_DEV_HSMMC3
|
||||
select SAMSUNG_DEV_BACKLIGHT
|
||||
select SAMSUNG_DEV_KEYPAD
|
||||
select EXYNOS4_DEV_PD
|
||||
select SAMSUNG_DEV_PWM
|
||||
select EXYNOS4_DEV_SYSMMU
|
||||
select EXYNOS4_SETUP_I2C1
|
||||
select EXYNOS4_SETUP_KEYPAD
|
||||
|
@ -27,24 +27,20 @@
|
||||
|
||||
static struct clk clk_sclk_hdmi27m = {
|
||||
.name = "sclk_hdmi27m",
|
||||
.id = -1,
|
||||
.rate = 27000000,
|
||||
};
|
||||
|
||||
static struct clk clk_sclk_hdmiphy = {
|
||||
.name = "sclk_hdmiphy",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_sclk_usbphy0 = {
|
||||
.name = "sclk_usbphy0",
|
||||
.id = -1,
|
||||
.rate = 27000000,
|
||||
};
|
||||
|
||||
static struct clk clk_sclk_usbphy1 = {
|
||||
.name = "sclk_usbphy1",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static int exynos4_clksrc_mask_top_ctrl(struct clk *clk, int enable)
|
||||
@ -132,7 +128,6 @@ static int exynos4_clk_ip_perir_ctrl(struct clk *clk, int enable)
|
||||
static struct clksrc_clk clk_mout_apll = {
|
||||
.clk = {
|
||||
.name = "mout_apll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_apll,
|
||||
.reg_src = { .reg = S5P_CLKSRC_CPU, .shift = 0, .size = 1 },
|
||||
@ -141,7 +136,6 @@ static struct clksrc_clk clk_mout_apll = {
|
||||
static struct clksrc_clk clk_sclk_apll = {
|
||||
.clk = {
|
||||
.name = "sclk_apll",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_apll.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_CPU, .shift = 24, .size = 3 },
|
||||
@ -150,7 +144,6 @@ static struct clksrc_clk clk_sclk_apll = {
|
||||
static struct clksrc_clk clk_mout_epll = {
|
||||
.clk = {
|
||||
.name = "mout_epll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_epll,
|
||||
.reg_src = { .reg = S5P_CLKSRC_TOP0, .shift = 4, .size = 1 },
|
||||
@ -159,7 +152,6 @@ static struct clksrc_clk clk_mout_epll = {
|
||||
static struct clksrc_clk clk_mout_mpll = {
|
||||
.clk = {
|
||||
.name = "mout_mpll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_mpll,
|
||||
.reg_src = { .reg = S5P_CLKSRC_CPU, .shift = 8, .size = 1 },
|
||||
@ -178,7 +170,6 @@ static struct clksrc_sources clkset_moutcore = {
|
||||
static struct clksrc_clk clk_moutcore = {
|
||||
.clk = {
|
||||
.name = "moutcore",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_moutcore,
|
||||
.reg_src = { .reg = S5P_CLKSRC_CPU, .shift = 16, .size = 1 },
|
||||
@ -187,7 +178,6 @@ static struct clksrc_clk clk_moutcore = {
|
||||
static struct clksrc_clk clk_coreclk = {
|
||||
.clk = {
|
||||
.name = "core_clk",
|
||||
.id = -1,
|
||||
.parent = &clk_moutcore.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_CPU, .shift = 0, .size = 3 },
|
||||
@ -196,7 +186,6 @@ static struct clksrc_clk clk_coreclk = {
|
||||
static struct clksrc_clk clk_armclk = {
|
||||
.clk = {
|
||||
.name = "armclk",
|
||||
.id = -1,
|
||||
.parent = &clk_coreclk.clk,
|
||||
},
|
||||
};
|
||||
@ -204,7 +193,6 @@ static struct clksrc_clk clk_armclk = {
|
||||
static struct clksrc_clk clk_aclk_corem0 = {
|
||||
.clk = {
|
||||
.name = "aclk_corem0",
|
||||
.id = -1,
|
||||
.parent = &clk_coreclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_CPU, .shift = 4, .size = 3 },
|
||||
@ -213,7 +201,6 @@ static struct clksrc_clk clk_aclk_corem0 = {
|
||||
static struct clksrc_clk clk_aclk_cores = {
|
||||
.clk = {
|
||||
.name = "aclk_cores",
|
||||
.id = -1,
|
||||
.parent = &clk_coreclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_CPU, .shift = 4, .size = 3 },
|
||||
@ -222,7 +209,6 @@ static struct clksrc_clk clk_aclk_cores = {
|
||||
static struct clksrc_clk clk_aclk_corem1 = {
|
||||
.clk = {
|
||||
.name = "aclk_corem1",
|
||||
.id = -1,
|
||||
.parent = &clk_coreclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_CPU, .shift = 8, .size = 3 },
|
||||
@ -231,7 +217,6 @@ static struct clksrc_clk clk_aclk_corem1 = {
|
||||
static struct clksrc_clk clk_periphclk = {
|
||||
.clk = {
|
||||
.name = "periphclk",
|
||||
.id = -1,
|
||||
.parent = &clk_coreclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_CPU, .shift = 12, .size = 3 },
|
||||
@ -252,7 +237,6 @@ static struct clksrc_sources clkset_mout_corebus = {
|
||||
static struct clksrc_clk clk_mout_corebus = {
|
||||
.clk = {
|
||||
.name = "mout_corebus",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_mout_corebus,
|
||||
.reg_src = { .reg = S5P_CLKSRC_DMC, .shift = 4, .size = 1 },
|
||||
@ -261,7 +245,6 @@ static struct clksrc_clk clk_mout_corebus = {
|
||||
static struct clksrc_clk clk_sclk_dmc = {
|
||||
.clk = {
|
||||
.name = "sclk_dmc",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_corebus.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_DMC0, .shift = 12, .size = 3 },
|
||||
@ -270,7 +253,6 @@ static struct clksrc_clk clk_sclk_dmc = {
|
||||
static struct clksrc_clk clk_aclk_cored = {
|
||||
.clk = {
|
||||
.name = "aclk_cored",
|
||||
.id = -1,
|
||||
.parent = &clk_sclk_dmc.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_DMC0, .shift = 16, .size = 3 },
|
||||
@ -279,7 +261,6 @@ static struct clksrc_clk clk_aclk_cored = {
|
||||
static struct clksrc_clk clk_aclk_corep = {
|
||||
.clk = {
|
||||
.name = "aclk_corep",
|
||||
.id = -1,
|
||||
.parent = &clk_aclk_cored.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_DMC0, .shift = 20, .size = 3 },
|
||||
@ -288,7 +269,6 @@ static struct clksrc_clk clk_aclk_corep = {
|
||||
static struct clksrc_clk clk_aclk_acp = {
|
||||
.clk = {
|
||||
.name = "aclk_acp",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_corebus.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_DMC0, .shift = 0, .size = 3 },
|
||||
@ -297,7 +277,6 @@ static struct clksrc_clk clk_aclk_acp = {
|
||||
static struct clksrc_clk clk_pclk_acp = {
|
||||
.clk = {
|
||||
.name = "pclk_acp",
|
||||
.id = -1,
|
||||
.parent = &clk_aclk_acp.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLKDIV_DMC0, .shift = 4, .size = 3 },
|
||||
@ -318,7 +297,6 @@ static struct clksrc_sources clkset_aclk = {
|
||||
static struct clksrc_clk clk_aclk_200 = {
|
||||
.clk = {
|
||||
.name = "aclk_200",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_aclk,
|
||||
.reg_src = { .reg = S5P_CLKSRC_TOP0, .shift = 12, .size = 1 },
|
||||
@ -328,7 +306,6 @@ static struct clksrc_clk clk_aclk_200 = {
|
||||
static struct clksrc_clk clk_aclk_100 = {
|
||||
.clk = {
|
||||
.name = "aclk_100",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_aclk,
|
||||
.reg_src = { .reg = S5P_CLKSRC_TOP0, .shift = 16, .size = 1 },
|
||||
@ -338,7 +315,6 @@ static struct clksrc_clk clk_aclk_100 = {
|
||||
static struct clksrc_clk clk_aclk_160 = {
|
||||
.clk = {
|
||||
.name = "aclk_160",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_aclk,
|
||||
.reg_src = { .reg = S5P_CLKSRC_TOP0, .shift = 20, .size = 1 },
|
||||
@ -348,7 +324,6 @@ static struct clksrc_clk clk_aclk_160 = {
|
||||
static struct clksrc_clk clk_aclk_133 = {
|
||||
.clk = {
|
||||
.name = "aclk_133",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_aclk,
|
||||
.reg_src = { .reg = S5P_CLKSRC_TOP0, .shift = 24, .size = 1 },
|
||||
@ -368,7 +343,6 @@ static struct clksrc_sources clkset_vpllsrc = {
|
||||
static struct clksrc_clk clk_vpllsrc = {
|
||||
.clk = {
|
||||
.name = "vpll_src",
|
||||
.id = -1,
|
||||
.enable = exynos4_clksrc_mask_top_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
},
|
||||
@ -389,7 +363,6 @@ static struct clksrc_sources clkset_sclk_vpll = {
|
||||
static struct clksrc_clk clk_sclk_vpll = {
|
||||
.clk = {
|
||||
.name = "sclk_vpll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_sclk_vpll,
|
||||
.reg_src = { .reg = S5P_CLKSRC_TOP0, .shift = 8, .size = 1 },
|
||||
@ -398,161 +371,151 @@ static struct clksrc_clk clk_sclk_vpll = {
|
||||
static struct clk init_clocks_off[] = {
|
||||
{
|
||||
.name = "timers",
|
||||
.id = -1,
|
||||
.parent = &clk_aclk_100.clk,
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1<<24),
|
||||
}, {
|
||||
.name = "csis",
|
||||
.id = 0,
|
||||
.devname = "s5p-mipi-csis.0",
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "csis",
|
||||
.id = 1,
|
||||
.devname = "s5p-mipi-csis.1",
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "fimc",
|
||||
.id = 0,
|
||||
.devname = "exynos4-fimc.0",
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "fimc",
|
||||
.id = 1,
|
||||
.devname = "exynos4-fimc.1",
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "fimc",
|
||||
.id = 2,
|
||||
.devname = "exynos4-fimc.2",
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "fimc",
|
||||
.id = 3,
|
||||
.devname = "exynos4-fimc.3",
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "fimd",
|
||||
.id = 0,
|
||||
.devname = "exynos4-fb.0",
|
||||
.enable = exynos4_clk_ip_lcd0_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "fimd",
|
||||
.id = 1,
|
||||
.devname = "exynos4-fb.1",
|
||||
.enable = exynos4_clk_ip_lcd1_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "sataphy",
|
||||
.id = -1,
|
||||
.parent = &clk_aclk_133.clk,
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_aclk_133.clk,
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_aclk_133.clk,
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.parent = &clk_aclk_133.clk,
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 3,
|
||||
.devname = "s3c-sdhci.3",
|
||||
.parent = &clk_aclk_133.clk,
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 4,
|
||||
.name = "dwmmc",
|
||||
.parent = &clk_aclk_133.clk,
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 9),
|
||||
}, {
|
||||
.name = "sata",
|
||||
.id = -1,
|
||||
.parent = &clk_aclk_133.clk,
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 10),
|
||||
}, {
|
||||
.name = "pdma",
|
||||
.id = 0,
|
||||
.devname = "s3c-pl330.0",
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "pdma",
|
||||
.id = 1,
|
||||
.devname = "s3c-pl330.1",
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "adc",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 15),
|
||||
}, {
|
||||
.name = "keypad",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_perir_ctrl,
|
||||
.ctrlbit = (1 << 16),
|
||||
}, {
|
||||
.name = "rtc",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_perir_ctrl,
|
||||
.ctrlbit = (1 << 15),
|
||||
}, {
|
||||
.name = "watchdog",
|
||||
.id = -1,
|
||||
.parent = &clk_aclk_100.clk,
|
||||
.enable = exynos4_clk_ip_perir_ctrl,
|
||||
.ctrlbit = (1 << 14),
|
||||
}, {
|
||||
.name = "usbhost",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_fsys_ctrl ,
|
||||
.ctrlbit = (1 << 12),
|
||||
}, {
|
||||
.name = "otg",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 13),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 16),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 17),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 2,
|
||||
.devname = "s3c64xx-spi.2",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 18),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 0,
|
||||
.devname = "samsung-i2s.0",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 19),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 1,
|
||||
.devname = "samsung-i2s.1",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 20),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 2,
|
||||
.devname = "samsung-i2s.2",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 21),
|
||||
}, {
|
||||
@ -562,125 +525,110 @@ static struct clk init_clocks_off[] = {
|
||||
.ctrlbit = (1 << 27),
|
||||
}, {
|
||||
.name = "fimg2d",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_image_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 0,
|
||||
.devname = "s3c2440-i2c.0",
|
||||
.parent = &clk_aclk_100.clk,
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 1,
|
||||
.devname = "s3c2440-i2c.1",
|
||||
.parent = &clk_aclk_100.clk,
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 2,
|
||||
.devname = "s3c2440-i2c.2",
|
||||
.parent = &clk_aclk_100.clk,
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 3,
|
||||
.devname = "s3c2440-i2c.3",
|
||||
.parent = &clk_aclk_100.clk,
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 9),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 4,
|
||||
.devname = "s3c2440-i2c.4",
|
||||
.parent = &clk_aclk_100.clk,
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 10),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 5,
|
||||
.devname = "s3c2440-i2c.5",
|
||||
.parent = &clk_aclk_100.clk,
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 11),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 6,
|
||||
.devname = "s3c2440-i2c.6",
|
||||
.parent = &clk_aclk_100.clk,
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 7,
|
||||
.devname = "s3c2440-i2c.7",
|
||||
.parent = &clk_aclk_100.clk,
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 13),
|
||||
}, {
|
||||
.name = "SYSMMU_MDMA",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_image_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "SYSMMU_FIMC0",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "SYSMMU_FIMC1",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
}, {
|
||||
.name = "SYSMMU_FIMC2",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 9),
|
||||
}, {
|
||||
.name = "SYSMMU_FIMC3",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 10),
|
||||
}, {
|
||||
.name = "SYSMMU_JPEG",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_cam_ctrl,
|
||||
.ctrlbit = (1 << 11),
|
||||
}, {
|
||||
.name = "SYSMMU_FIMD0",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_lcd0_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "SYSMMU_FIMD1",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_lcd1_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "SYSMMU_PCIe",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_fsys_ctrl,
|
||||
.ctrlbit = (1 << 18),
|
||||
}, {
|
||||
.name = "SYSMMU_G2D",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_image_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "SYSMMU_ROTATOR",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_image_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "SYSMMU_TV",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_tv_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "SYSMMU_MFC_L",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_mfc_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "SYSMMU_MFC_R",
|
||||
.id = -1,
|
||||
.enable = exynos4_clk_ip_mfc_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}
|
||||
@ -689,32 +637,32 @@ static struct clk init_clocks_off[] = {
|
||||
static struct clk init_clocks[] = {
|
||||
{
|
||||
.name = "uart",
|
||||
.id = 0,
|
||||
.devname = "s5pv210-uart.0",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 1,
|
||||
.devname = "s5pv210-uart.1",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 2,
|
||||
.devname = "s5pv210-uart.2",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 3,
|
||||
.devname = "s5pv210-uart.3",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 4,
|
||||
.devname = "s5pv210-uart.4",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 5,
|
||||
.devname = "s5pv210-uart.5",
|
||||
.enable = exynos4_clk_ip_peril_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}
|
||||
@ -750,7 +698,6 @@ static struct clksrc_sources clkset_mout_g2d0 = {
|
||||
static struct clksrc_clk clk_mout_g2d0 = {
|
||||
.clk = {
|
||||
.name = "mout_g2d0",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_mout_g2d0,
|
||||
.reg_src = { .reg = S5P_CLKSRC_IMAGE, .shift = 0, .size = 1 },
|
||||
@ -769,7 +716,6 @@ static struct clksrc_sources clkset_mout_g2d1 = {
|
||||
static struct clksrc_clk clk_mout_g2d1 = {
|
||||
.clk = {
|
||||
.name = "mout_g2d1",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_mout_g2d1,
|
||||
.reg_src = { .reg = S5P_CLKSRC_IMAGE, .shift = 4, .size = 1 },
|
||||
@ -788,7 +734,6 @@ static struct clksrc_sources clkset_mout_g2d = {
|
||||
static struct clksrc_clk clk_dout_mmc0 = {
|
||||
.clk = {
|
||||
.name = "dout_mmc0",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_group,
|
||||
.reg_src = { .reg = S5P_CLKSRC_FSYS, .shift = 0, .size = 4 },
|
||||
@ -798,7 +743,6 @@ static struct clksrc_clk clk_dout_mmc0 = {
|
||||
static struct clksrc_clk clk_dout_mmc1 = {
|
||||
.clk = {
|
||||
.name = "dout_mmc1",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_group,
|
||||
.reg_src = { .reg = S5P_CLKSRC_FSYS, .shift = 4, .size = 4 },
|
||||
@ -808,7 +752,6 @@ static struct clksrc_clk clk_dout_mmc1 = {
|
||||
static struct clksrc_clk clk_dout_mmc2 = {
|
||||
.clk = {
|
||||
.name = "dout_mmc2",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_group,
|
||||
.reg_src = { .reg = S5P_CLKSRC_FSYS, .shift = 8, .size = 4 },
|
||||
@ -818,7 +761,6 @@ static struct clksrc_clk clk_dout_mmc2 = {
|
||||
static struct clksrc_clk clk_dout_mmc3 = {
|
||||
.clk = {
|
||||
.name = "dout_mmc3",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_group,
|
||||
.reg_src = { .reg = S5P_CLKSRC_FSYS, .shift = 12, .size = 4 },
|
||||
@ -828,7 +770,6 @@ static struct clksrc_clk clk_dout_mmc3 = {
|
||||
static struct clksrc_clk clk_dout_mmc4 = {
|
||||
.clk = {
|
||||
.name = "dout_mmc4",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_group,
|
||||
.reg_src = { .reg = S5P_CLKSRC_FSYS, .shift = 16, .size = 4 },
|
||||
@ -839,7 +780,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
{
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = 0,
|
||||
.devname = "s5pv210-uart.0",
|
||||
.enable = exynos4_clksrc_mask_peril0_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
},
|
||||
@ -849,7 +790,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = 1,
|
||||
.devname = "s5pv210-uart.1",
|
||||
.enable = exynos4_clksrc_mask_peril0_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
},
|
||||
@ -859,7 +800,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = 2,
|
||||
.devname = "s5pv210-uart.2",
|
||||
.enable = exynos4_clksrc_mask_peril0_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
},
|
||||
@ -869,7 +810,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = 3,
|
||||
.devname = "s5pv210-uart.3",
|
||||
.enable = exynos4_clksrc_mask_peril0_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
},
|
||||
@ -879,7 +820,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_pwm",
|
||||
.id = -1,
|
||||
.enable = exynos4_clksrc_mask_peril0_ctrl,
|
||||
.ctrlbit = (1 << 24),
|
||||
},
|
||||
@ -889,7 +829,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_csis",
|
||||
.id = 0,
|
||||
.devname = "s5p-mipi-csis.0",
|
||||
.enable = exynos4_clksrc_mask_cam_ctrl,
|
||||
.ctrlbit = (1 << 24),
|
||||
},
|
||||
@ -899,7 +839,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_csis",
|
||||
.id = 1,
|
||||
.devname = "s5p-mipi-csis.1",
|
||||
.enable = exynos4_clksrc_mask_cam_ctrl,
|
||||
.ctrlbit = (1 << 28),
|
||||
},
|
||||
@ -909,7 +849,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_cam",
|
||||
.id = 0,
|
||||
.devname = "exynos4-fimc.0",
|
||||
.enable = exynos4_clksrc_mask_cam_ctrl,
|
||||
.ctrlbit = (1 << 16),
|
||||
},
|
||||
@ -919,7 +859,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_cam",
|
||||
.id = 1,
|
||||
.devname = "exynos4-fimc.1",
|
||||
.enable = exynos4_clksrc_mask_cam_ctrl,
|
||||
.ctrlbit = (1 << 20),
|
||||
},
|
||||
@ -929,7 +869,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = 0,
|
||||
.devname = "exynos4-fimc.0",
|
||||
.enable = exynos4_clksrc_mask_cam_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
},
|
||||
@ -939,7 +879,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = 1,
|
||||
.devname = "exynos4-fimc.1",
|
||||
.enable = exynos4_clksrc_mask_cam_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
},
|
||||
@ -949,7 +889,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = 2,
|
||||
.devname = "exynos4-fimc.2",
|
||||
.enable = exynos4_clksrc_mask_cam_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
},
|
||||
@ -959,7 +899,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = 3,
|
||||
.devname = "exynos4-fimc.3",
|
||||
.enable = exynos4_clksrc_mask_cam_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
},
|
||||
@ -969,7 +909,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimd",
|
||||
.id = 0,
|
||||
.devname = "exynos4-fb.0",
|
||||
.enable = exynos4_clksrc_mask_lcd0_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
},
|
||||
@ -979,7 +919,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimd",
|
||||
.id = 1,
|
||||
.devname = "exynos4-fb.1",
|
||||
.enable = exynos4_clksrc_mask_lcd1_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
},
|
||||
@ -989,7 +929,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_sata",
|
||||
.id = -1,
|
||||
.enable = exynos4_clksrc_mask_fsys_ctrl,
|
||||
.ctrlbit = (1 << 24),
|
||||
},
|
||||
@ -999,7 +938,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.enable = exynos4_clksrc_mask_peril1_ctrl,
|
||||
.ctrlbit = (1 << 16),
|
||||
},
|
||||
@ -1009,7 +948,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.enable = exynos4_clksrc_mask_peril1_ctrl,
|
||||
.ctrlbit = (1 << 20),
|
||||
},
|
||||
@ -1019,7 +958,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 2,
|
||||
.devname = "s3c64xx-spi.2",
|
||||
.enable = exynos4_clksrc_mask_peril1_ctrl,
|
||||
.ctrlbit = (1 << 24),
|
||||
},
|
||||
@ -1029,7 +968,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimg2d",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_mout_g2d,
|
||||
.reg_src = { .reg = S5P_CLKSRC_IMAGE, .shift = 8, .size = 1 },
|
||||
@ -1037,7 +975,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_dout_mmc0.clk,
|
||||
.enable = exynos4_clksrc_mask_fsys_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
@ -1046,7 +984,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_dout_mmc1.clk,
|
||||
.enable = exynos4_clksrc_mask_fsys_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
@ -1055,7 +993,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.parent = &clk_dout_mmc2.clk,
|
||||
.enable = exynos4_clksrc_mask_fsys_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
@ -1064,7 +1002,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 3,
|
||||
.devname = "s3c-sdhci.3",
|
||||
.parent = &clk_dout_mmc3.clk,
|
||||
.enable = exynos4_clksrc_mask_fsys_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
@ -1072,8 +1010,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
.reg_div = { .reg = S5P_CLKDIV_FSYS2, .shift = 24, .size = 8 },
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 4,
|
||||
.name = "sclk_dwmmc",
|
||||
.parent = &clk_dout_mmc4.clk,
|
||||
.enable = exynos4_clksrc_mask_fsys_ctrl,
|
||||
.ctrlbit = (1 << 16),
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/fimc-core.h>
|
||||
#include <plat/iic-core.h>
|
||||
|
||||
#include <mach/regs-irq.h>
|
||||
|
||||
@ -132,6 +133,11 @@ void __init exynos4_map_io(void)
|
||||
s3c_fimc_setname(1, "exynos4-fimc");
|
||||
s3c_fimc_setname(2, "exynos4-fimc");
|
||||
s3c_fimc_setname(3, "exynos4-fimc");
|
||||
|
||||
/* The I2C bus controllers are directly compatible with s3c2440 */
|
||||
s3c_i2c0_setname("s3c2440-i2c");
|
||||
s3c_i2c1_setname("s3c2440-i2c");
|
||||
s3c_i2c2_setname("s3c2440-i2c");
|
||||
}
|
||||
|
||||
void __init exynos4_init_clocks(int xtal)
|
||||
|
@ -330,7 +330,7 @@ struct platform_device exynos4_device_ac97 = {
|
||||
|
||||
static int exynos4_spdif_cfg_gpio(struct platform_device *pdev)
|
||||
{
|
||||
s3c_gpio_cfgpin_range(EXYNOS4_GPC1(0), 2, S3C_GPIO_SFN(3));
|
||||
s3c_gpio_cfgpin_range(EXYNOS4_GPC1(0), 2, S3C_GPIO_SFN(4));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
__INIT
|
||||
__CPUINIT
|
||||
|
||||
/*
|
||||
* exynos4 specific entry point for secondary CPUs. This provides
|
||||
|
7
arch/arm/mach-exynos4/include/mach/clkdev.h
Normal file
7
arch/arm/mach-exynos4/include/mach/clkdev.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef __MACH_CLKDEV_H__
|
||||
#define __MACH_CLKDEV_H__
|
||||
|
||||
#define __clk_get(clk) ({ 1; })
|
||||
#define __clk_put(clk) do {} while (0)
|
||||
|
||||
#endif
|
@ -15,6 +15,7 @@
|
||||
#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>
|
||||
@ -27,6 +28,8 @@
|
||||
#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>
|
||||
|
||||
@ -191,6 +194,17 @@ static void __init smdkc210_smsc911x_init(void)
|
||||
(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);
|
||||
@ -210,6 +224,8 @@ static void __init smdkc210_machine_init(void)
|
||||
s3c_sdhci2_set_platdata(&smdkc210_hsmmc2_pdata);
|
||||
s3c_sdhci3_set_platdata(&smdkc210_hsmmc3_pdata);
|
||||
|
||||
samsung_bl_set(&smdkc210_bl_gpio_info, &smdkc210_bl_data);
|
||||
|
||||
platform_add_devices(smdkc210_devices, ARRAY_SIZE(smdkc210_devices));
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <linux/io.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/pwm_backlight.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach-types.h>
|
||||
@ -29,6 +30,8 @@
|
||||
#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>
|
||||
|
||||
@ -78,9 +81,7 @@ static struct s3c2410_uartcfg smdkv310_uartcfgs[] __initdata = {
|
||||
};
|
||||
|
||||
static struct s3c_sdhci_platdata smdkv310_hsmmc0_pdata __initdata = {
|
||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
||||
.ext_cd_gpio = EXYNOS4_GPK0(2),
|
||||
.ext_cd_gpio_invert = 1,
|
||||
.cd_type = S3C_SDHCI_CD_INTERNAL,
|
||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
||||
#ifdef CONFIG_EXYNOS4_SDHCI_CH0_8BIT
|
||||
.max_width = 8,
|
||||
@ -96,9 +97,7 @@ static struct s3c_sdhci_platdata smdkv310_hsmmc1_pdata __initdata = {
|
||||
};
|
||||
|
||||
static struct s3c_sdhci_platdata smdkv310_hsmmc2_pdata __initdata = {
|
||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
||||
.ext_cd_gpio = EXYNOS4_GPK2(2),
|
||||
.ext_cd_gpio_invert = 1,
|
||||
.cd_type = S3C_SDHCI_CD_INTERNAL,
|
||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
||||
#ifdef CONFIG_EXYNOS4_SDHCI_CH2_8BIT
|
||||
.max_width = 8,
|
||||
@ -213,6 +212,17 @@ static void __init smdkv310_smsc911x_init(void)
|
||||
(0x1 << S5P_SROM_BCX__TACS__SHIFT), S5P_SROM_BC1);
|
||||
}
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdkv310_bl_gpio_info = {
|
||||
.no = EXYNOS4_GPD0(1),
|
||||
.func = S3C_GPIO_SFN(2),
|
||||
};
|
||||
|
||||
static struct platform_pwm_backlight_data smdkv310_bl_data = {
|
||||
.pwm_id = 1,
|
||||
.pwm_period_ns = 1000,
|
||||
};
|
||||
|
||||
static void __init smdkv310_map_io(void)
|
||||
{
|
||||
s5p_init_io(NULL, 0, S5P_VA_CHIPID);
|
||||
@ -234,6 +244,8 @@ static void __init smdkv310_machine_init(void)
|
||||
|
||||
samsung_keypad_set_platdata(&smdkv310_keypad_data);
|
||||
|
||||
samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data);
|
||||
|
||||
platform_add_devices(smdkv310_devices, ARRAY_SIZE(smdkv310_devices));
|
||||
}
|
||||
|
||||
|
@ -215,7 +215,7 @@ static struct omap_kp_platform_data ams_delta_kp_data __initdata = {
|
||||
.delay = 9,
|
||||
};
|
||||
|
||||
static struct platform_device ams_delta_kp_device __initdata = {
|
||||
static struct platform_device ams_delta_kp_device = {
|
||||
.name = "omap-keypad",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
@ -225,12 +225,12 @@ static struct platform_device ams_delta_kp_device __initdata = {
|
||||
.resource = ams_delta_kp_resources,
|
||||
};
|
||||
|
||||
static struct platform_device ams_delta_lcd_device __initdata = {
|
||||
static struct platform_device ams_delta_lcd_device = {
|
||||
.name = "lcd_ams_delta",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct platform_device ams_delta_led_device __initdata = {
|
||||
static struct platform_device ams_delta_led_device = {
|
||||
.name = "ams-delta-led",
|
||||
.id = -1
|
||||
};
|
||||
@ -267,7 +267,7 @@ static struct soc_camera_link ams_delta_iclink = {
|
||||
.power = ams_delta_camera_power,
|
||||
};
|
||||
|
||||
static struct platform_device ams_delta_camera_device __initdata = {
|
||||
static struct platform_device ams_delta_camera_device = {
|
||||
.name = "soc-camera-pdrv",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
|
@ -41,7 +41,7 @@ static struct __initdata omap_gpio_platform_data omap15xx_mpu_gpio_config = {
|
||||
.bank_stride = 1,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap15xx_mpu_gpio = {
|
||||
static struct platform_device omap15xx_mpu_gpio = {
|
||||
.name = "omap_gpio",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
@ -70,7 +70,7 @@ static struct __initdata omap_gpio_platform_data omap15xx_gpio_config = {
|
||||
.bank_width = 16,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap15xx_gpio = {
|
||||
static struct platform_device omap15xx_gpio = {
|
||||
.name = "omap_gpio",
|
||||
.id = 1,
|
||||
.dev = {
|
||||
|
@ -44,7 +44,7 @@ static struct __initdata omap_gpio_platform_data omap16xx_mpu_gpio_config = {
|
||||
.bank_stride = 1,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap16xx_mpu_gpio = {
|
||||
static struct platform_device omap16xx_mpu_gpio = {
|
||||
.name = "omap_gpio",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
@ -73,7 +73,7 @@ static struct __initdata omap_gpio_platform_data omap16xx_gpio1_config = {
|
||||
.bank_width = 16,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap16xx_gpio1 = {
|
||||
static struct platform_device omap16xx_gpio1 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 1,
|
||||
.dev = {
|
||||
@ -102,7 +102,7 @@ static struct __initdata omap_gpio_platform_data omap16xx_gpio2_config = {
|
||||
.bank_width = 16,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap16xx_gpio2 = {
|
||||
static struct platform_device omap16xx_gpio2 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 2,
|
||||
.dev = {
|
||||
@ -131,7 +131,7 @@ static struct __initdata omap_gpio_platform_data omap16xx_gpio3_config = {
|
||||
.bank_width = 16,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap16xx_gpio3 = {
|
||||
static struct platform_device omap16xx_gpio3 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 3,
|
||||
.dev = {
|
||||
@ -160,7 +160,7 @@ static struct __initdata omap_gpio_platform_data omap16xx_gpio4_config = {
|
||||
.bank_width = 16,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap16xx_gpio4 = {
|
||||
static struct platform_device omap16xx_gpio4 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 4,
|
||||
.dev = {
|
||||
|
@ -46,7 +46,7 @@ static struct __initdata omap_gpio_platform_data omap7xx_mpu_gpio_config = {
|
||||
.bank_stride = 2,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap7xx_mpu_gpio = {
|
||||
static struct platform_device omap7xx_mpu_gpio = {
|
||||
.name = "omap_gpio",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
@ -75,7 +75,7 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio1_config = {
|
||||
.bank_width = 32,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap7xx_gpio1 = {
|
||||
static struct platform_device omap7xx_gpio1 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 1,
|
||||
.dev = {
|
||||
@ -104,7 +104,7 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio2_config = {
|
||||
.bank_width = 32,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap7xx_gpio2 = {
|
||||
static struct platform_device omap7xx_gpio2 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 2,
|
||||
.dev = {
|
||||
@ -133,7 +133,7 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio3_config = {
|
||||
.bank_width = 32,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap7xx_gpio3 = {
|
||||
static struct platform_device omap7xx_gpio3 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 3,
|
||||
.dev = {
|
||||
@ -162,7 +162,7 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio4_config = {
|
||||
.bank_width = 32,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap7xx_gpio4 = {
|
||||
static struct platform_device omap7xx_gpio4 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 4,
|
||||
.dev = {
|
||||
@ -191,7 +191,7 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio5_config = {
|
||||
.bank_width = 32,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap7xx_gpio5 = {
|
||||
static struct platform_device omap7xx_gpio5 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 5,
|
||||
.dev = {
|
||||
@ -220,7 +220,7 @@ static struct __initdata omap_gpio_platform_data omap7xx_gpio6_config = {
|
||||
.bank_width = 32,
|
||||
};
|
||||
|
||||
static struct __initdata platform_device omap7xx_gpio6 = {
|
||||
static struct platform_device omap7xx_gpio6 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 6,
|
||||
.dev = {
|
||||
|
@ -538,7 +538,7 @@ static struct radio_si4713_platform_data rx51_si4713_data __initdata_or_module =
|
||||
.subdev_board_info = &rx51_si4713_board_info,
|
||||
};
|
||||
|
||||
static struct platform_device rx51_si4713_dev __initdata_or_module = {
|
||||
static struct platform_device rx51_si4713_dev = {
|
||||
.name = "radio-si4713",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
|
@ -95,12 +95,10 @@ static int s3c2412_upll_enable(struct clk *clk, int enable)
|
||||
|
||||
static struct clk clk_erefclk = {
|
||||
.name = "erefclk",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_urefclk = {
|
||||
.name = "urefclk",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static int s3c2412_setparent_usysclk(struct clk *clk, struct clk *parent)
|
||||
@ -122,7 +120,6 @@ static int s3c2412_setparent_usysclk(struct clk *clk, struct clk *parent)
|
||||
|
||||
static struct clk clk_usysclk = {
|
||||
.name = "usysclk",
|
||||
.id = -1,
|
||||
.parent = &clk_xtal,
|
||||
.ops = &(struct clk_ops) {
|
||||
.set_parent = s3c2412_setparent_usysclk,
|
||||
@ -132,13 +129,11 @@ static struct clk clk_usysclk = {
|
||||
static struct clk clk_mrefclk = {
|
||||
.name = "mrefclk",
|
||||
.parent = &clk_xtal,
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_mdivclk = {
|
||||
.name = "mdivclk",
|
||||
.parent = &clk_xtal,
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static int s3c2412_setparent_usbsrc(struct clk *clk, struct clk *parent)
|
||||
@ -200,7 +195,6 @@ static int s3c2412_setrate_usbsrc(struct clk *clk, unsigned long rate)
|
||||
|
||||
static struct clk clk_usbsrc = {
|
||||
.name = "usbsrc",
|
||||
.id = -1,
|
||||
.ops = &(struct clk_ops) {
|
||||
.get_rate = s3c2412_getrate_usbsrc,
|
||||
.set_rate = s3c2412_setrate_usbsrc,
|
||||
@ -228,7 +222,6 @@ static int s3c2412_setparent_msysclk(struct clk *clk, struct clk *parent)
|
||||
|
||||
static struct clk clk_msysclk = {
|
||||
.name = "msysclk",
|
||||
.id = -1,
|
||||
.ops = &(struct clk_ops) {
|
||||
.set_parent = s3c2412_setparent_msysclk,
|
||||
},
|
||||
@ -268,7 +261,6 @@ static int s3c2412_setparent_armclk(struct clk *clk, struct clk *parent)
|
||||
|
||||
static struct clk clk_armclk = {
|
||||
.name = "armclk",
|
||||
.id = -1,
|
||||
.parent = &clk_msysclk,
|
||||
.ops = &(struct clk_ops) {
|
||||
.set_parent = s3c2412_setparent_armclk,
|
||||
@ -344,7 +336,6 @@ static int s3c2412_setrate_uart(struct clk *clk, unsigned long rate)
|
||||
|
||||
static struct clk clk_uart = {
|
||||
.name = "uartclk",
|
||||
.id = -1,
|
||||
.ops = &(struct clk_ops) {
|
||||
.get_rate = s3c2412_getrate_uart,
|
||||
.set_rate = s3c2412_setrate_uart,
|
||||
@ -397,7 +388,6 @@ static int s3c2412_setrate_i2s(struct clk *clk, unsigned long rate)
|
||||
|
||||
static struct clk clk_i2s = {
|
||||
.name = "i2sclk",
|
||||
.id = -1,
|
||||
.ops = &(struct clk_ops) {
|
||||
.get_rate = s3c2412_getrate_i2s,
|
||||
.set_rate = s3c2412_setrate_i2s,
|
||||
@ -449,7 +439,6 @@ static int s3c2412_setrate_cam(struct clk *clk, unsigned long rate)
|
||||
|
||||
static struct clk clk_cam = {
|
||||
.name = "camif-upll", /* same as 2440 name */
|
||||
.id = -1,
|
||||
.ops = &(struct clk_ops) {
|
||||
.get_rate = s3c2412_getrate_cam,
|
||||
.set_rate = s3c2412_setrate_cam,
|
||||
@ -463,37 +452,31 @@ static struct clk clk_cam = {
|
||||
static struct clk init_clocks_disable[] = {
|
||||
{
|
||||
.name = "nand",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_NAND,
|
||||
}, {
|
||||
.name = "sdi",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_SDI,
|
||||
}, {
|
||||
.name = "adc",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_ADC,
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_IIC,
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_IIS,
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_SPI,
|
||||
@ -503,96 +486,83 @@ static struct clk init_clocks_disable[] = {
|
||||
static struct clk init_clocks[] = {
|
||||
{
|
||||
.name = "dma",
|
||||
.id = 0,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_DMA0,
|
||||
}, {
|
||||
.name = "dma",
|
||||
.id = 1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_DMA1,
|
||||
}, {
|
||||
.name = "dma",
|
||||
.id = 2,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_DMA2,
|
||||
}, {
|
||||
.name = "dma",
|
||||
.id = 3,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_DMA3,
|
||||
}, {
|
||||
.name = "lcd",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_LCDC,
|
||||
}, {
|
||||
.name = "gpio",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_GPIO,
|
||||
}, {
|
||||
.name = "usb-host",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_USBH,
|
||||
}, {
|
||||
.name = "usb-device",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_USBD,
|
||||
}, {
|
||||
.name = "timers",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_PWMT,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 0,
|
||||
.devname = "s3c2412-uart.0",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_UART0,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 1,
|
||||
.devname = "s3c2412-uart.1",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_UART1,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 2,
|
||||
.devname = "s3c2412-uart.2",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_UART2,
|
||||
}, {
|
||||
.name = "rtc",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_RTC,
|
||||
}, {
|
||||
.name = "watchdog",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.ctrlbit = 0,
|
||||
}, {
|
||||
.name = "usb-bus-gadget",
|
||||
.id = -1,
|
||||
.parent = &clk_usb_bus,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_USB_DEV48,
|
||||
}, {
|
||||
.name = "usb-bus-host",
|
||||
.id = -1,
|
||||
.parent = &clk_usb_bus,
|
||||
.enable = s3c2412_clkcon_enable,
|
||||
.ctrlbit = S3C2412_CLKCON_USB_HOST48,
|
||||
|
@ -42,7 +42,7 @@ static struct clksrc_clk hsmmc_div[] = {
|
||||
[0] = {
|
||||
.clk = {
|
||||
.name = "hsmmc-div",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_esysclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S3C2416_CLKDIV2, .size = 2, .shift = 6 },
|
||||
@ -50,7 +50,7 @@ static struct clksrc_clk hsmmc_div[] = {
|
||||
[1] = {
|
||||
.clk = {
|
||||
.name = "hsmmc-div",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_esysclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S3C2443_CLKDIV1, .size = 2, .shift = 6 },
|
||||
@ -60,8 +60,8 @@ static struct clksrc_clk hsmmc_div[] = {
|
||||
static struct clksrc_clk hsmmc_mux[] = {
|
||||
[0] = {
|
||||
.clk = {
|
||||
.id = 0,
|
||||
.name = "hsmmc-if",
|
||||
.devname = "s3c-sdhci.0",
|
||||
.ctrlbit = (1 << 6),
|
||||
.enable = s3c2443_clkcon_enable_s,
|
||||
},
|
||||
@ -76,8 +76,8 @@ static struct clksrc_clk hsmmc_mux[] = {
|
||||
},
|
||||
[1] = {
|
||||
.clk = {
|
||||
.id = 1,
|
||||
.name = "hsmmc-if",
|
||||
.devname = "s3c-sdhci.1",
|
||||
.ctrlbit = (1 << 12),
|
||||
.enable = s3c2443_clkcon_enable_s,
|
||||
},
|
||||
@ -94,7 +94,7 @@ static struct clksrc_clk hsmmc_mux[] = {
|
||||
|
||||
static struct clk hsmmc0_clk = {
|
||||
.name = "hsmmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2416_HCLKCON_HSMMC0,
|
||||
|
@ -90,14 +90,12 @@ static int s3c2440_camif_upll_setrate(struct clk *clk, unsigned long rate)
|
||||
|
||||
static struct clk s3c2440_clk_cam = {
|
||||
.name = "camif",
|
||||
.id = -1,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2440_CLKCON_CAMERA,
|
||||
};
|
||||
|
||||
static struct clk s3c2440_clk_cam_upll = {
|
||||
.name = "camif-upll",
|
||||
.id = -1,
|
||||
.ops = &(struct clk_ops) {
|
||||
.set_rate = s3c2440_camif_upll_setrate,
|
||||
.round_rate = s3c2440_camif_upll_round,
|
||||
@ -106,7 +104,6 @@ static struct clk s3c2440_clk_cam_upll = {
|
||||
|
||||
static struct clk s3c2440_clk_ac97 = {
|
||||
.name = "ac97",
|
||||
.id = -1,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2440_CLKCON_CAMERA,
|
||||
};
|
||||
|
@ -552,7 +552,7 @@ struct mini2440_features_t {
|
||||
struct platform_device *optional[8];
|
||||
};
|
||||
|
||||
static void mini2440_parse_features(
|
||||
static void __init mini2440_parse_features(
|
||||
struct mini2440_features_t * features,
|
||||
const char * features_str )
|
||||
{
|
||||
|
@ -59,7 +59,6 @@
|
||||
|
||||
static struct clk clk_i2s_ext = {
|
||||
.name = "i2s-ext",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
/* armdiv
|
||||
@ -139,7 +138,6 @@ static int s3c2443_armclk_setrate(struct clk *clk, unsigned long rate)
|
||||
|
||||
static struct clk clk_armdiv = {
|
||||
.name = "armdiv",
|
||||
.id = -1,
|
||||
.parent = &clk_msysclk.clk,
|
||||
.ops = &(struct clk_ops) {
|
||||
.round_rate = s3c2443_armclk_roundrate,
|
||||
@ -160,7 +158,6 @@ static struct clk *clk_arm_sources[] = {
|
||||
static struct clksrc_clk clk_arm = {
|
||||
.clk = {
|
||||
.name = "armclk",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &(struct clksrc_sources) {
|
||||
.sources = clk_arm_sources,
|
||||
@ -177,7 +174,6 @@ static struct clksrc_clk clk_arm = {
|
||||
static struct clksrc_clk clk_hsspi = {
|
||||
.clk = {
|
||||
.name = "hsspi",
|
||||
.id = -1,
|
||||
.parent = &clk_esysclk.clk,
|
||||
.ctrlbit = S3C2443_SCLKCON_HSSPICLK,
|
||||
.enable = s3c2443_clkcon_enable_s,
|
||||
@ -196,7 +192,7 @@ static struct clksrc_clk clk_hsspi = {
|
||||
static struct clksrc_clk clk_hsmmc_div = {
|
||||
.clk = {
|
||||
.name = "hsmmc-div",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_esysclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S3C2443_CLKDIV1, .size = 2, .shift = 6 },
|
||||
@ -231,7 +227,7 @@ static int s3c2443_enable_hsmmc(struct clk *clk, int enable)
|
||||
|
||||
static struct clk clk_hsmmc = {
|
||||
.name = "hsmmc-if",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_hsmmc_div.clk,
|
||||
.enable = s3c2443_enable_hsmmc,
|
||||
.ops = &(struct clk_ops) {
|
||||
@ -248,7 +244,6 @@ static struct clk clk_hsmmc = {
|
||||
static struct clksrc_clk clk_i2s_eplldiv = {
|
||||
.clk = {
|
||||
.name = "i2s-eplldiv",
|
||||
.id = -1,
|
||||
.parent = &clk_esysclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S3C2443_CLKDIV1, .size = 4, .shift = 12, },
|
||||
@ -271,7 +266,6 @@ struct clk *clk_i2s_srclist[] = {
|
||||
static struct clksrc_clk clk_i2s = {
|
||||
.clk = {
|
||||
.name = "i2s-if",
|
||||
.id = -1,
|
||||
.ctrlbit = S3C2443_SCLKCON_I2SCLK,
|
||||
.enable = s3c2443_clkcon_enable_s,
|
||||
|
||||
@ -288,25 +282,23 @@ static struct clksrc_clk clk_i2s = {
|
||||
static struct clk init_clocks_off[] = {
|
||||
{
|
||||
.name = "sdi",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_SDI,
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_IIS,
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 0,
|
||||
.devname = "s3c2410-spi.0",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_SPI0,
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 1,
|
||||
.devname = "s3c2410-spi.1",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_SPI1,
|
||||
|
@ -142,6 +142,7 @@ config MACH_SMDK6410
|
||||
select S3C_DEV_USB_HOST
|
||||
select S3C_DEV_USB_HSOTG
|
||||
select S3C_DEV_WDT
|
||||
select SAMSUNG_DEV_BACKLIGHT
|
||||
select SAMSUNG_DEV_KEYPAD
|
||||
select SAMSUNG_DEV_PWM
|
||||
select HAVE_S3C2410_WATCHDOG if WATCHDOG
|
||||
|
@ -39,7 +39,6 @@
|
||||
|
||||
static struct clk clk_ext_xtal_mux = {
|
||||
.name = "ext_xtal",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
#define clk_fin_apll clk_ext_xtal_mux
|
||||
@ -51,13 +50,11 @@ static struct clk clk_ext_xtal_mux = {
|
||||
|
||||
struct clk clk_h2 = {
|
||||
.name = "hclk2",
|
||||
.id = -1,
|
||||
.rate = 0,
|
||||
};
|
||||
|
||||
struct clk clk_27m = {
|
||||
.name = "clk_27m",
|
||||
.id = -1,
|
||||
.rate = 27000000,
|
||||
};
|
||||
|
||||
@ -83,14 +80,12 @@ static int clk_48m_ctrl(struct clk *clk, int enable)
|
||||
|
||||
struct clk clk_48m = {
|
||||
.name = "clk_48m",
|
||||
.id = -1,
|
||||
.rate = 48000000,
|
||||
.enable = clk_48m_ctrl,
|
||||
};
|
||||
|
||||
struct clk clk_xusbxti = {
|
||||
.name = "xusbxti",
|
||||
.id = -1,
|
||||
.rate = 48000000,
|
||||
};
|
||||
|
||||
@ -130,109 +125,101 @@ int s3c64xx_sclk_ctrl(struct clk *clk, int enable)
|
||||
static struct clk init_clocks_off[] = {
|
||||
{
|
||||
.name = "nand",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
}, {
|
||||
.name = "rtc",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_RTC,
|
||||
}, {
|
||||
.name = "adc",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_TSADC,
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_IIC,
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 1,
|
||||
.devname = "s3c2440-i2c.1",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C6410_CLKCON_PCLK_I2C1,
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 0,
|
||||
.devname = "samsung-i2s.0",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_IIS0,
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 1,
|
||||
.devname = "samsung-i2s.1",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_IIS1,
|
||||
}, {
|
||||
#ifdef CONFIG_CPU_S3C6410
|
||||
.name = "iis",
|
||||
.id = -1, /* There's only one IISv4 port */
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C6410_CLKCON_PCLK_IIS2,
|
||||
}, {
|
||||
#endif
|
||||
.name = "keypad",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_KEYPAD,
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_SPI0,
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_SPI1,
|
||||
}, {
|
||||
.name = "spi_48m",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.parent = &clk_48m,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_SCLK_SPI0_48,
|
||||
}, {
|
||||
.name = "spi_48m",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.parent = &clk_48m,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_SCLK_SPI1_48,
|
||||
}, {
|
||||
.name = "48m",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_48m,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_SCLK_MMC0_48,
|
||||
}, {
|
||||
.name = "48m",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_48m,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_SCLK_MMC1_48,
|
||||
}, {
|
||||
.name = "48m",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.parent = &clk_48m,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_SCLK_MMC2_48,
|
||||
}, {
|
||||
.name = "dma0",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c64xx_hclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_HCLK_DMA0,
|
||||
}, {
|
||||
.name = "dma1",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c64xx_hclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_HCLK_DMA1,
|
||||
@ -242,89 +229,81 @@ static struct clk init_clocks_off[] = {
|
||||
static struct clk init_clocks[] = {
|
||||
{
|
||||
.name = "lcd",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c64xx_hclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_HCLK_LCD,
|
||||
}, {
|
||||
.name = "gpio",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_GPIO,
|
||||
}, {
|
||||
.name = "usb-host",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c64xx_hclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_HCLK_UHOST,
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_h,
|
||||
.enable = s3c64xx_hclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_HCLK_HSMMC0,
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_h,
|
||||
.enable = s3c64xx_hclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_HCLK_HSMMC1,
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.parent = &clk_h,
|
||||
.enable = s3c64xx_hclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_HCLK_HSMMC2,
|
||||
}, {
|
||||
.name = "otg",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c64xx_hclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_HCLK_USB,
|
||||
}, {
|
||||
.name = "timers",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_PWM,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 0,
|
||||
.devname = "s3c6400-uart.0",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_UART0,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 1,
|
||||
.devname = "s3c6400-uart.1",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_UART1,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 2,
|
||||
.devname = "s3c6400-uart.2",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_UART2,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 3,
|
||||
.devname = "s3c6400-uart.3",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c64xx_pclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_UART3,
|
||||
}, {
|
||||
.name = "watchdog",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_WDT,
|
||||
}, {
|
||||
.name = "ac97",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.ctrlbit = S3C_CLKCON_PCLK_AC97,
|
||||
}, {
|
||||
.name = "cfcon",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c64xx_hclk_ctrl,
|
||||
.ctrlbit = S3C_CLKCON_HCLK_IHOST,
|
||||
@ -334,7 +313,6 @@ static struct clk init_clocks[] = {
|
||||
|
||||
static struct clk clk_fout_apll = {
|
||||
.name = "fout_apll",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk *clk_src_apll_list[] = {
|
||||
@ -350,7 +328,6 @@ static struct clksrc_sources clk_src_apll = {
|
||||
static struct clksrc_clk clk_mout_apll = {
|
||||
.clk = {
|
||||
.name = "mout_apll",
|
||||
.id = -1,
|
||||
},
|
||||
.reg_src = { .reg = S3C_CLK_SRC, .shift = 0, .size = 1 },
|
||||
.sources = &clk_src_apll,
|
||||
@ -369,7 +346,6 @@ static struct clksrc_sources clk_src_epll = {
|
||||
static struct clksrc_clk clk_mout_epll = {
|
||||
.clk = {
|
||||
.name = "mout_epll",
|
||||
.id = -1,
|
||||
},
|
||||
.reg_src = { .reg = S3C_CLK_SRC, .shift = 2, .size = 1 },
|
||||
.sources = &clk_src_epll,
|
||||
@ -388,7 +364,6 @@ static struct clksrc_sources clk_src_mpll = {
|
||||
static struct clksrc_clk clk_mout_mpll = {
|
||||
.clk = {
|
||||
.name = "mout_mpll",
|
||||
.id = -1,
|
||||
},
|
||||
.reg_src = { .reg = S3C_CLK_SRC, .shift = 1, .size = 1 },
|
||||
.sources = &clk_src_mpll,
|
||||
@ -446,7 +421,6 @@ static int s3c64xx_clk_arm_set_rate(struct clk *clk, unsigned long rate)
|
||||
|
||||
static struct clk clk_arm = {
|
||||
.name = "armclk",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_apll.clk,
|
||||
.ops = &(struct clk_ops) {
|
||||
.get_rate = s3c64xx_clk_arm_get_rate,
|
||||
@ -473,7 +447,6 @@ static struct clk_ops clk_dout_ops = {
|
||||
|
||||
static struct clk clk_dout_mpll = {
|
||||
.name = "dout_mpll",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_mpll.clk,
|
||||
.ops = &clk_dout_ops,
|
||||
};
|
||||
@ -540,22 +513,18 @@ static struct clksrc_sources clkset_uhost = {
|
||||
|
||||
static struct clk clk_iis_cd0 = {
|
||||
.name = "iis_cdclk0",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_iis_cd1 = {
|
||||
.name = "iis_cdclk1",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_iisv4_cd = {
|
||||
.name = "iis_cdclk_v4",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_pcm_cd = {
|
||||
.name = "pcm_cdclk",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk *clkset_audio0_list[] = {
|
||||
@ -610,7 +579,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
{
|
||||
.clk = {
|
||||
.name = "mmc_bus",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.ctrlbit = S3C_CLKCON_SCLK_MMC0,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
@ -620,7 +589,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "mmc_bus",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.ctrlbit = S3C_CLKCON_SCLK_MMC1,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
@ -630,7 +599,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "mmc_bus",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.ctrlbit = S3C_CLKCON_SCLK_MMC2,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
@ -640,7 +609,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "usb-bus-host",
|
||||
.id = -1,
|
||||
.ctrlbit = S3C_CLKCON_SCLK_UHOST,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
@ -650,7 +618,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = -1,
|
||||
.ctrlbit = S3C_CLKCON_SCLK_UART,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
@ -661,7 +628,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
/* Where does UCLK0 come from? */
|
||||
.clk = {
|
||||
.name = "spi-bus",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.ctrlbit = S3C_CLKCON_SCLK_SPI0,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
@ -671,8 +638,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "spi-bus",
|
||||
.id = 1,
|
||||
.ctrlbit = S3C_CLKCON_SCLK_SPI1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
.reg_src = { .reg = S3C_CLK_SRC, .shift = 16, .size = 2 },
|
||||
@ -681,7 +647,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "audio-bus",
|
||||
.id = 0,
|
||||
.devname = "samsung-i2s.0",
|
||||
.ctrlbit = S3C_CLKCON_SCLK_AUDIO0,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
@ -691,7 +657,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "audio-bus",
|
||||
.id = 1,
|
||||
.devname = "samsung-i2s.1",
|
||||
.ctrlbit = S3C_CLKCON_SCLK_AUDIO1,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
@ -701,7 +667,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "audio-bus",
|
||||
.id = 2,
|
||||
.devname = "samsung-i2s.2",
|
||||
.ctrlbit = S3C6410_CLKCON_SCLK_AUDIO2,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
@ -711,7 +677,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "irda-bus",
|
||||
.id = 0,
|
||||
.ctrlbit = S3C_CLKCON_SCLK_IRDA,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
@ -721,7 +686,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "camera",
|
||||
.id = -1,
|
||||
.ctrlbit = S3C_CLKCON_SCLK_CAM,
|
||||
.enable = s3c64xx_sclk_ctrl,
|
||||
},
|
||||
|
@ -19,6 +19,8 @@
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/map.h>
|
||||
|
||||
#include <plat/devs.h>
|
||||
|
||||
static struct resource s3c64xx_onenand1_resources[] = {
|
||||
[0] = {
|
||||
.start = S3C64XX_PA_ONENAND1,
|
||||
@ -46,10 +48,6 @@ struct platform_device s3c64xx_device_onenand1 = {
|
||||
|
||||
void s3c64xx_onenand1_set_platdata(struct onenand_platform_data *pdata)
|
||||
{
|
||||
struct onenand_platform_data *pd;
|
||||
|
||||
pd = kmemdup(pdata, sizeof(struct onenand_platform_data), GFP_KERNEL);
|
||||
if (!pd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
s3c64xx_device_onenand1.dev.platform_data = pd;
|
||||
s3c_set_platdata(pdata, sizeof(struct onenand_platform_data),
|
||||
&s3c64xx_device_onenand1);
|
||||
}
|
||||
|
@ -88,6 +88,7 @@ static struct s3c64xx_spi_info s3c64xx_spi0_pdata = {
|
||||
.cfg_gpio = s3c64xx_spi_cfg_gpio,
|
||||
.fifo_lvl_mask = 0x7f,
|
||||
.rx_lvl_offset = 13,
|
||||
.tx_st_done = 21,
|
||||
};
|
||||
|
||||
static u64 spi_dmamask = DMA_BIT_MASK(32);
|
||||
@ -132,6 +133,7 @@ static struct s3c64xx_spi_info s3c64xx_spi1_pdata = {
|
||||
.cfg_gpio = s3c64xx_spi_cfg_gpio,
|
||||
.fifo_lvl_mask = 0x7f,
|
||||
.rx_lvl_offset = 13,
|
||||
.tx_st_done = 21,
|
||||
};
|
||||
|
||||
struct platform_device s3c64xx_device_spi1 = {
|
||||
|
7
arch/arm/mach-s3c64xx/include/mach/clkdev.h
Normal file
7
arch/arm/mach-s3c64xx/include/mach/clkdev.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef __MACH_CLKDEV_H__
|
||||
#define __MACH_CLKDEV_H__
|
||||
|
||||
#define __clk_get(clk) ({ 1; })
|
||||
#define __clk_put(clk) do {} while (0)
|
||||
|
||||
#endif
|
@ -1,21 +0,0 @@
|
||||
/*
|
||||
* Copyright 2008 Openmoko, Inc.
|
||||
* Copyright 2008 Simtec Electronics
|
||||
* Copyright 2009 Samsung Electronics Co.
|
||||
*
|
||||
* Pawel Osciak <p.osciak@samsung.com>
|
||||
* Based on plat-s3c/include/plat/regs-fb.h by Ben Dooks <ben@simtec.co.uk>
|
||||
*
|
||||
* Framebuffer register definitions for Samsung S3C64xx.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_MACH_REGS_FB_H
|
||||
#define __ASM_ARCH_MACH_REGS_FB_H __FILE__
|
||||
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
#endif /* __ASM_ARCH_MACH_REGS_FB_H */
|
@ -35,7 +35,6 @@
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/map.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
@ -44,6 +43,7 @@
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/iic.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
#include <mach/s3c6410.h>
|
||||
#include <plat/clock.h>
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/map.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
@ -42,6 +41,7 @@
|
||||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
#define UCON S3C2410_UCON_DEFAULT
|
||||
#define ULCON (S3C2410_LCON_CS8 | S3C2410_LCON_PNONE)
|
||||
|
@ -29,7 +29,6 @@
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
#include <mach/regs-modem.h>
|
||||
#include <mach/regs-srom.h>
|
||||
@ -42,6 +41,7 @@
|
||||
#include <plat/nand.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/ts.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
#include <video/platform_lcd.h>
|
||||
|
||||
|
@ -30,7 +30,6 @@
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/map.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
@ -44,6 +43,7 @@
|
||||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
#define UCON S3C2410_UCON_DEFAULT
|
||||
#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE
|
||||
|
@ -30,7 +30,6 @@
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
#include <mach/regs-modem.h>
|
||||
#include <mach/regs-srom.h>
|
||||
@ -43,6 +42,7 @@
|
||||
#include <plat/nand.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/ts.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
#include <video/platform_lcd.h>
|
||||
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
#include <mach/s3c6410.h>
|
||||
|
||||
@ -29,6 +28,7 @@
|
||||
#include <plat/devs.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
#include "mach-smartq.h"
|
||||
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
#include <mach/s3c6410.h>
|
||||
|
||||
@ -29,6 +28,7 @@
|
||||
#include <plat/devs.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
#include "mach-smartq.h"
|
||||
|
||||
|
@ -48,7 +48,6 @@
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/map.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
@ -71,6 +70,8 @@
|
||||
#include <plat/adc.h>
|
||||
#include <plat/ts.h>
|
||||
#include <plat/keypad.h>
|
||||
#include <plat/backlight.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
#define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK
|
||||
#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
|
||||
@ -209,17 +210,9 @@ static struct platform_device smdk6410_smsc911x = {
|
||||
};
|
||||
|
||||
#ifdef CONFIG_REGULATOR
|
||||
static struct regulator_consumer_supply smdk6410_b_pwr_5v_consumers[] = {
|
||||
{
|
||||
/* WM8580 */
|
||||
.supply = "PVDD",
|
||||
.dev_name = "0-001b",
|
||||
},
|
||||
{
|
||||
/* WM8580 */
|
||||
.supply = "AVDD",
|
||||
.dev_name = "0-001b",
|
||||
},
|
||||
static struct regulator_consumer_supply smdk6410_b_pwr_5v_consumers[] __initdata = {
|
||||
REGULATOR_SUPPLY("PVDD", "0-001b"),
|
||||
REGULATOR_SUPPLY("AVDD", "0-001b"),
|
||||
};
|
||||
|
||||
static struct regulator_init_data smdk6410_b_pwr_5v_data = {
|
||||
@ -337,16 +330,12 @@ static struct platform_device *smdk6410_devices[] __initdata = {
|
||||
&s3c_device_rtc,
|
||||
&s3c_device_ts,
|
||||
&s3c_device_wdt,
|
||||
&s3c_device_timer[1],
|
||||
&smdk6410_backlight_device,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_REGULATOR
|
||||
/* ARM core */
|
||||
static struct regulator_consumer_supply smdk6410_vddarm_consumers[] = {
|
||||
{
|
||||
.supply = "vddarm",
|
||||
}
|
||||
REGULATOR_SUPPLY("vddarm", NULL),
|
||||
};
|
||||
|
||||
/* VDDARM, BUCK1 on J5 */
|
||||
@ -484,11 +473,7 @@ static struct regulator_init_data wm8350_dcdc3_data = {
|
||||
|
||||
/* USB, EXT, PCM, ADC/DAC, USB, MMC */
|
||||
static struct regulator_consumer_supply wm8350_dcdc4_consumers[] = {
|
||||
{
|
||||
/* WM8580 */
|
||||
.supply = "DVDD",
|
||||
.dev_name = "0-001b",
|
||||
},
|
||||
REGULATOR_SUPPLY("DVDD", "0-001b"),
|
||||
};
|
||||
|
||||
static struct regulator_init_data wm8350_dcdc4_data = {
|
||||
@ -599,7 +584,7 @@ static struct regulator_init_data wm1192_dcdc3 = {
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply wm1192_ldo1_consumers[] = {
|
||||
{ .supply = "DVDD", .dev_name = "0-001b", }, /* WM8580 */
|
||||
REGULATOR_SUPPLY("DVDD", "0-001b"), /* WM8580 */
|
||||
};
|
||||
|
||||
static struct regulator_init_data wm1192_ldo1 = {
|
||||
@ -679,6 +664,16 @@ static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdk6410_bl_gpio_info = {
|
||||
.no = S3C64XX_GPF(15),
|
||||
.func = S3C_GPIO_SFN(2),
|
||||
};
|
||||
|
||||
static struct platform_pwm_backlight_data smdk6410_bl_data = {
|
||||
.pwm_id = 1,
|
||||
};
|
||||
|
||||
static void __init smdk6410_map_io(void)
|
||||
{
|
||||
u32 tmp;
|
||||
@ -740,6 +735,8 @@ static void __init smdk6410_machine_init(void)
|
||||
|
||||
s3c_ide_set_platdata(&smdk6410_ide_pdata);
|
||||
|
||||
samsung_bl_set(&smdk6410_bl_gpio_info, &smdk6410_bl_data);
|
||||
|
||||
platform_add_devices(smdk6410_devices, ARRAY_SIZE(smdk6410_devices));
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include <linux/fb.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <mach/regs-fb.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
|
||||
|
@ -36,6 +36,7 @@ config MACH_SMDK6440
|
||||
select S3C_DEV_WDT
|
||||
select S3C64XX_DEV_SPI
|
||||
select SAMSUNG_DEV_ADC
|
||||
select SAMSUNG_DEV_BACKLIGHT
|
||||
select SAMSUNG_DEV_PWM
|
||||
select SAMSUNG_DEV_TS
|
||||
select S5P64X0_SETUP_I2C1
|
||||
@ -50,6 +51,7 @@ config MACH_SMDK6450
|
||||
select S3C_DEV_WDT
|
||||
select S3C64XX_DEV_SPI
|
||||
select SAMSUNG_DEV_ADC
|
||||
select SAMSUNG_DEV_BACKLIGHT
|
||||
select SAMSUNG_DEV_PWM
|
||||
select SAMSUNG_DEV_TS
|
||||
select S5P64X0_SETUP_I2C1
|
||||
|
@ -95,7 +95,6 @@ static struct clk_ops s5p6440_epll_ops = {
|
||||
static struct clksrc_clk clk_hclk = {
|
||||
.clk = {
|
||||
.name = "clk_hclk",
|
||||
.id = -1,
|
||||
.parent = &clk_armclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P64X0_CLK_DIV0, .shift = 8, .size = 4 },
|
||||
@ -104,7 +103,6 @@ static struct clksrc_clk clk_hclk = {
|
||||
static struct clksrc_clk clk_pclk = {
|
||||
.clk = {
|
||||
.name = "clk_pclk",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P64X0_CLK_DIV0, .shift = 12, .size = 4 },
|
||||
@ -112,7 +110,6 @@ static struct clksrc_clk clk_pclk = {
|
||||
static struct clksrc_clk clk_hclk_low = {
|
||||
.clk = {
|
||||
.name = "clk_hclk_low",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_hclk_low,
|
||||
.reg_src = { .reg = S5P64X0_SYS_OTHERS, .shift = 6, .size = 1 },
|
||||
@ -122,7 +119,6 @@ static struct clksrc_clk clk_hclk_low = {
|
||||
static struct clksrc_clk clk_pclk_low = {
|
||||
.clk = {
|
||||
.name = "clk_pclk_low",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_low.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P64X0_CLK_DIV3, .shift = 12, .size = 4 },
|
||||
@ -136,187 +132,167 @@ static struct clksrc_clk clk_pclk_low = {
|
||||
static struct clk init_clocks_off[] = {
|
||||
{
|
||||
.name = "nand",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk.clk,
|
||||
.enable = s5p64x0_mem_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "post",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 5)
|
||||
}, {
|
||||
.name = "2d",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
}, {
|
||||
.name = "pdma",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 17),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 18),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 19),
|
||||
}, {
|
||||
.name = "otg",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 20)
|
||||
}, {
|
||||
.name = "irom",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 25),
|
||||
}, {
|
||||
.name = "lcd",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk1_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "hclk_fimgvg",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk.clk,
|
||||
.enable = s5p64x0_hclk1_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "tsi",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk1_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "watchdog",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "rtc",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
}, {
|
||||
.name = "timers",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "pcm",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
}, {
|
||||
.name = "adc",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 17),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 21),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 22),
|
||||
}, {
|
||||
.name = "gps",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 25),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 0,
|
||||
.devname = "samsung-i2s.0",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 26),
|
||||
}, {
|
||||
.name = "dsim",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 28),
|
||||
}, {
|
||||
.name = "etm",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 29),
|
||||
}, {
|
||||
.name = "dmc0",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 30),
|
||||
}, {
|
||||
.name = "pclk_fimgvg",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 31),
|
||||
}, {
|
||||
.name = "sclk_spi_48",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.parent = &clk_48m,
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
.ctrlbit = (1 << 22),
|
||||
}, {
|
||||
.name = "sclk_spi_48",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.parent = &clk_48m,
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
.ctrlbit = (1 << 23),
|
||||
}, {
|
||||
.name = "mmc_48m",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_48m,
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
.ctrlbit = (1 << 27),
|
||||
}, {
|
||||
.name = "mmc_48m",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_48m,
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
.ctrlbit = (1 << 28),
|
||||
}, {
|
||||
.name = "mmc_48m",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.parent = &clk_48m,
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
.ctrlbit = (1 << 29),
|
||||
@ -329,43 +305,40 @@ static struct clk init_clocks_off[] = {
|
||||
static struct clk init_clocks[] = {
|
||||
{
|
||||
.name = "intc",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "mem",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 21),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 0,
|
||||
.devname = "s3c6400-uart.0",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 1,
|
||||
.devname = "s3c6400-uart.1",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 2,
|
||||
.devname = "s3c6400-uart.2",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 3,
|
||||
.devname = "s3c6400-uart.3",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "gpio",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 18),
|
||||
@ -374,12 +347,10 @@ static struct clk init_clocks[] = {
|
||||
|
||||
static struct clk clk_iis_cd_v40 = {
|
||||
.name = "iis_cdclk_v40",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_pcm_cd = {
|
||||
.name = "pcm_cdclk",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk *clkset_group1_list[] = {
|
||||
@ -420,7 +391,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
{
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.ctrlbit = (1 << 24),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -430,7 +401,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.ctrlbit = (1 << 25),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -440,7 +411,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.ctrlbit = (1 << 26),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -450,7 +421,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 5),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -460,7 +430,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.ctrlbit = (1 << 20),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -470,7 +440,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.ctrlbit = (1 << 21),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -480,7 +450,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_post",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 10),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -490,7 +459,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_dispcon",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 1),
|
||||
.enable = s5p64x0_sclk1_ctrl,
|
||||
},
|
||||
@ -500,7 +468,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimgvg",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 2),
|
||||
.enable = s5p64x0_sclk1_ctrl,
|
||||
},
|
||||
@ -510,7 +477,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_audio2",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 11),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
|
@ -36,7 +36,6 @@
|
||||
static struct clksrc_clk clk_mout_dpll = {
|
||||
.clk = {
|
||||
.name = "mout_dpll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_dpll,
|
||||
.reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 5, .size = 1 },
|
||||
@ -96,7 +95,6 @@ static struct clk_ops s5p6450_epll_ops = {
|
||||
static struct clksrc_clk clk_dout_epll = {
|
||||
.clk = {
|
||||
.name = "dout_epll",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_epll.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P64X0_CLK_DIV1, .shift = 24, .size = 4 },
|
||||
@ -105,7 +103,6 @@ static struct clksrc_clk clk_dout_epll = {
|
||||
static struct clksrc_clk clk_mout_hclk_sel = {
|
||||
.clk = {
|
||||
.name = "mout_hclk_sel",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_hclk_low,
|
||||
.reg_src = { .reg = S5P64X0_OTHERS, .shift = 15, .size = 1 },
|
||||
@ -124,7 +121,6 @@ static struct clksrc_sources clkset_hclk = {
|
||||
static struct clksrc_clk clk_hclk = {
|
||||
.clk = {
|
||||
.name = "clk_hclk",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_hclk,
|
||||
.reg_src = { .reg = S5P64X0_OTHERS, .shift = 14, .size = 1 },
|
||||
@ -134,7 +130,6 @@ static struct clksrc_clk clk_hclk = {
|
||||
static struct clksrc_clk clk_pclk = {
|
||||
.clk = {
|
||||
.name = "clk_pclk",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P64X0_CLK_DIV0, .shift = 12, .size = 4 },
|
||||
@ -142,7 +137,6 @@ static struct clksrc_clk clk_pclk = {
|
||||
static struct clksrc_clk clk_dout_pwm_ratio0 = {
|
||||
.clk = {
|
||||
.name = "clk_dout_pwm_ratio0",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_hclk_sel.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P64X0_CLK_DIV3, .shift = 16, .size = 4 },
|
||||
@ -151,7 +145,6 @@ static struct clksrc_clk clk_dout_pwm_ratio0 = {
|
||||
static struct clksrc_clk clk_pclk_to_wdt_pwm = {
|
||||
.clk = {
|
||||
.name = "clk_pclk_to_wdt_pwm",
|
||||
.id = -1,
|
||||
.parent = &clk_dout_pwm_ratio0.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P64X0_CLK_DIV3, .shift = 20, .size = 4 },
|
||||
@ -160,7 +153,6 @@ static struct clksrc_clk clk_pclk_to_wdt_pwm = {
|
||||
static struct clksrc_clk clk_hclk_low = {
|
||||
.clk = {
|
||||
.name = "clk_hclk_low",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_hclk_low,
|
||||
.reg_src = { .reg = S5P64X0_OTHERS, .shift = 6, .size = 1 },
|
||||
@ -170,7 +162,6 @@ static struct clksrc_clk clk_hclk_low = {
|
||||
static struct clksrc_clk clk_pclk_low = {
|
||||
.clk = {
|
||||
.name = "clk_pclk_low",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_low.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P64X0_CLK_DIV3, .shift = 12, .size = 4 },
|
||||
@ -184,109 +175,101 @@ static struct clksrc_clk clk_pclk_low = {
|
||||
static struct clk init_clocks_off[] = {
|
||||
{
|
||||
.name = "usbhost",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "pdma",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 17),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 18),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 19),
|
||||
}, {
|
||||
.name = "usbotg",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_low.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 20),
|
||||
}, {
|
||||
.name = "lcd",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s5p64x0_hclk1_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "watchdog",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "rtc",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
}, {
|
||||
.name = "adc",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 0,
|
||||
.devname = "s3c2440-i2c.0",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 17),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 21),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 22),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 0,
|
||||
.devname = "samsung-i2s.0",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 26),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 1,
|
||||
.devname = "samsung-i2s.1",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 15),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 2,
|
||||
.devname = "samsung-i2s.2",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 16),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 1,
|
||||
.devname = "s3c2440-i2c.1",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 27),
|
||||
}, {
|
||||
.name = "dmc0",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 30),
|
||||
@ -299,49 +282,45 @@ static struct clk init_clocks_off[] = {
|
||||
static struct clk init_clocks[] = {
|
||||
{
|
||||
.name = "intc",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "mem",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk.clk,
|
||||
.enable = s5p64x0_hclk0_ctrl,
|
||||
.ctrlbit = (1 << 21),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 0,
|
||||
.devname = "s3c6400-uart.0",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 1,
|
||||
.devname = "s3c6400-uart.1",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 2,
|
||||
.devname = "s3c6400-uart.2",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 3,
|
||||
.devname = "s3c6400-uart.3",
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "timers",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_to_wdt_pwm.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "gpio",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_low.clk,
|
||||
.enable = s5p64x0_pclk_ctrl,
|
||||
.ctrlbit = (1 << 18),
|
||||
@ -421,7 +400,6 @@ static struct clksrc_sources clkset_sclk_audio0 = {
|
||||
static struct clksrc_clk clk_sclk_audio0 = {
|
||||
.clk = {
|
||||
.name = "audio-bus",
|
||||
.id = -1,
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
.parent = &clk_dout_epll.clk,
|
||||
@ -435,7 +413,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
{
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.ctrlbit = (1 << 24),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -445,7 +423,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.ctrlbit = (1 << 25),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -455,7 +433,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.ctrlbit = (1 << 26),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -465,7 +443,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 5),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -475,7 +452,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.ctrlbit = (1 << 20),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -485,7 +462,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.ctrlbit = (1 << 21),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -495,7 +472,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 10),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -505,7 +481,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "aclk_mali",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 2),
|
||||
.enable = s5p64x0_sclk1_ctrl,
|
||||
},
|
||||
@ -515,7 +490,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_2d",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 12),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -525,7 +499,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_usi",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 7),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -535,7 +508,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_camif",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 6),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
@ -545,7 +517,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_dispcon",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 1),
|
||||
.enable = s5p64x0_sclk1_ctrl,
|
||||
},
|
||||
@ -555,7 +526,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_hsmmc44",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 30),
|
||||
.enable = s5p64x0_sclk_ctrl,
|
||||
},
|
||||
|
@ -112,12 +112,14 @@ static struct s3c64xx_spi_info s5p6440_spi0_pdata = {
|
||||
.cfg_gpio = s5p6440_spi_cfg_gpio,
|
||||
.fifo_lvl_mask = 0x1ff,
|
||||
.rx_lvl_offset = 15,
|
||||
.tx_st_done = 25,
|
||||
};
|
||||
|
||||
static struct s3c64xx_spi_info s5p6450_spi0_pdata = {
|
||||
.cfg_gpio = s5p6450_spi_cfg_gpio,
|
||||
.fifo_lvl_mask = 0x1ff,
|
||||
.rx_lvl_offset = 15,
|
||||
.tx_st_done = 25,
|
||||
};
|
||||
|
||||
static u64 spi_dmamask = DMA_BIT_MASK(32);
|
||||
@ -160,12 +162,14 @@ static struct s3c64xx_spi_info s5p6440_spi1_pdata = {
|
||||
.cfg_gpio = s5p6440_spi_cfg_gpio,
|
||||
.fifo_lvl_mask = 0x7f,
|
||||
.rx_lvl_offset = 15,
|
||||
.tx_st_done = 25,
|
||||
};
|
||||
|
||||
static struct s3c64xx_spi_info s5p6450_spi1_pdata = {
|
||||
.cfg_gpio = s5p6450_spi_cfg_gpio,
|
||||
.fifo_lvl_mask = 0x7f,
|
||||
.rx_lvl_offset = 15,
|
||||
.tx_st_done = 25,
|
||||
};
|
||||
|
||||
struct platform_device s5p64x0_device_spi1 = {
|
||||
|
7
arch/arm/mach-s5p64x0/include/mach/clkdev.h
Normal file
7
arch/arm/mach-s5p64x0/include/mach/clkdev.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef __MACH_CLKDEV_H__
|
||||
#define __MACH_CLKDEV_H__
|
||||
|
||||
#define __clk_get(clk) ({ 1; })
|
||||
#define __clk_put(clk) do {} while (0)
|
||||
|
||||
#endif
|
@ -46,6 +46,7 @@
|
||||
#include <plat/adc.h>
|
||||
#include <plat/ts.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/backlight.h>
|
||||
|
||||
#define SMDK6440_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
|
||||
S3C2410_UCON_RXILEVEL | \
|
||||
@ -91,45 +92,6 @@ static struct s3c2410_uartcfg smdk6440_uartcfgs[] __initdata = {
|
||||
},
|
||||
};
|
||||
|
||||
static int smdk6440_backlight_init(struct device *dev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = gpio_request(S5P6440_GPF(15), "Backlight");
|
||||
if (ret) {
|
||||
printk(KERN_ERR "failed to request GPF for PWM-OUT1\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Configure GPIO pin with S5P6440_GPF15_PWM_TOUT1 */
|
||||
s3c_gpio_cfgpin(S5P6440_GPF(15), S3C_GPIO_SFN(2));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void smdk6440_backlight_exit(struct device *dev)
|
||||
{
|
||||
s3c_gpio_cfgpin(S5P6440_GPF(15), S3C_GPIO_OUTPUT);
|
||||
gpio_free(S5P6440_GPF(15));
|
||||
}
|
||||
|
||||
static struct platform_pwm_backlight_data smdk6440_backlight_data = {
|
||||
.pwm_id = 1,
|
||||
.max_brightness = 255,
|
||||
.dft_brightness = 255,
|
||||
.pwm_period_ns = 78770,
|
||||
.init = smdk6440_backlight_init,
|
||||
.exit = smdk6440_backlight_exit,
|
||||
};
|
||||
|
||||
static struct platform_device smdk6440_backlight_device = {
|
||||
.name = "pwm-backlight",
|
||||
.dev = {
|
||||
.parent = &s3c_device_timer[1].dev,
|
||||
.platform_data = &smdk6440_backlight_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *smdk6440_devices[] __initdata = {
|
||||
&s3c_device_adc,
|
||||
&s3c_device_rtc,
|
||||
@ -139,8 +101,6 @@ static struct platform_device *smdk6440_devices[] __initdata = {
|
||||
&s3c_device_wdt,
|
||||
&samsung_asoc_dma,
|
||||
&s5p6440_device_iis,
|
||||
&s3c_device_timer[1],
|
||||
&smdk6440_backlight_device,
|
||||
};
|
||||
|
||||
static struct s3c2410_platform_i2c s5p6440_i2c0_data __initdata = {
|
||||
@ -175,6 +135,16 @@ static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdk6440_bl_gpio_info = {
|
||||
.no = S5P6440_GPF(15),
|
||||
.func = S3C_GPIO_SFN(2),
|
||||
};
|
||||
|
||||
static struct platform_pwm_backlight_data smdk6440_bl_data = {
|
||||
.pwm_id = 1,
|
||||
};
|
||||
|
||||
static void __init smdk6440_map_io(void)
|
||||
{
|
||||
s5p_init_io(NULL, 0, S5P64X0_SYS_ID);
|
||||
@ -194,6 +164,8 @@ static void __init smdk6440_machine_init(void)
|
||||
i2c_register_board_info(1, smdk6440_i2c_devs1,
|
||||
ARRAY_SIZE(smdk6440_i2c_devs1));
|
||||
|
||||
samsung_bl_set(&smdk6440_bl_gpio_info, &smdk6440_bl_data);
|
||||
|
||||
platform_add_devices(smdk6440_devices, ARRAY_SIZE(smdk6440_devices));
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,7 @@
|
||||
#include <plat/adc.h>
|
||||
#include <plat/ts.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/backlight.h>
|
||||
|
||||
#define SMDK6450_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
|
||||
S3C2410_UCON_RXILEVEL | \
|
||||
@ -109,45 +110,6 @@ static struct s3c2410_uartcfg smdk6450_uartcfgs[] __initdata = {
|
||||
#endif
|
||||
};
|
||||
|
||||
static int smdk6450_backlight_init(struct device *dev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = gpio_request(S5P6450_GPF(15), "Backlight");
|
||||
if (ret) {
|
||||
printk(KERN_ERR "failed to request GPF for PWM-OUT1\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Configure GPIO pin with S5P6450_GPF15_PWM_TOUT1 */
|
||||
s3c_gpio_cfgpin(S5P6450_GPF(15), S3C_GPIO_SFN(2));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void smdk6450_backlight_exit(struct device *dev)
|
||||
{
|
||||
s3c_gpio_cfgpin(S5P6450_GPF(15), S3C_GPIO_OUTPUT);
|
||||
gpio_free(S5P6450_GPF(15));
|
||||
}
|
||||
|
||||
static struct platform_pwm_backlight_data smdk6450_backlight_data = {
|
||||
.pwm_id = 1,
|
||||
.max_brightness = 255,
|
||||
.dft_brightness = 255,
|
||||
.pwm_period_ns = 78770,
|
||||
.init = smdk6450_backlight_init,
|
||||
.exit = smdk6450_backlight_exit,
|
||||
};
|
||||
|
||||
static struct platform_device smdk6450_backlight_device = {
|
||||
.name = "pwm-backlight",
|
||||
.dev = {
|
||||
.parent = &s3c_device_timer[1].dev,
|
||||
.platform_data = &smdk6450_backlight_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *smdk6450_devices[] __initdata = {
|
||||
&s3c_device_adc,
|
||||
&s3c_device_rtc,
|
||||
@ -157,8 +119,6 @@ static struct platform_device *smdk6450_devices[] __initdata = {
|
||||
&s3c_device_wdt,
|
||||
&samsung_asoc_dma,
|
||||
&s5p6450_device_iis0,
|
||||
&s3c_device_timer[1],
|
||||
&smdk6450_backlight_device,
|
||||
/* s5p6450_device_spi0 will be added */
|
||||
};
|
||||
|
||||
@ -194,6 +154,16 @@ static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdk6450_bl_gpio_info = {
|
||||
.no = S5P6450_GPF(15),
|
||||
.func = S3C_GPIO_SFN(2),
|
||||
};
|
||||
|
||||
static struct platform_pwm_backlight_data smdk6450_bl_data = {
|
||||
.pwm_id = 1,
|
||||
};
|
||||
|
||||
static void __init smdk6450_map_io(void)
|
||||
{
|
||||
s5p_init_io(NULL, 0, S5P64X0_SYS_ID);
|
||||
@ -213,6 +183,8 @@ static void __init smdk6450_machine_init(void)
|
||||
i2c_register_board_info(1, smdk6450_i2c_devs1,
|
||||
ARRAY_SIZE(smdk6450_i2c_devs1));
|
||||
|
||||
samsung_bl_set(&smdk6450_bl_gpio_info, &smdk6450_bl_data);
|
||||
|
||||
platform_add_devices(smdk6450_devices, ARRAY_SIZE(smdk6450_devices));
|
||||
}
|
||||
|
||||
|
@ -56,6 +56,7 @@ config MACH_SMDKC100
|
||||
select S3C_DEV_RTC
|
||||
select S3C_DEV_WDT
|
||||
select SAMSUNG_DEV_ADC
|
||||
select SAMSUNG_DEV_BACKLIGHT
|
||||
select SAMSUNG_DEV_IDE
|
||||
select SAMSUNG_DEV_KEYPAD
|
||||
select SAMSUNG_DEV_PWM
|
||||
|
@ -31,7 +31,6 @@
|
||||
|
||||
static struct clk s5p_clk_otgphy = {
|
||||
.name = "otg_phy",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk *clk_src_mout_href_list[] = {
|
||||
@ -47,7 +46,6 @@ static struct clksrc_sources clk_src_mout_href = {
|
||||
static struct clksrc_clk clk_mout_href = {
|
||||
.clk = {
|
||||
.name = "mout_href",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_mout_href,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 20, .size = 1 },
|
||||
@ -66,7 +64,6 @@ static struct clksrc_sources clk_src_mout_48m = {
|
||||
static struct clksrc_clk clk_mout_48m = {
|
||||
.clk = {
|
||||
.name = "mout_48m",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_mout_48m,
|
||||
.reg_src = { .reg = S5P_CLK_SRC1, .shift = 24, .size = 1 },
|
||||
@ -75,7 +72,6 @@ static struct clksrc_clk clk_mout_48m = {
|
||||
static struct clksrc_clk clk_mout_mpll = {
|
||||
.clk = {
|
||||
.name = "mout_mpll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_mpll,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 4, .size = 1 },
|
||||
@ -85,7 +81,6 @@ static struct clksrc_clk clk_mout_mpll = {
|
||||
static struct clksrc_clk clk_mout_apll = {
|
||||
.clk = {
|
||||
.name = "mout_apll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_apll,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 0, .size = 1 },
|
||||
@ -94,7 +89,6 @@ static struct clksrc_clk clk_mout_apll = {
|
||||
static struct clksrc_clk clk_mout_epll = {
|
||||
.clk = {
|
||||
.name = "mout_epll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_epll,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 8, .size = 1 },
|
||||
@ -112,7 +106,6 @@ static struct clksrc_sources clk_src_mout_hpll = {
|
||||
static struct clksrc_clk clk_mout_hpll = {
|
||||
.clk = {
|
||||
.name = "mout_hpll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_mout_hpll,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 12, .size = 1 },
|
||||
@ -121,7 +114,6 @@ static struct clksrc_clk clk_mout_hpll = {
|
||||
static struct clksrc_clk clk_div_apll = {
|
||||
.clk = {
|
||||
.name = "div_apll",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_apll.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV0, .shift = 0, .size = 1 },
|
||||
@ -130,7 +122,6 @@ static struct clksrc_clk clk_div_apll = {
|
||||
static struct clksrc_clk clk_div_arm = {
|
||||
.clk = {
|
||||
.name = "div_arm",
|
||||
.id = -1,
|
||||
.parent = &clk_div_apll.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV0, .shift = 4, .size = 3 },
|
||||
@ -139,7 +130,6 @@ static struct clksrc_clk clk_div_arm = {
|
||||
static struct clksrc_clk clk_div_d0_bus = {
|
||||
.clk = {
|
||||
.name = "div_d0_bus",
|
||||
.id = -1,
|
||||
.parent = &clk_div_arm.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV0, .shift = 8, .size = 3 },
|
||||
@ -148,7 +138,6 @@ static struct clksrc_clk clk_div_d0_bus = {
|
||||
static struct clksrc_clk clk_div_pclkd0 = {
|
||||
.clk = {
|
||||
.name = "div_pclkd0",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV0, .shift = 12, .size = 3 },
|
||||
@ -157,7 +146,6 @@ static struct clksrc_clk clk_div_pclkd0 = {
|
||||
static struct clksrc_clk clk_div_secss = {
|
||||
.clk = {
|
||||
.name = "div_secss",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV0, .shift = 16, .size = 3 },
|
||||
@ -166,7 +154,6 @@ static struct clksrc_clk clk_div_secss = {
|
||||
static struct clksrc_clk clk_div_apll2 = {
|
||||
.clk = {
|
||||
.name = "div_apll2",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_apll.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV1, .shift = 0, .size = 3 },
|
||||
@ -185,7 +172,6 @@ struct clksrc_sources clk_src_mout_am = {
|
||||
static struct clksrc_clk clk_mout_am = {
|
||||
.clk = {
|
||||
.name = "mout_am",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_mout_am,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 16, .size = 1 },
|
||||
@ -194,7 +180,6 @@ static struct clksrc_clk clk_mout_am = {
|
||||
static struct clksrc_clk clk_div_d1_bus = {
|
||||
.clk = {
|
||||
.name = "div_d1_bus",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_am.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV1, .shift = 12, .size = 3 },
|
||||
@ -203,7 +188,6 @@ static struct clksrc_clk clk_div_d1_bus = {
|
||||
static struct clksrc_clk clk_div_mpll2 = {
|
||||
.clk = {
|
||||
.name = "div_mpll2",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_am.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV1, .shift = 8, .size = 1 },
|
||||
@ -212,7 +196,6 @@ static struct clksrc_clk clk_div_mpll2 = {
|
||||
static struct clksrc_clk clk_div_mpll = {
|
||||
.clk = {
|
||||
.name = "div_mpll",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_am.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV1, .shift = 4, .size = 2 },
|
||||
@ -231,7 +214,6 @@ struct clksrc_sources clk_src_mout_onenand = {
|
||||
static struct clksrc_clk clk_mout_onenand = {
|
||||
.clk = {
|
||||
.name = "mout_onenand",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_mout_onenand,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 24, .size = 1 },
|
||||
@ -240,7 +222,6 @@ static struct clksrc_clk clk_mout_onenand = {
|
||||
static struct clksrc_clk clk_div_onenand = {
|
||||
.clk = {
|
||||
.name = "div_onenand",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_onenand.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV1, .shift = 20, .size = 2 },
|
||||
@ -249,7 +230,6 @@ static struct clksrc_clk clk_div_onenand = {
|
||||
static struct clksrc_clk clk_div_pclkd1 = {
|
||||
.clk = {
|
||||
.name = "div_pclkd1",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV1, .shift = 16, .size = 3 },
|
||||
@ -258,7 +238,6 @@ static struct clksrc_clk clk_div_pclkd1 = {
|
||||
static struct clksrc_clk clk_div_cam = {
|
||||
.clk = {
|
||||
.name = "div_cam",
|
||||
.id = -1,
|
||||
.parent = &clk_div_mpll2.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV1, .shift = 24, .size = 5 },
|
||||
@ -267,7 +246,6 @@ static struct clksrc_clk clk_div_cam = {
|
||||
static struct clksrc_clk clk_div_hdmi = {
|
||||
.clk = {
|
||||
.name = "div_hdmi",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_hpll.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV3, .shift = 28, .size = 4 },
|
||||
@ -399,367 +377,329 @@ static int s5pc100_sclk1_ctrl(struct clk *clk, int enable)
|
||||
static struct clk init_clocks_off[] = {
|
||||
{
|
||||
.name = "cssys",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_0_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
}, {
|
||||
.name = "secss",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_0_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "g2d",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_0_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "mdma",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_0_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "cfcon",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_0_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "nfcon",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_1_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "onenandc",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_1_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "sdm",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_2_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "seckey",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_2_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_0_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_0_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_0_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "modemif",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_0_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "otg",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_0_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "usbhost",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_0_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "pdma",
|
||||
.id = 1,
|
||||
.devname = "s3c-pl330.1",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_0_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "pdma",
|
||||
.id = 0,
|
||||
.devname = "s3c-pl330.0",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_0_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "lcd",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_1_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "rotator",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_1_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "fimc",
|
||||
.id = 0,
|
||||
.devname = "s5p-fimc.0",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_1_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "fimc",
|
||||
.id = 1,
|
||||
.devname = "s5p-fimc.1",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_1_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "fimc",
|
||||
.id = 2,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.devname = "s5p-fimc.2",
|
||||
.enable = s5pc100_d1_1_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "jpeg",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_1_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "mipi-dsim",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_1_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
}, {
|
||||
.name = "mipi-csis",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_1_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "g3d",
|
||||
.id = 0,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_0_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
}, {
|
||||
.name = "tv",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_2_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "vp",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_2_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "mixer",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_2_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "hdmi",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_2_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "mfc",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_2_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "apc",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_3_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "iec",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_3_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "systimer",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_3_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "watchdog",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_3_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
}, {
|
||||
.name = "rtc",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_3_ctrl,
|
||||
.ctrlbit = (1 << 9),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 0,
|
||||
.devname = "s3c2440-i2c.0",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 1,
|
||||
.devname = "s3c2440-i2c.1",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 2,
|
||||
.devname = "s3c64xx-spi.2",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
}, {
|
||||
.name = "irda",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 9),
|
||||
}, {
|
||||
.name = "ccan",
|
||||
.id = 0,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 10),
|
||||
}, {
|
||||
.name = "ccan",
|
||||
.id = 1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 11),
|
||||
}, {
|
||||
.name = "hsitx",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
}, {
|
||||
.name = "hsirx",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 13),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 0,
|
||||
.devname = "samsung-i2s.0",
|
||||
.parent = &clk_div_pclkd1.clk,
|
||||
.enable = s5pc100_d1_5_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 1,
|
||||
.devname = "samsung-i2s.1",
|
||||
.parent = &clk_div_pclkd1.clk,
|
||||
.enable = s5pc100_d1_5_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 2,
|
||||
.devname = "samsung-i2s.2",
|
||||
.parent = &clk_div_pclkd1.clk,
|
||||
.enable = s5pc100_d1_5_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "ac97",
|
||||
.id = -1,
|
||||
.parent = &clk_div_pclkd1.clk,
|
||||
.enable = s5pc100_d1_5_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "pcm",
|
||||
.id = 0,
|
||||
.devname = "samsung-pcm.0",
|
||||
.parent = &clk_div_pclkd1.clk,
|
||||
.enable = s5pc100_d1_5_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "pcm",
|
||||
.id = 1,
|
||||
.devname = "samsung-pcm.1",
|
||||
.parent = &clk_div_pclkd1.clk,
|
||||
.enable = s5pc100_d1_5_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "spdif",
|
||||
.id = -1,
|
||||
.parent = &clk_div_pclkd1.clk,
|
||||
.enable = s5pc100_d1_5_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
}, {
|
||||
.name = "adc",
|
||||
.id = -1,
|
||||
.parent = &clk_div_pclkd1.clk,
|
||||
.enable = s5pc100_d1_5_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "keypad",
|
||||
.id = -1,
|
||||
.parent = &clk_div_pclkd1.clk,
|
||||
.enable = s5pc100_d1_5_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
}, {
|
||||
.name = "spi_48m",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.parent = &clk_mout_48m.clk,
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
}, {
|
||||
.name = "spi_48m",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.parent = &clk_mout_48m.clk,
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
}, {
|
||||
.name = "spi_48m",
|
||||
.id = 2,
|
||||
.devname = "s3c64xx-spi.2",
|
||||
.parent = &clk_mout_48m.clk,
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
.ctrlbit = (1 << 9),
|
||||
}, {
|
||||
.name = "mmc_48m",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_mout_48m.clk,
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
.ctrlbit = (1 << 15),
|
||||
}, {
|
||||
.name = "mmc_48m",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_mout_48m.clk,
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
.ctrlbit = (1 << 16),
|
||||
}, {
|
||||
.name = "mmc_48m",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.parent = &clk_mout_48m.clk,
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
.ctrlbit = (1 << 17),
|
||||
@ -768,33 +708,27 @@ static struct clk init_clocks_off[] = {
|
||||
|
||||
static struct clk clk_vclk54m = {
|
||||
.name = "vclk_54m",
|
||||
.id = -1,
|
||||
.rate = 54000000,
|
||||
};
|
||||
|
||||
static struct clk clk_i2scdclk0 = {
|
||||
.name = "i2s_cdclk0",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_i2scdclk1 = {
|
||||
.name = "i2s_cdclk1",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_i2scdclk2 = {
|
||||
.name = "i2s_cdclk2",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_pcmcdclk0 = {
|
||||
.name = "pcm_cdclk0",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_pcmcdclk1 = {
|
||||
.name = "pcm_cdclk1",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk *clk_src_group1_list[] = {
|
||||
@ -836,7 +770,7 @@ struct clksrc_sources clk_src_group3 = {
|
||||
static struct clksrc_clk clk_sclk_audio0 = {
|
||||
.clk = {
|
||||
.name = "sclk_audio",
|
||||
.id = 0,
|
||||
.devname = "samsung-pcm.0",
|
||||
.ctrlbit = (1 << 8),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
},
|
||||
@ -862,7 +796,7 @@ struct clksrc_sources clk_src_group4 = {
|
||||
static struct clksrc_clk clk_sclk_audio1 = {
|
||||
.clk = {
|
||||
.name = "sclk_audio",
|
||||
.id = 1,
|
||||
.devname = "samsung-pcm.1",
|
||||
.ctrlbit = (1 << 9),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
},
|
||||
@ -887,7 +821,7 @@ struct clksrc_sources clk_src_group5 = {
|
||||
static struct clksrc_clk clk_sclk_audio2 = {
|
||||
.clk = {
|
||||
.name = "sclk_audio",
|
||||
.id = 2,
|
||||
.devname = "samsung-pcm.2",
|
||||
.ctrlbit = (1 << 10),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
},
|
||||
@ -976,48 +910,12 @@ struct clksrc_sources clk_src_sclk_spdif = {
|
||||
.nr_sources = ARRAY_SIZE(clk_sclk_spdif_list),
|
||||
};
|
||||
|
||||
static int s5pc100_spdif_set_rate(struct clk *clk, unsigned long rate)
|
||||
{
|
||||
struct clk *pclk;
|
||||
int ret;
|
||||
|
||||
pclk = clk_get_parent(clk);
|
||||
if (IS_ERR(pclk))
|
||||
return -EINVAL;
|
||||
|
||||
ret = pclk->ops->set_rate(pclk, rate);
|
||||
clk_put(pclk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static unsigned long s5pc100_spdif_get_rate(struct clk *clk)
|
||||
{
|
||||
struct clk *pclk;
|
||||
int rate;
|
||||
|
||||
pclk = clk_get_parent(clk);
|
||||
if (IS_ERR(pclk))
|
||||
return -EINVAL;
|
||||
|
||||
rate = pclk->ops->get_rate(clk);
|
||||
clk_put(pclk);
|
||||
|
||||
return rate;
|
||||
}
|
||||
|
||||
static struct clk_ops s5pc100_sclk_spdif_ops = {
|
||||
.set_rate = s5pc100_spdif_set_rate,
|
||||
.get_rate = s5pc100_spdif_get_rate,
|
||||
};
|
||||
|
||||
static struct clksrc_clk clk_sclk_spdif = {
|
||||
.clk = {
|
||||
.name = "sclk_spdif",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 11),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
.ops = &s5pc100_sclk_spdif_ops,
|
||||
.ops = &s5p_sclk_spdif_ops,
|
||||
},
|
||||
.sources = &clk_src_sclk_spdif,
|
||||
.reg_src = { .reg = S5P_CLK_SRC3, .shift = 24, .size = 2 },
|
||||
@ -1027,7 +925,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
{
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.ctrlbit = (1 << 4),
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
|
||||
@ -1038,7 +936,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.ctrlbit = (1 << 5),
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
|
||||
@ -1049,7 +947,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 2,
|
||||
.devname = "s3c64xx-spi.2",
|
||||
.ctrlbit = (1 << 6),
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
|
||||
@ -1060,7 +958,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 3),
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
|
||||
@ -1071,7 +968,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mixer",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 6),
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
|
||||
@ -1081,7 +977,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_lcd",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 0),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
|
||||
@ -1092,7 +987,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = 0,
|
||||
.devname = "s5p-fimc.0",
|
||||
.ctrlbit = (1 << 1),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
|
||||
@ -1103,7 +998,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = 1,
|
||||
.devname = "s5p-fimc.1",
|
||||
.ctrlbit = (1 << 2),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
|
||||
@ -1114,7 +1009,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = 2,
|
||||
.devname = "s5p-fimc.2",
|
||||
.ctrlbit = (1 << 3),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
|
||||
@ -1125,7 +1020,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.ctrlbit = (1 << 12),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
|
||||
@ -1136,7 +1031,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.ctrlbit = (1 << 13),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
|
||||
@ -1147,7 +1042,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.ctrlbit = (1 << 14),
|
||||
.enable = s5pc100_sclk1_ctrl,
|
||||
|
||||
@ -1158,7 +1053,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_irda",
|
||||
.id = 2,
|
||||
.ctrlbit = (1 << 10),
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
|
||||
@ -1169,7 +1063,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_irda",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 10),
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
|
||||
@ -1180,7 +1073,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_pwi",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 1),
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
|
||||
@ -1191,7 +1083,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_uhost",
|
||||
.id = -1,
|
||||
.ctrlbit = (1 << 11),
|
||||
.enable = s5pc100_sclk0_ctrl,
|
||||
|
||||
@ -1291,79 +1182,70 @@ void __init_or_cpufreq s5pc100_setup_clocks(void)
|
||||
static struct clk init_clocks[] = {
|
||||
{
|
||||
.name = "tzic",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_0_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "intc",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_0_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "ebi",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_1_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "intmem",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_1_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "sromc",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_1_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "dmc",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_1_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "chipid",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d0_bus.clk,
|
||||
.enable = s5pc100_d0_1_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "gpio",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_3_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 0,
|
||||
.devname = "s3c6400-uart.0",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 1,
|
||||
.devname = "s3c6400-uart.1",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 2,
|
||||
.devname = "s3c6400-uart.2",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 3,
|
||||
.devname = "s3c6400-uart.3",
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_4_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "timers",
|
||||
.id = -1,
|
||||
.parent = &clk_div_d1_bus.clk,
|
||||
.enable = s5pc100_d1_3_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include <mach/dma.h>
|
||||
#include <mach/map.h>
|
||||
#include <mach/spi-clocks.h>
|
||||
#include <mach/irqs.h>
|
||||
|
||||
#include <plat/s3c64xx-spi.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
@ -90,6 +91,7 @@ static struct s3c64xx_spi_info s5pc100_spi0_pdata = {
|
||||
.fifo_lvl_mask = 0x7f,
|
||||
.rx_lvl_offset = 13,
|
||||
.high_speed = 1,
|
||||
.tx_st_done = 21,
|
||||
};
|
||||
|
||||
static u64 spi_dmamask = DMA_BIT_MASK(32);
|
||||
@ -134,6 +136,7 @@ static struct s3c64xx_spi_info s5pc100_spi1_pdata = {
|
||||
.fifo_lvl_mask = 0x7f,
|
||||
.rx_lvl_offset = 13,
|
||||
.high_speed = 1,
|
||||
.tx_st_done = 21,
|
||||
};
|
||||
|
||||
struct platform_device s5pc100_device_spi1 = {
|
||||
@ -176,6 +179,7 @@ static struct s3c64xx_spi_info s5pc100_spi2_pdata = {
|
||||
.fifo_lvl_mask = 0x7f,
|
||||
.rx_lvl_offset = 13,
|
||||
.high_speed = 1,
|
||||
.tx_st_done = 21,
|
||||
};
|
||||
|
||||
struct platform_device s5pc100_device_spi2 = {
|
||||
|
7
arch/arm/mach-s5pc100/include/mach/clkdev.h
Normal file
7
arch/arm/mach-s5pc100/include/mach/clkdev.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef __MACH_CLKDEV_H__
|
||||
#define __MACH_CLKDEV_H__
|
||||
|
||||
#define __clk_get(clk) ({ 1; })
|
||||
#define __clk_put(clk) do {} while (0)
|
||||
|
||||
#endif
|
@ -1,105 +0,0 @@
|
||||
/* arch/arm/mach-s5pc100/include/mach/regs-fb.h
|
||||
*
|
||||
* Copyright 2009 Samsung Electronics Co.
|
||||
* Pawel Osciak <p.osciak@samsung.com>
|
||||
*
|
||||
* Framebuffer register definitions for Samsung S5PC100.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_REGS_FB_H
|
||||
#define __ASM_ARCH_REGS_FB_H __FILE__
|
||||
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
/* VP1 interface timing control */
|
||||
#define VP1CON0 (0x118)
|
||||
#define VP1_RATECON_EN (1 << 31)
|
||||
#define VP1_CLKRATE_MASK (0xff)
|
||||
|
||||
#define VP1CON1 (0x11c)
|
||||
#define VP1_VTREGCON_EN (1 << 31)
|
||||
#define VP1_VBPD_MASK (0xfff)
|
||||
#define VP1_VBPD_SHIFT (16)
|
||||
|
||||
|
||||
#define WPALCON_H (0x19c)
|
||||
#define WPALCON_L (0x1a0)
|
||||
|
||||
/* Palette control for WPAL0 and WPAL1 is the same as in S3C64xx, but
|
||||
* different for WPAL2-4
|
||||
*/
|
||||
/* In WPALCON_L (aka WPALCON) */
|
||||
#define WPALCON_W1PAL_32BPP_A888 (0x7 << 3)
|
||||
#define WPALCON_W0PAL_32BPP_A888 (0x7 << 0)
|
||||
|
||||
/* To set W2PAL-W4PAL consist of one bit from WPALCON_L and two from WPALCON_H,
|
||||
* e.g. W2PAL[2..0] is made of (WPALCON_H[10..9], WPALCON_L[6]).
|
||||
*/
|
||||
#define WPALCON_L_WxPAL_L_MASK (0x1)
|
||||
#define WPALCON_L_W2PAL_L_SHIFT (6)
|
||||
#define WPALCON_L_W3PAL_L_SHIFT (7)
|
||||
#define WPALCON_L_W4PAL_L_SHIFT (8)
|
||||
|
||||
#define WPALCON_L_WxPAL_H_MASK (0x3)
|
||||
#define WPALCON_H_W2PAL_H_SHIFT (9)
|
||||
#define WPALCON_H_W3PAL_H_SHIFT (13)
|
||||
#define WPALCON_H_W4PAL_H_SHIFT (17)
|
||||
|
||||
/* Per-window alpha value registers */
|
||||
/* For window 0 8-bit alpha values are in VIDW0ALPHAx,
|
||||
* for windows 1-4 alpha values consist of two parts, the 4 low bits are
|
||||
* taken from VIDWxALPHAx and 4 high bits are from VIDOSDxC,
|
||||
* e.g. WIN1_ALPHA0_B[7..0] = (VIDOSD1C[3..0], VIDW1ALPHA0[3..0])
|
||||
*/
|
||||
#define VIDWxALPHA0(_win) (0x200 + (_win * 8))
|
||||
#define VIDWxALPHA1(_win) (0x204 + (_win * 8))
|
||||
|
||||
/* Only for window 0 in VIDW0ALPHAx. */
|
||||
#define VIDW0ALPHAx_R(_x) ((_x) << 16)
|
||||
#define VIDW0ALPHAx_R_MASK (0xff << 16)
|
||||
#define VIDW0ALPHAx_R_SHIFT (16)
|
||||
#define VIDW0ALPHAx_G(_x) ((_x) << 8)
|
||||
#define VIDW0ALPHAx_G_MASK (0xff << 8)
|
||||
#define VIDW0ALPHAx_G_SHIFT (8)
|
||||
#define VIDW0ALPHAx_B(_x) ((_x) << 0)
|
||||
#define VIDW0ALPHAx_B_MASK (0xff << 0)
|
||||
#define VIDW0ALPHAx_B_SHIFT (0)
|
||||
|
||||
/* Low 4 bits of alpha0-1 for windows 1-4 */
|
||||
#define VIDW14ALPHAx_R_L(_x) ((_x) << 16)
|
||||
#define VIDW14ALPHAx_R_L_MASK (0xf << 16)
|
||||
#define VIDW14ALPHAx_R_L_SHIFT (16)
|
||||
#define VIDW14ALPHAx_G_L(_x) ((_x) << 8)
|
||||
#define VIDW14ALPHAx_G_L_MASK (0xf << 8)
|
||||
#define VIDW14ALPHAx_G_L_SHIFT (8)
|
||||
#define VIDW14ALPHAx_B_L(_x) ((_x) << 0)
|
||||
#define VIDW14ALPHAx_B_L_MASK (0xf << 0)
|
||||
#define VIDW14ALPHAx_B_L_SHIFT (0)
|
||||
|
||||
|
||||
/* Per-window blending equation control registers */
|
||||
#define BLENDEQx(_win) (0x244 + ((_win) * 4))
|
||||
#define BLENDEQ1 (0x244)
|
||||
#define BLENDEQ2 (0x248)
|
||||
#define BLENDEQ3 (0x24c)
|
||||
#define BLENDEQ4 (0x250)
|
||||
|
||||
#define BLENDEQx_Q_FUNC(_x) ((_x) << 18)
|
||||
#define BLENDEQx_Q_FUNC_MASK (0xf << 18)
|
||||
#define BLENDEQx_P_FUNC(_x) ((_x) << 12)
|
||||
#define BLENDEQx_P_FUNC_MASK (0xf << 12)
|
||||
#define BLENDEQx_B_FUNC(_x) ((_x) << 6)
|
||||
#define BLENDEQx_B_FUNC_MASK (0xf << 6)
|
||||
#define BLENDEQx_A_FUNC(_x) ((_x) << 0)
|
||||
#define BLENDEQx_A_FUNC_MASK (0xf << 0)
|
||||
|
||||
#define BLENDCON (0x260)
|
||||
#define BLENDCON_8BIT_ALPHA (1 << 0)
|
||||
|
||||
|
||||
#endif /* __ASM_ARCH_REGS_FB_H */
|
||||
|
@ -29,7 +29,6 @@
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
|
||||
#include <video/platform_lcd.h>
|
||||
@ -51,6 +50,8 @@
|
||||
#include <plat/keypad.h>
|
||||
#include <plat/ts.h>
|
||||
#include <plat/audio.h>
|
||||
#include <plat/backlight.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
/* Following are default values for UCON, ULCON and UFCON UART registers */
|
||||
#define SMDKC100_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
|
||||
@ -179,45 +180,6 @@ static struct samsung_keypad_platdata smdkc100_keypad_data __initdata = {
|
||||
.cols = 8,
|
||||
};
|
||||
|
||||
static int smdkc100_backlight_init(struct device *dev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = gpio_request(S5PC100_GPD(0), "Backlight");
|
||||
if (ret) {
|
||||
printk(KERN_ERR "failed to request GPF for PWM-OUT0\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Configure GPIO pin with S5PC100_GPD_TOUT_0 */
|
||||
s3c_gpio_cfgpin(S5PC100_GPD(0), S3C_GPIO_SFN(2));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void smdkc100_backlight_exit(struct device *dev)
|
||||
{
|
||||
s3c_gpio_cfgpin(S5PC100_GPD(0), S3C_GPIO_OUTPUT);
|
||||
gpio_free(S5PC100_GPD(0));
|
||||
}
|
||||
|
||||
static struct platform_pwm_backlight_data smdkc100_backlight_data = {
|
||||
.pwm_id = 0,
|
||||
.max_brightness = 255,
|
||||
.dft_brightness = 255,
|
||||
.pwm_period_ns = 78770,
|
||||
.init = smdkc100_backlight_init,
|
||||
.exit = smdkc100_backlight_exit,
|
||||
};
|
||||
|
||||
static struct platform_device smdkc100_backlight_device = {
|
||||
.name = "pwm-backlight",
|
||||
.dev = {
|
||||
.parent = &s3c_device_timer[0].dev,
|
||||
.platform_data = &smdkc100_backlight_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *smdkc100_devices[] __initdata = {
|
||||
&s3c_device_adc,
|
||||
&s3c_device_cfcon,
|
||||
@ -239,8 +201,6 @@ static struct platform_device *smdkc100_devices[] __initdata = {
|
||||
&s5p_device_fimc1,
|
||||
&s5p_device_fimc2,
|
||||
&s5pc100_device_spdif,
|
||||
&s3c_device_timer[0],
|
||||
&smdkc100_backlight_device,
|
||||
};
|
||||
|
||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
@ -249,6 +209,16 @@ static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdkc100_bl_gpio_info = {
|
||||
.no = S5PC100_GPD(0),
|
||||
.func = S3C_GPIO_SFN(2),
|
||||
};
|
||||
|
||||
static struct platform_pwm_backlight_data smdkc100_bl_data = {
|
||||
.pwm_id = 0,
|
||||
};
|
||||
|
||||
static void __init smdkc100_map_io(void)
|
||||
{
|
||||
s5p_init_io(NULL, 0, S5P_VA_CHIPID);
|
||||
@ -276,6 +246,9 @@ static void __init smdkc100_machine_init(void)
|
||||
/* LCD init */
|
||||
gpio_request(S5PC100_GPH0(6), "GPH0");
|
||||
smdkc100_lcd_power_set(&smdkc100_lcd_power_data, 0);
|
||||
|
||||
samsung_bl_set(&smdkc100_bl_gpio_info, &smdkc100_bl_data);
|
||||
|
||||
platform_add_devices(smdkc100_devices, ARRAY_SIZE(smdkc100_devices));
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,6 @@
|
||||
#include <linux/fb.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/map.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
|
@ -134,6 +134,7 @@ config MACH_SMDKV210
|
||||
select S3C_DEV_RTC
|
||||
select S3C_DEV_WDT
|
||||
select SAMSUNG_DEV_ADC
|
||||
select SAMSUNG_DEV_BACKLIGHT
|
||||
select SAMSUNG_DEV_IDE
|
||||
select SAMSUNG_DEV_KEYPAD
|
||||
select SAMSUNG_DEV_PWM
|
||||
|
@ -36,7 +36,6 @@ static unsigned long xtal;
|
||||
static struct clksrc_clk clk_mout_apll = {
|
||||
.clk = {
|
||||
.name = "mout_apll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_apll,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 0, .size = 1 },
|
||||
@ -45,7 +44,6 @@ static struct clksrc_clk clk_mout_apll = {
|
||||
static struct clksrc_clk clk_mout_epll = {
|
||||
.clk = {
|
||||
.name = "mout_epll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_epll,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 8, .size = 1 },
|
||||
@ -54,7 +52,6 @@ static struct clksrc_clk clk_mout_epll = {
|
||||
static struct clksrc_clk clk_mout_mpll = {
|
||||
.clk = {
|
||||
.name = "mout_mpll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clk_src_mpll,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 4, .size = 1 },
|
||||
@ -73,7 +70,6 @@ static struct clksrc_sources clkset_armclk = {
|
||||
static struct clksrc_clk clk_armclk = {
|
||||
.clk = {
|
||||
.name = "armclk",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_armclk,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 16, .size = 1 },
|
||||
@ -83,7 +79,6 @@ static struct clksrc_clk clk_armclk = {
|
||||
static struct clksrc_clk clk_hclk_msys = {
|
||||
.clk = {
|
||||
.name = "hclk_msys",
|
||||
.id = -1,
|
||||
.parent = &clk_armclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV0, .shift = 8, .size = 3 },
|
||||
@ -92,7 +87,6 @@ static struct clksrc_clk clk_hclk_msys = {
|
||||
static struct clksrc_clk clk_pclk_msys = {
|
||||
.clk = {
|
||||
.name = "pclk_msys",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_msys.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV0, .shift = 12, .size = 3 },
|
||||
@ -101,7 +95,6 @@ static struct clksrc_clk clk_pclk_msys = {
|
||||
static struct clksrc_clk clk_sclk_a2m = {
|
||||
.clk = {
|
||||
.name = "sclk_a2m",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_apll.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV0, .shift = 4, .size = 3 },
|
||||
@ -120,7 +113,6 @@ static struct clksrc_sources clkset_hclk_sys = {
|
||||
static struct clksrc_clk clk_hclk_dsys = {
|
||||
.clk = {
|
||||
.name = "hclk_dsys",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_hclk_sys,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 20, .size = 1 },
|
||||
@ -130,7 +122,6 @@ static struct clksrc_clk clk_hclk_dsys = {
|
||||
static struct clksrc_clk clk_pclk_dsys = {
|
||||
.clk = {
|
||||
.name = "pclk_dsys",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_dsys.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV0, .shift = 20, .size = 3 },
|
||||
@ -139,7 +130,6 @@ static struct clksrc_clk clk_pclk_dsys = {
|
||||
static struct clksrc_clk clk_hclk_psys = {
|
||||
.clk = {
|
||||
.name = "hclk_psys",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_hclk_sys,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 24, .size = 1 },
|
||||
@ -149,7 +139,6 @@ static struct clksrc_clk clk_hclk_psys = {
|
||||
static struct clksrc_clk clk_pclk_psys = {
|
||||
.clk = {
|
||||
.name = "pclk_psys",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV0, .shift = 28, .size = 3 },
|
||||
@ -187,38 +176,31 @@ static int s5pv210_clk_mask1_ctrl(struct clk *clk, int enable)
|
||||
|
||||
static struct clk clk_sclk_hdmi27m = {
|
||||
.name = "sclk_hdmi27m",
|
||||
.id = -1,
|
||||
.rate = 27000000,
|
||||
};
|
||||
|
||||
static struct clk clk_sclk_hdmiphy = {
|
||||
.name = "sclk_hdmiphy",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_sclk_usbphy0 = {
|
||||
.name = "sclk_usbphy0",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_sclk_usbphy1 = {
|
||||
.name = "sclk_usbphy1",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_pcmcdclk0 = {
|
||||
.name = "pcmcdclk",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_pcmcdclk1 = {
|
||||
.name = "pcmcdclk",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk clk_pcmcdclk2 = {
|
||||
.name = "pcmcdclk",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk *clkset_vpllsrc_list[] = {
|
||||
@ -234,7 +216,6 @@ static struct clksrc_sources clkset_vpllsrc = {
|
||||
static struct clksrc_clk clk_vpllsrc = {
|
||||
.clk = {
|
||||
.name = "vpll_src",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 7),
|
||||
},
|
||||
@ -255,7 +236,6 @@ static struct clksrc_sources clkset_sclk_vpll = {
|
||||
static struct clksrc_clk clk_sclk_vpll = {
|
||||
.clk = {
|
||||
.name = "sclk_vpll",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_sclk_vpll,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 12, .size = 1 },
|
||||
@ -276,7 +256,6 @@ static struct clksrc_sources clkset_moutdmc0src = {
|
||||
static struct clksrc_clk clk_mout_dmc0 = {
|
||||
.clk = {
|
||||
.name = "mout_dmc0",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_moutdmc0src,
|
||||
.reg_src = { .reg = S5P_CLK_SRC6, .shift = 24, .size = 2 },
|
||||
@ -285,7 +264,6 @@ static struct clksrc_clk clk_mout_dmc0 = {
|
||||
static struct clksrc_clk clk_sclk_dmc0 = {
|
||||
.clk = {
|
||||
.name = "sclk_dmc0",
|
||||
.id = -1,
|
||||
.parent = &clk_mout_dmc0.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV6, .shift = 28, .size = 4 },
|
||||
@ -312,181 +290,169 @@ static struct clk_ops clk_fout_apll_ops = {
|
||||
static struct clk init_clocks_off[] = {
|
||||
{
|
||||
.name = "pdma",
|
||||
.id = 0,
|
||||
.devname = "s3c-pl330.0",
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip0_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
}, {
|
||||
.name = "pdma",
|
||||
.id = 1,
|
||||
.devname = "s3c-pl330.1",
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip0_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
}, {
|
||||
.name = "rot",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_dsys.clk,
|
||||
.enable = s5pv210_clk_ip0_ctrl,
|
||||
.ctrlbit = (1<<29),
|
||||
}, {
|
||||
.name = "fimc",
|
||||
.id = 0,
|
||||
.devname = "s5pv210-fimc.0",
|
||||
.parent = &clk_hclk_dsys.clk,
|
||||
.enable = s5pv210_clk_ip0_ctrl,
|
||||
.ctrlbit = (1 << 24),
|
||||
}, {
|
||||
.name = "fimc",
|
||||
.id = 1,
|
||||
.devname = "s5pv210-fimc.1",
|
||||
.parent = &clk_hclk_dsys.clk,
|
||||
.enable = s5pv210_clk_ip0_ctrl,
|
||||
.ctrlbit = (1 << 25),
|
||||
}, {
|
||||
.name = "fimc",
|
||||
.id = 2,
|
||||
.devname = "s5pv210-fimc.2",
|
||||
.parent = &clk_hclk_dsys.clk,
|
||||
.enable = s5pv210_clk_ip0_ctrl,
|
||||
.ctrlbit = (1 << 26),
|
||||
}, {
|
||||
.name = "otg",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip1_ctrl,
|
||||
.ctrlbit = (1<<16),
|
||||
}, {
|
||||
.name = "usb-host",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip1_ctrl,
|
||||
.ctrlbit = (1<<17),
|
||||
}, {
|
||||
.name = "lcd",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_dsys.clk,
|
||||
.enable = s5pv210_clk_ip1_ctrl,
|
||||
.ctrlbit = (1<<0),
|
||||
}, {
|
||||
.name = "cfcon",
|
||||
.id = 0,
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip1_ctrl,
|
||||
.ctrlbit = (1<<25),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip2_ctrl,
|
||||
.ctrlbit = (1<<16),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip2_ctrl,
|
||||
.ctrlbit = (1<<17),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip2_ctrl,
|
||||
.ctrlbit = (1<<18),
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 3,
|
||||
.devname = "s3c-sdhci.3",
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip2_ctrl,
|
||||
.ctrlbit = (1<<19),
|
||||
}, {
|
||||
.name = "systimer",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<16),
|
||||
}, {
|
||||
.name = "watchdog",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<22),
|
||||
}, {
|
||||
.name = "rtc",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<15),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 0,
|
||||
.devname = "s3c2440-i2c.0",
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<7),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 1,
|
||||
.devname = "s3c2440-i2c.1",
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1 << 10),
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = 2,
|
||||
.devname = "s3c2440-i2c.2",
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<9),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<12),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<13),
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = 2,
|
||||
.devname = "s3c64xx-spi.2",
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<14),
|
||||
}, {
|
||||
.name = "timers",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<23),
|
||||
}, {
|
||||
.name = "adc",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<24),
|
||||
}, {
|
||||
.name = "keypad",
|
||||
.id = -1,
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<21),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 0,
|
||||
.devname = "samsung-i2s.0",
|
||||
.parent = &clk_p,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1<<4),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 1,
|
||||
.devname = "samsung-i2s.1",
|
||||
.parent = &clk_p,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = 2,
|
||||
.devname = "samsung-i2s.2",
|
||||
.parent = &clk_p,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
}, {
|
||||
.name = "spdif",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
@ -496,38 +462,36 @@ static struct clk init_clocks_off[] = {
|
||||
static struct clk init_clocks[] = {
|
||||
{
|
||||
.name = "hclk_imem",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_msys.clk,
|
||||
.ctrlbit = (1 << 5),
|
||||
.enable = s5pv210_clk_ip0_ctrl,
|
||||
.ops = &clk_hclk_imem_ops,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 0,
|
||||
.devname = "s5pv210-uart.0",
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1 << 17),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 1,
|
||||
.devname = "s5pv210-uart.1",
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1 << 18),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 2,
|
||||
.devname = "s5pv210-uart.2",
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1 << 19),
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 3,
|
||||
.devname = "s5pv210-uart.3",
|
||||
.parent = &clk_pclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip3_ctrl,
|
||||
.ctrlbit = (1 << 20),
|
||||
}, {
|
||||
.name = "sromc",
|
||||
.id = -1,
|
||||
.parent = &clk_hclk_psys.clk,
|
||||
.enable = s5pv210_clk_ip1_ctrl,
|
||||
.ctrlbit = (1 << 26),
|
||||
@ -579,7 +543,6 @@ static struct clksrc_sources clkset_sclk_dac = {
|
||||
static struct clksrc_clk clk_sclk_dac = {
|
||||
.clk = {
|
||||
.name = "sclk_dac",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
},
|
||||
@ -590,7 +553,6 @@ static struct clksrc_clk clk_sclk_dac = {
|
||||
static struct clksrc_clk clk_sclk_pixel = {
|
||||
.clk = {
|
||||
.name = "sclk_pixel",
|
||||
.id = -1,
|
||||
.parent = &clk_sclk_vpll.clk,
|
||||
},
|
||||
.reg_div = { .reg = S5P_CLK_DIV1, .shift = 0, .size = 4},
|
||||
@ -609,7 +571,6 @@ static struct clksrc_sources clkset_sclk_hdmi = {
|
||||
static struct clksrc_clk clk_sclk_hdmi = {
|
||||
.clk = {
|
||||
.name = "sclk_hdmi",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 0),
|
||||
},
|
||||
@ -647,7 +608,7 @@ static struct clksrc_sources clkset_sclk_audio0 = {
|
||||
static struct clksrc_clk clk_sclk_audio0 = {
|
||||
.clk = {
|
||||
.name = "sclk_audio",
|
||||
.id = 0,
|
||||
.devname = "soc-audio.0",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 24),
|
||||
},
|
||||
@ -676,7 +637,7 @@ static struct clksrc_sources clkset_sclk_audio1 = {
|
||||
static struct clksrc_clk clk_sclk_audio1 = {
|
||||
.clk = {
|
||||
.name = "sclk_audio",
|
||||
.id = 1,
|
||||
.devname = "soc-audio.1",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 25),
|
||||
},
|
||||
@ -705,7 +666,7 @@ static struct clksrc_sources clkset_sclk_audio2 = {
|
||||
static struct clksrc_clk clk_sclk_audio2 = {
|
||||
.clk = {
|
||||
.name = "sclk_audio",
|
||||
.id = 2,
|
||||
.devname = "soc-audio.2",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 26),
|
||||
},
|
||||
@ -725,48 +686,12 @@ static struct clksrc_sources clkset_sclk_spdif = {
|
||||
.nr_sources = ARRAY_SIZE(clkset_sclk_spdif_list),
|
||||
};
|
||||
|
||||
static int s5pv210_spdif_set_rate(struct clk *clk, unsigned long rate)
|
||||
{
|
||||
struct clk *pclk;
|
||||
int ret;
|
||||
|
||||
pclk = clk_get_parent(clk);
|
||||
if (IS_ERR(pclk))
|
||||
return -EINVAL;
|
||||
|
||||
ret = pclk->ops->set_rate(pclk, rate);
|
||||
clk_put(pclk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static unsigned long s5pv210_spdif_get_rate(struct clk *clk)
|
||||
{
|
||||
struct clk *pclk;
|
||||
int rate;
|
||||
|
||||
pclk = clk_get_parent(clk);
|
||||
if (IS_ERR(pclk))
|
||||
return -EINVAL;
|
||||
|
||||
rate = pclk->ops->get_rate(clk);
|
||||
clk_put(pclk);
|
||||
|
||||
return rate;
|
||||
}
|
||||
|
||||
static struct clk_ops s5pv210_sclk_spdif_ops = {
|
||||
.set_rate = s5pv210_spdif_set_rate,
|
||||
.get_rate = s5pv210_spdif_get_rate,
|
||||
};
|
||||
|
||||
static struct clksrc_clk clk_sclk_spdif = {
|
||||
.clk = {
|
||||
.name = "sclk_spdif",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 27),
|
||||
.ops = &s5pv210_sclk_spdif_ops,
|
||||
.ops = &s5p_sclk_spdif_ops,
|
||||
},
|
||||
.sources = &clkset_sclk_spdif,
|
||||
.reg_src = { .reg = S5P_CLK_SRC6, .shift = 12, .size = 2 },
|
||||
@ -793,7 +718,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
{
|
||||
.clk = {
|
||||
.name = "sclk_dmc",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_group1,
|
||||
.reg_src = { .reg = S5P_CLK_SRC6, .shift = 24, .size = 2 },
|
||||
@ -801,7 +725,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_onenand",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &clkset_sclk_onenand,
|
||||
.reg_src = { .reg = S5P_CLK_SRC0, .shift = 28, .size = 1 },
|
||||
@ -809,7 +732,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = 0,
|
||||
.devname = "s5pv210-uart.0",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
},
|
||||
@ -819,7 +742,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = 1,
|
||||
.devname = "s5pv210-uart.1",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 13),
|
||||
},
|
||||
@ -829,7 +752,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = 2,
|
||||
.devname = "s5pv210-uart.2",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 14),
|
||||
},
|
||||
@ -839,7 +762,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "uclk1",
|
||||
.id = 3,
|
||||
.devname = "s5pv210-uart.3",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 15),
|
||||
},
|
||||
@ -849,7 +772,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mixer",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 1),
|
||||
},
|
||||
@ -858,7 +780,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = 0,
|
||||
.devname = "s5pv210-fimc.0",
|
||||
.enable = s5pv210_clk_mask1_ctrl,
|
||||
.ctrlbit = (1 << 2),
|
||||
},
|
||||
@ -868,7 +790,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = 1,
|
||||
.devname = "s5pv210-fimc.1",
|
||||
.enable = s5pv210_clk_mask1_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
},
|
||||
@ -878,7 +800,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimc",
|
||||
.id = 2,
|
||||
.devname = "s5pv210-fimc.2",
|
||||
.enable = s5pv210_clk_mask1_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
},
|
||||
@ -888,7 +810,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_cam",
|
||||
.id = 0,
|
||||
.devname = "s5pv210-fimc.0",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 3),
|
||||
},
|
||||
@ -898,7 +820,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_cam",
|
||||
.id = 1,
|
||||
.devname = "s5pv210-fimc.1",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 4),
|
||||
},
|
||||
@ -908,7 +830,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_fimd",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 5),
|
||||
},
|
||||
@ -918,7 +839,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 0,
|
||||
.devname = "s3c-sdhci.0",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
},
|
||||
@ -928,7 +849,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 1,
|
||||
.devname = "s3c-sdhci.1",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 9),
|
||||
},
|
||||
@ -938,7 +859,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 2,
|
||||
.devname = "s3c-sdhci.2",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 10),
|
||||
},
|
||||
@ -948,7 +869,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mmc",
|
||||
.id = 3,
|
||||
.devname = "s3c-sdhci.3",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 11),
|
||||
},
|
||||
@ -958,7 +879,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_mfc",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_ip0_ctrl,
|
||||
.ctrlbit = (1 << 16),
|
||||
},
|
||||
@ -968,7 +888,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_g2d",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_ip0_ctrl,
|
||||
.ctrlbit = (1 << 12),
|
||||
},
|
||||
@ -978,7 +897,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_g3d",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_ip0_ctrl,
|
||||
.ctrlbit = (1 << 8),
|
||||
},
|
||||
@ -988,7 +906,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_csis",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 6),
|
||||
},
|
||||
@ -998,7 +915,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 0,
|
||||
.devname = "s3c64xx-spi.0",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 16),
|
||||
},
|
||||
@ -1008,7 +925,7 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_spi",
|
||||
.id = 1,
|
||||
.devname = "s3c64xx-spi.1",
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 17),
|
||||
},
|
||||
@ -1018,7 +935,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_pwi",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 29),
|
||||
},
|
||||
@ -1028,7 +944,6 @@ static struct clksrc_clk clksrcs[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "sclk_pwm",
|
||||
.id = -1,
|
||||
.enable = s5pv210_clk_mask0_ctrl,
|
||||
.ctrlbit = (1 << 19),
|
||||
},
|
||||
|
@ -85,6 +85,7 @@ static struct s3c64xx_spi_info s5pv210_spi0_pdata = {
|
||||
.fifo_lvl_mask = 0x1ff,
|
||||
.rx_lvl_offset = 15,
|
||||
.high_speed = 1,
|
||||
.tx_st_done = 25,
|
||||
};
|
||||
|
||||
static u64 spi_dmamask = DMA_BIT_MASK(32);
|
||||
@ -129,6 +130,7 @@ static struct s3c64xx_spi_info s5pv210_spi1_pdata = {
|
||||
.fifo_lvl_mask = 0x7f,
|
||||
.rx_lvl_offset = 15,
|
||||
.high_speed = 1,
|
||||
.tx_st_done = 25,
|
||||
};
|
||||
|
||||
struct platform_device s5pv210_device_spi1 = {
|
||||
|
7
arch/arm/mach-s5pv210/include/mach/clkdev.h
Normal file
7
arch/arm/mach-s5pv210/include/mach/clkdev.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef __MACH_CLKDEV_H__
|
||||
#define __MACH_CLKDEV_H__
|
||||
|
||||
#define __clk_get(clk) ({ 1; })
|
||||
#define __clk_put(clk) do {} while (0)
|
||||
|
||||
#endif
|
@ -1,21 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010 Ben Dooks <ben-linux@fluff.org>
|
||||
*
|
||||
* Dummy framebuffer to allow build for the moment.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_MACH_REGS_FB_H
|
||||
#define __ASM_ARCH_MACH_REGS_FB_H __FILE__
|
||||
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
static inline unsigned int s3c_fb_pal_reg(unsigned int window, int reg)
|
||||
{
|
||||
return 0x2400 + (window * 256 *4 ) + reg;
|
||||
}
|
||||
|
||||
#endif /* __ASM_ARCH_MACH_REGS_FB_H */
|
@ -29,7 +29,6 @@
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/regs-clock.h>
|
||||
#include <mach/regs-fb.h>
|
||||
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/regs-serial.h>
|
||||
@ -40,6 +39,7 @@
|
||||
#include <plat/fimc-core.h>
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
/* Following are default values for UCON, ULCON and UFCON UART registers */
|
||||
#define AQUILA_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
|
||||
|
@ -34,7 +34,6 @@
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/regs-clock.h>
|
||||
#include <mach/regs-fb.h>
|
||||
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/regs-serial.h>
|
||||
@ -47,6 +46,7 @@
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
/* Following are default values for UCON, ULCON and UFCON UART registers */
|
||||
#define GONI_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
|
||||
|
@ -29,7 +29,6 @@
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/regs-clock.h>
|
||||
#include <mach/regs-fb.h>
|
||||
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/regs-srom.h>
|
||||
@ -45,6 +44,8 @@
|
||||
#include <plat/pm.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/backlight.h>
|
||||
#include <plat/regs-fb-v4.h>
|
||||
|
||||
/* Following are default values for UCON, ULCON and UFCON UART registers */
|
||||
#define SMDKV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
|
||||
@ -210,45 +211,6 @@ static struct s3c_fb_platdata smdkv210_lcd0_pdata __initdata = {
|
||||
.setup_gpio = s5pv210_fb_gpio_setup_24bpp,
|
||||
};
|
||||
|
||||
static int smdkv210_backlight_init(struct device *dev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = gpio_request(S5PV210_GPD0(3), "Backlight");
|
||||
if (ret) {
|
||||
printk(KERN_ERR "failed to request GPD for PWM-OUT 3\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Configure GPIO pin with S5PV210_GPD_0_3_TOUT_3 */
|
||||
s3c_gpio_cfgpin(S5PV210_GPD0(3), S3C_GPIO_SFN(2));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void smdkv210_backlight_exit(struct device *dev)
|
||||
{
|
||||
s3c_gpio_cfgpin(S5PV210_GPD0(3), S3C_GPIO_OUTPUT);
|
||||
gpio_free(S5PV210_GPD0(3));
|
||||
}
|
||||
|
||||
static struct platform_pwm_backlight_data smdkv210_backlight_data = {
|
||||
.pwm_id = 3,
|
||||
.max_brightness = 255,
|
||||
.dft_brightness = 255,
|
||||
.pwm_period_ns = 78770,
|
||||
.init = smdkv210_backlight_init,
|
||||
.exit = smdkv210_backlight_exit,
|
||||
};
|
||||
|
||||
static struct platform_device smdkv210_backlight_device = {
|
||||
.name = "pwm-backlight",
|
||||
.dev = {
|
||||
.parent = &s3c_device_timer[3].dev,
|
||||
.platform_data = &smdkv210_backlight_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *smdkv210_devices[] __initdata = {
|
||||
&s3c_device_adc,
|
||||
&s3c_device_cfcon,
|
||||
@ -270,8 +232,6 @@ static struct platform_device *smdkv210_devices[] __initdata = {
|
||||
&samsung_device_keypad,
|
||||
&smdkv210_dm9000,
|
||||
&smdkv210_lcd_lte480wv,
|
||||
&s3c_device_timer[3],
|
||||
&smdkv210_backlight_device,
|
||||
};
|
||||
|
||||
static void __init smdkv210_dm9000_init(void)
|
||||
@ -310,6 +270,16 @@ static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
||||
.oversampling_shift = 2,
|
||||
};
|
||||
|
||||
/* LCD Backlight data */
|
||||
static struct samsung_bl_gpio_info smdkv210_bl_gpio_info = {
|
||||
.no = S5PV210_GPD0(3),
|
||||
.func = S3C_GPIO_SFN(2),
|
||||
};
|
||||
|
||||
static struct platform_pwm_backlight_data smdkv210_bl_data = {
|
||||
.pwm_id = 3,
|
||||
};
|
||||
|
||||
static void __init smdkv210_map_io(void)
|
||||
{
|
||||
s5p_init_io(NULL, 0, S5P_VA_CHIPID);
|
||||
@ -341,6 +311,8 @@ static void __init smdkv210_machine_init(void)
|
||||
|
||||
s3c_fb_set_platdata(&smdkv210_lcd0_pdata);
|
||||
|
||||
samsung_bl_set(&smdkv210_bl_gpio_info, &smdkv210_bl_data);
|
||||
|
||||
platform_add_devices(smdkv210_devices, ARRAY_SIZE(smdkv210_devices));
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,6 @@
|
||||
#include <linux/fb.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <mach/regs-fb.h>
|
||||
#include <mach/map.h>
|
||||
#include <plat/fb.h>
|
||||
#include <mach/regs-clock.h>
|
||||
|
@ -39,9 +39,10 @@
|
||||
static void __iomem *ic_regbase;
|
||||
static void __iomem *sic_regbase;
|
||||
|
||||
static void vt8500_irq_mask(unsigned int irq)
|
||||
static void vt8500_irq_mask(struct irq_data *d)
|
||||
{
|
||||
void __iomem *base = ic_regbase;
|
||||
unsigned irq = d->irq;
|
||||
u8 edge;
|
||||
|
||||
if (irq >= 64) {
|
||||
@ -64,9 +65,10 @@ static void vt8500_irq_mask(unsigned int irq)
|
||||
}
|
||||
}
|
||||
|
||||
static void vt8500_irq_unmask(unsigned int irq)
|
||||
static void vt8500_irq_unmask(struct irq_data *d)
|
||||
{
|
||||
void __iomem *base = ic_regbase;
|
||||
unsigned irq = d->irq;
|
||||
u8 dctr;
|
||||
|
||||
if (irq >= 64) {
|
||||
@ -78,10 +80,11 @@ static void vt8500_irq_unmask(unsigned int irq)
|
||||
writeb(dctr, base + VT8500_IC_DCTR + irq);
|
||||
}
|
||||
|
||||
static int vt8500_irq_set_type(unsigned int irq, unsigned int flow_type)
|
||||
static int vt8500_irq_set_type(struct irq_data *d, unsigned int flow_type)
|
||||
{
|
||||
void __iomem *base = ic_regbase;
|
||||
unsigned int orig_irq = irq;
|
||||
unsigned irq = d->irq;
|
||||
unsigned orig_irq = irq;
|
||||
u8 dctr;
|
||||
|
||||
if (irq >= 64) {
|
||||
@ -114,11 +117,11 @@ static int vt8500_irq_set_type(unsigned int irq, unsigned int flow_type)
|
||||
}
|
||||
|
||||
static struct irq_chip vt8500_irq_chip = {
|
||||
.name = "vt8500",
|
||||
.ack = vt8500_irq_mask,
|
||||
.mask = vt8500_irq_mask,
|
||||
.unmask = vt8500_irq_unmask,
|
||||
.set_type = vt8500_irq_set_type,
|
||||
.name = "vt8500",
|
||||
.irq_ack = vt8500_irq_mask,
|
||||
.irq_mask = vt8500_irq_mask,
|
||||
.irq_unmask = vt8500_irq_unmask,
|
||||
.irq_set_type = vt8500_irq_set_type,
|
||||
};
|
||||
|
||||
void __init vt8500_init_irq(void)
|
||||
|
@ -120,17 +120,22 @@ static void l2x0_cache_sync(void)
|
||||
spin_unlock_irqrestore(&l2x0_lock, flags);
|
||||
}
|
||||
|
||||
static void __l2x0_flush_all(void)
|
||||
{
|
||||
debug_writel(0x03);
|
||||
writel_relaxed(l2x0_way_mask, l2x0_base + L2X0_CLEAN_INV_WAY);
|
||||
cache_wait_way(l2x0_base + L2X0_CLEAN_INV_WAY, l2x0_way_mask);
|
||||
cache_sync();
|
||||
debug_writel(0x00);
|
||||
}
|
||||
|
||||
static void l2x0_flush_all(void)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
/* clean all ways */
|
||||
spin_lock_irqsave(&l2x0_lock, flags);
|
||||
debug_writel(0x03);
|
||||
writel_relaxed(l2x0_way_mask, l2x0_base + L2X0_CLEAN_INV_WAY);
|
||||
cache_wait_way(l2x0_base + L2X0_CLEAN_INV_WAY, l2x0_way_mask);
|
||||
cache_sync();
|
||||
debug_writel(0x00);
|
||||
__l2x0_flush_all();
|
||||
spin_unlock_irqrestore(&l2x0_lock, flags);
|
||||
}
|
||||
|
||||
@ -266,7 +271,9 @@ static void l2x0_disable(void)
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&l2x0_lock, flags);
|
||||
writel(0, l2x0_base + L2X0_CTRL);
|
||||
__l2x0_flush_all();
|
||||
writel_relaxed(0, l2x0_base + L2X0_CTRL);
|
||||
dsb();
|
||||
spin_unlock_irqrestore(&l2x0_lock, flags);
|
||||
}
|
||||
|
||||
|
@ -759,7 +759,7 @@ early_param("vmalloc", early_vmalloc);
|
||||
|
||||
static phys_addr_t lowmem_limit __initdata = 0;
|
||||
|
||||
static void __init sanity_check_meminfo(void)
|
||||
void __init sanity_check_meminfo(void)
|
||||
{
|
||||
int i, j, highmem = 0;
|
||||
|
||||
@ -1032,8 +1032,9 @@ void __init paging_init(struct machine_desc *mdesc)
|
||||
{
|
||||
void *zero_page;
|
||||
|
||||
memblock_set_current_limit(lowmem_limit);
|
||||
|
||||
build_mem_type_table();
|
||||
sanity_check_meminfo();
|
||||
prepare_page_table();
|
||||
map_lowmem();
|
||||
devicemaps_init(mdesc);
|
||||
|
@ -27,6 +27,10 @@ void __init arm_mm_memblock_reserve(void)
|
||||
memblock_reserve(CONFIG_VECTORS_BASE, PAGE_SIZE);
|
||||
}
|
||||
|
||||
void __init sanity_check_meminfo(void)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* paging_init() sets up the page tables, initialises the zone memory
|
||||
* maps, and sets up the zero page, bad page and bad page tables.
|
||||
|
@ -169,7 +169,6 @@ static struct clk_ops dclk_ops = {
|
||||
|
||||
struct clk s3c24xx_dclk0 = {
|
||||
.name = "dclk0",
|
||||
.id = -1,
|
||||
.ctrlbit = S3C2410_DCLKCON_DCLK0EN,
|
||||
.enable = s3c24xx_dclk_enable,
|
||||
.ops = &dclk_ops,
|
||||
@ -177,7 +176,6 @@ struct clk s3c24xx_dclk0 = {
|
||||
|
||||
struct clk s3c24xx_dclk1 = {
|
||||
.name = "dclk1",
|
||||
.id = -1,
|
||||
.ctrlbit = S3C2410_DCLKCON_DCLK1EN,
|
||||
.enable = s3c24xx_dclk_enable,
|
||||
.ops = &dclk_ops,
|
||||
@ -189,12 +187,10 @@ static struct clk_ops clkout_ops = {
|
||||
|
||||
struct clk s3c24xx_clkout0 = {
|
||||
.name = "clkout0",
|
||||
.id = -1,
|
||||
.ops = &clkout_ops,
|
||||
};
|
||||
|
||||
struct clk s3c24xx_clkout1 = {
|
||||
.name = "clkout1",
|
||||
.id = -1,
|
||||
.ops = &clkout_ops,
|
||||
};
|
||||
|
@ -150,9 +150,8 @@ void __init s3c24xx_fb_set_platdata(struct s3c2410fb_mach_info *pd)
|
||||
{
|
||||
struct s3c2410fb_mach_info *npd;
|
||||
|
||||
npd = kmemdup(pd, sizeof(*npd), GFP_KERNEL);
|
||||
npd = s3c_set_platdata(pd, sizeof(*npd), &s3c_device_lcd);
|
||||
if (npd) {
|
||||
s3c_device_lcd.dev.platform_data = npd;
|
||||
npd->displays = kmemdup(pd->displays,
|
||||
sizeof(struct s3c2410fb_display) * npd->num_displays,
|
||||
GFP_KERNEL);
|
||||
@ -188,12 +187,10 @@ struct platform_device s3c_device_ts = {
|
||||
};
|
||||
EXPORT_SYMBOL(s3c_device_ts);
|
||||
|
||||
static struct s3c2410_ts_mach_info s3c2410ts_info;
|
||||
|
||||
void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
|
||||
{
|
||||
memcpy(&s3c2410ts_info, hard_s3c2410ts_info, sizeof(struct s3c2410_ts_mach_info));
|
||||
s3c_device_ts.dev.platform_data = &s3c2410ts_info;
|
||||
s3c_set_platdata(hard_s3c2410ts_info,
|
||||
sizeof(struct s3c2410_ts_mach_info), &s3c_device_ts);
|
||||
}
|
||||
|
||||
/* USB Device (Gadget)*/
|
||||
@ -223,15 +220,7 @@ EXPORT_SYMBOL(s3c_device_usbgadget);
|
||||
|
||||
void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *pd)
|
||||
{
|
||||
struct s3c2410_udc_mach_info *npd;
|
||||
|
||||
npd = kmalloc(sizeof(*npd), GFP_KERNEL);
|
||||
if (npd) {
|
||||
memcpy(npd, pd, sizeof(*npd));
|
||||
s3c_device_usbgadget.dev.platform_data = npd;
|
||||
} else {
|
||||
printk(KERN_ERR "no memory for udc platform data\n");
|
||||
}
|
||||
s3c_set_platdata(pd, sizeof(*pd), &s3c_device_usbgadget);
|
||||
}
|
||||
|
||||
/* USB High Speed 2.0 Device (Gadget) */
|
||||
@ -263,15 +252,7 @@ struct platform_device s3c_device_usb_hsudc = {
|
||||
|
||||
void __init s3c24xx_hsudc_set_platdata(struct s3c24xx_hsudc_platdata *pd)
|
||||
{
|
||||
struct s3c24xx_hsudc_platdata *npd;
|
||||
|
||||
npd = kmalloc(sizeof(*npd), GFP_KERNEL);
|
||||
if (npd) {
|
||||
memcpy(npd, pd, sizeof(*npd));
|
||||
s3c_device_usb_hsudc.dev.platform_data = npd;
|
||||
} else {
|
||||
printk(KERN_ERR "no memory for udc platform data\n");
|
||||
}
|
||||
s3c_set_platdata(pd, sizeof(*pd), &s3c_device_usb_hsudc);
|
||||
}
|
||||
|
||||
/* IIS */
|
||||
@ -383,13 +364,8 @@ EXPORT_SYMBOL(s3c_device_sdi);
|
||||
|
||||
void __init s3c24xx_mci_set_platdata(struct s3c24xx_mci_pdata *pdata)
|
||||
{
|
||||
struct s3c24xx_mci_pdata *npd;
|
||||
|
||||
npd = kmemdup(pdata, sizeof(struct s3c24xx_mci_pdata), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory to copy pdata", __func__);
|
||||
|
||||
s3c_device_sdi.dev.platform_data = npd;
|
||||
s3c_set_platdata(pdata, sizeof(struct s3c24xx_mci_pdata),
|
||||
&s3c_device_sdi);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1027,17 +1027,13 @@ int s3c2410_dma_config(unsigned int channel,
|
||||
struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel);
|
||||
unsigned int dcon;
|
||||
|
||||
pr_debug("%s: chan=%d, xfer_unit=%d, dcon=%08x\n",
|
||||
__func__, channel, xferunit, dcon);
|
||||
pr_debug("%s: chan=%d, xfer_unit=%d\n", __func__, channel, xferunit);
|
||||
|
||||
if (chan == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: Initial dcon is %08x\n", __func__, dcon);
|
||||
|
||||
dcon = chan->dcon & dma_sel.dcon_mask;
|
||||
|
||||
pr_debug("%s: New dcon is %08x\n", __func__, dcon);
|
||||
pr_debug("%s: dcon is %08x\n", __func__, dcon);
|
||||
|
||||
switch (chan->req_ch) {
|
||||
case DMACH_I2S_IN:
|
||||
@ -1235,7 +1231,7 @@ static void s3c2410_dma_resume_chan(struct s3c2410_dma_chan *cp)
|
||||
/* restore channel's hardware configuration */
|
||||
|
||||
if (!cp->in_use)
|
||||
return 0;
|
||||
return;
|
||||
|
||||
printk(KERN_INFO "dma%d: restoring configuration\n", cp->number);
|
||||
|
||||
@ -1246,8 +1242,6 @@ static void s3c2410_dma_resume_chan(struct s3c2410_dma_chan *cp)
|
||||
|
||||
if (cp->map != NULL)
|
||||
dma_sel.select(cp, cp->map);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void s3c2410_dma_resume(void)
|
||||
|
7
arch/arm/plat-s3c24xx/include/mach/clkdev.h
Normal file
7
arch/arm/plat-s3c24xx/include/mach/clkdev.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef __MACH_CLKDEV_H__
|
||||
#define __MACH_CLKDEV_H__
|
||||
|
||||
#define __clk_get(clk) ({ 1; })
|
||||
#define __clk_put(clk) do {} while (0)
|
||||
|
||||
#endif
|
@ -90,37 +90,31 @@ static int s3c2410_upll_enable(struct clk *clk, int enable)
|
||||
static struct clk init_clocks_off[] = {
|
||||
{
|
||||
.name = "nand",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_NAND,
|
||||
}, {
|
||||
.name = "sdi",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_SDI,
|
||||
}, {
|
||||
.name = "adc",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_ADC,
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_IIC,
|
||||
}, {
|
||||
.name = "iis",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_IIS,
|
||||
}, {
|
||||
.name = "spi",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_SPI,
|
||||
@ -130,70 +124,61 @@ static struct clk init_clocks_off[] = {
|
||||
static struct clk init_clocks[] = {
|
||||
{
|
||||
.name = "lcd",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_LCDC,
|
||||
}, {
|
||||
.name = "gpio",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_GPIO,
|
||||
}, {
|
||||
.name = "usb-host",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_USBH,
|
||||
}, {
|
||||
.name = "usb-device",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_USBD,
|
||||
}, {
|
||||
.name = "timers",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_PWMT,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 0,
|
||||
.devname = "s3c2410-uart.0",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_UART0,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 1,
|
||||
.devname = "s3c2410-uart.1",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_UART1,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 2,
|
||||
.devname = "s3c2410-uart.2",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_UART2,
|
||||
}, {
|
||||
.name = "rtc",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2410_clkcon_enable,
|
||||
.ctrlbit = S3C2410_CLKCON_RTC,
|
||||
}, {
|
||||
.name = "watchdog",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.ctrlbit = 0,
|
||||
}, {
|
||||
.name = "usb-bus-host",
|
||||
.id = -1,
|
||||
.parent = &clk_usb_bus,
|
||||
}, {
|
||||
.name = "usb-bus-gadget",
|
||||
.id = -1,
|
||||
.parent = &clk_usb_bus,
|
||||
},
|
||||
};
|
||||
|
@ -56,7 +56,6 @@ int s3c2443_clkcon_enable_s(struct clk *clk, int enable)
|
||||
struct clk clk_mpllref = {
|
||||
.name = "mpllref",
|
||||
.parent = &clk_xtal,
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct clk *clk_epllref_sources[] = {
|
||||
@ -69,7 +68,6 @@ static struct clk *clk_epllref_sources[] = {
|
||||
struct clksrc_clk clk_epllref = {
|
||||
.clk = {
|
||||
.name = "epllref",
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &(struct clksrc_sources) {
|
||||
.sources = clk_epllref_sources,
|
||||
@ -92,7 +90,6 @@ struct clksrc_clk clk_esysclk = {
|
||||
.clk = {
|
||||
.name = "esysclk",
|
||||
.parent = &clk_epll,
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &(struct clksrc_sources) {
|
||||
.sources = clk_sysclk_sources,
|
||||
@ -115,7 +112,6 @@ static unsigned long s3c2443_getrate_mdivclk(struct clk *clk)
|
||||
static struct clk clk_mdivclk = {
|
||||
.name = "mdivclk",
|
||||
.parent = &clk_mpllref,
|
||||
.id = -1,
|
||||
.ops = &(struct clk_ops) {
|
||||
.get_rate = s3c2443_getrate_mdivclk,
|
||||
},
|
||||
@ -132,7 +128,6 @@ struct clksrc_clk clk_msysclk = {
|
||||
.clk = {
|
||||
.name = "msysclk",
|
||||
.parent = &clk_xtal,
|
||||
.id = -1,
|
||||
},
|
||||
.sources = &(struct clksrc_sources) {
|
||||
.sources = clk_msysclk_sources,
|
||||
@ -159,7 +154,6 @@ static unsigned long s3c2443_prediv_getrate(struct clk *clk)
|
||||
|
||||
static struct clk clk_prediv = {
|
||||
.name = "prediv",
|
||||
.id = -1,
|
||||
.parent = &clk_msysclk.clk,
|
||||
.ops = &(struct clk_ops) {
|
||||
.get_rate = s3c2443_prediv_getrate,
|
||||
@ -174,7 +168,6 @@ static struct clk clk_prediv = {
|
||||
static struct clksrc_clk clk_usb_bus_host = {
|
||||
.clk = {
|
||||
.name = "usb-bus-host-parent",
|
||||
.id = -1,
|
||||
.parent = &clk_esysclk.clk,
|
||||
.ctrlbit = S3C2443_SCLKCON_USBHOST,
|
||||
.enable = s3c2443_clkcon_enable_s,
|
||||
@ -189,7 +182,6 @@ static struct clksrc_clk clksrc_clks[] = {
|
||||
/* ART baud-rate clock sourced from esysclk via a divisor */
|
||||
.clk = {
|
||||
.name = "uartclk",
|
||||
.id = -1,
|
||||
.parent = &clk_esysclk.clk,
|
||||
},
|
||||
.reg_div = { .reg = S3C2443_CLKDIV1, .size = 4, .shift = 8 },
|
||||
@ -197,7 +189,6 @@ static struct clksrc_clk clksrc_clks[] = {
|
||||
/* camera interface bus-clock, divided down from esysclk */
|
||||
.clk = {
|
||||
.name = "camif-upll", /* same as 2440 name */
|
||||
.id = -1,
|
||||
.parent = &clk_esysclk.clk,
|
||||
.ctrlbit = S3C2443_SCLKCON_CAMCLK,
|
||||
.enable = s3c2443_clkcon_enable_s,
|
||||
@ -206,7 +197,6 @@ static struct clksrc_clk clksrc_clks[] = {
|
||||
}, {
|
||||
.clk = {
|
||||
.name = "display-if",
|
||||
.id = -1,
|
||||
.parent = &clk_esysclk.clk,
|
||||
.ctrlbit = S3C2443_SCLKCON_DISPCLK,
|
||||
.enable = s3c2443_clkcon_enable_s,
|
||||
@ -219,13 +209,11 @@ static struct clksrc_clk clksrc_clks[] = {
|
||||
static struct clk init_clocks_off[] = {
|
||||
{
|
||||
.name = "adc",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_ADC,
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_IIC,
|
||||
@ -235,136 +223,117 @@ static struct clk init_clocks_off[] = {
|
||||
static struct clk init_clocks[] = {
|
||||
{
|
||||
.name = "dma",
|
||||
.id = 0,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_DMA0,
|
||||
}, {
|
||||
.name = "dma",
|
||||
.id = 1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_DMA1,
|
||||
}, {
|
||||
.name = "dma",
|
||||
.id = 2,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_DMA2,
|
||||
}, {
|
||||
.name = "dma",
|
||||
.id = 3,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_DMA3,
|
||||
}, {
|
||||
.name = "dma",
|
||||
.id = 4,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_DMA4,
|
||||
}, {
|
||||
.name = "dma",
|
||||
.id = 5,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_DMA5,
|
||||
}, {
|
||||
.name = "hsmmc",
|
||||
.id = 1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_HSMMC,
|
||||
}, {
|
||||
.name = "gpio",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_GPIO,
|
||||
}, {
|
||||
.name = "usb-host",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_USBH,
|
||||
}, {
|
||||
.name = "usb-device",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_USBD,
|
||||
}, {
|
||||
.name = "lcd",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_LCDC,
|
||||
|
||||
}, {
|
||||
.name = "timers",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_PWMT,
|
||||
}, {
|
||||
.name = "cfc",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_CFC,
|
||||
}, {
|
||||
.name = "ssmc",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
.enable = s3c2443_clkcon_enable_h,
|
||||
.ctrlbit = S3C2443_HCLKCON_SSMC,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 0,
|
||||
.devname = "s3c2440-uart.0",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_UART0,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 1,
|
||||
.devname = "s3c2440-uart.1",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_UART1,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 2,
|
||||
.devname = "s3c2440-uart.2",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_UART2,
|
||||
}, {
|
||||
.name = "uart",
|
||||
.id = 3,
|
||||
.devname = "s3c2440-uart.3",
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_UART3,
|
||||
}, {
|
||||
.name = "rtc",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.enable = s3c2443_clkcon_enable_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_RTC,
|
||||
}, {
|
||||
.name = "watchdog",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_WDT,
|
||||
}, {
|
||||
.name = "ac97",
|
||||
.id = -1,
|
||||
.parent = &clk_p,
|
||||
.ctrlbit = S3C2443_PCLKCON_AC97,
|
||||
}, {
|
||||
.name = "nand",
|
||||
.id = -1,
|
||||
.parent = &clk_h,
|
||||
}, {
|
||||
.name = "usb-bus-host",
|
||||
.id = -1,
|
||||
.parent = &clk_usb_bus_host.clk,
|
||||
}
|
||||
};
|
||||
|
@ -168,6 +168,41 @@ unsigned long s5p_epll_get_rate(struct clk *clk)
|
||||
return clk->rate;
|
||||
}
|
||||
|
||||
int s5p_spdif_set_rate(struct clk *clk, unsigned long rate)
|
||||
{
|
||||
struct clk *pclk;
|
||||
int ret;
|
||||
|
||||
pclk = clk_get_parent(clk);
|
||||
if (IS_ERR(pclk))
|
||||
return -EINVAL;
|
||||
|
||||
ret = pclk->ops->set_rate(pclk, rate);
|
||||
clk_put(pclk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
unsigned long s5p_spdif_get_rate(struct clk *clk)
|
||||
{
|
||||
struct clk *pclk;
|
||||
int rate;
|
||||
|
||||
pclk = clk_get_parent(clk);
|
||||
if (IS_ERR(pclk))
|
||||
return -EINVAL;
|
||||
|
||||
rate = pclk->ops->get_rate(clk);
|
||||
clk_put(pclk);
|
||||
|
||||
return rate;
|
||||
}
|
||||
|
||||
struct clk_ops s5p_sclk_spdif_ops = {
|
||||
.set_rate = s5p_spdif_set_rate,
|
||||
.get_rate = s5p_spdif_get_rate,
|
||||
};
|
||||
|
||||
static struct clk *s5p_clks[] __initdata = {
|
||||
&clk_ext_xtal_mux,
|
||||
&clk_48m,
|
||||
|
@ -47,4 +47,9 @@ extern int s5p_gatectrl(void __iomem *reg, struct clk *clk, int enable);
|
||||
extern int s5p_epll_enable(struct clk *clk, int enable);
|
||||
extern unsigned long s5p_epll_get_rate(struct clk *clk);
|
||||
|
||||
/* SPDIF clk operations common for S5PC100/V210/C110 and Exynos4 */
|
||||
extern int s5p_spdif_set_rate(struct clk *clk, unsigned long rate);
|
||||
extern unsigned long s5p_spdif_get_rate(struct clk *clk);
|
||||
|
||||
extern struct clk_ops s5p_sclk_spdif_ops;
|
||||
#endif /* __ASM_PLAT_S5P_CLOCK_H */
|
||||
|
@ -314,13 +314,6 @@ static void __iomem *s5p_timer_reg(void)
|
||||
return S3C_TIMERREG(offset);
|
||||
}
|
||||
|
||||
static cycle_t s5p_timer_read(struct clocksource *cs)
|
||||
{
|
||||
void __iomem *reg = s5p_timer_reg();
|
||||
|
||||
return (cycle_t) (reg ? ~__raw_readl(reg) : 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Override the global weak sched_clock symbol with this
|
||||
* local implementation which uses the clocksource to get some
|
||||
@ -350,14 +343,6 @@ static void notrace s5p_update_sched_clock(void)
|
||||
update_sched_clock(&cd, ~__raw_readl(reg), (u32)~0);
|
||||
}
|
||||
|
||||
struct clocksource time_clocksource = {
|
||||
.name = "s5p_clocksource_timer",
|
||||
.rating = 250,
|
||||
.read = s5p_timer_read,
|
||||
.mask = CLOCKSOURCE_MASK(32),
|
||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||
};
|
||||
|
||||
static void __init s5p_clocksource_init(void)
|
||||
{
|
||||
unsigned long pclk;
|
||||
@ -370,13 +355,14 @@ static void __init s5p_clocksource_init(void)
|
||||
|
||||
clock_rate = clk_get_rate(tin_source);
|
||||
|
||||
init_sched_clock(&cd, s5p_update_sched_clock, 32, clock_rate);
|
||||
|
||||
s5p_time_setup(timer_source.source_id, TCNT_MAX);
|
||||
s5p_time_start(timer_source.source_id, PERIODIC);
|
||||
|
||||
if (clocksource_register_hz(&time_clocksource, clock_rate))
|
||||
panic("%s: can't register clocksource\n", time_clocksource.name);
|
||||
init_sched_clock(&cd, s5p_update_sched_clock, 32, clock_rate);
|
||||
|
||||
if (clocksource_mmio_init(s5p_timer_reg(), "s5p_clocksource_timer",
|
||||
clock_rate, 250, 32, clocksource_mmio_readl_down))
|
||||
panic("s5p_clocksource_timer: can't register clocksource\n");
|
||||
}
|
||||
|
||||
static void __init s5p_timer_resources(void)
|
||||
@ -384,6 +370,7 @@ static void __init s5p_timer_resources(void)
|
||||
|
||||
unsigned long event_id = timer_source.event_id;
|
||||
unsigned long source_id = timer_source.source_id;
|
||||
char devname[15];
|
||||
|
||||
timerclk = clk_get(NULL, "timers");
|
||||
if (IS_ERR(timerclk))
|
||||
@ -391,6 +378,10 @@ static void __init s5p_timer_resources(void)
|
||||
|
||||
clk_enable(timerclk);
|
||||
|
||||
sprintf(devname, "s3c24xx-pwm.%lu", event_id);
|
||||
s3c_device_timer[event_id].id = event_id;
|
||||
s3c_device_timer[event_id].dev.init_name = devname;
|
||||
|
||||
tin_event = clk_get(&s3c_device_timer[event_id].dev, "pwm-tin");
|
||||
if (IS_ERR(tin_event))
|
||||
panic("failed to get pwm-tin clock for event timer");
|
||||
@ -401,6 +392,10 @@ static void __init s5p_timer_resources(void)
|
||||
|
||||
clk_enable(tin_event);
|
||||
|
||||
sprintf(devname, "s3c24xx-pwm.%lu", source_id);
|
||||
s3c_device_timer[source_id].id = source_id;
|
||||
s3c_device_timer[source_id].dev.init_name = devname;
|
||||
|
||||
tin_source = clk_get(&s3c_device_timer[source_id].dev, "pwm-tin");
|
||||
if (IS_ERR(tin_source))
|
||||
panic("failed to get pwm-tin clock for source timer");
|
||||
|
@ -280,6 +280,12 @@ config SAMSUNG_DEV_PWM
|
||||
help
|
||||
Compile in platform device definition for PWM Timer
|
||||
|
||||
config SAMSUNG_DEV_BACKLIGHT
|
||||
bool
|
||||
depends on SAMSUNG_DEV_PWM
|
||||
help
|
||||
Compile in platform device definition LCD backlight with PWM Timer
|
||||
|
||||
config S3C24XX_PWM
|
||||
bool "PWM device support"
|
||||
select HAVE_PWM
|
||||
|
@ -59,6 +59,7 @@ obj-$(CONFIG_SAMSUNG_DEV_IDE) += dev-ide.o
|
||||
obj-$(CONFIG_SAMSUNG_DEV_TS) += dev-ts.o
|
||||
obj-$(CONFIG_SAMSUNG_DEV_KEYPAD) += dev-keypad.o
|
||||
obj-$(CONFIG_SAMSUNG_DEV_PWM) += dev-pwm.o
|
||||
obj-$(CONFIG_SAMSUNG_DEV_BACKLIGHT) += dev-backlight.o
|
||||
|
||||
# DMA support
|
||||
|
||||
|
@ -71,74 +71,6 @@ static int clk_null_enable(struct clk *clk, int enable)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dev_is_s3c_uart(struct device *dev)
|
||||
{
|
||||
struct platform_device **pdev = s3c24xx_uart_devs;
|
||||
int i;
|
||||
for (i = 0; i < ARRAY_SIZE(s3c24xx_uart_devs); i++, pdev++)
|
||||
if (*pdev && dev == &(*pdev)->dev)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Serial drivers call get_clock() very early, before platform bus
|
||||
* has been set up, this requires a special check to let them get
|
||||
* a proper clock
|
||||
*/
|
||||
|
||||
static int dev_is_platform_device(struct device *dev)
|
||||
{
|
||||
return dev->bus == &platform_bus_type ||
|
||||
(dev->bus == NULL && dev_is_s3c_uart(dev));
|
||||
}
|
||||
|
||||
/* Clock API calls */
|
||||
|
||||
struct clk *clk_get(struct device *dev, const char *id)
|
||||
{
|
||||
struct clk *p;
|
||||
struct clk *clk = ERR_PTR(-ENOENT);
|
||||
int idno;
|
||||
|
||||
if (dev == NULL || !dev_is_platform_device(dev))
|
||||
idno = -1;
|
||||
else
|
||||
idno = to_platform_device(dev)->id;
|
||||
|
||||
spin_lock(&clocks_lock);
|
||||
|
||||
list_for_each_entry(p, &clocks, list) {
|
||||
if (p->id == idno &&
|
||||
strcmp(id, p->name) == 0 &&
|
||||
try_module_get(p->owner)) {
|
||||
clk = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* check for the case where a device was supplied, but the
|
||||
* clock that was being searched for is not device specific */
|
||||
|
||||
if (IS_ERR(clk)) {
|
||||
list_for_each_entry(p, &clocks, list) {
|
||||
if (p->id == -1 && strcmp(id, p->name) == 0 &&
|
||||
try_module_get(p->owner)) {
|
||||
clk = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
spin_unlock(&clocks_lock);
|
||||
return clk;
|
||||
}
|
||||
|
||||
void clk_put(struct clk *clk)
|
||||
{
|
||||
module_put(clk->owner);
|
||||
}
|
||||
|
||||
int clk_enable(struct clk *clk)
|
||||
{
|
||||
if (IS_ERR(clk) || clk == NULL)
|
||||
@ -241,8 +173,6 @@ int clk_set_parent(struct clk *clk, struct clk *parent)
|
||||
return ret;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(clk_get);
|
||||
EXPORT_SYMBOL(clk_put);
|
||||
EXPORT_SYMBOL(clk_enable);
|
||||
EXPORT_SYMBOL(clk_disable);
|
||||
EXPORT_SYMBOL(clk_get_rate);
|
||||
@ -265,7 +195,6 @@ struct clk_ops clk_ops_def_setrate = {
|
||||
|
||||
struct clk clk_xtal = {
|
||||
.name = "xtal",
|
||||
.id = -1,
|
||||
.rate = 0,
|
||||
.parent = NULL,
|
||||
.ctrlbit = 0,
|
||||
@ -273,30 +202,25 @@ struct clk clk_xtal = {
|
||||
|
||||
struct clk clk_ext = {
|
||||
.name = "ext",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
struct clk clk_epll = {
|
||||
.name = "epll",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
struct clk clk_mpll = {
|
||||
.name = "mpll",
|
||||
.id = -1,
|
||||
.ops = &clk_ops_def_setrate,
|
||||
};
|
||||
|
||||
struct clk clk_upll = {
|
||||
.name = "upll",
|
||||
.id = -1,
|
||||
.parent = NULL,
|
||||
.ctrlbit = 0,
|
||||
};
|
||||
|
||||
struct clk clk_f = {
|
||||
.name = "fclk",
|
||||
.id = -1,
|
||||
.rate = 0,
|
||||
.parent = &clk_mpll,
|
||||
.ctrlbit = 0,
|
||||
@ -304,7 +228,6 @@ struct clk clk_f = {
|
||||
|
||||
struct clk clk_h = {
|
||||
.name = "hclk",
|
||||
.id = -1,
|
||||
.rate = 0,
|
||||
.parent = NULL,
|
||||
.ctrlbit = 0,
|
||||
@ -313,7 +236,6 @@ struct clk clk_h = {
|
||||
|
||||
struct clk clk_p = {
|
||||
.name = "pclk",
|
||||
.id = -1,
|
||||
.rate = 0,
|
||||
.parent = NULL,
|
||||
.ctrlbit = 0,
|
||||
@ -322,7 +244,6 @@ struct clk clk_p = {
|
||||
|
||||
struct clk clk_usb_bus = {
|
||||
.name = "usb-bus",
|
||||
.id = -1,
|
||||
.rate = 0,
|
||||
.parent = &clk_upll,
|
||||
};
|
||||
@ -330,7 +251,6 @@ struct clk clk_usb_bus = {
|
||||
|
||||
struct clk s3c24xx_uclk = {
|
||||
.name = "uclk",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
/* initialise the clock system */
|
||||
@ -346,14 +266,11 @@ int s3c24xx_register_clock(struct clk *clk)
|
||||
if (clk->enable == NULL)
|
||||
clk->enable = clk_null_enable;
|
||||
|
||||
/* add to the list of available clocks */
|
||||
|
||||
/* Quick check to see if this clock has already been registered. */
|
||||
BUG_ON(clk->list.prev != clk->list.next);
|
||||
|
||||
spin_lock(&clocks_lock);
|
||||
list_add(&clk->list, &clocks);
|
||||
spin_unlock(&clocks_lock);
|
||||
/* fill up the clk_lookup structure and register it*/
|
||||
clk->lookup.dev_id = clk->devname;
|
||||
clk->lookup.con_id = clk->name;
|
||||
clk->lookup.clk = clk;
|
||||
clkdev_add(&clk->lookup);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -463,10 +380,7 @@ static int clk_debugfs_register_one(struct clk *c)
|
||||
char s[255];
|
||||
char *p = s;
|
||||
|
||||
p += sprintf(p, "%s", c->name);
|
||||
|
||||
if (c->id >= 0)
|
||||
sprintf(p, ":%d", c->id);
|
||||
p += sprintf(p, "%s", c->devname);
|
||||
|
||||
d = debugfs_create_dir(s, pa ? pa->dent : clk_debugfs_root);
|
||||
if (!d)
|
||||
|
149
arch/arm/plat-samsung/dev-backlight.c
Normal file
149
arch/arm/plat-samsung/dev-backlight.c
Normal file
@ -0,0 +1,149 @@
|
||||
/* linux/arch/arm/plat-samsung/dev-backlight.c
|
||||
*
|
||||
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
|
||||
* http://www.samsung.com
|
||||
*
|
||||
* Common infrastructure for PWM Backlight for Samsung boards
|
||||
*
|
||||
* 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/gpio.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/pwm_backlight.h>
|
||||
|
||||
#include <plat/devs.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/backlight.h>
|
||||
|
||||
static int samsung_bl_init(struct device *dev)
|
||||
{
|
||||
int ret = 0;
|
||||
struct platform_device *timer_dev =
|
||||
container_of(dev->parent, struct platform_device, dev);
|
||||
struct samsung_bl_gpio_info *bl_gpio_info =
|
||||
timer_dev->dev.platform_data;
|
||||
|
||||
ret = gpio_request(bl_gpio_info->no, "Backlight");
|
||||
if (ret) {
|
||||
printk(KERN_ERR "failed to request GPIO for LCD Backlight\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Configure GPIO pin with specific GPIO function for PWM timer */
|
||||
s3c_gpio_cfgpin(bl_gpio_info->no, bl_gpio_info->func);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void samsung_bl_exit(struct device *dev)
|
||||
{
|
||||
struct platform_device *timer_dev =
|
||||
container_of(dev->parent, struct platform_device, dev);
|
||||
struct samsung_bl_gpio_info *bl_gpio_info =
|
||||
timer_dev->dev.platform_data;
|
||||
|
||||
s3c_gpio_cfgpin(bl_gpio_info->no, S3C_GPIO_OUTPUT);
|
||||
gpio_free(bl_gpio_info->no);
|
||||
}
|
||||
|
||||
/* Initialize few important fields of platform_pwm_backlight_data
|
||||
* structure with default values. These fields can be overridden by
|
||||
* board-specific values sent from machine file.
|
||||
* For ease of operation, these fields are initialized with values
|
||||
* used by most samsung boards.
|
||||
* Users has the option of sending info about other parameters
|
||||
* for their specific boards
|
||||
*/
|
||||
|
||||
static struct platform_pwm_backlight_data samsung_dfl_bl_data __initdata = {
|
||||
.max_brightness = 255,
|
||||
.dft_brightness = 255,
|
||||
.pwm_period_ns = 78770,
|
||||
.init = samsung_bl_init,
|
||||
.exit = samsung_bl_exit,
|
||||
};
|
||||
|
||||
static struct platform_device samsung_dfl_bl_device __initdata = {
|
||||
.name = "pwm-backlight",
|
||||
};
|
||||
|
||||
/* samsung_bl_set - Set board specific data (if any) provided by user for
|
||||
* PWM Backlight control and register specific PWM and backlight device.
|
||||
* @gpio_info: structure containing GPIO info for PWM timer
|
||||
* @bl_data: structure containing Backlight control data
|
||||
*/
|
||||
void samsung_bl_set(struct samsung_bl_gpio_info *gpio_info,
|
||||
struct platform_pwm_backlight_data *bl_data)
|
||||
{
|
||||
int ret = 0;
|
||||
struct platform_device *samsung_bl_device;
|
||||
struct platform_pwm_backlight_data *samsung_bl_data;
|
||||
|
||||
samsung_bl_device = kmemdup(&samsung_dfl_bl_device,
|
||||
sizeof(struct platform_device), GFP_KERNEL);
|
||||
if (!samsung_bl_device) {
|
||||
printk(KERN_ERR "%s: no memory for platform dev\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
samsung_bl_data = s3c_set_platdata(&samsung_dfl_bl_data,
|
||||
sizeof(struct platform_pwm_backlight_data), samsung_bl_device);
|
||||
if (!samsung_bl_data) {
|
||||
printk(KERN_ERR "%s: no memory for platform dev\n", __func__);
|
||||
goto err_data;
|
||||
}
|
||||
|
||||
/* Copy board specific data provided by user */
|
||||
samsung_bl_data->pwm_id = bl_data->pwm_id;
|
||||
samsung_bl_device->dev.parent =
|
||||
&s3c_device_timer[samsung_bl_data->pwm_id].dev;
|
||||
|
||||
if (bl_data->max_brightness)
|
||||
samsung_bl_data->max_brightness = bl_data->max_brightness;
|
||||
if (bl_data->dft_brightness)
|
||||
samsung_bl_data->dft_brightness = bl_data->dft_brightness;
|
||||
if (bl_data->lth_brightness)
|
||||
samsung_bl_data->lth_brightness = bl_data->lth_brightness;
|
||||
if (bl_data->pwm_period_ns)
|
||||
samsung_bl_data->pwm_period_ns = bl_data->pwm_period_ns;
|
||||
if (bl_data->init)
|
||||
samsung_bl_data->init = bl_data->init;
|
||||
if (bl_data->notify)
|
||||
samsung_bl_data->notify = bl_data->notify;
|
||||
if (bl_data->exit)
|
||||
samsung_bl_data->exit = bl_data->exit;
|
||||
if (bl_data->check_fb)
|
||||
samsung_bl_data->check_fb = bl_data->check_fb;
|
||||
|
||||
/* Keep the GPIO info for future use */
|
||||
s3c_device_timer[samsung_bl_data->pwm_id].dev.platform_data = gpio_info;
|
||||
|
||||
/* Register the specific PWM timer dev for Backlight control */
|
||||
ret = platform_device_register(
|
||||
&s3c_device_timer[samsung_bl_data->pwm_id]);
|
||||
if (ret) {
|
||||
printk(KERN_ERR "failed to register pwm timer for backlight: %d\n", ret);
|
||||
goto err_plat_reg1;
|
||||
}
|
||||
|
||||
/* Register the Backlight dev */
|
||||
ret = platform_device_register(samsung_bl_device);
|
||||
if (ret) {
|
||||
printk(KERN_ERR "failed to register backlight device: %d\n", ret);
|
||||
goto err_plat_reg2;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
err_plat_reg2:
|
||||
platform_device_unregister(&s3c_device_timer[samsung_bl_data->pwm_id]);
|
||||
err_plat_reg1:
|
||||
kfree(samsung_bl_data);
|
||||
err_data:
|
||||
kfree(samsung_bl_device);
|
||||
return;
|
||||
}
|
@ -58,16 +58,6 @@ struct platform_device s3c_device_fb = {
|
||||
|
||||
void __init s3c_fb_set_platdata(struct s3c_fb_platdata *pd)
|
||||
{
|
||||
struct s3c_fb_platdata *npd;
|
||||
|
||||
if (!pd) {
|
||||
printk(KERN_ERR "%s: no platform data\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
npd = kmemdup(pd, sizeof(struct s3c_fb_platdata), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
|
||||
s3c_device_fb.dev.platform_data = npd;
|
||||
s3c_set_platdata(pd, sizeof(struct s3c_fb_platdata),
|
||||
&s3c_device_fb);
|
||||
}
|
||||
|
@ -27,16 +27,6 @@ struct platform_device s3c_device_hwmon = {
|
||||
|
||||
void __init s3c_hwmon_set_platdata(struct s3c_hwmon_pdata *pd)
|
||||
{
|
||||
struct s3c_hwmon_pdata *npd;
|
||||
|
||||
if (!pd) {
|
||||
printk(KERN_ERR "%s: no platform data\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
npd = kmemdup(pd, sizeof(struct s3c_hwmon_pdata), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
|
||||
s3c_device_hwmon.dev.platform_data = npd;
|
||||
s3c_set_platdata(pd, sizeof(struct s3c_hwmon_pdata),
|
||||
&s3c_device_hwmon);
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ struct platform_device s3c_device_i2c0 = {
|
||||
.resource = s3c_i2c_resource,
|
||||
};
|
||||
|
||||
static struct s3c2410_platform_i2c default_i2c_data0 __initdata = {
|
||||
struct s3c2410_platform_i2c default_i2c_data __initdata = {
|
||||
.flags = 0,
|
||||
.slave_addr = 0x10,
|
||||
.frequency = 100*1000,
|
||||
@ -60,13 +60,11 @@ void __init s3c_i2c0_set_platdata(struct s3c2410_platform_i2c *pd)
|
||||
struct s3c2410_platform_i2c *npd;
|
||||
|
||||
if (!pd)
|
||||
pd = &default_i2c_data0;
|
||||
pd = &default_i2c_data;
|
||||
|
||||
npd = kmemdup(pd, sizeof(struct s3c2410_platform_i2c), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
else if (!npd->cfg_gpio)
|
||||
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
||||
&s3c_device_i2c0);
|
||||
|
||||
if (!npd->cfg_gpio)
|
||||
npd->cfg_gpio = s3c_i2c0_cfg_gpio;
|
||||
|
||||
s3c_device_i2c0.dev.platform_data = npd;
|
||||
}
|
||||
|
@ -44,26 +44,18 @@ struct platform_device s3c_device_i2c1 = {
|
||||
.resource = s3c_i2c_resource,
|
||||
};
|
||||
|
||||
static struct s3c2410_platform_i2c default_i2c_data1 __initdata = {
|
||||
.flags = 0,
|
||||
.bus_num = 1,
|
||||
.slave_addr = 0x10,
|
||||
.frequency = 100*1000,
|
||||
.sda_delay = 100,
|
||||
};
|
||||
|
||||
void __init s3c_i2c1_set_platdata(struct s3c2410_platform_i2c *pd)
|
||||
{
|
||||
struct s3c2410_platform_i2c *npd;
|
||||
|
||||
if (!pd)
|
||||
pd = &default_i2c_data1;
|
||||
if (!pd) {
|
||||
pd = &default_i2c_data;
|
||||
pd->bus_num = 1;
|
||||
}
|
||||
|
||||
npd = kmemdup(pd, sizeof(struct s3c2410_platform_i2c), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
else if (!npd->cfg_gpio)
|
||||
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
||||
&s3c_device_i2c1);
|
||||
|
||||
if (!npd->cfg_gpio)
|
||||
npd->cfg_gpio = s3c_i2c1_cfg_gpio;
|
||||
|
||||
s3c_device_i2c1.dev.platform_data = npd;
|
||||
}
|
||||
|
@ -45,26 +45,18 @@ struct platform_device s3c_device_i2c2 = {
|
||||
.resource = s3c_i2c_resource,
|
||||
};
|
||||
|
||||
static struct s3c2410_platform_i2c default_i2c_data2 __initdata = {
|
||||
.flags = 0,
|
||||
.bus_num = 2,
|
||||
.slave_addr = 0x10,
|
||||
.frequency = 100*1000,
|
||||
.sda_delay = 100,
|
||||
};
|
||||
|
||||
void __init s3c_i2c2_set_platdata(struct s3c2410_platform_i2c *pd)
|
||||
{
|
||||
struct s3c2410_platform_i2c *npd;
|
||||
|
||||
if (!pd)
|
||||
pd = &default_i2c_data2;
|
||||
if (!pd) {
|
||||
pd = &default_i2c_data;
|
||||
pd->bus_num = 2;
|
||||
}
|
||||
|
||||
npd = kmemdup(pd, sizeof(struct s3c2410_platform_i2c), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
else if (!npd->cfg_gpio)
|
||||
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
||||
&s3c_device_i2c2);
|
||||
|
||||
if (!npd->cfg_gpio)
|
||||
npd->cfg_gpio = s3c_i2c2_cfg_gpio;
|
||||
|
||||
s3c_device_i2c2.dev.platform_data = npd;
|
||||
}
|
||||
|
@ -43,26 +43,18 @@ struct platform_device s3c_device_i2c3 = {
|
||||
.resource = s3c_i2c_resource,
|
||||
};
|
||||
|
||||
static struct s3c2410_platform_i2c default_i2c_data3 __initdata = {
|
||||
.flags = 0,
|
||||
.bus_num = 3,
|
||||
.slave_addr = 0x10,
|
||||
.frequency = 100*1000,
|
||||
.sda_delay = 100,
|
||||
};
|
||||
|
||||
void __init s3c_i2c3_set_platdata(struct s3c2410_platform_i2c *pd)
|
||||
{
|
||||
struct s3c2410_platform_i2c *npd;
|
||||
|
||||
if (!pd)
|
||||
pd = &default_i2c_data3;
|
||||
if (!pd) {
|
||||
pd = &default_i2c_data;
|
||||
pd->bus_num = 3;
|
||||
}
|
||||
|
||||
npd = kmemdup(pd, sizeof(struct s3c2410_platform_i2c), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
else if (!npd->cfg_gpio)
|
||||
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
||||
&s3c_device_i2c3);
|
||||
|
||||
if (!npd->cfg_gpio)
|
||||
npd->cfg_gpio = s3c_i2c3_cfg_gpio;
|
||||
|
||||
s3c_device_i2c3.dev.platform_data = npd;
|
||||
}
|
||||
|
@ -43,26 +43,18 @@ struct platform_device s3c_device_i2c4 = {
|
||||
.resource = s3c_i2c_resource,
|
||||
};
|
||||
|
||||
static struct s3c2410_platform_i2c default_i2c_data4 __initdata = {
|
||||
.flags = 0,
|
||||
.bus_num = 4,
|
||||
.slave_addr = 0x10,
|
||||
.frequency = 100*1000,
|
||||
.sda_delay = 100,
|
||||
};
|
||||
|
||||
void __init s3c_i2c4_set_platdata(struct s3c2410_platform_i2c *pd)
|
||||
{
|
||||
struct s3c2410_platform_i2c *npd;
|
||||
|
||||
if (!pd)
|
||||
pd = &default_i2c_data4;
|
||||
if (!pd) {
|
||||
pd = &default_i2c_data;
|
||||
pd->bus_num = 4;
|
||||
}
|
||||
|
||||
npd = kmemdup(pd, sizeof(struct s3c2410_platform_i2c), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
else if (!npd->cfg_gpio)
|
||||
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
||||
&s3c_device_i2c4);
|
||||
|
||||
if (!npd->cfg_gpio)
|
||||
npd->cfg_gpio = s3c_i2c4_cfg_gpio;
|
||||
|
||||
s3c_device_i2c4.dev.platform_data = npd;
|
||||
}
|
||||
|
@ -43,26 +43,18 @@ struct platform_device s3c_device_i2c5 = {
|
||||
.resource = s3c_i2c_resource,
|
||||
};
|
||||
|
||||
static struct s3c2410_platform_i2c default_i2c_data5 __initdata = {
|
||||
.flags = 0,
|
||||
.bus_num = 5,
|
||||
.slave_addr = 0x10,
|
||||
.frequency = 100*1000,
|
||||
.sda_delay = 100,
|
||||
};
|
||||
|
||||
void __init s3c_i2c5_set_platdata(struct s3c2410_platform_i2c *pd)
|
||||
{
|
||||
struct s3c2410_platform_i2c *npd;
|
||||
|
||||
if (!pd)
|
||||
pd = &default_i2c_data5;
|
||||
if (!pd) {
|
||||
pd = &default_i2c_data;
|
||||
pd->bus_num = 5;
|
||||
}
|
||||
|
||||
npd = kmemdup(pd, sizeof(struct s3c2410_platform_i2c), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
else if (!npd->cfg_gpio)
|
||||
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
||||
&s3c_device_i2c5);
|
||||
|
||||
if (!npd->cfg_gpio)
|
||||
npd->cfg_gpio = s3c_i2c5_cfg_gpio;
|
||||
|
||||
s3c_device_i2c5.dev.platform_data = npd;
|
||||
}
|
||||
|
@ -43,26 +43,18 @@ struct platform_device s3c_device_i2c6 = {
|
||||
.resource = s3c_i2c_resource,
|
||||
};
|
||||
|
||||
static struct s3c2410_platform_i2c default_i2c_data6 __initdata = {
|
||||
.flags = 0,
|
||||
.bus_num = 6,
|
||||
.slave_addr = 0x10,
|
||||
.frequency = 100*1000,
|
||||
.sda_delay = 100,
|
||||
};
|
||||
|
||||
void __init s3c_i2c6_set_platdata(struct s3c2410_platform_i2c *pd)
|
||||
{
|
||||
struct s3c2410_platform_i2c *npd;
|
||||
|
||||
if (!pd)
|
||||
pd = &default_i2c_data6;
|
||||
if (!pd) {
|
||||
pd = &default_i2c_data;
|
||||
pd->bus_num = 6;
|
||||
}
|
||||
|
||||
npd = kmemdup(pd, sizeof(struct s3c2410_platform_i2c), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
else if (!npd->cfg_gpio)
|
||||
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
||||
&s3c_device_i2c6);
|
||||
|
||||
if (!npd->cfg_gpio)
|
||||
npd->cfg_gpio = s3c_i2c6_cfg_gpio;
|
||||
|
||||
s3c_device_i2c6.dev.platform_data = npd;
|
||||
}
|
||||
|
@ -43,26 +43,18 @@ struct platform_device s3c_device_i2c7 = {
|
||||
.resource = s3c_i2c_resource,
|
||||
};
|
||||
|
||||
static struct s3c2410_platform_i2c default_i2c_data7 __initdata = {
|
||||
.flags = 0,
|
||||
.bus_num = 7,
|
||||
.slave_addr = 0x10,
|
||||
.frequency = 100*1000,
|
||||
.sda_delay = 100,
|
||||
};
|
||||
|
||||
void __init s3c_i2c7_set_platdata(struct s3c2410_platform_i2c *pd)
|
||||
{
|
||||
struct s3c2410_platform_i2c *npd;
|
||||
|
||||
if (!pd)
|
||||
pd = &default_i2c_data7;
|
||||
if (!pd) {
|
||||
pd = &default_i2c_data;
|
||||
pd->bus_num = 7;
|
||||
}
|
||||
|
||||
npd = kmemdup(pd, sizeof(struct s3c2410_platform_i2c), GFP_KERNEL);
|
||||
if (!npd)
|
||||
printk(KERN_ERR "%s: no memory for platform data\n", __func__);
|
||||
else if (!npd->cfg_gpio)
|
||||
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
||||
&s3c_device_i2c7);
|
||||
|
||||
if (!npd->cfg_gpio)
|
||||
npd->cfg_gpio = s3c_i2c7_cfg_gpio;
|
||||
|
||||
s3c_device_i2c7.dev.platform_data = npd;
|
||||
}
|
||||
|
@ -91,11 +91,10 @@ void __init s3c_nand_set_platdata(struct s3c2410_platform_nand *nand)
|
||||
* time then there is little chance the system is going to run.
|
||||
*/
|
||||
|
||||
npd = kmemdup(nand, sizeof(struct s3c2410_platform_nand), GFP_KERNEL);
|
||||
if (!npd) {
|
||||
printk(KERN_ERR "%s: failed copying platform data\n", __func__);
|
||||
npd = s3c_set_platdata(nand, sizeof(struct s3c2410_platform_nand),
|
||||
&s3c_device_nand);
|
||||
if (!npd)
|
||||
return;
|
||||
}
|
||||
|
||||
/* now see if we need to copy any of the nand set data */
|
||||
|
||||
@ -123,6 +122,4 @@ void __init s3c_nand_set_platdata(struct s3c2410_platform_nand *nand)
|
||||
to++;
|
||||
}
|
||||
}
|
||||
|
||||
s3c_device_nand.dev.platform_data = npd;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user