mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-12 04:49:54 +00:00
Pull ARM SoC cleanups from Olof Johansson:
"This merge window brings a good size of cleanups on various platforms.
Among the bigger ones:
- Removal of Samsung s5pc100 and s5p64xx platforms. Both of these
have lacked active support for quite a while, and after asking
around nobody showed interest in keeping them around. If needed,
they could be resurrected in the future but it's more likely that
we would prefer reintroduction of them as DT and
multiplatform-enabled platforms instead.
- OMAP4 controller code register define diet. They defined a lot of
registers that were never actually used, etc.
- Move of some of the Tegra platform code (PMC, APBIO, fuse,
powergate) to drivers/soc so it can be shared with 64-bit code.
This also converts them over to traditional driver models where
possible.
- Removal of legacy gpio-samsung driver, since the last users have
been removed (moved to pinctrl)
Plus a bunch of smaller changes for various platforms that sort of
dissapear in the diffstat for the above. clps711x cleanups, shmobile
header file refactoring/moves for multiplatform friendliness, some
misc cleanups, etc"
* tag 'cleanup-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (117 commits)
drivers: CCI: Correct use of ! and &
video: clcd-versatile: Depend on ARM
video: fix up versatile CLCD helper move
MAINTAINERS: Add sdhci-st file to ARCH/STI architecture
ARM: EXYNOS: Fix build breakge with PM_SLEEP=n
MAINTAINERS: Remove Kirkwood
ARM: tegra: Convert PMC to a driver
soc/tegra: fuse: Set up in early initcall
ARM: tegra: Always lock the CPU reset vector
ARM: tegra: Setup CPU hotplug in a pure initcall
soc/tegra: Implement runtime check for Tegra SoCs
soc/tegra: fuse: fix dummy functions
soc/tegra: fuse: move APB DMA into Tegra20 fuse driver
soc/tegra: Add efuse and apbmisc bindings
soc/tegra: Add efuse driver for Tegra
ARM: tegra: move fuse exports to soc/tegra/fuse.h
ARM: tegra: export apb dma readl/writel
ARM: tegra: Use a function to get the chip ID
ARM: tegra: Sort includes alphabetically
ARM: tegra: Move includes to include/soc/tegra
...
105 lines
2.4 KiB
C
105 lines
2.4 KiB
C
/*
|
|
* linux/arch/arm/mach-pxa/generic.c
|
|
*
|
|
* Author: Nicolas Pitre
|
|
* Created: Jun 15, 2001
|
|
* Copyright: MontaVista Software Inc.
|
|
*
|
|
* Code common to all PXA machines.
|
|
*
|
|
* 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.
|
|
*
|
|
* Since this file should be linked before any other machine specific file,
|
|
* the __initcall() here will be executed first. This serves as default
|
|
* initialization stuff for PXA machines which can be overridden later if
|
|
* need be.
|
|
*/
|
|
#include <linux/gpio.h>
|
|
#include <linux/module.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/init.h>
|
|
|
|
#include <mach/hardware.h>
|
|
#include <asm/mach/map.h>
|
|
#include <asm/mach-types.h>
|
|
|
|
#include <mach/irqs.h>
|
|
#include <mach/reset.h>
|
|
#include <mach/smemc.h>
|
|
#include <mach/pxa3xx-regs.h>
|
|
|
|
#include "generic.h"
|
|
#include <clocksource/pxa.h>
|
|
|
|
void clear_reset_status(unsigned int mask)
|
|
{
|
|
if (cpu_is_pxa2xx())
|
|
pxa2xx_clear_reset_status(mask);
|
|
else {
|
|
/* RESET_STATUS_* has a 1:1 mapping with ARSR */
|
|
ARSR = mask;
|
|
}
|
|
}
|
|
|
|
unsigned long get_clock_tick_rate(void)
|
|
{
|
|
unsigned long clock_tick_rate;
|
|
|
|
if (cpu_is_pxa25x())
|
|
clock_tick_rate = 3686400;
|
|
else if (machine_is_mainstone())
|
|
clock_tick_rate = 3249600;
|
|
else
|
|
clock_tick_rate = 3250000;
|
|
|
|
return clock_tick_rate;
|
|
}
|
|
EXPORT_SYMBOL(get_clock_tick_rate);
|
|
|
|
/*
|
|
* For non device-tree builds, keep legacy timer init
|
|
*/
|
|
void pxa_timer_init(void)
|
|
{
|
|
pxa_timer_nodt_init(IRQ_OST0, io_p2v(0x40a00000),
|
|
get_clock_tick_rate());
|
|
}
|
|
|
|
/*
|
|
* Get the clock frequency as reflected by CCCR and the turbo flag.
|
|
* We assume these values have been applied via a fcs.
|
|
* If info is not 0 we also display the current settings.
|
|
*/
|
|
unsigned int get_clk_frequency_khz(int info)
|
|
{
|
|
if (cpu_is_pxa25x())
|
|
return pxa25x_get_clk_frequency_khz(info);
|
|
else if (cpu_is_pxa27x())
|
|
return pxa27x_get_clk_frequency_khz(info);
|
|
return 0;
|
|
}
|
|
EXPORT_SYMBOL(get_clk_frequency_khz);
|
|
|
|
/*
|
|
* Intel PXA2xx internal register mapping.
|
|
*
|
|
* Note: virtual 0xfffe0000-0xffffffff is reserved for the vector table
|
|
* and cache flush area.
|
|
*/
|
|
static struct map_desc common_io_desc[] __initdata = {
|
|
{ /* Devs */
|
|
.virtual = (unsigned long)PERIPH_VIRT,
|
|
.pfn = __phys_to_pfn(PERIPH_PHYS),
|
|
.length = PERIPH_SIZE,
|
|
.type = MT_DEVICE
|
|
}
|
|
};
|
|
|
|
void __init pxa_map_io(void)
|
|
{
|
|
debug_ll_io_init();
|
|
iotable_init(ARRAY_AND_SIZE(common_io_desc));
|
|
}
|