mirror of https://gitee.com/openkylin/linux.git
Merge branch 'clk' of git://github.com/hzhuang1/linux into next/cleanup
* 'clk' of git://github.com/hzhuang1/linux: ARM: mmp: remove unused definition in APBC and APMU ARM: mmp: move mmp2 clock definition to separated file arm: mmp: move pxa910 clock definition to separated file arm: mmp: move pxa168 clock definition to separated file arm: mmp: make private clock definition exclude from common clock + Linux 3.6-rc4
This commit is contained in:
commit
025c95a682
|
@ -3,15 +3,21 @@
|
|||
biodoc.txt
|
||||
- Notes on the Generic Block Layer Rewrite in Linux 2.5
|
||||
capability.txt
|
||||
- Generic Block Device Capability (/sys/block/<disk>/capability)
|
||||
- Generic Block Device Capability (/sys/block/<device>/capability)
|
||||
cfq-iosched.txt
|
||||
- CFQ IO scheduler tunables
|
||||
data-integrity.txt
|
||||
- Block data integrity
|
||||
deadline-iosched.txt
|
||||
- Deadline IO scheduler tunables
|
||||
ioprio.txt
|
||||
- Block io priorities (in CFQ scheduler)
|
||||
queue-sysfs.txt
|
||||
- Queue's sysfs entries
|
||||
request.txt
|
||||
- The members of struct request (in include/linux/blkdev.h)
|
||||
stat.txt
|
||||
- Block layer statistics in /sys/block/<dev>/stat
|
||||
- Block layer statistics in /sys/block/<device>/stat
|
||||
switching-sched.txt
|
||||
- Switching I/O schedulers at runtime
|
||||
writeback_cache_control.txt
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
CFQ (Complete Fairness Queueing)
|
||||
===============================
|
||||
|
||||
The main aim of CFQ scheduler is to provide a fair allocation of the disk
|
||||
I/O bandwidth for all the processes which requests an I/O operation.
|
||||
|
||||
CFQ maintains the per process queue for the processes which request I/O
|
||||
operation(syncronous requests). In case of asynchronous requests, all the
|
||||
requests from all the processes are batched together according to their
|
||||
process's I/O priority.
|
||||
|
||||
CFQ ioscheduler tunables
|
||||
========================
|
||||
|
||||
|
@ -25,6 +36,72 @@ there are multiple spindles behind single LUN (Host based hardware RAID
|
|||
controller or for storage arrays), setting slice_idle=0 might end up in better
|
||||
throughput and acceptable latencies.
|
||||
|
||||
back_seek_max
|
||||
-------------
|
||||
This specifies, given in Kbytes, the maximum "distance" for backward seeking.
|
||||
The distance is the amount of space from the current head location to the
|
||||
sectors that are backward in terms of distance.
|
||||
|
||||
This parameter allows the scheduler to anticipate requests in the "backward"
|
||||
direction and consider them as being the "next" if they are within this
|
||||
distance from the current head location.
|
||||
|
||||
back_seek_penalty
|
||||
-----------------
|
||||
This parameter is used to compute the cost of backward seeking. If the
|
||||
backward distance of request is just 1/back_seek_penalty from a "front"
|
||||
request, then the seeking cost of two requests is considered equivalent.
|
||||
|
||||
So scheduler will not bias toward one or the other request (otherwise scheduler
|
||||
will bias toward front request). Default value of back_seek_penalty is 2.
|
||||
|
||||
fifo_expire_async
|
||||
-----------------
|
||||
This parameter is used to set the timeout of asynchronous requests. Default
|
||||
value of this is 248ms.
|
||||
|
||||
fifo_expire_sync
|
||||
----------------
|
||||
This parameter is used to set the timeout of synchronous requests. Default
|
||||
value of this is 124ms. In case to favor synchronous requests over asynchronous
|
||||
one, this value should be decreased relative to fifo_expire_async.
|
||||
|
||||
slice_async
|
||||
-----------
|
||||
This parameter is same as of slice_sync but for asynchronous queue. The
|
||||
default value is 40ms.
|
||||
|
||||
slice_async_rq
|
||||
--------------
|
||||
This parameter is used to limit the dispatching of asynchronous request to
|
||||
device request queue in queue's slice time. The maximum number of request that
|
||||
are allowed to be dispatched also depends upon the io priority. Default value
|
||||
for this is 2.
|
||||
|
||||
slice_sync
|
||||
----------
|
||||
When a queue is selected for execution, the queues IO requests are only
|
||||
executed for a certain amount of time(time_slice) before switching to another
|
||||
queue. This parameter is used to calculate the time slice of synchronous
|
||||
queue.
|
||||
|
||||
time_slice is computed using the below equation:-
|
||||
time_slice = slice_sync + (slice_sync/5 * (4 - prio)). To increase the
|
||||
time_slice of synchronous queue, increase the value of slice_sync. Default
|
||||
value is 100ms.
|
||||
|
||||
quantum
|
||||
-------
|
||||
This specifies the number of request dispatched to the device queue. In a
|
||||
queue's time slice, a request will not be dispatched if the number of request
|
||||
in the device exceeds this parameter. This parameter is used for synchronous
|
||||
request.
|
||||
|
||||
In case of storage with several disk, this setting can limit the parallel
|
||||
processing of request. Therefore, increasing the value can imporve the
|
||||
performace although this can cause the latency of some I/O to increase due
|
||||
to more number of requests.
|
||||
|
||||
CFQ IOPS Mode for group scheduling
|
||||
===================================
|
||||
Basic CFQ design is to provide priority based time slices. Higher priority
|
||||
|
|
|
@ -9,20 +9,71 @@ These files are the ones found in the /sys/block/xxx/queue/ directory.
|
|||
Files denoted with a RO postfix are readonly and the RW postfix means
|
||||
read-write.
|
||||
|
||||
add_random (RW)
|
||||
----------------
|
||||
This file allows to trun off the disk entropy contribution. Default
|
||||
value of this file is '1'(on).
|
||||
|
||||
discard_granularity (RO)
|
||||
-----------------------
|
||||
This shows the size of internal allocation of the device in bytes, if
|
||||
reported by the device. A value of '0' means device does not support
|
||||
the discard functionality.
|
||||
|
||||
discard_max_bytes (RO)
|
||||
----------------------
|
||||
Devices that support discard functionality may have internal limits on
|
||||
the number of bytes that can be trimmed or unmapped in a single operation.
|
||||
The discard_max_bytes parameter is set by the device driver to the maximum
|
||||
number of bytes that can be discarded in a single operation. Discard
|
||||
requests issued to the device must not exceed this limit. A discard_max_bytes
|
||||
value of 0 means that the device does not support discard functionality.
|
||||
|
||||
discard_zeroes_data (RO)
|
||||
------------------------
|
||||
When read, this file will show if the discarded block are zeroed by the
|
||||
device or not. If its value is '1' the blocks are zeroed otherwise not.
|
||||
|
||||
hw_sector_size (RO)
|
||||
-------------------
|
||||
This is the hardware sector size of the device, in bytes.
|
||||
|
||||
iostats (RW)
|
||||
-------------
|
||||
This file is used to control (on/off) the iostats accounting of the
|
||||
disk.
|
||||
|
||||
logical_block_size (RO)
|
||||
-----------------------
|
||||
This is the logcal block size of the device, in bytes.
|
||||
|
||||
max_hw_sectors_kb (RO)
|
||||
----------------------
|
||||
This is the maximum number of kilobytes supported in a single data transfer.
|
||||
|
||||
max_integrity_segments (RO)
|
||||
---------------------------
|
||||
When read, this file shows the max limit of integrity segments as
|
||||
set by block layer which a hardware controller can handle.
|
||||
|
||||
max_sectors_kb (RW)
|
||||
-------------------
|
||||
This is the maximum number of kilobytes that the block layer will allow
|
||||
for a filesystem request. Must be smaller than or equal to the maximum
|
||||
size allowed by the hardware.
|
||||
|
||||
max_segments (RO)
|
||||
-----------------
|
||||
Maximum number of segments of the device.
|
||||
|
||||
max_segment_size (RO)
|
||||
---------------------
|
||||
Maximum segment size of the device.
|
||||
|
||||
minimum_io_size (RO)
|
||||
--------------------
|
||||
This is the smallest preferred io size reported by the device.
|
||||
|
||||
nomerges (RW)
|
||||
-------------
|
||||
This enables the user to disable the lookup logic involved with IO
|
||||
|
@ -45,11 +96,24 @@ per-block-cgroup request pool. IOW, if there are N block cgroups,
|
|||
each request queue may have upto N request pools, each independently
|
||||
regulated by nr_requests.
|
||||
|
||||
optimal_io_size (RO)
|
||||
--------------------
|
||||
This is the optimal io size reported by the device.
|
||||
|
||||
physical_block_size (RO)
|
||||
------------------------
|
||||
This is the physical block size of device, in bytes.
|
||||
|
||||
read_ahead_kb (RW)
|
||||
------------------
|
||||
Maximum number of kilobytes to read-ahead for filesystems on this block
|
||||
device.
|
||||
|
||||
rotational (RW)
|
||||
---------------
|
||||
This file is used to stat if the device is of rotational type or
|
||||
non-rotational type.
|
||||
|
||||
rq_affinity (RW)
|
||||
----------------
|
||||
If this option is '1', the block layer will migrate request completions to the
|
||||
|
|
|
@ -10,8 +10,8 @@ Required properties:
|
|||
- compatible : Should be "fsl,<chip>-esdhc"
|
||||
|
||||
Optional properties:
|
||||
- fsl,cd-internal : Indicate to use controller internal card detection
|
||||
- fsl,wp-internal : Indicate to use controller internal write protection
|
||||
- fsl,cd-controller : Indicate to use controller internal card detection
|
||||
- fsl,wp-controller : Indicate to use controller internal write protection
|
||||
|
||||
Examples:
|
||||
|
||||
|
@ -19,8 +19,8 @@ esdhc@70004000 {
|
|||
compatible = "fsl,imx51-esdhc";
|
||||
reg = <0x70004000 0x4000>;
|
||||
interrupts = <1>;
|
||||
fsl,cd-internal;
|
||||
fsl,wp-internal;
|
||||
fsl,cd-controller;
|
||||
fsl,wp-controller;
|
||||
};
|
||||
|
||||
esdhc@70008000 {
|
||||
|
|
|
@ -31,7 +31,7 @@ static void keep_alive(void)
|
|||
* or "-e" to enable the card.
|
||||
*/
|
||||
|
||||
void term(int sig)
|
||||
static void term(int sig)
|
||||
{
|
||||
close(fd);
|
||||
fprintf(stderr, "Stopping watchdog ticks...\n");
|
||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = 3
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc3
|
||||
EXTRAVERSION = -rc4
|
||||
NAME = Saber-toothed Squirrel
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
|
@ -2121,6 +2121,7 @@ source "drivers/cpufreq/Kconfig"
|
|||
config CPU_FREQ_IMX
|
||||
tristate "CPUfreq driver for i.MX CPUs"
|
||||
depends on ARCH_MXC && CPU_FREQ
|
||||
select CPU_FREQ_TABLE
|
||||
help
|
||||
This enables the CPUfreq driver for i.MX CPUs.
|
||||
|
||||
|
|
|
@ -154,5 +154,10 @@ i2c3: i2c@4819C000 {
|
|||
#size-cells = <0>;
|
||||
ti,hwmods = "i2c3";
|
||||
};
|
||||
|
||||
wdt2: wdt@44e35000 {
|
||||
compatible = "ti,omap3-wdt";
|
||||
ti,hwmods = "wd_timer2";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -25,8 +25,8 @@ soc {
|
|||
aips@70000000 { /* aips-1 */
|
||||
spba@70000000 {
|
||||
esdhc@70004000 { /* ESDHC1 */
|
||||
fsl,cd-internal;
|
||||
fsl,wp-internal;
|
||||
fsl,cd-controller;
|
||||
fsl,wp-controller;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -41,9 +41,13 @@ led-level {
|
|||
};
|
||||
power-blue {
|
||||
label = "power:blue";
|
||||
gpios = <&gpio1 11 0>;
|
||||
gpios = <&gpio1 10 0>;
|
||||
linux,default-trigger = "timer";
|
||||
};
|
||||
power-red {
|
||||
label = "power:red";
|
||||
gpios = <&gpio1 11 0>;
|
||||
};
|
||||
usb1 {
|
||||
label = "usb1:blue";
|
||||
gpios = <&gpio1 12 0>;
|
||||
|
|
|
@ -66,6 +66,7 @@ vana: regulator@7 {
|
|||
|
||||
vcxio: regulator@8 {
|
||||
compatible = "ti,twl6030-vcxio";
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vusb: regulator@9 {
|
||||
|
@ -74,10 +75,12 @@ vusb: regulator@9 {
|
|||
|
||||
v1v8: regulator@10 {
|
||||
compatible = "ti,twl6030-v1v8";
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
v2v1: regulator@11 {
|
||||
compatible = "ti,twl6030-v2v1";
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
clk32kg: regulator@12 {
|
||||
|
|
|
@ -86,6 +86,7 @@ CONFIG_NEW_LEDS=y
|
|||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_LM3530=y
|
||||
CONFIG_LEDS_LP5521=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_AB8500=y
|
||||
CONFIG_RTC_DRV_PL031=y
|
||||
|
|
|
@ -92,7 +92,8 @@ void __init dove_ehci1_init(void)
|
|||
void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
{
|
||||
orion_ge00_init(eth_data, DOVE_GE00_PHYS_BASE,
|
||||
IRQ_DOVE_GE00_SUM, IRQ_DOVE_GE00_ERR);
|
||||
IRQ_DOVE_GE00_SUM, IRQ_DOVE_GE00_ERR,
|
||||
1600);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#include <plat/backlight.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/mfc.h>
|
||||
#include <plat/hdmi.h>
|
||||
|
||||
#include <mach/ohci.h>
|
||||
#include <mach/map.h>
|
||||
|
@ -734,6 +735,11 @@ static void __init origen_bt_setup(void)
|
|||
s3c_gpio_setpull(EXYNOS4_GPX2(2), S3C_GPIO_PULL_NONE);
|
||||
}
|
||||
|
||||
/* I2C module and id for HDMIPHY */
|
||||
static struct i2c_board_info hdmiphy_info = {
|
||||
I2C_BOARD_INFO("hdmiphy-exynos4210", 0x38),
|
||||
};
|
||||
|
||||
static void s5p_tv_setup(void)
|
||||
{
|
||||
/* Direct HPD to HDMI chip */
|
||||
|
@ -781,6 +787,7 @@ static void __init origen_machine_init(void)
|
|||
|
||||
s5p_tv_setup();
|
||||
s5p_i2c_hdmiphy_set_platdata(NULL);
|
||||
s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);
|
||||
|
||||
#ifdef CONFIG_DRM_EXYNOS
|
||||
s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include <plat/mfc.h>
|
||||
#include <plat/ehci.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/hdmi.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/ohci.h>
|
||||
|
@ -354,6 +355,11 @@ static struct platform_pwm_backlight_data smdkv310_bl_data = {
|
|||
.pwm_period_ns = 1000,
|
||||
};
|
||||
|
||||
/* I2C module and id for HDMIPHY */
|
||||
static struct i2c_board_info hdmiphy_info = {
|
||||
I2C_BOARD_INFO("hdmiphy-exynos4210", 0x38),
|
||||
};
|
||||
|
||||
static void s5p_tv_setup(void)
|
||||
{
|
||||
/* direct HPD to HDMI chip */
|
||||
|
@ -388,6 +394,7 @@ static void __init smdkv310_machine_init(void)
|
|||
|
||||
s5p_tv_setup();
|
||||
s5p_i2c_hdmiphy_set_platdata(NULL);
|
||||
s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);
|
||||
|
||||
samsung_keypad_set_platdata(&smdkv310_keypad_data);
|
||||
|
||||
|
|
|
@ -9,7 +9,8 @@ obj-$(CONFIG_SOC_IMX27) += clk-imx27.o mm-imx27.o ehci-imx27.o
|
|||
obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o clk-imx31.o iomux-imx31.o ehci-imx31.o pm-imx3.o
|
||||
obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o clk-imx35.o ehci-imx35.o pm-imx3.o
|
||||
|
||||
obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clk-imx51-imx53.o ehci-imx5.o pm-imx5.o cpu_op-mx51.o
|
||||
imx5-pm-$(CONFIG_PM) += pm-imx5.o
|
||||
obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clk-imx51-imx53.o ehci-imx5.o $(imx5-pm-y) cpu_op-mx51.o
|
||||
|
||||
obj-$(CONFIG_COMMON_CLK) += clk-pllv1.o clk-pllv2.o clk-pllv3.o clk-gate2.o \
|
||||
clk-pfd.o clk-busy.o
|
||||
|
@ -70,14 +71,13 @@ obj-$(CONFIG_DEBUG_LL) += lluart.o
|
|||
obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o
|
||||
obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
|
||||
obj-$(CONFIG_HAVE_IMX_SRC) += src.o
|
||||
obj-$(CONFIG_CPU_V7) += head-v7.o
|
||||
AFLAGS_head-v7.o :=-Wa,-march=armv7-a
|
||||
obj-$(CONFIG_SMP) += platsmp.o
|
||||
AFLAGS_headsmp.o :=-Wa,-march=armv7-a
|
||||
obj-$(CONFIG_SMP) += headsmp.o platsmp.o
|
||||
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
||||
obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o
|
||||
|
||||
ifeq ($(CONFIG_PM),y)
|
||||
obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o
|
||||
obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o headsmp.o
|
||||
endif
|
||||
|
||||
# i.MX5 based machines
|
||||
|
|
|
@ -152,7 +152,7 @@ enum mx6q_clks {
|
|||
ssi2, ssi3, uart_ipg, uart_serial, usboh3, usdhc1, usdhc2, usdhc3,
|
||||
usdhc4, vdo_axi, vpu_axi, cko1, pll1_sys, pll2_bus, pll3_usb_otg,
|
||||
pll4_audio, pll5_video, pll6_mlb, pll7_usb_host, pll8_enet, ssi1_ipg,
|
||||
ssi2_ipg, ssi3_ipg, rom, usbphy1, usbphy2,
|
||||
ssi2_ipg, ssi3_ipg, rom, usbphy1, usbphy2, ldb_di0_div_3_5, ldb_di1_div_3_5,
|
||||
clk_max
|
||||
};
|
||||
|
||||
|
@ -288,8 +288,10 @@ int __init mx6q_clocks_init(void)
|
|||
clk[gpu3d_shader] = imx_clk_divider("gpu3d_shader", "gpu3d_shader_sel", base + 0x18, 29, 3);
|
||||
clk[ipu1_podf] = imx_clk_divider("ipu1_podf", "ipu1_sel", base + 0x3c, 11, 3);
|
||||
clk[ipu2_podf] = imx_clk_divider("ipu2_podf", "ipu2_sel", base + 0x3c, 16, 3);
|
||||
clk[ldb_di0_podf] = imx_clk_divider("ldb_di0_podf", "ldb_di0_sel", base + 0x20, 10, 1);
|
||||
clk[ldb_di1_podf] = imx_clk_divider("ldb_di1_podf", "ldb_di1_sel", base + 0x20, 11, 1);
|
||||
clk[ldb_di0_div_3_5] = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0_sel", 2, 7);
|
||||
clk[ldb_di0_podf] = imx_clk_divider("ldb_di0_podf", "ldb_di0_div_3_5", base + 0x20, 10, 1);
|
||||
clk[ldb_di1_div_3_5] = imx_clk_fixed_factor("ldb_di1_div_3_5", "ldb_di1_sel", 2, 7);
|
||||
clk[ldb_di1_podf] = imx_clk_divider("ldb_di1_podf", "ldb_di1_div_3_5", base + 0x20, 11, 1);
|
||||
clk[ipu1_di0_pre] = imx_clk_divider("ipu1_di0_pre", "ipu1_di0_pre_sel", base + 0x34, 3, 3);
|
||||
clk[ipu1_di1_pre] = imx_clk_divider("ipu1_di1_pre", "ipu1_di1_pre_sel", base + 0x34, 12, 3);
|
||||
clk[ipu2_di0_pre] = imx_clk_divider("ipu2_di0_pre", "ipu2_di0_pre_sel", base + 0x38, 3, 3);
|
||||
|
|
|
@ -42,22 +42,6 @@ static inline void cpu_enter_lowpower(void)
|
|||
: "cc");
|
||||
}
|
||||
|
||||
static inline void cpu_leave_lowpower(void)
|
||||
{
|
||||
unsigned int v;
|
||||
|
||||
asm volatile(
|
||||
"mrc p15, 0, %0, c1, c0, 0\n"
|
||||
" orr %0, %0, %1\n"
|
||||
" mcr p15, 0, %0, c1, c0, 0\n"
|
||||
" mrc p15, 0, %0, c1, c0, 1\n"
|
||||
" orr %0, %0, %2\n"
|
||||
" mcr p15, 0, %0, c1, c0, 1\n"
|
||||
: "=&r" (v)
|
||||
: "Ir" (CR_C), "Ir" (0x40)
|
||||
: "cc");
|
||||
}
|
||||
|
||||
/*
|
||||
* platform-specific code to shutdown a CPU
|
||||
*
|
||||
|
@ -67,11 +51,10 @@ void platform_cpu_die(unsigned int cpu)
|
|||
{
|
||||
cpu_enter_lowpower();
|
||||
imx_enable_cpu(cpu, false);
|
||||
cpu_do_idle();
|
||||
cpu_leave_lowpower();
|
||||
|
||||
/* We should never return from idle */
|
||||
panic("cpu %d unexpectedly exit from shutdown\n", cpu);
|
||||
/* spin here until hardware takes it down */
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
int platform_cpu_disable(unsigned int cpu)
|
||||
|
|
|
@ -71,7 +71,7 @@ void imx6q_restart(char mode, const char *cmd)
|
|||
/* For imx6q sabrelite board: set KSZ9021RN RGMII pad skew */
|
||||
static int ksz9021rn_phy_fixup(struct phy_device *phydev)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_PHYLIB)) {
|
||||
if (IS_BUILTIN(CONFIG_PHYLIB)) {
|
||||
/* min rx data delay */
|
||||
phy_write(phydev, 0x0b, 0x8105);
|
||||
phy_write(phydev, 0x0c, 0x0000);
|
||||
|
@ -112,7 +112,7 @@ static void __init imx6q_sabrelite_cko1_setup(void)
|
|||
|
||||
static void __init imx6q_sabrelite_init(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_PHYLIB))
|
||||
if (IS_BUILTIN(CONFIG_PHYLIB))
|
||||
phy_register_fixup_for_uid(PHY_ID_KSZ9021, MICREL_PHY_ID_MASK,
|
||||
ksz9021rn_phy_fixup);
|
||||
imx6q_sabrelite_cko1_setup();
|
||||
|
|
|
@ -7,7 +7,8 @@ dtb-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += kirkwood-dns320.dtb
|
|||
dtb-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += kirkwood-dns325.dtb
|
||||
dtb-$(CONFIG_MACH_ICONNECT_DT) += kirkwood-iconnect.dtb
|
||||
dtb-$(CONFIG_MACH_IB62X0_DT) += kirkwood-ib62x0.dtb
|
||||
dtb-$(CONFIG_MACH_TS219_DT) += kirkwood-qnap-ts219.dtb
|
||||
dtb-$(CONFIG_MACH_TS219_DT) += kirkwood-ts219-6281.dtb
|
||||
dtb-$(CONFIG_MACH_TS219_DT) += kirkwood-ts219-6282.dtb
|
||||
dtb-$(CONFIG_MACH_GOFLEXNET_DT) += kirkwood-goflexnet.dtb
|
||||
dtb-$(CONFIG_MACH_LSXL_DT) += kirkwood-lschlv2.dtb
|
||||
dtb-$(CONFIG_MACH_LSXL_DT) += kirkwood-lsxhl.dtb
|
||||
|
|
|
@ -291,7 +291,7 @@ void __init kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
|||
{
|
||||
orion_ge00_init(eth_data,
|
||||
GE00_PHYS_BASE, IRQ_KIRKWOOD_GE00_SUM,
|
||||
IRQ_KIRKWOOD_GE00_ERR);
|
||||
IRQ_KIRKWOOD_GE00_ERR, 1600);
|
||||
/* The interface forgets the MAC address assigned by u-boot if
|
||||
the clock is turned off, so claim the clk now. */
|
||||
clk_prepare_enable(ge0);
|
||||
|
@ -305,7 +305,7 @@ void __init kirkwood_ge01_init(struct mv643xx_eth_platform_data *eth_data)
|
|||
{
|
||||
orion_ge01_init(eth_data,
|
||||
GE01_PHYS_BASE, IRQ_KIRKWOOD_GE01_SUM,
|
||||
IRQ_KIRKWOOD_GE01_ERR);
|
||||
IRQ_KIRKWOOD_GE01_ERR, 1600);
|
||||
clk_prepare_enable(ge1);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,19 @@
|
|||
# Makefile for Marvell's PXA168 processors line
|
||||
#
|
||||
|
||||
obj-y += common.o clock.o devices.o time.o irq.o
|
||||
obj-y += common.o devices.o time.o irq.o
|
||||
|
||||
# SoC support
|
||||
obj-$(CONFIG_CPU_PXA168) += pxa168.o
|
||||
obj-$(CONFIG_CPU_PXA910) += pxa910.o
|
||||
obj-$(CONFIG_CPU_MMP2) += mmp2.o sram.o
|
||||
|
||||
ifeq ($(CONFIG_COMMON_CLK), )
|
||||
obj-y += clock.o
|
||||
obj-$(CONFIG_CPU_PXA168) += clock-pxa168.o
|
||||
obj-$(CONFIG_CPU_PXA910) += clock-pxa910.o
|
||||
obj-$(CONFIG_CPU_MMP2) += clock-mmp2.o
|
||||
endif
|
||||
ifeq ($(CONFIG_PM),y)
|
||||
obj-$(CONFIG_CPU_PXA910) += pm-pxa910.o
|
||||
obj-$(CONFIG_CPU_MMP2) += pm-mmp2.o
|
||||
|
|
|
@ -0,0 +1,111 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/clk.h>
|
||||
|
||||
#include <mach/addr-map.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "clock.h"
|
||||
|
||||
/*
|
||||
* APB Clock register offsets for MMP2
|
||||
*/
|
||||
#define APBC_RTC APBC_REG(0x000)
|
||||
#define APBC_TWSI1 APBC_REG(0x004)
|
||||
#define APBC_TWSI2 APBC_REG(0x008)
|
||||
#define APBC_TWSI3 APBC_REG(0x00c)
|
||||
#define APBC_TWSI4 APBC_REG(0x010)
|
||||
#define APBC_KPC APBC_REG(0x018)
|
||||
#define APBC_UART1 APBC_REG(0x02c)
|
||||
#define APBC_UART2 APBC_REG(0x030)
|
||||
#define APBC_UART3 APBC_REG(0x034)
|
||||
#define APBC_GPIO APBC_REG(0x038)
|
||||
#define APBC_PWM0 APBC_REG(0x03c)
|
||||
#define APBC_PWM1 APBC_REG(0x040)
|
||||
#define APBC_PWM2 APBC_REG(0x044)
|
||||
#define APBC_PWM3 APBC_REG(0x048)
|
||||
#define APBC_SSP0 APBC_REG(0x04c)
|
||||
#define APBC_SSP1 APBC_REG(0x050)
|
||||
#define APBC_SSP2 APBC_REG(0x054)
|
||||
#define APBC_SSP3 APBC_REG(0x058)
|
||||
#define APBC_SSP4 APBC_REG(0x05c)
|
||||
#define APBC_SSP5 APBC_REG(0x060)
|
||||
#define APBC_TWSI5 APBC_REG(0x07c)
|
||||
#define APBC_TWSI6 APBC_REG(0x080)
|
||||
#define APBC_UART4 APBC_REG(0x088)
|
||||
|
||||
#define APMU_USB APMU_REG(0x05c)
|
||||
#define APMU_NAND APMU_REG(0x060)
|
||||
#define APMU_SDH0 APMU_REG(0x054)
|
||||
#define APMU_SDH1 APMU_REG(0x058)
|
||||
#define APMU_SDH2 APMU_REG(0x0e8)
|
||||
#define APMU_SDH3 APMU_REG(0x0ec)
|
||||
|
||||
static void sdhc_clk_enable(struct clk *clk)
|
||||
{
|
||||
uint32_t clk_rst;
|
||||
|
||||
clk_rst = __raw_readl(clk->clk_rst);
|
||||
clk_rst |= clk->enable_val;
|
||||
__raw_writel(clk_rst, clk->clk_rst);
|
||||
}
|
||||
|
||||
static void sdhc_clk_disable(struct clk *clk)
|
||||
{
|
||||
uint32_t clk_rst;
|
||||
|
||||
clk_rst = __raw_readl(clk->clk_rst);
|
||||
clk_rst &= ~clk->enable_val;
|
||||
__raw_writel(clk_rst, clk->clk_rst);
|
||||
}
|
||||
|
||||
struct clkops sdhc_clk_ops = {
|
||||
.enable = sdhc_clk_enable,
|
||||
.disable = sdhc_clk_disable,
|
||||
};
|
||||
|
||||
/* APB peripheral clocks */
|
||||
static APBC_CLK(uart1, UART1, 1, 26000000);
|
||||
static APBC_CLK(uart2, UART2, 1, 26000000);
|
||||
static APBC_CLK(uart3, UART3, 1, 26000000);
|
||||
static APBC_CLK(uart4, UART4, 1, 26000000);
|
||||
static APBC_CLK(twsi1, TWSI1, 0, 26000000);
|
||||
static APBC_CLK(twsi2, TWSI2, 0, 26000000);
|
||||
static APBC_CLK(twsi3, TWSI3, 0, 26000000);
|
||||
static APBC_CLK(twsi4, TWSI4, 0, 26000000);
|
||||
static APBC_CLK(twsi5, TWSI5, 0, 26000000);
|
||||
static APBC_CLK(twsi6, TWSI6, 0, 26000000);
|
||||
static APBC_CLK(gpio, GPIO, 0, 26000000);
|
||||
|
||||
static APMU_CLK(nand, NAND, 0xbf, 100000000);
|
||||
static APMU_CLK_OPS(sdh0, SDH0, 0x1b, 200000000, &sdhc_clk_ops);
|
||||
static APMU_CLK_OPS(sdh1, SDH1, 0x1b, 200000000, &sdhc_clk_ops);
|
||||
static APMU_CLK_OPS(sdh2, SDH2, 0x1b, 200000000, &sdhc_clk_ops);
|
||||
static APMU_CLK_OPS(sdh3, SDH3, 0x1b, 200000000, &sdhc_clk_ops);
|
||||
|
||||
static struct clk_lookup mmp2_clkregs[] = {
|
||||
INIT_CLKREG(&clk_uart1, "pxa2xx-uart.0", NULL),
|
||||
INIT_CLKREG(&clk_uart2, "pxa2xx-uart.1", NULL),
|
||||
INIT_CLKREG(&clk_uart3, "pxa2xx-uart.2", NULL),
|
||||
INIT_CLKREG(&clk_uart4, "pxa2xx-uart.3", NULL),
|
||||
INIT_CLKREG(&clk_twsi1, "pxa2xx-i2c.0", NULL),
|
||||
INIT_CLKREG(&clk_twsi2, "pxa2xx-i2c.1", NULL),
|
||||
INIT_CLKREG(&clk_twsi3, "pxa2xx-i2c.2", NULL),
|
||||
INIT_CLKREG(&clk_twsi4, "pxa2xx-i2c.3", NULL),
|
||||
INIT_CLKREG(&clk_twsi5, "pxa2xx-i2c.4", NULL),
|
||||
INIT_CLKREG(&clk_twsi6, "pxa2xx-i2c.5", NULL),
|
||||
INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
|
||||
INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL),
|
||||
INIT_CLKREG(&clk_sdh0, "sdhci-pxav3.0", "PXA-SDHCLK"),
|
||||
INIT_CLKREG(&clk_sdh1, "sdhci-pxav3.1", "PXA-SDHCLK"),
|
||||
INIT_CLKREG(&clk_sdh2, "sdhci-pxav3.2", "PXA-SDHCLK"),
|
||||
INIT_CLKREG(&clk_sdh3, "sdhci-pxav3.3", "PXA-SDHCLK"),
|
||||
};
|
||||
|
||||
void __init mmp2_clk_init(void)
|
||||
{
|
||||
clkdev_add_table(ARRAY_AND_SIZE(mmp2_clkregs));
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/clk.h>
|
||||
|
||||
#include <mach/addr-map.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "clock.h"
|
||||
|
||||
/*
|
||||
* APB clock register offsets for PXA168
|
||||
*/
|
||||
#define APBC_UART1 APBC_REG(0x000)
|
||||
#define APBC_UART2 APBC_REG(0x004)
|
||||
#define APBC_GPIO APBC_REG(0x008)
|
||||
#define APBC_PWM1 APBC_REG(0x00c)
|
||||
#define APBC_PWM2 APBC_REG(0x010)
|
||||
#define APBC_PWM3 APBC_REG(0x014)
|
||||
#define APBC_PWM4 APBC_REG(0x018)
|
||||
#define APBC_RTC APBC_REG(0x028)
|
||||
#define APBC_TWSI0 APBC_REG(0x02c)
|
||||
#define APBC_KPC APBC_REG(0x030)
|
||||
#define APBC_TWSI1 APBC_REG(0x06c)
|
||||
#define APBC_UART3 APBC_REG(0x070)
|
||||
#define APBC_SSP1 APBC_REG(0x81c)
|
||||
#define APBC_SSP2 APBC_REG(0x820)
|
||||
#define APBC_SSP3 APBC_REG(0x84c)
|
||||
#define APBC_SSP4 APBC_REG(0x858)
|
||||
#define APBC_SSP5 APBC_REG(0x85c)
|
||||
|
||||
#define APMU_NAND APMU_REG(0x060)
|
||||
#define APMU_LCD APMU_REG(0x04c)
|
||||
#define APMU_ETH APMU_REG(0x0fc)
|
||||
#define APMU_USB APMU_REG(0x05c)
|
||||
|
||||
/* APB peripheral clocks */
|
||||
static APBC_CLK(uart1, UART1, 1, 14745600);
|
||||
static APBC_CLK(uart2, UART2, 1, 14745600);
|
||||
static APBC_CLK(uart3, UART3, 1, 14745600);
|
||||
static APBC_CLK(twsi0, TWSI0, 1, 33000000);
|
||||
static APBC_CLK(twsi1, TWSI1, 1, 33000000);
|
||||
static APBC_CLK(pwm1, PWM1, 1, 13000000);
|
||||
static APBC_CLK(pwm2, PWM2, 1, 13000000);
|
||||
static APBC_CLK(pwm3, PWM3, 1, 13000000);
|
||||
static APBC_CLK(pwm4, PWM4, 1, 13000000);
|
||||
static APBC_CLK(ssp1, SSP1, 4, 0);
|
||||
static APBC_CLK(ssp2, SSP2, 4, 0);
|
||||
static APBC_CLK(ssp3, SSP3, 4, 0);
|
||||
static APBC_CLK(ssp4, SSP4, 4, 0);
|
||||
static APBC_CLK(ssp5, SSP5, 4, 0);
|
||||
static APBC_CLK(gpio, GPIO, 0, 13000000);
|
||||
static APBC_CLK(keypad, KPC, 0, 32000);
|
||||
static APBC_CLK(rtc, RTC, 8, 32768);
|
||||
|
||||
static APMU_CLK(nand, NAND, 0x19b, 156000000);
|
||||
static APMU_CLK(lcd, LCD, 0x7f, 312000000);
|
||||
static APMU_CLK(eth, ETH, 0x09, 0);
|
||||
static APMU_CLK(usb, USB, 0x12, 0);
|
||||
|
||||
/* device and clock bindings */
|
||||
static struct clk_lookup pxa168_clkregs[] = {
|
||||
INIT_CLKREG(&clk_uart1, "pxa2xx-uart.0", NULL),
|
||||
INIT_CLKREG(&clk_uart2, "pxa2xx-uart.1", NULL),
|
||||
INIT_CLKREG(&clk_uart3, "pxa2xx-uart.2", NULL),
|
||||
INIT_CLKREG(&clk_twsi0, "pxa2xx-i2c.0", NULL),
|
||||
INIT_CLKREG(&clk_twsi1, "pxa2xx-i2c.1", NULL),
|
||||
INIT_CLKREG(&clk_pwm1, "pxa168-pwm.0", NULL),
|
||||
INIT_CLKREG(&clk_pwm2, "pxa168-pwm.1", NULL),
|
||||
INIT_CLKREG(&clk_pwm3, "pxa168-pwm.2", NULL),
|
||||
INIT_CLKREG(&clk_pwm4, "pxa168-pwm.3", NULL),
|
||||
INIT_CLKREG(&clk_ssp1, "pxa168-ssp.0", NULL),
|
||||
INIT_CLKREG(&clk_ssp2, "pxa168-ssp.1", NULL),
|
||||
INIT_CLKREG(&clk_ssp3, "pxa168-ssp.2", NULL),
|
||||
INIT_CLKREG(&clk_ssp4, "pxa168-ssp.3", NULL),
|
||||
INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL),
|
||||
INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
|
||||
INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL),
|
||||
INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL),
|
||||
INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL),
|
||||
INIT_CLKREG(&clk_eth, "pxa168-eth", "MFUCLK"),
|
||||
INIT_CLKREG(&clk_usb, NULL, "PXA168-USBCLK"),
|
||||
INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL),
|
||||
};
|
||||
|
||||
void __init pxa168_clk_init(void)
|
||||
{
|
||||
clkdev_add_table(ARRAY_AND_SIZE(pxa168_clkregs));
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/clk.h>
|
||||
|
||||
#include <mach/addr-map.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "clock.h"
|
||||
|
||||
/*
|
||||
* APB Clock register offsets for PXA910
|
||||
*/
|
||||
#define APBC_UART0 APBC_REG(0x000)
|
||||
#define APBC_UART1 APBC_REG(0x004)
|
||||
#define APBC_GPIO APBC_REG(0x008)
|
||||
#define APBC_PWM1 APBC_REG(0x00c)
|
||||
#define APBC_PWM2 APBC_REG(0x010)
|
||||
#define APBC_PWM3 APBC_REG(0x014)
|
||||
#define APBC_PWM4 APBC_REG(0x018)
|
||||
#define APBC_SSP1 APBC_REG(0x01c)
|
||||
#define APBC_SSP2 APBC_REG(0x020)
|
||||
#define APBC_RTC APBC_REG(0x028)
|
||||
#define APBC_TWSI0 APBC_REG(0x02c)
|
||||
#define APBC_KPC APBC_REG(0x030)
|
||||
#define APBC_SSP3 APBC_REG(0x04c)
|
||||
#define APBC_TWSI1 APBC_REG(0x06c)
|
||||
|
||||
#define APMU_NAND APMU_REG(0x060)
|
||||
#define APMU_USB APMU_REG(0x05c)
|
||||
|
||||
static APBC_CLK(uart1, UART0, 1, 14745600);
|
||||
static APBC_CLK(uart2, UART1, 1, 14745600);
|
||||
static APBC_CLK(twsi0, TWSI0, 1, 33000000);
|
||||
static APBC_CLK(twsi1, TWSI1, 1, 33000000);
|
||||
static APBC_CLK(pwm1, PWM1, 1, 13000000);
|
||||
static APBC_CLK(pwm2, PWM2, 1, 13000000);
|
||||
static APBC_CLK(pwm3, PWM3, 1, 13000000);
|
||||
static APBC_CLK(pwm4, PWM4, 1, 13000000);
|
||||
static APBC_CLK(gpio, GPIO, 0, 13000000);
|
||||
static APBC_CLK(rtc, RTC, 8, 32768);
|
||||
|
||||
static APMU_CLK(nand, NAND, 0x19b, 156000000);
|
||||
static APMU_CLK(u2o, USB, 0x1b, 480000000);
|
||||
|
||||
/* device and clock bindings */
|
||||
static struct clk_lookup pxa910_clkregs[] = {
|
||||
INIT_CLKREG(&clk_uart1, "pxa2xx-uart.0", NULL),
|
||||
INIT_CLKREG(&clk_uart2, "pxa2xx-uart.1", NULL),
|
||||
INIT_CLKREG(&clk_twsi0, "pxa2xx-i2c.0", NULL),
|
||||
INIT_CLKREG(&clk_twsi1, "pxa2xx-i2c.1", NULL),
|
||||
INIT_CLKREG(&clk_pwm1, "pxa910-pwm.0", NULL),
|
||||
INIT_CLKREG(&clk_pwm2, "pxa910-pwm.1", NULL),
|
||||
INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL),
|
||||
INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL),
|
||||
INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
|
||||
INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL),
|
||||
INIT_CLKREG(&clk_u2o, NULL, "U2OCLK"),
|
||||
INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL),
|
||||
};
|
||||
|
||||
void __init pxa910_clk_init(void)
|
||||
{
|
||||
clkdev_add_table(ARRAY_AND_SIZE(pxa910_clkregs));
|
||||
}
|
|
@ -7,3 +7,6 @@ extern void timer_init(int irq);
|
|||
extern void __init icu_init_irq(void);
|
||||
extern void __init mmp_map_io(void);
|
||||
extern void mmp_restart(char, const char *);
|
||||
extern void __init pxa168_clk_init(void);
|
||||
extern void __init pxa910_clk_init(void);
|
||||
extern void __init mmp2_clk_init(void);
|
||||
|
|
|
@ -13,101 +13,6 @@
|
|||
|
||||
#include <mach/addr-map.h>
|
||||
|
||||
/*
|
||||
* APB clock register offsets for PXA168
|
||||
*/
|
||||
#define APBC_PXA168_UART1 APBC_REG(0x000)
|
||||
#define APBC_PXA168_UART2 APBC_REG(0x004)
|
||||
#define APBC_PXA168_GPIO APBC_REG(0x008)
|
||||
#define APBC_PXA168_PWM1 APBC_REG(0x00c)
|
||||
#define APBC_PXA168_PWM2 APBC_REG(0x010)
|
||||
#define APBC_PXA168_PWM3 APBC_REG(0x014)
|
||||
#define APBC_PXA168_PWM4 APBC_REG(0x018)
|
||||
#define APBC_PXA168_RTC APBC_REG(0x028)
|
||||
#define APBC_PXA168_TWSI0 APBC_REG(0x02c)
|
||||
#define APBC_PXA168_KPC APBC_REG(0x030)
|
||||
#define APBC_PXA168_TIMERS APBC_REG(0x034)
|
||||
#define APBC_PXA168_AIB APBC_REG(0x03c)
|
||||
#define APBC_PXA168_SW_JTAG APBC_REG(0x040)
|
||||
#define APBC_PXA168_ONEWIRE APBC_REG(0x048)
|
||||
#define APBC_PXA168_ASFAR APBC_REG(0x050)
|
||||
#define APBC_PXA168_ASSAR APBC_REG(0x054)
|
||||
#define APBC_PXA168_TWSI1 APBC_REG(0x06c)
|
||||
#define APBC_PXA168_UART3 APBC_REG(0x070)
|
||||
#define APBC_PXA168_AC97 APBC_REG(0x084)
|
||||
#define APBC_PXA168_SSP1 APBC_REG(0x81c)
|
||||
#define APBC_PXA168_SSP2 APBC_REG(0x820)
|
||||
#define APBC_PXA168_SSP3 APBC_REG(0x84c)
|
||||
#define APBC_PXA168_SSP4 APBC_REG(0x858)
|
||||
#define APBC_PXA168_SSP5 APBC_REG(0x85c)
|
||||
|
||||
/*
|
||||
* APB Clock register offsets for PXA910
|
||||
*/
|
||||
#define APBC_PXA910_UART0 APBC_REG(0x000)
|
||||
#define APBC_PXA910_UART1 APBC_REG(0x004)
|
||||
#define APBC_PXA910_GPIO APBC_REG(0x008)
|
||||
#define APBC_PXA910_PWM1 APBC_REG(0x00c)
|
||||
#define APBC_PXA910_PWM2 APBC_REG(0x010)
|
||||
#define APBC_PXA910_PWM3 APBC_REG(0x014)
|
||||
#define APBC_PXA910_PWM4 APBC_REG(0x018)
|
||||
#define APBC_PXA910_SSP1 APBC_REG(0x01c)
|
||||
#define APBC_PXA910_SSP2 APBC_REG(0x020)
|
||||
#define APBC_PXA910_IPC APBC_REG(0x024)
|
||||
#define APBC_PXA910_RTC APBC_REG(0x028)
|
||||
#define APBC_PXA910_TWSI0 APBC_REG(0x02c)
|
||||
#define APBC_PXA910_KPC APBC_REG(0x030)
|
||||
#define APBC_PXA910_TIMERS APBC_REG(0x034)
|
||||
#define APBC_PXA910_TBROT APBC_REG(0x038)
|
||||
#define APBC_PXA910_AIB APBC_REG(0x03c)
|
||||
#define APBC_PXA910_SW_JTAG APBC_REG(0x040)
|
||||
#define APBC_PXA910_TIMERS1 APBC_REG(0x044)
|
||||
#define APBC_PXA910_ONEWIRE APBC_REG(0x048)
|
||||
#define APBC_PXA910_SSP3 APBC_REG(0x04c)
|
||||
#define APBC_PXA910_ASFAR APBC_REG(0x050)
|
||||
#define APBC_PXA910_ASSAR APBC_REG(0x054)
|
||||
|
||||
/*
|
||||
* APB Clock register offsets for MMP2
|
||||
*/
|
||||
#define APBC_MMP2_RTC APBC_REG(0x000)
|
||||
#define APBC_MMP2_TWSI1 APBC_REG(0x004)
|
||||
#define APBC_MMP2_TWSI2 APBC_REG(0x008)
|
||||
#define APBC_MMP2_TWSI3 APBC_REG(0x00c)
|
||||
#define APBC_MMP2_TWSI4 APBC_REG(0x010)
|
||||
#define APBC_MMP2_ONEWIRE APBC_REG(0x014)
|
||||
#define APBC_MMP2_KPC APBC_REG(0x018)
|
||||
#define APBC_MMP2_TB_ROTARY APBC_REG(0x01c)
|
||||
#define APBC_MMP2_SW_JTAG APBC_REG(0x020)
|
||||
#define APBC_MMP2_TIMERS APBC_REG(0x024)
|
||||
#define APBC_MMP2_UART1 APBC_REG(0x02c)
|
||||
#define APBC_MMP2_UART2 APBC_REG(0x030)
|
||||
#define APBC_MMP2_UART3 APBC_REG(0x034)
|
||||
#define APBC_MMP2_GPIO APBC_REG(0x038)
|
||||
#define APBC_MMP2_PWM0 APBC_REG(0x03c)
|
||||
#define APBC_MMP2_PWM1 APBC_REG(0x040)
|
||||
#define APBC_MMP2_PWM2 APBC_REG(0x044)
|
||||
#define APBC_MMP2_PWM3 APBC_REG(0x048)
|
||||
#define APBC_MMP2_SSP0 APBC_REG(0x04c)
|
||||
#define APBC_MMP2_SSP1 APBC_REG(0x050)
|
||||
#define APBC_MMP2_SSP2 APBC_REG(0x054)
|
||||
#define APBC_MMP2_SSP3 APBC_REG(0x058)
|
||||
#define APBC_MMP2_SSP4 APBC_REG(0x05c)
|
||||
#define APBC_MMP2_SSP5 APBC_REG(0x060)
|
||||
#define APBC_MMP2_AIB APBC_REG(0x064)
|
||||
#define APBC_MMP2_ASFAR APBC_REG(0x068)
|
||||
#define APBC_MMP2_ASSAR APBC_REG(0x06c)
|
||||
#define APBC_MMP2_USIM APBC_REG(0x070)
|
||||
#define APBC_MMP2_MPMU APBC_REG(0x074)
|
||||
#define APBC_MMP2_IPC APBC_REG(0x078)
|
||||
#define APBC_MMP2_TWSI5 APBC_REG(0x07c)
|
||||
#define APBC_MMP2_TWSI6 APBC_REG(0x080)
|
||||
#define APBC_MMP2_TWSI_INTSTS APBC_REG(0x084)
|
||||
#define APBC_MMP2_UART4 APBC_REG(0x088)
|
||||
#define APBC_MMP2_RIPC APBC_REG(0x08c)
|
||||
#define APBC_MMP2_THSENS1 APBC_REG(0x090) /* Thermal Sensor */
|
||||
#define APBC_MMP2_THSENS_INTSTS APBC_REG(0x0a4)
|
||||
|
||||
/* Common APB clock register bit definitions */
|
||||
#define APBC_APBCLK (1 << 0) /* APB Bus Clock Enable */
|
||||
#define APBC_FNCLK (1 << 1) /* Functional Clock Enable */
|
||||
|
|
|
@ -13,21 +13,6 @@
|
|||
|
||||
#include <mach/addr-map.h>
|
||||
|
||||
/* Clock Reset Control */
|
||||
#define APMU_IRE APMU_REG(0x048)
|
||||
#define APMU_LCD APMU_REG(0x04c)
|
||||
#define APMU_CCIC APMU_REG(0x050)
|
||||
#define APMU_SDH0 APMU_REG(0x054)
|
||||
#define APMU_SDH1 APMU_REG(0x058)
|
||||
#define APMU_USB APMU_REG(0x05c)
|
||||
#define APMU_NAND APMU_REG(0x060)
|
||||
#define APMU_DMA APMU_REG(0x064)
|
||||
#define APMU_GEU APMU_REG(0x068)
|
||||
#define APMU_BUS APMU_REG(0x06c)
|
||||
#define APMU_SDH2 APMU_REG(0x0e8)
|
||||
#define APMU_SDH3 APMU_REG(0x0ec)
|
||||
#define APMU_ETH APMU_REG(0x0fc)
|
||||
|
||||
#define APMU_FNCLK_EN (1 << 4)
|
||||
#define APMU_AXICLK_EN (1 << 3)
|
||||
#define APMU_FNRST_DIS (1 << 1)
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
#include <asm/mach/time.h>
|
||||
#include <mach/addr-map.h>
|
||||
#include <mach/regs-apbc.h>
|
||||
#include <mach/regs-apmu.h>
|
||||
#include <mach/cputype.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/dma.h>
|
||||
|
@ -29,7 +28,6 @@
|
|||
#include <mach/mmp2.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "clock.h"
|
||||
|
||||
#define MFPR_VIRT_BASE (APB_VIRT_BASE + 0x1e000)
|
||||
|
||||
|
@ -98,67 +96,6 @@ void __init mmp2_init_irq(void)
|
|||
mmp2_init_icu();
|
||||
}
|
||||
|
||||
static void sdhc_clk_enable(struct clk *clk)
|
||||
{
|
||||
uint32_t clk_rst;
|
||||
|
||||
clk_rst = __raw_readl(clk->clk_rst);
|
||||
clk_rst |= clk->enable_val;
|
||||
__raw_writel(clk_rst, clk->clk_rst);
|
||||
}
|
||||
|
||||
static void sdhc_clk_disable(struct clk *clk)
|
||||
{
|
||||
uint32_t clk_rst;
|
||||
|
||||
clk_rst = __raw_readl(clk->clk_rst);
|
||||
clk_rst &= ~clk->enable_val;
|
||||
__raw_writel(clk_rst, clk->clk_rst);
|
||||
}
|
||||
|
||||
struct clkops sdhc_clk_ops = {
|
||||
.enable = sdhc_clk_enable,
|
||||
.disable = sdhc_clk_disable,
|
||||
};
|
||||
|
||||
/* APB peripheral clocks */
|
||||
static APBC_CLK(uart1, MMP2_UART1, 1, 26000000);
|
||||
static APBC_CLK(uart2, MMP2_UART2, 1, 26000000);
|
||||
static APBC_CLK(uart3, MMP2_UART3, 1, 26000000);
|
||||
static APBC_CLK(uart4, MMP2_UART4, 1, 26000000);
|
||||
static APBC_CLK(twsi1, MMP2_TWSI1, 0, 26000000);
|
||||
static APBC_CLK(twsi2, MMP2_TWSI2, 0, 26000000);
|
||||
static APBC_CLK(twsi3, MMP2_TWSI3, 0, 26000000);
|
||||
static APBC_CLK(twsi4, MMP2_TWSI4, 0, 26000000);
|
||||
static APBC_CLK(twsi5, MMP2_TWSI5, 0, 26000000);
|
||||
static APBC_CLK(twsi6, MMP2_TWSI6, 0, 26000000);
|
||||
static APBC_CLK(gpio, MMP2_GPIO, 0, 26000000);
|
||||
|
||||
static APMU_CLK(nand, NAND, 0xbf, 100000000);
|
||||
static APMU_CLK_OPS(sdh0, SDH0, 0x1b, 200000000, &sdhc_clk_ops);
|
||||
static APMU_CLK_OPS(sdh1, SDH1, 0x1b, 200000000, &sdhc_clk_ops);
|
||||
static APMU_CLK_OPS(sdh2, SDH2, 0x1b, 200000000, &sdhc_clk_ops);
|
||||
static APMU_CLK_OPS(sdh3, SDH3, 0x1b, 200000000, &sdhc_clk_ops);
|
||||
|
||||
static struct clk_lookup mmp2_clkregs[] = {
|
||||
INIT_CLKREG(&clk_uart1, "pxa2xx-uart.0", NULL),
|
||||
INIT_CLKREG(&clk_uart2, "pxa2xx-uart.1", NULL),
|
||||
INIT_CLKREG(&clk_uart3, "pxa2xx-uart.2", NULL),
|
||||
INIT_CLKREG(&clk_uart4, "pxa2xx-uart.3", NULL),
|
||||
INIT_CLKREG(&clk_twsi1, "pxa2xx-i2c.0", NULL),
|
||||
INIT_CLKREG(&clk_twsi2, "pxa2xx-i2c.1", NULL),
|
||||
INIT_CLKREG(&clk_twsi3, "pxa2xx-i2c.2", NULL),
|
||||
INIT_CLKREG(&clk_twsi4, "pxa2xx-i2c.3", NULL),
|
||||
INIT_CLKREG(&clk_twsi5, "pxa2xx-i2c.4", NULL),
|
||||
INIT_CLKREG(&clk_twsi6, "pxa2xx-i2c.5", NULL),
|
||||
INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
|
||||
INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL),
|
||||
INIT_CLKREG(&clk_sdh0, "sdhci-pxav3.0", "PXA-SDHCLK"),
|
||||
INIT_CLKREG(&clk_sdh1, "sdhci-pxav3.1", "PXA-SDHCLK"),
|
||||
INIT_CLKREG(&clk_sdh2, "sdhci-pxav3.2", "PXA-SDHCLK"),
|
||||
INIT_CLKREG(&clk_sdh3, "sdhci-pxav3.3", "PXA-SDHCLK"),
|
||||
};
|
||||
|
||||
static int __init mmp2_init(void)
|
||||
{
|
||||
if (cpu_is_mmp2()) {
|
||||
|
@ -168,25 +105,27 @@ static int __init mmp2_init(void)
|
|||
mfp_init_base(MFPR_VIRT_BASE);
|
||||
mfp_init_addr(mmp2_addr_map);
|
||||
pxa_init_dma(IRQ_MMP2_DMA_RIQ, 16);
|
||||
clkdev_add_table(ARRAY_AND_SIZE(mmp2_clkregs));
|
||||
mmp2_clk_init();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
postcore_initcall(mmp2_init);
|
||||
|
||||
#define APBC_TIMERS APBC_REG(0x024)
|
||||
|
||||
static void __init mmp2_timer_init(void)
|
||||
{
|
||||
unsigned long clk_rst;
|
||||
|
||||
__raw_writel(APBC_APBCLK | APBC_RST, APBC_MMP2_TIMERS);
|
||||
__raw_writel(APBC_APBCLK | APBC_RST, APBC_TIMERS);
|
||||
|
||||
/*
|
||||
* enable bus/functional clock, enable 6.5MHz (divider 4),
|
||||
* release reset
|
||||
*/
|
||||
clk_rst = APBC_APBCLK | APBC_FNCLK | APBC_FNCLKSEL(1);
|
||||
__raw_writel(clk_rst, APBC_MMP2_TIMERS);
|
||||
__raw_writel(clk_rst, APBC_TIMERS);
|
||||
|
||||
timer_init(IRQ_MMP2_TIMER1);
|
||||
}
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
|
||||
#include <asm/mach/time.h>
|
||||
#include <asm/system_misc.h>
|
||||
#include <mach/addr-map.h>
|
||||
#include <mach/cputype.h>
|
||||
#include <mach/addr-map.h>
|
||||
#include <mach/regs-apbc.h>
|
||||
#include <mach/regs-apmu.h>
|
||||
#include <mach/irqs.h>
|
||||
|
@ -50,62 +50,13 @@ void __init pxa168_init_irq(void)
|
|||
icu_init_irq();
|
||||
}
|
||||
|
||||
/* APB peripheral clocks */
|
||||
static APBC_CLK(uart1, PXA168_UART1, 1, 14745600);
|
||||
static APBC_CLK(uart2, PXA168_UART2, 1, 14745600);
|
||||
static APBC_CLK(uart3, PXA168_UART3, 1, 14745600);
|
||||
static APBC_CLK(twsi0, PXA168_TWSI0, 1, 33000000);
|
||||
static APBC_CLK(twsi1, PXA168_TWSI1, 1, 33000000);
|
||||
static APBC_CLK(pwm1, PXA168_PWM1, 1, 13000000);
|
||||
static APBC_CLK(pwm2, PXA168_PWM2, 1, 13000000);
|
||||
static APBC_CLK(pwm3, PXA168_PWM3, 1, 13000000);
|
||||
static APBC_CLK(pwm4, PXA168_PWM4, 1, 13000000);
|
||||
static APBC_CLK(ssp1, PXA168_SSP1, 4, 0);
|
||||
static APBC_CLK(ssp2, PXA168_SSP2, 4, 0);
|
||||
static APBC_CLK(ssp3, PXA168_SSP3, 4, 0);
|
||||
static APBC_CLK(ssp4, PXA168_SSP4, 4, 0);
|
||||
static APBC_CLK(ssp5, PXA168_SSP5, 4, 0);
|
||||
static APBC_CLK(gpio, PXA168_GPIO, 0, 13000000);
|
||||
static APBC_CLK(keypad, PXA168_KPC, 0, 32000);
|
||||
static APBC_CLK(rtc, PXA168_RTC, 8, 32768);
|
||||
|
||||
static APMU_CLK(nand, NAND, 0x19b, 156000000);
|
||||
static APMU_CLK(lcd, LCD, 0x7f, 312000000);
|
||||
static APMU_CLK(eth, ETH, 0x09, 0);
|
||||
static APMU_CLK(usb, USB, 0x12, 0);
|
||||
|
||||
/* device and clock bindings */
|
||||
static struct clk_lookup pxa168_clkregs[] = {
|
||||
INIT_CLKREG(&clk_uart1, "pxa2xx-uart.0", NULL),
|
||||
INIT_CLKREG(&clk_uart2, "pxa2xx-uart.1", NULL),
|
||||
INIT_CLKREG(&clk_uart3, "pxa2xx-uart.2", NULL),
|
||||
INIT_CLKREG(&clk_twsi0, "pxa2xx-i2c.0", NULL),
|
||||
INIT_CLKREG(&clk_twsi1, "pxa2xx-i2c.1", NULL),
|
||||
INIT_CLKREG(&clk_pwm1, "pxa168-pwm.0", NULL),
|
||||
INIT_CLKREG(&clk_pwm2, "pxa168-pwm.1", NULL),
|
||||
INIT_CLKREG(&clk_pwm3, "pxa168-pwm.2", NULL),
|
||||
INIT_CLKREG(&clk_pwm4, "pxa168-pwm.3", NULL),
|
||||
INIT_CLKREG(&clk_ssp1, "pxa168-ssp.0", NULL),
|
||||
INIT_CLKREG(&clk_ssp2, "pxa168-ssp.1", NULL),
|
||||
INIT_CLKREG(&clk_ssp3, "pxa168-ssp.2", NULL),
|
||||
INIT_CLKREG(&clk_ssp4, "pxa168-ssp.3", NULL),
|
||||
INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL),
|
||||
INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
|
||||
INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL),
|
||||
INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL),
|
||||
INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL),
|
||||
INIT_CLKREG(&clk_eth, "pxa168-eth", "MFUCLK"),
|
||||
INIT_CLKREG(&clk_usb, NULL, "PXA168-USBCLK"),
|
||||
INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL),
|
||||
};
|
||||
|
||||
static int __init pxa168_init(void)
|
||||
{
|
||||
if (cpu_is_pxa168()) {
|
||||
mfp_init_base(MFPR_VIRT_BASE);
|
||||
mfp_init_addr(pxa168_mfp_addr_map);
|
||||
pxa_init_dma(IRQ_PXA168_DMA_INT0, 32);
|
||||
clkdev_add_table(ARRAY_AND_SIZE(pxa168_clkregs));
|
||||
pxa168_clk_init();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -114,6 +65,7 @@ postcore_initcall(pxa168_init);
|
|||
|
||||
/* system timer - clock enabled, 3.25MHz */
|
||||
#define TIMER_CLK_RST (APBC_APBCLK | APBC_FNCLK | APBC_FNCLKSEL(3))
|
||||
#define APBC_TIMERS APBC_REG(0x34)
|
||||
|
||||
static void __init pxa168_timer_init(void)
|
||||
{
|
||||
|
@ -121,10 +73,10 @@ static void __init pxa168_timer_init(void)
|
|||
* ourselves instead of using clk_* API. Clock rate is defined
|
||||
* by APBC_TIMERS_CLK_RST (3.25MHz) and enabled free-running
|
||||
*/
|
||||
__raw_writel(APBC_APBCLK | APBC_RST, APBC_PXA168_TIMERS);
|
||||
__raw_writel(APBC_APBCLK | APBC_RST, APBC_TIMERS);
|
||||
|
||||
/* 3.25MHz, bus/functional clock enabled, release reset */
|
||||
__raw_writel(TIMER_CLK_RST, APBC_PXA168_TIMERS);
|
||||
__raw_writel(TIMER_CLK_RST, APBC_TIMERS);
|
||||
|
||||
timer_init(IRQ_PXA168_TIMER1);
|
||||
}
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
#include <asm/mach/time.h>
|
||||
#include <mach/addr-map.h>
|
||||
#include <mach/regs-apbc.h>
|
||||
#include <mach/regs-apmu.h>
|
||||
#include <mach/cputype.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/dma.h>
|
||||
|
@ -25,7 +24,6 @@
|
|||
#include <mach/devices.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "clock.h"
|
||||
|
||||
#define MFPR_VIRT_BASE (APB_VIRT_BASE + 0x1e000)
|
||||
|
||||
|
@ -82,44 +80,13 @@ void __init pxa910_init_irq(void)
|
|||
icu_init_irq();
|
||||
}
|
||||
|
||||
/* APB peripheral clocks */
|
||||
static APBC_CLK(uart1, PXA910_UART0, 1, 14745600);
|
||||
static APBC_CLK(uart2, PXA910_UART1, 1, 14745600);
|
||||
static APBC_CLK(twsi0, PXA168_TWSI0, 1, 33000000);
|
||||
static APBC_CLK(twsi1, PXA168_TWSI1, 1, 33000000);
|
||||
static APBC_CLK(pwm1, PXA910_PWM1, 1, 13000000);
|
||||
static APBC_CLK(pwm2, PXA910_PWM2, 1, 13000000);
|
||||
static APBC_CLK(pwm3, PXA910_PWM3, 1, 13000000);
|
||||
static APBC_CLK(pwm4, PXA910_PWM4, 1, 13000000);
|
||||
static APBC_CLK(gpio, PXA910_GPIO, 0, 13000000);
|
||||
static APBC_CLK(rtc, PXA910_RTC, 8, 32768);
|
||||
|
||||
static APMU_CLK(nand, NAND, 0x19b, 156000000);
|
||||
static APMU_CLK(u2o, USB, 0x1b, 480000000);
|
||||
|
||||
/* device and clock bindings */
|
||||
static struct clk_lookup pxa910_clkregs[] = {
|
||||
INIT_CLKREG(&clk_uart1, "pxa2xx-uart.0", NULL),
|
||||
INIT_CLKREG(&clk_uart2, "pxa2xx-uart.1", NULL),
|
||||
INIT_CLKREG(&clk_twsi0, "pxa2xx-i2c.0", NULL),
|
||||
INIT_CLKREG(&clk_twsi1, "pxa2xx-i2c.1", NULL),
|
||||
INIT_CLKREG(&clk_pwm1, "pxa910-pwm.0", NULL),
|
||||
INIT_CLKREG(&clk_pwm2, "pxa910-pwm.1", NULL),
|
||||
INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL),
|
||||
INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL),
|
||||
INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
|
||||
INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL),
|
||||
INIT_CLKREG(&clk_u2o, NULL, "U2OCLK"),
|
||||
INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL),
|
||||
};
|
||||
|
||||
static int __init pxa910_init(void)
|
||||
{
|
||||
if (cpu_is_pxa910()) {
|
||||
mfp_init_base(MFPR_VIRT_BASE);
|
||||
mfp_init_addr(pxa910_mfp_addr_map);
|
||||
pxa_init_dma(IRQ_PXA910_DMA_INT0, 32);
|
||||
clkdev_add_table(ARRAY_AND_SIZE(pxa910_clkregs));
|
||||
pxa910_clk_init();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -128,12 +95,13 @@ postcore_initcall(pxa910_init);
|
|||
|
||||
/* system timer - clock enabled, 3.25MHz */
|
||||
#define TIMER_CLK_RST (APBC_APBCLK | APBC_FNCLK | APBC_FNCLKSEL(3))
|
||||
#define APBC_TIMERS APBC_REG(0x34)
|
||||
|
||||
static void __init pxa910_timer_init(void)
|
||||
{
|
||||
/* reset and configure */
|
||||
__raw_writel(APBC_APBCLK | APBC_RST, APBC_PXA910_TIMERS);
|
||||
__raw_writel(TIMER_CLK_RST, APBC_PXA910_TIMERS);
|
||||
__raw_writel(APBC_APBCLK | APBC_RST, APBC_TIMERS);
|
||||
__raw_writel(TIMER_CLK_RST, APBC_TIMERS);
|
||||
|
||||
timer_init(IRQ_PXA910_AP1_TIMER1);
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@ static int __devinit sram_probe(struct platform_device *pdev)
|
|||
struct resource *res;
|
||||
int ret = 0;
|
||||
|
||||
if (!pdata && !pdata->pool_name)
|
||||
if (!pdata || !pdata->pool_name)
|
||||
return -ENODEV;
|
||||
|
||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
#define WIN0_OFF(n) (BRIDGE_VIRT_BASE + 0x0000 + ((n) << 4))
|
||||
#define WIN8_OFF(n) (BRIDGE_VIRT_BASE + 0x0900 + (((n) - 8) << 4))
|
||||
|
||||
static void __init __iomem *win_cfg_base(int win)
|
||||
static void __init __iomem *win_cfg_base(const struct orion_addr_map_cfg *cfg, int win)
|
||||
{
|
||||
/*
|
||||
* Find the control register base address for this window.
|
||||
|
|
|
@ -208,7 +208,8 @@ void __init mv78xx0_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
|||
{
|
||||
orion_ge00_init(eth_data,
|
||||
GE00_PHYS_BASE, IRQ_MV78XX0_GE00_SUM,
|
||||
IRQ_MV78XX0_GE_ERR);
|
||||
IRQ_MV78XX0_GE_ERR,
|
||||
MV643XX_TX_CSUM_DEFAULT_LIMIT);
|
||||
}
|
||||
|
||||
|
||||
|
@ -219,7 +220,8 @@ void __init mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data)
|
|||
{
|
||||
orion_ge01_init(eth_data,
|
||||
GE01_PHYS_BASE, IRQ_MV78XX0_GE01_SUM,
|
||||
NO_IRQ);
|
||||
NO_IRQ,
|
||||
MV643XX_TX_CSUM_DEFAULT_LIMIT);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -62,13 +62,14 @@ config ARCH_OMAP4
|
|||
select PM_OPP if PM
|
||||
select USB_ARCH_HAS_EHCI if USB_SUPPORT
|
||||
select ARM_CPU_SUSPEND if PM
|
||||
select ARCH_NEEDS_CPU_IDLE_COUPLED
|
||||
select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
|
||||
|
||||
config SOC_OMAP5
|
||||
bool "TI OMAP5"
|
||||
select CPU_V7
|
||||
select ARM_GIC
|
||||
select HAVE_SMP
|
||||
select ARM_CPU_SUSPEND if PM
|
||||
|
||||
comment "OMAP Core Type"
|
||||
depends on ARCH_OMAP2
|
||||
|
|
|
@ -554,6 +554,8 @@ static const struct usbhs_omap_board_data igep3_usbhs_bdata __initconst = {
|
|||
|
||||
#ifdef CONFIG_OMAP_MUX
|
||||
static struct omap_board_mux board_mux[] __initdata = {
|
||||
/* SMSC9221 LAN Controller ETH IRQ (GPIO_176) */
|
||||
OMAP3_MUX(MCSPI1_CS2, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
|
||||
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
#include "hsmmc.h"
|
||||
#include "common-board-devices.h"
|
||||
|
||||
#define OMAP3_EVM_TS_GPIO 175
|
||||
#define OMAP3_EVM_EHCI_VBUS 22
|
||||
#define OMAP3_EVM_EHCI_SELECT 61
|
||||
|
||||
|
|
|
@ -35,16 +35,6 @@ static struct omap2_mcspi_device_config ads7846_mcspi_config = {
|
|||
.turbo_mode = 0,
|
||||
};
|
||||
|
||||
/*
|
||||
* ADS7846 driver maybe request a gpio according to the value
|
||||
* of pdata->get_pendown_state, but we have done this. So set
|
||||
* get_pendown_state to avoid twice gpio requesting.
|
||||
*/
|
||||
static int omap3_get_pendown_state(void)
|
||||
{
|
||||
return !gpio_get_value(OMAP3_EVM_TS_GPIO);
|
||||
}
|
||||
|
||||
static struct ads7846_platform_data ads7846_config = {
|
||||
.x_max = 0x0fff,
|
||||
.y_max = 0x0fff,
|
||||
|
@ -55,7 +45,6 @@ static struct ads7846_platform_data ads7846_config = {
|
|||
.debounce_rep = 1,
|
||||
.gpio_pendown = -EINVAL,
|
||||
.keep_vref_on = 1,
|
||||
.get_pendown_state = &omap3_get_pendown_state,
|
||||
};
|
||||
|
||||
static struct spi_board_info ads7846_spi_board_info __initdata = {
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
#include "twl-common.h"
|
||||
|
||||
#define NAND_BLOCK_SIZE SZ_128K
|
||||
#define OMAP3_EVM_TS_GPIO 175
|
||||
|
||||
struct mtd_partition;
|
||||
struct ads7846_platform_data;
|
||||
|
|
|
@ -238,8 +238,9 @@ int __init omap4_idle_init(void)
|
|||
for_each_cpu(cpu_id, cpu_online_mask) {
|
||||
dev = &per_cpu(omap4_idle_dev, cpu_id);
|
||||
dev->cpu = cpu_id;
|
||||
#ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED
|
||||
dev->coupled_cpus = *cpu_online_mask;
|
||||
|
||||
#endif
|
||||
cpuidle_register_driver(&omap4_idle_driver);
|
||||
|
||||
if (cpuidle_register_device(dev)) {
|
||||
|
|
|
@ -127,7 +127,6 @@ struct omap_mux_partition {
|
|||
* @gpio: GPIO number
|
||||
* @muxnames: available signal modes for a ball
|
||||
* @balls: available balls on the package
|
||||
* @partition: mux partition
|
||||
*/
|
||||
struct omap_mux {
|
||||
u16 reg_offset;
|
||||
|
|
|
@ -94,7 +94,7 @@ int __init omap4_opp_init(void)
|
|||
{
|
||||
int r = -ENODEV;
|
||||
|
||||
if (!cpu_is_omap44xx())
|
||||
if (!cpu_is_omap443x())
|
||||
return r;
|
||||
|
||||
r = omap_init_opp_table(omap44xx_opp_def_list,
|
||||
|
|
|
@ -272,21 +272,16 @@ void omap_sram_idle(void)
|
|||
per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
|
||||
core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
|
||||
|
||||
if (mpu_next_state < PWRDM_POWER_ON) {
|
||||
pwrdm_pre_transition(mpu_pwrdm);
|
||||
pwrdm_pre_transition(neon_pwrdm);
|
||||
}
|
||||
pwrdm_pre_transition(NULL);
|
||||
|
||||
/* PER */
|
||||
if (per_next_state < PWRDM_POWER_ON) {
|
||||
pwrdm_pre_transition(per_pwrdm);
|
||||
per_going_off = (per_next_state == PWRDM_POWER_OFF) ? 1 : 0;
|
||||
omap2_gpio_prepare_for_idle(per_going_off);
|
||||
}
|
||||
|
||||
/* CORE */
|
||||
if (core_next_state < PWRDM_POWER_ON) {
|
||||
pwrdm_pre_transition(core_pwrdm);
|
||||
if (core_next_state == PWRDM_POWER_OFF) {
|
||||
omap3_core_save_context();
|
||||
omap3_cm_save_context();
|
||||
|
@ -339,20 +334,14 @@ void omap_sram_idle(void)
|
|||
omap2_prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK,
|
||||
OMAP3430_GR_MOD,
|
||||
OMAP3_PRM_VOLTCTRL_OFFSET);
|
||||
pwrdm_post_transition(core_pwrdm);
|
||||
}
|
||||
omap3_intc_resume_idle();
|
||||
|
||||
/* PER */
|
||||
if (per_next_state < PWRDM_POWER_ON) {
|
||||
omap2_gpio_resume_after_idle();
|
||||
pwrdm_post_transition(per_pwrdm);
|
||||
}
|
||||
pwrdm_post_transition(NULL);
|
||||
|
||||
if (mpu_next_state < PWRDM_POWER_ON) {
|
||||
pwrdm_post_transition(mpu_pwrdm);
|
||||
pwrdm_post_transition(neon_pwrdm);
|
||||
}
|
||||
/* PER */
|
||||
if (per_next_state < PWRDM_POWER_ON)
|
||||
omap2_gpio_resume_after_idle();
|
||||
}
|
||||
|
||||
static void omap3_pm_idle(void)
|
||||
|
|
|
@ -56,9 +56,13 @@ ppa_por_params:
|
|||
* The restore function pointer is stored at CPUx_WAKEUP_NS_PA_ADDR_OFFSET.
|
||||
* It returns to the caller for CPU INACTIVE and ON power states or in case
|
||||
* CPU failed to transition to targeted OFF/DORMANT state.
|
||||
*
|
||||
* omap4_finish_suspend() calls v7_flush_dcache_all() which doesn't save
|
||||
* stack frame and it expects the caller to take care of it. Hence the entire
|
||||
* stack frame is saved to avoid possible stack corruption.
|
||||
*/
|
||||
ENTRY(omap4_finish_suspend)
|
||||
stmfd sp!, {lr}
|
||||
stmfd sp!, {r4-r12, lr}
|
||||
cmp r0, #0x0
|
||||
beq do_WFI @ No lowpower state, jump to WFI
|
||||
|
||||
|
@ -226,7 +230,7 @@ scu_gp_clear:
|
|||
skip_scu_gp_clear:
|
||||
isb
|
||||
dsb
|
||||
ldmfd sp!, {pc}
|
||||
ldmfd sp!, {r4-r12, pc}
|
||||
ENDPROC(omap4_finish_suspend)
|
||||
|
||||
/*
|
||||
|
|
|
@ -67,6 +67,7 @@ void __init omap_pmic_init(int bus, u32 clkrate,
|
|||
const char *pmic_type, int pmic_irq,
|
||||
struct twl4030_platform_data *pmic_data)
|
||||
{
|
||||
omap_mux_init_signal("sys_nirq", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE);
|
||||
strncpy(pmic_i2c_board_info.type, pmic_type,
|
||||
sizeof(pmic_i2c_board_info.type));
|
||||
pmic_i2c_board_info.irq = pmic_irq;
|
||||
|
|
|
@ -99,7 +99,8 @@ void __init orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data)
|
|||
{
|
||||
orion_ge00_init(eth_data,
|
||||
ORION5X_ETH_PHYS_BASE, IRQ_ORION5X_ETH_SUM,
|
||||
IRQ_ORION5X_ETH_ERR);
|
||||
IRQ_ORION5X_ETH_ERR,
|
||||
MV643XX_TX_CSUM_DEFAULT_LIMIT);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -24,7 +24,8 @@
|
|||
*/
|
||||
|
||||
enum dma_ch {
|
||||
DMACH_XD0,
|
||||
DMACH_DT_PROP = -1, /* not yet supported, do not use */
|
||||
DMACH_XD0 = 0,
|
||||
DMACH_XD1,
|
||||
DMACH_SDI,
|
||||
DMACH_SPI0,
|
||||
|
|
|
@ -41,7 +41,6 @@ config MACH_HREFV60
|
|||
config MACH_SNOWBALL
|
||||
bool "U8500 Snowball platform"
|
||||
select MACH_MOP500
|
||||
select LEDS_GPIO
|
||||
help
|
||||
Include support for the snowball development platform.
|
||||
|
||||
|
|
|
@ -191,9 +191,9 @@ static struct platform_device *db8500_add_msp_i2s(struct device *parent,
|
|||
return pdev;
|
||||
}
|
||||
|
||||
/* Platform device for ASoC U8500 machine */
|
||||
static struct platform_device snd_soc_u8500 = {
|
||||
.name = "snd-soc-u8500",
|
||||
/* Platform device for ASoC MOP500 machine */
|
||||
static struct platform_device snd_soc_mop500 = {
|
||||
.name = "snd-soc-mop500",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = NULL,
|
||||
|
@ -227,8 +227,8 @@ int mop500_msp_init(struct device *parent)
|
|||
{
|
||||
struct platform_device *msp1;
|
||||
|
||||
pr_info("%s: Register platform-device 'snd-soc-u8500'.\n", __func__);
|
||||
platform_device_register(&snd_soc_u8500);
|
||||
pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
|
||||
platform_device_register(&snd_soc_mop500);
|
||||
|
||||
pr_info("Initialize MSP I2S-devices.\n");
|
||||
db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
|
||||
|
|
|
@ -797,6 +797,7 @@ static void __init u8500_init_machine(void)
|
|||
ARRAY_SIZE(mop500_platform_devs));
|
||||
|
||||
mop500_sdi_init(parent);
|
||||
mop500_msp_init(parent);
|
||||
i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
|
||||
i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
|
||||
i2c_register_board_info(2, mop500_i2c2_devices,
|
||||
|
@ -804,6 +805,8 @@ static void __init u8500_init_machine(void)
|
|||
|
||||
mop500_uib_init();
|
||||
|
||||
} else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
|
||||
mop500_msp_init(parent);
|
||||
} else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
|
||||
/*
|
||||
* The HREFv60 board removed a GPIO expander and routed
|
||||
|
@ -815,6 +818,7 @@ static void __init u8500_init_machine(void)
|
|||
ARRAY_SIZE(mop500_platform_devs));
|
||||
|
||||
hrefv60_sdi_init(parent);
|
||||
mop500_msp_init(parent);
|
||||
|
||||
i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
|
||||
i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES;
|
||||
|
|
|
@ -189,6 +189,7 @@ struct omap_dm_timer *omap_dm_timer_request(void)
|
|||
timer->reserved = 1;
|
||||
break;
|
||||
}
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (timer) {
|
||||
ret = omap_dm_timer_prepare(timer);
|
||||
|
@ -197,7 +198,6 @@ struct omap_dm_timer *omap_dm_timer_request(void)
|
|||
timer = NULL;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (!timer)
|
||||
pr_debug("%s: timer request failed!\n", __func__);
|
||||
|
@ -220,6 +220,7 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
|
|||
break;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (timer) {
|
||||
ret = omap_dm_timer_prepare(timer);
|
||||
|
@ -228,7 +229,6 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
|
|||
timer = NULL;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (!timer)
|
||||
pr_debug("%s: timer%d request failed!\n", __func__, id);
|
||||
|
@ -258,7 +258,7 @@ EXPORT_SYMBOL_GPL(omap_dm_timer_enable);
|
|||
|
||||
void omap_dm_timer_disable(struct omap_dm_timer *timer)
|
||||
{
|
||||
pm_runtime_put(&timer->pdev->dev);
|
||||
pm_runtime_put_sync(&timer->pdev->dev);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timer_disable);
|
||||
|
||||
|
|
|
@ -372,7 +372,8 @@ IS_OMAP_TYPE(3430, 0x3430)
|
|||
#define cpu_class_is_omap1() (cpu_is_omap7xx() || cpu_is_omap15xx() || \
|
||||
cpu_is_omap16xx())
|
||||
#define cpu_class_is_omap2() (cpu_is_omap24xx() || cpu_is_omap34xx() || \
|
||||
cpu_is_omap44xx() || soc_is_omap54xx())
|
||||
cpu_is_omap44xx() || soc_is_omap54xx() || \
|
||||
soc_is_am33xx())
|
||||
|
||||
/* Various silicon revisions for omap2 */
|
||||
#define OMAP242X_CLASS 0x24200024
|
||||
|
|
|
@ -108,4 +108,13 @@
|
|||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SOC_AM33XX
|
||||
# ifdef OMAP_NAME
|
||||
# undef MULTI_OMAP2
|
||||
# define MULTI_OMAP2
|
||||
# else
|
||||
# define OMAP_NAME am33xx
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* __PLAT_OMAP_MULTI_H */
|
||||
|
|
|
@ -110,7 +110,7 @@ static inline void flush(void)
|
|||
_DEBUG_LL_ENTRY(mach, AM33XX_UART##p##_BASE, OMAP_PORT_SHIFT, \
|
||||
AM33XXUART##p)
|
||||
|
||||
static inline void __arch_decomp_setup(unsigned long arch_id)
|
||||
static inline void arch_decomp_setup(void)
|
||||
{
|
||||
int port = 0;
|
||||
|
||||
|
@ -198,8 +198,6 @@ static inline void __arch_decomp_setup(unsigned long arch_id)
|
|||
} while (0);
|
||||
}
|
||||
|
||||
#define arch_decomp_setup() __arch_decomp_setup(arch_id)
|
||||
|
||||
/*
|
||||
* nothing to do
|
||||
*/
|
||||
|
|
|
@ -291,10 +291,12 @@ static struct platform_device orion_ge00 = {
|
|||
void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
|
||||
unsigned long mapbase,
|
||||
unsigned long irq,
|
||||
unsigned long irq_err)
|
||||
unsigned long irq_err,
|
||||
unsigned int tx_csum_limit)
|
||||
{
|
||||
fill_resources(&orion_ge00_shared, orion_ge00_shared_resources,
|
||||
mapbase + 0x2000, SZ_16K - 1, irq_err);
|
||||
orion_ge00_shared_data.tx_csum_limit = tx_csum_limit;
|
||||
ge_complete(&orion_ge00_shared_data,
|
||||
orion_ge00_resources, irq, &orion_ge00_shared,
|
||||
eth_data, &orion_ge00);
|
||||
|
@ -343,10 +345,12 @@ static struct platform_device orion_ge01 = {
|
|||
void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
|
||||
unsigned long mapbase,
|
||||
unsigned long irq,
|
||||
unsigned long irq_err)
|
||||
unsigned long irq_err,
|
||||
unsigned int tx_csum_limit)
|
||||
{
|
||||
fill_resources(&orion_ge01_shared, orion_ge01_shared_resources,
|
||||
mapbase + 0x2000, SZ_16K - 1, irq_err);
|
||||
orion_ge01_shared_data.tx_csum_limit = tx_csum_limit;
|
||||
ge_complete(&orion_ge01_shared_data,
|
||||
orion_ge01_resources, irq, &orion_ge01_shared,
|
||||
eth_data, &orion_ge01);
|
||||
|
|
|
@ -39,12 +39,14 @@ void __init orion_rtc_init(unsigned long mapbase,
|
|||
void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
|
||||
unsigned long mapbase,
|
||||
unsigned long irq,
|
||||
unsigned long irq_err);
|
||||
unsigned long irq_err,
|
||||
unsigned int tx_csum_limit);
|
||||
|
||||
void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
|
||||
unsigned long mapbase,
|
||||
unsigned long irq,
|
||||
unsigned long irq_err);
|
||||
unsigned long irq_err,
|
||||
unsigned int tx_csum_limit);
|
||||
|
||||
void __init orion_ge10_init(struct mv643xx_eth_platform_data *eth_data,
|
||||
unsigned long mapbase,
|
||||
|
|
|
@ -430,7 +430,7 @@ s3c2410_dma_canload(struct s3c2410_dma_chan *chan)
|
|||
* when necessary.
|
||||
*/
|
||||
|
||||
int s3c2410_dma_enqueue(unsigned int channel, void *id,
|
||||
int s3c2410_dma_enqueue(enum dma_ch channel, void *id,
|
||||
dma_addr_t data, int size)
|
||||
{
|
||||
struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel);
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
#include <linux/platform_data/s3c-hsudc.h>
|
||||
#include <linux/platform_data/s3c-hsotg.h>
|
||||
|
||||
#include <media/s5p_hdmi.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
@ -747,7 +749,8 @@ void __init s5p_i2c_hdmiphy_set_platdata(struct s3c2410_platform_i2c *pd)
|
|||
if (!pd) {
|
||||
pd = &default_i2c_data;
|
||||
|
||||
if (soc_is_exynos4210())
|
||||
if (soc_is_exynos4210() ||
|
||||
soc_is_exynos4212() || soc_is_exynos4412())
|
||||
pd->bus_num = 8;
|
||||
else if (soc_is_s5pv210())
|
||||
pd->bus_num = 3;
|
||||
|
@ -758,6 +761,30 @@ void __init s5p_i2c_hdmiphy_set_platdata(struct s3c2410_platform_i2c *pd)
|
|||
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
||||
&s5p_device_i2c_hdmiphy);
|
||||
}
|
||||
|
||||
struct s5p_hdmi_platform_data s5p_hdmi_def_platdata;
|
||||
|
||||
void __init s5p_hdmi_set_platdata(struct i2c_board_info *hdmiphy_info,
|
||||
struct i2c_board_info *mhl_info, int mhl_bus)
|
||||
{
|
||||
struct s5p_hdmi_platform_data *pd = &s5p_hdmi_def_platdata;
|
||||
|
||||
if (soc_is_exynos4210() ||
|
||||
soc_is_exynos4212() || soc_is_exynos4412())
|
||||
pd->hdmiphy_bus = 8;
|
||||
else if (soc_is_s5pv210())
|
||||
pd->hdmiphy_bus = 3;
|
||||
else
|
||||
pd->hdmiphy_bus = 0;
|
||||
|
||||
pd->hdmiphy_info = hdmiphy_info;
|
||||
pd->mhl_info = mhl_info;
|
||||
pd->mhl_bus = mhl_bus;
|
||||
|
||||
s3c_set_platdata(pd, sizeof(struct s5p_hdmi_platform_data),
|
||||
&s5p_device_hdmi);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_S5P_DEV_I2C_HDMIPHY */
|
||||
|
||||
/* I2S */
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* Copyright (C) 2012 Samsung Electronics Co.Ltd
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef __PLAT_SAMSUNG_HDMI_H
|
||||
#define __PLAT_SAMSUNG_HDMI_H __FILE__
|
||||
|
||||
extern void s5p_hdmi_set_platdata(struct i2c_board_info *hdmiphy_info,
|
||||
struct i2c_board_info *mhl_info, int mhl_bus);
|
||||
|
||||
#endif /* __PLAT_SAMSUNG_HDMI_H */
|
|
@ -74,7 +74,7 @@ unsigned char pm_uart_udivslot;
|
|||
|
||||
#ifdef CONFIG_SAMSUNG_PM_DEBUG
|
||||
|
||||
struct pm_uart_save uart_save[CONFIG_SERIAL_SAMSUNG_UARTS];
|
||||
static struct pm_uart_save uart_save[CONFIG_SERIAL_SAMSUNG_UARTS];
|
||||
|
||||
static void s3c_pm_save_uart(unsigned int uart, struct pm_uart_save *save)
|
||||
{
|
||||
|
|
|
@ -89,6 +89,7 @@ config ATH79
|
|||
select CEVT_R4K
|
||||
select CSRC_R4K
|
||||
select DMA_NONCOHERENT
|
||||
select HAVE_CLK
|
||||
select IRQ_CPU
|
||||
select MIPS_MACHINE
|
||||
select SYS_HAS_CPU_MIPS32_R2
|
||||
|
|
|
@ -228,6 +228,8 @@ static int mtx1_pci_idsel(unsigned int devsel, int assert)
|
|||
* adapter on the mtx-1 "singleboard" variant. It triggers a custom
|
||||
* logic chip connected to EXT_IO3 (GPIO1) to suppress IDSEL signals.
|
||||
*/
|
||||
udelay(1);
|
||||
|
||||
if (assert && devsel != 0)
|
||||
/* Suppress signal to Cardbus */
|
||||
alchemy_gpio_set_value(1, 0); /* set EXT_IO3 OFF */
|
||||
|
|
|
@ -145,6 +145,8 @@ static void __init ar7240_usb_setup(void)
|
|||
|
||||
ath79_ohci_resources[0].start = AR7240_OHCI_BASE;
|
||||
ath79_ohci_resources[0].end = AR7240_OHCI_BASE + AR7240_OHCI_SIZE - 1;
|
||||
ath79_ohci_resources[1].start = ATH79_CPU_IRQ_USB;
|
||||
ath79_ohci_resources[1].end = ATH79_CPU_IRQ_USB;
|
||||
platform_device_register(&ath79_ohci_device);
|
||||
}
|
||||
|
||||
|
|
|
@ -188,8 +188,10 @@ void __init ath79_gpio_init(void)
|
|||
|
||||
if (soc_is_ar71xx())
|
||||
ath79_gpio_count = AR71XX_GPIO_COUNT;
|
||||
else if (soc_is_ar724x())
|
||||
ath79_gpio_count = AR724X_GPIO_COUNT;
|
||||
else if (soc_is_ar7240())
|
||||
ath79_gpio_count = AR7240_GPIO_COUNT;
|
||||
else if (soc_is_ar7241() || soc_is_ar7242())
|
||||
ath79_gpio_count = AR7241_GPIO_COUNT;
|
||||
else if (soc_is_ar913x())
|
||||
ath79_gpio_count = AR913X_GPIO_COUNT;
|
||||
else if (soc_is_ar933x())
|
||||
|
|
|
@ -106,11 +106,15 @@ int __init bcm63xx_spi_register(void)
|
|||
if (BCMCPU_IS_6338() || BCMCPU_IS_6348()) {
|
||||
spi_resources[0].end += BCM_6338_RSET_SPI_SIZE - 1;
|
||||
spi_pdata.fifo_size = SPI_6338_MSG_DATA_SIZE;
|
||||
spi_pdata.msg_type_shift = SPI_6338_MSG_TYPE_SHIFT;
|
||||
spi_pdata.msg_ctl_width = SPI_6338_MSG_CTL_WIDTH;
|
||||
}
|
||||
|
||||
if (BCMCPU_IS_6358() || BCMCPU_IS_6368()) {
|
||||
spi_resources[0].end += BCM_6358_RSET_SPI_SIZE - 1;
|
||||
spi_pdata.fifo_size = SPI_6358_MSG_DATA_SIZE;
|
||||
spi_pdata.msg_type_shift = SPI_6358_MSG_TYPE_SHIFT;
|
||||
spi_pdata.msg_ctl_width = SPI_6358_MSG_CTL_WIDTH;
|
||||
}
|
||||
|
||||
bcm63xx_spi_regs_init();
|
||||
|
|
|
@ -61,6 +61,12 @@ static void octeon_irq_set_ciu_mapping(int irq, int line, int bit,
|
|||
octeon_irq_ciu_to_irq[line][bit] = irq;
|
||||
}
|
||||
|
||||
static void octeon_irq_force_ciu_mapping(struct irq_domain *domain,
|
||||
int irq, int line, int bit)
|
||||
{
|
||||
irq_domain_associate(domain, irq, line << 6 | bit);
|
||||
}
|
||||
|
||||
static int octeon_coreid_for_cpu(int cpu)
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
|
@ -183,19 +189,9 @@ static void __init octeon_irq_init_core(void)
|
|||
mutex_init(&cd->core_irq_mutex);
|
||||
|
||||
irq = OCTEON_IRQ_SW0 + i;
|
||||
switch (irq) {
|
||||
case OCTEON_IRQ_TIMER:
|
||||
case OCTEON_IRQ_SW0:
|
||||
case OCTEON_IRQ_SW1:
|
||||
case OCTEON_IRQ_5:
|
||||
case OCTEON_IRQ_PERF:
|
||||
irq_set_chip_data(irq, cd);
|
||||
irq_set_chip_and_handler(irq, &octeon_irq_chip_core,
|
||||
handle_percpu_irq);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
irq_set_chip_data(irq, cd);
|
||||
irq_set_chip_and_handler(irq, &octeon_irq_chip_core,
|
||||
handle_percpu_irq);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -890,7 +886,6 @@ static int octeon_irq_gpio_xlat(struct irq_domain *d,
|
|||
unsigned int type;
|
||||
unsigned int pin;
|
||||
unsigned int trigger;
|
||||
struct octeon_irq_gpio_domain_data *gpiod;
|
||||
|
||||
if (d->of_node != node)
|
||||
return -EINVAL;
|
||||
|
@ -925,8 +920,7 @@ static int octeon_irq_gpio_xlat(struct irq_domain *d,
|
|||
break;
|
||||
}
|
||||
*out_type = type;
|
||||
gpiod = d->host_data;
|
||||
*out_hwirq = gpiod->base_hwirq + pin;
|
||||
*out_hwirq = pin;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -996,19 +990,21 @@ static int octeon_irq_ciu_map(struct irq_domain *d,
|
|||
static int octeon_irq_gpio_map(struct irq_domain *d,
|
||||
unsigned int virq, irq_hw_number_t hw)
|
||||
{
|
||||
unsigned int line = hw >> 6;
|
||||
unsigned int bit = hw & 63;
|
||||
struct octeon_irq_gpio_domain_data *gpiod = d->host_data;
|
||||
unsigned int line, bit;
|
||||
|
||||
if (!octeon_irq_virq_in_range(virq))
|
||||
return -EINVAL;
|
||||
|
||||
hw += gpiod->base_hwirq;
|
||||
line = hw >> 6;
|
||||
bit = hw & 63;
|
||||
if (line > 1 || octeon_irq_ciu_to_irq[line][bit] != 0)
|
||||
return -EINVAL;
|
||||
|
||||
octeon_irq_set_ciu_mapping(virq, line, bit,
|
||||
octeon_irq_gpio_chip,
|
||||
octeon_irq_handle_gpio);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1149,6 +1145,7 @@ static void __init octeon_irq_init_ciu(void)
|
|||
struct irq_chip *chip_wd;
|
||||
struct device_node *gpio_node;
|
||||
struct device_node *ciu_node;
|
||||
struct irq_domain *ciu_domain = NULL;
|
||||
|
||||
octeon_irq_init_ciu_percpu();
|
||||
octeon_irq_setup_secondary = octeon_irq_setup_secondary_ciu;
|
||||
|
@ -1177,31 +1174,6 @@ static void __init octeon_irq_init_ciu(void)
|
|||
/* Mips internal */
|
||||
octeon_irq_init_core();
|
||||
|
||||
/* CIU_0 */
|
||||
for (i = 0; i < 16; i++)
|
||||
octeon_irq_set_ciu_mapping(i + OCTEON_IRQ_WORKQ0, 0, i + 0, chip, handle_level_irq);
|
||||
|
||||
octeon_irq_set_ciu_mapping(OCTEON_IRQ_MBOX0, 0, 32, chip_mbox, handle_percpu_irq);
|
||||
octeon_irq_set_ciu_mapping(OCTEON_IRQ_MBOX1, 0, 33, chip_mbox, handle_percpu_irq);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
octeon_irq_set_ciu_mapping(i + OCTEON_IRQ_PCI_INT0, 0, i + 36, chip, handle_level_irq);
|
||||
for (i = 0; i < 4; i++)
|
||||
octeon_irq_set_ciu_mapping(i + OCTEON_IRQ_PCI_MSI0, 0, i + 40, chip, handle_level_irq);
|
||||
|
||||
octeon_irq_set_ciu_mapping(OCTEON_IRQ_RML, 0, 46, chip, handle_level_irq);
|
||||
for (i = 0; i < 4; i++)
|
||||
octeon_irq_set_ciu_mapping(i + OCTEON_IRQ_TIMER0, 0, i + 52, chip, handle_edge_irq);
|
||||
|
||||
octeon_irq_set_ciu_mapping(OCTEON_IRQ_USB0, 0, 56, chip, handle_level_irq);
|
||||
octeon_irq_set_ciu_mapping(OCTEON_IRQ_BOOTDMA, 0, 63, chip, handle_level_irq);
|
||||
|
||||
/* CIU_1 */
|
||||
for (i = 0; i < 16; i++)
|
||||
octeon_irq_set_ciu_mapping(i + OCTEON_IRQ_WDOG0, 1, i + 0, chip_wd, handle_level_irq);
|
||||
|
||||
octeon_irq_set_ciu_mapping(OCTEON_IRQ_USB1, 1, 17, chip, handle_level_irq);
|
||||
|
||||
gpio_node = of_find_compatible_node(NULL, NULL, "cavium,octeon-3860-gpio");
|
||||
if (gpio_node) {
|
||||
struct octeon_irq_gpio_domain_data *gpiod;
|
||||
|
@ -1219,10 +1191,35 @@ static void __init octeon_irq_init_ciu(void)
|
|||
|
||||
ciu_node = of_find_compatible_node(NULL, NULL, "cavium,octeon-3860-ciu");
|
||||
if (ciu_node) {
|
||||
irq_domain_add_tree(ciu_node, &octeon_irq_domain_ciu_ops, NULL);
|
||||
ciu_domain = irq_domain_add_tree(ciu_node, &octeon_irq_domain_ciu_ops, NULL);
|
||||
of_node_put(ciu_node);
|
||||
} else
|
||||
pr_warn("Cannot find device node for cavium,octeon-3860-ciu.\n");
|
||||
panic("Cannot find device node for cavium,octeon-3860-ciu.");
|
||||
|
||||
/* CIU_0 */
|
||||
for (i = 0; i < 16; i++)
|
||||
octeon_irq_force_ciu_mapping(ciu_domain, i + OCTEON_IRQ_WORKQ0, 0, i + 0);
|
||||
|
||||
octeon_irq_set_ciu_mapping(OCTEON_IRQ_MBOX0, 0, 32, chip_mbox, handle_percpu_irq);
|
||||
octeon_irq_set_ciu_mapping(OCTEON_IRQ_MBOX1, 0, 33, chip_mbox, handle_percpu_irq);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
octeon_irq_force_ciu_mapping(ciu_domain, i + OCTEON_IRQ_PCI_INT0, 0, i + 36);
|
||||
for (i = 0; i < 4; i++)
|
||||
octeon_irq_force_ciu_mapping(ciu_domain, i + OCTEON_IRQ_PCI_MSI0, 0, i + 40);
|
||||
|
||||
octeon_irq_force_ciu_mapping(ciu_domain, OCTEON_IRQ_RML, 0, 46);
|
||||
for (i = 0; i < 4; i++)
|
||||
octeon_irq_force_ciu_mapping(ciu_domain, i + OCTEON_IRQ_TIMER0, 0, i + 52);
|
||||
|
||||
octeon_irq_force_ciu_mapping(ciu_domain, OCTEON_IRQ_USB0, 0, 56);
|
||||
octeon_irq_force_ciu_mapping(ciu_domain, OCTEON_IRQ_BOOTDMA, 0, 63);
|
||||
|
||||
/* CIU_1 */
|
||||
for (i = 0; i < 16; i++)
|
||||
octeon_irq_set_ciu_mapping(i + OCTEON_IRQ_WDOG0, 1, i + 0, chip_wd, handle_level_irq);
|
||||
|
||||
octeon_irq_force_ciu_mapping(ciu_domain, OCTEON_IRQ_USB1, 1, 17);
|
||||
|
||||
/* Enable the CIU lines */
|
||||
set_c0_status(STATUSF_IP3 | STATUSF_IP2);
|
||||
|
|
|
@ -393,7 +393,8 @@
|
|||
#define AR71XX_GPIO_REG_FUNC 0x28
|
||||
|
||||
#define AR71XX_GPIO_COUNT 16
|
||||
#define AR724X_GPIO_COUNT 18
|
||||
#define AR7240_GPIO_COUNT 18
|
||||
#define AR7241_GPIO_COUNT 20
|
||||
#define AR913X_GPIO_COUNT 22
|
||||
#define AR933X_GPIO_COUNT 30
|
||||
#define AR934X_GPIO_COUNT 23
|
||||
|
|
|
@ -42,7 +42,6 @@
|
|||
#define cpu_has_mips64r1 0
|
||||
#define cpu_has_mips64r2 0
|
||||
|
||||
#define cpu_has_dsp 0
|
||||
#define cpu_has_mipsmt 0
|
||||
|
||||
#define cpu_has_64bits 0
|
||||
|
|
|
@ -9,6 +9,8 @@ int __init bcm63xx_spi_register(void);
|
|||
|
||||
struct bcm63xx_spi_pdata {
|
||||
unsigned int fifo_size;
|
||||
unsigned int msg_type_shift;
|
||||
unsigned int msg_ctl_width;
|
||||
int bus_num;
|
||||
int num_chipselect;
|
||||
u32 speed_hz;
|
||||
|
|
|
@ -1054,7 +1054,8 @@
|
|||
#define SPI_6338_FILL_BYTE 0x07
|
||||
#define SPI_6338_MSG_TAIL 0x09
|
||||
#define SPI_6338_RX_TAIL 0x0b
|
||||
#define SPI_6338_MSG_CTL 0x40
|
||||
#define SPI_6338_MSG_CTL 0x40 /* 8-bits register */
|
||||
#define SPI_6338_MSG_CTL_WIDTH 8
|
||||
#define SPI_6338_MSG_DATA 0x41
|
||||
#define SPI_6338_MSG_DATA_SIZE 0x3f
|
||||
#define SPI_6338_RX_DATA 0x80
|
||||
|
@ -1070,7 +1071,8 @@
|
|||
#define SPI_6348_FILL_BYTE 0x07
|
||||
#define SPI_6348_MSG_TAIL 0x09
|
||||
#define SPI_6348_RX_TAIL 0x0b
|
||||
#define SPI_6348_MSG_CTL 0x40
|
||||
#define SPI_6348_MSG_CTL 0x40 /* 8-bits register */
|
||||
#define SPI_6348_MSG_CTL_WIDTH 8
|
||||
#define SPI_6348_MSG_DATA 0x41
|
||||
#define SPI_6348_MSG_DATA_SIZE 0x3f
|
||||
#define SPI_6348_RX_DATA 0x80
|
||||
|
@ -1078,6 +1080,7 @@
|
|||
|
||||
/* BCM 6358 SPI core */
|
||||
#define SPI_6358_MSG_CTL 0x00 /* 16-bits register */
|
||||
#define SPI_6358_MSG_CTL_WIDTH 16
|
||||
#define SPI_6358_MSG_DATA 0x02
|
||||
#define SPI_6358_MSG_DATA_SIZE 0x21e
|
||||
#define SPI_6358_RX_DATA 0x400
|
||||
|
@ -1094,6 +1097,7 @@
|
|||
|
||||
/* BCM 6358 SPI core */
|
||||
#define SPI_6368_MSG_CTL 0x00 /* 16-bits register */
|
||||
#define SPI_6368_MSG_CTL_WIDTH 16
|
||||
#define SPI_6368_MSG_DATA 0x02
|
||||
#define SPI_6368_MSG_DATA_SIZE 0x21e
|
||||
#define SPI_6368_RX_DATA 0x400
|
||||
|
@ -1115,7 +1119,10 @@
|
|||
#define SPI_HD_W 0x01
|
||||
#define SPI_HD_R 0x02
|
||||
#define SPI_BYTE_CNT_SHIFT 0
|
||||
#define SPI_MSG_TYPE_SHIFT 14
|
||||
#define SPI_6338_MSG_TYPE_SHIFT 6
|
||||
#define SPI_6348_MSG_TYPE_SHIFT 6
|
||||
#define SPI_6358_MSG_TYPE_SHIFT 14
|
||||
#define SPI_6368_MSG_TYPE_SHIFT 14
|
||||
|
||||
/* Command */
|
||||
#define SPI_CMD_NOOP 0x00
|
||||
|
|
|
@ -21,14 +21,10 @@ enum octeon_irq {
|
|||
OCTEON_IRQ_TIMER,
|
||||
/* sources in CIU_INTX_EN0 */
|
||||
OCTEON_IRQ_WORKQ0,
|
||||
OCTEON_IRQ_GPIO0 = OCTEON_IRQ_WORKQ0 + 16,
|
||||
OCTEON_IRQ_WDOG0 = OCTEON_IRQ_GPIO0 + 16,
|
||||
OCTEON_IRQ_WDOG0 = OCTEON_IRQ_WORKQ0 + 16,
|
||||
OCTEON_IRQ_WDOG15 = OCTEON_IRQ_WDOG0 + 15,
|
||||
OCTEON_IRQ_MBOX0 = OCTEON_IRQ_WDOG0 + 16,
|
||||
OCTEON_IRQ_MBOX1,
|
||||
OCTEON_IRQ_UART0,
|
||||
OCTEON_IRQ_UART1,
|
||||
OCTEON_IRQ_UART2,
|
||||
OCTEON_IRQ_PCI_INT0,
|
||||
OCTEON_IRQ_PCI_INT1,
|
||||
OCTEON_IRQ_PCI_INT2,
|
||||
|
@ -38,8 +34,6 @@ enum octeon_irq {
|
|||
OCTEON_IRQ_PCI_MSI2,
|
||||
OCTEON_IRQ_PCI_MSI3,
|
||||
|
||||
OCTEON_IRQ_TWSI,
|
||||
OCTEON_IRQ_TWSI2,
|
||||
OCTEON_IRQ_RML,
|
||||
OCTEON_IRQ_TIMER0,
|
||||
OCTEON_IRQ_TIMER1,
|
||||
|
@ -47,8 +41,6 @@ enum octeon_irq {
|
|||
OCTEON_IRQ_TIMER3,
|
||||
OCTEON_IRQ_USB0,
|
||||
OCTEON_IRQ_USB1,
|
||||
OCTEON_IRQ_MII0,
|
||||
OCTEON_IRQ_MII1,
|
||||
OCTEON_IRQ_BOOTDMA,
|
||||
#ifndef CONFIG_PCI_MSI
|
||||
OCTEON_IRQ_LAST = 127
|
||||
|
|
|
@ -10,6 +10,7 @@ struct mod_arch_specific {
|
|||
struct list_head dbe_list;
|
||||
const struct exception_table_entry *dbe_start;
|
||||
const struct exception_table_entry *dbe_end;
|
||||
struct mips_hi16 *r_mips_hi16_list;
|
||||
};
|
||||
|
||||
typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */
|
||||
|
|
|
@ -12,16 +12,16 @@
|
|||
|
||||
#ifdef CONFIG_SYNC_R4K
|
||||
|
||||
extern void synchronise_count_master(void);
|
||||
extern void synchronise_count_slave(void);
|
||||
extern void synchronise_count_master(int cpu);
|
||||
extern void synchronise_count_slave(int cpu);
|
||||
|
||||
#else
|
||||
|
||||
static inline void synchronise_count_master(void)
|
||||
static inline void synchronise_count_master(int cpu)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void synchronise_count_slave(void)
|
||||
static inline void synchronise_count_slave(int cpu)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -39,8 +39,6 @@ struct mips_hi16 {
|
|||
Elf_Addr value;
|
||||
};
|
||||
|
||||
static struct mips_hi16 *mips_hi16_list;
|
||||
|
||||
static LIST_HEAD(dbe_list);
|
||||
static DEFINE_SPINLOCK(dbe_lock);
|
||||
|
||||
|
@ -128,8 +126,8 @@ static int apply_r_mips_hi16_rel(struct module *me, u32 *location, Elf_Addr v)
|
|||
|
||||
n->addr = (Elf_Addr *)location;
|
||||
n->value = v;
|
||||
n->next = mips_hi16_list;
|
||||
mips_hi16_list = n;
|
||||
n->next = me->arch.r_mips_hi16_list;
|
||||
me->arch.r_mips_hi16_list = n;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -142,18 +140,28 @@ static int apply_r_mips_hi16_rela(struct module *me, u32 *location, Elf_Addr v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void free_relocation_chain(struct mips_hi16 *l)
|
||||
{
|
||||
struct mips_hi16 *next;
|
||||
|
||||
while (l) {
|
||||
next = l->next;
|
||||
kfree(l);
|
||||
l = next;
|
||||
}
|
||||
}
|
||||
|
||||
static int apply_r_mips_lo16_rel(struct module *me, u32 *location, Elf_Addr v)
|
||||
{
|
||||
unsigned long insnlo = *location;
|
||||
struct mips_hi16 *l;
|
||||
Elf_Addr val, vallo;
|
||||
|
||||
/* Sign extend the addend we extract from the lo insn. */
|
||||
vallo = ((insnlo & 0xffff) ^ 0x8000) - 0x8000;
|
||||
|
||||
if (mips_hi16_list != NULL) {
|
||||
struct mips_hi16 *l;
|
||||
|
||||
l = mips_hi16_list;
|
||||
if (me->arch.r_mips_hi16_list != NULL) {
|
||||
l = me->arch.r_mips_hi16_list;
|
||||
while (l != NULL) {
|
||||
struct mips_hi16 *next;
|
||||
unsigned long insn;
|
||||
|
@ -188,7 +196,7 @@ static int apply_r_mips_lo16_rel(struct module *me, u32 *location, Elf_Addr v)
|
|||
l = next;
|
||||
}
|
||||
|
||||
mips_hi16_list = NULL;
|
||||
me->arch.r_mips_hi16_list = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -201,6 +209,9 @@ static int apply_r_mips_lo16_rel(struct module *me, u32 *location, Elf_Addr v)
|
|||
return 0;
|
||||
|
||||
out_danger:
|
||||
free_relocation_chain(l);
|
||||
me->arch.r_mips_hi16_list = NULL;
|
||||
|
||||
pr_err("module %s: dangerous R_MIPS_LO16 REL relocation\n", me->name);
|
||||
|
||||
return -ENOEXEC;
|
||||
|
@ -273,6 +284,7 @@ int apply_relocate(Elf_Shdr *sechdrs, const char *strtab,
|
|||
pr_debug("Applying relocate section %u to %u\n", relsec,
|
||||
sechdrs[relsec].sh_info);
|
||||
|
||||
me->arch.r_mips_hi16_list = NULL;
|
||||
for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
|
||||
/* This is where to make the change */
|
||||
location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
|
||||
|
@ -296,6 +308,19 @@ int apply_relocate(Elf_Shdr *sechdrs, const char *strtab,
|
|||
return res;
|
||||
}
|
||||
|
||||
/*
|
||||
* Normally the hi16 list should be deallocated at this point. A
|
||||
* malformed binary however could contain a series of R_MIPS_HI16
|
||||
* relocations not followed by a R_MIPS_LO16 relocation. In that
|
||||
* case, free up the list and return an error.
|
||||
*/
|
||||
if (me->arch.r_mips_hi16_list) {
|
||||
free_relocation_chain(me->arch.r_mips_hi16_list);
|
||||
me->arch.r_mips_hi16_list = NULL;
|
||||
|
||||
return -ENOEXEC;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -130,7 +130,7 @@ asmlinkage __cpuinit void start_secondary(void)
|
|||
|
||||
cpu_set(cpu, cpu_callin_map);
|
||||
|
||||
synchronise_count_slave();
|
||||
synchronise_count_slave(cpu);
|
||||
|
||||
/*
|
||||
* irq will be enabled in ->smp_finish(), enabling it too early
|
||||
|
@ -173,7 +173,6 @@ void smp_send_stop(void)
|
|||
void __init smp_cpus_done(unsigned int max_cpus)
|
||||
{
|
||||
mp_ops->cpus_done();
|
||||
synchronise_count_master();
|
||||
}
|
||||
|
||||
/* called from main before smp_init() */
|
||||
|
@ -206,6 +205,7 @@ int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle)
|
|||
while (!cpu_isset(cpu, cpu_callin_map))
|
||||
udelay(100);
|
||||
|
||||
synchronise_count_master(cpu);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,12 +28,11 @@ static atomic_t __cpuinitdata count_reference = ATOMIC_INIT(0);
|
|||
#define COUNTON 100
|
||||
#define NR_LOOPS 5
|
||||
|
||||
void __cpuinit synchronise_count_master(void)
|
||||
void __cpuinit synchronise_count_master(int cpu)
|
||||
{
|
||||
int i;
|
||||
unsigned long flags;
|
||||
unsigned int initcount;
|
||||
int nslaves;
|
||||
|
||||
#ifdef CONFIG_MIPS_MT_SMTC
|
||||
/*
|
||||
|
@ -43,8 +42,7 @@ void __cpuinit synchronise_count_master(void)
|
|||
return;
|
||||
#endif
|
||||
|
||||
printk(KERN_INFO "Synchronize counters across %u CPUs: ",
|
||||
num_online_cpus());
|
||||
printk(KERN_INFO "Synchronize counters for CPU %u: ", cpu);
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
|
@ -52,7 +50,7 @@ void __cpuinit synchronise_count_master(void)
|
|||
* Notify the slaves that it's time to start
|
||||
*/
|
||||
atomic_set(&count_reference, read_c0_count());
|
||||
atomic_set(&count_start_flag, 1);
|
||||
atomic_set(&count_start_flag, cpu);
|
||||
smp_wmb();
|
||||
|
||||
/* Count will be initialised to current timer for all CPU's */
|
||||
|
@ -69,10 +67,9 @@ void __cpuinit synchronise_count_master(void)
|
|||
* two CPUs.
|
||||
*/
|
||||
|
||||
nslaves = num_online_cpus()-1;
|
||||
for (i = 0; i < NR_LOOPS; i++) {
|
||||
/* slaves loop on '!= ncpus' */
|
||||
while (atomic_read(&count_count_start) != nslaves)
|
||||
/* slaves loop on '!= 2' */
|
||||
while (atomic_read(&count_count_start) != 1)
|
||||
mb();
|
||||
atomic_set(&count_count_stop, 0);
|
||||
smp_wmb();
|
||||
|
@ -89,7 +86,7 @@ void __cpuinit synchronise_count_master(void)
|
|||
/*
|
||||
* Wait for all slaves to leave the synchronization point:
|
||||
*/
|
||||
while (atomic_read(&count_count_stop) != nslaves)
|
||||
while (atomic_read(&count_count_stop) != 1)
|
||||
mb();
|
||||
atomic_set(&count_count_start, 0);
|
||||
smp_wmb();
|
||||
|
@ -97,6 +94,7 @@ void __cpuinit synchronise_count_master(void)
|
|||
}
|
||||
/* Arrange for an interrupt in a short while */
|
||||
write_c0_compare(read_c0_count() + COUNTON);
|
||||
atomic_set(&count_start_flag, 0);
|
||||
|
||||
local_irq_restore(flags);
|
||||
|
||||
|
@ -108,11 +106,10 @@ void __cpuinit synchronise_count_master(void)
|
|||
printk("done.\n");
|
||||
}
|
||||
|
||||
void __cpuinit synchronise_count_slave(void)
|
||||
void __cpuinit synchronise_count_slave(int cpu)
|
||||
{
|
||||
int i;
|
||||
unsigned int initcount;
|
||||
int ncpus;
|
||||
|
||||
#ifdef CONFIG_MIPS_MT_SMTC
|
||||
/*
|
||||
|
@ -127,16 +124,15 @@ void __cpuinit synchronise_count_slave(void)
|
|||
* so we first wait for the master to say everyone is ready
|
||||
*/
|
||||
|
||||
while (!atomic_read(&count_start_flag))
|
||||
while (atomic_read(&count_start_flag) != cpu)
|
||||
mb();
|
||||
|
||||
/* Count will be initialised to next expire for all CPU's */
|
||||
initcount = atomic_read(&count_reference);
|
||||
|
||||
ncpus = num_online_cpus();
|
||||
for (i = 0; i < NR_LOOPS; i++) {
|
||||
atomic_inc(&count_count_start);
|
||||
while (atomic_read(&count_count_start) != ncpus)
|
||||
while (atomic_read(&count_count_start) != 2)
|
||||
mb();
|
||||
|
||||
/*
|
||||
|
@ -146,7 +142,7 @@ void __cpuinit synchronise_count_slave(void)
|
|||
write_c0_count(initcount);
|
||||
|
||||
atomic_inc(&count_count_stop);
|
||||
while (atomic_read(&count_count_stop) != ncpus)
|
||||
while (atomic_read(&count_count_stop) != 2)
|
||||
mb();
|
||||
}
|
||||
/* Arrange for an interrupt in a short while */
|
||||
|
|
|
@ -252,16 +252,3 @@ void __init mips_pcibios_init(void)
|
|||
|
||||
register_pci_controller(controller);
|
||||
}
|
||||
|
||||
/* Enable PCI 2.1 compatibility in PIIX4 */
|
||||
static void __devinit quirk_dlcsetup(struct pci_dev *dev)
|
||||
{
|
||||
u8 odlc, ndlc;
|
||||
(void) pci_read_config_byte(dev, 0x82, &odlc);
|
||||
/* Enable passive releases and delayed transaction */
|
||||
ndlc = odlc | 7;
|
||||
(void) pci_write_config_byte(dev, 0x82, ndlc);
|
||||
}
|
||||
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_0,
|
||||
quirk_dlcsetup);
|
||||
|
|
|
@ -23,9 +23,12 @@
|
|||
#define AR724X_PCI_MEM_BASE 0x10000000
|
||||
#define AR724X_PCI_MEM_SIZE 0x08000000
|
||||
|
||||
#define AR724X_PCI_REG_RESET 0x18
|
||||
#define AR724X_PCI_REG_INT_STATUS 0x4c
|
||||
#define AR724X_PCI_REG_INT_MASK 0x50
|
||||
|
||||
#define AR724X_PCI_RESET_LINK_UP BIT(0)
|
||||
|
||||
#define AR724X_PCI_INT_DEV0 BIT(14)
|
||||
|
||||
#define AR724X_PCI_IRQ_COUNT 1
|
||||
|
@ -38,6 +41,15 @@ static void __iomem *ar724x_pci_ctrl_base;
|
|||
|
||||
static u32 ar724x_pci_bar0_value;
|
||||
static bool ar724x_pci_bar0_is_cached;
|
||||
static bool ar724x_pci_link_up;
|
||||
|
||||
static inline bool ar724x_pci_check_link(void)
|
||||
{
|
||||
u32 reset;
|
||||
|
||||
reset = __raw_readl(ar724x_pci_ctrl_base + AR724X_PCI_REG_RESET);
|
||||
return reset & AR724X_PCI_RESET_LINK_UP;
|
||||
}
|
||||
|
||||
static int ar724x_pci_read(struct pci_bus *bus, unsigned int devfn, int where,
|
||||
int size, uint32_t *value)
|
||||
|
@ -46,6 +58,9 @@ static int ar724x_pci_read(struct pci_bus *bus, unsigned int devfn, int where,
|
|||
void __iomem *base;
|
||||
u32 data;
|
||||
|
||||
if (!ar724x_pci_link_up)
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
if (devfn)
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
|
@ -96,6 +111,9 @@ static int ar724x_pci_write(struct pci_bus *bus, unsigned int devfn, int where,
|
|||
u32 data;
|
||||
int s;
|
||||
|
||||
if (!ar724x_pci_link_up)
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
if (devfn)
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
|
@ -280,6 +298,10 @@ int __init ar724x_pcibios_init(int irq)
|
|||
if (ar724x_pci_ctrl_base == NULL)
|
||||
goto err_unmap_devcfg;
|
||||
|
||||
ar724x_pci_link_up = ar724x_pci_check_link();
|
||||
if (!ar724x_pci_link_up)
|
||||
pr_warn("ar724x: PCIe link is down\n");
|
||||
|
||||
ar724x_pci_irq_init(irq);
|
||||
register_pci_controller(&ar724x_pci_controller);
|
||||
|
||||
|
|
|
@ -141,7 +141,7 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
|
|||
|
||||
#define atomic_sub_and_test(i,v) (atomic_sub_return((i),(v)) == 0)
|
||||
|
||||
#define ATOMIC_INIT(i) ((atomic_t) { (i) })
|
||||
#define ATOMIC_INIT(i) { (i) }
|
||||
|
||||
#define smp_mb__before_atomic_dec() smp_mb()
|
||||
#define smp_mb__after_atomic_dec() smp_mb()
|
||||
|
@ -150,7 +150,7 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
|
|||
|
||||
#ifdef CONFIG_64BIT
|
||||
|
||||
#define ATOMIC64_INIT(i) ((atomic64_t) { (i) })
|
||||
#define ATOMIC64_INIT(i) { (i) }
|
||||
|
||||
static __inline__ s64
|
||||
__atomic64_add_return(s64 i, atomic64_t *v)
|
||||
|
|
|
@ -309,7 +309,7 @@ copy_thread(unsigned long clone_flags, unsigned long usp,
|
|||
cregs->ksp = (unsigned long)stack
|
||||
+ (pregs->gr[21] & (THREAD_SIZE - 1));
|
||||
cregs->gr[30] = usp;
|
||||
if (p->personality == PER_HPUX) {
|
||||
if (personality(p->personality) == PER_HPUX) {
|
||||
#ifdef CONFIG_HPUX
|
||||
cregs->kpc = (unsigned long) &hpux_child_return;
|
||||
#else
|
||||
|
|
|
@ -225,12 +225,12 @@ long parisc_personality(unsigned long personality)
|
|||
long err;
|
||||
|
||||
if (personality(current->personality) == PER_LINUX32
|
||||
&& personality == PER_LINUX)
|
||||
personality = PER_LINUX32;
|
||||
&& personality(personality) == PER_LINUX)
|
||||
personality = (personality & ~PER_MASK) | PER_LINUX32;
|
||||
|
||||
err = sys_personality(personality);
|
||||
if (err == PER_LINUX32)
|
||||
err = PER_LINUX;
|
||||
if (personality(err) == PER_LINUX32)
|
||||
err = (err & ~PER_MASK) | PER_LINUX;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
|
@ -345,6 +345,13 @@ sdhc@114000 {
|
|||
/include/ "qoriq-duart-1.dtsi"
|
||||
/include/ "qoriq-gpio-0.dtsi"
|
||||
/include/ "qoriq-usb2-mph-0.dtsi"
|
||||
usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
|
||||
port0;
|
||||
};
|
||||
/include/ "qoriq-usb2-dr-0.dtsi"
|
||||
usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
};
|
||||
/include/ "qoriq-sec4.0-0.dtsi"
|
||||
};
|
||||
|
|
|
@ -6,28 +6,27 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
CONFIG_KALLSYMS_EXTRA_PASS=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_P1023_RDS=y
|
||||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_CPM2=y
|
||||
CONFIG_GPIO_MPC8XXX=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_MATH_EMULATION=y
|
||||
|
@ -63,11 +62,11 @@ CONFIG_INET_ESP=y
|
|||
CONFIG_IPV6=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_EEPROM_LEGACY=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
|
@ -80,15 +79,14 @@ CONFIG_SATA_FSL=y
|
|||
CONFIG_SATA_SIL24=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
CONFIG_FS_ENET=y
|
||||
CONFIG_FSL_PQ_MDIO=y
|
||||
CONFIG_E1000E=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_DAVICOM_PHY=y
|
||||
CONFIG_CICADA_PHY=y
|
||||
CONFIG_VITESSE_PHY=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_FS_ENET=y
|
||||
CONFIG_E1000E=y
|
||||
CONFIG_FSL_PQ_MDIO=y
|
||||
CONFIG_INPUT_FF_MEMLESS=m
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
|
@ -98,16 +96,15 @@ CONFIG_SERIAL_8250=y
|
|||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=2
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||
CONFIG_SERIAL_8250_RSA=y
|
||||
CONFIG_SERIAL_QE=m
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_NVRAM=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CPM=m
|
||||
CONFIG_I2C_MPC=y
|
||||
CONFIG_GPIO_MPC8XXX=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||
CONFIG_SOUND=y
|
||||
|
@ -123,7 +120,6 @@ CONFIG_DMADEVICES=y
|
|||
CONFIG_FSL_DMA=y
|
||||
# CONFIG_NET_DMA is not set
|
||||
CONFIG_STAGING=y
|
||||
# CONFIG_STAGING_EXCLUDE_BUILD is not set
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT3_FS=y
|
||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||
|
@ -150,22 +146,15 @@ CONFIG_QNX4FS_FS=m
|
|||
CONFIG_SYSV_FS=m
|
||||
CONFIG_UFS_FS=m
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_FRAME_WARN=8092
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
|
|
|
@ -6,8 +6,8 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_RCU_TRACE=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
|
@ -21,23 +21,22 @@ CONFIG_MODULE_UNLOAD=y
|
|||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_P2041_RDB=y
|
||||
CONFIG_P3041_DS=y
|
||||
CONFIG_P4080_DS=y
|
||||
CONFIG_P5020_DS=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
CONFIG_FSL_LBC=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCI_MSI=y
|
||||
# CONFIG_PCIEASPM is not set
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_RAPIDIO=y
|
||||
CONFIG_FSL_RIO=y
|
||||
CONFIG_NET=y
|
||||
|
@ -70,6 +69,7 @@ CONFIG_INET_IPCOMP=y
|
|||
CONFIG_IPV6=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
|
@ -77,17 +77,14 @@ CONFIG_MTD_BLOCK=y
|
|||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_NAND_IDS=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
|
@ -115,11 +112,9 @@ CONFIG_SERIO_LIBPS2=y
|
|||
CONFIG_PPC_EPAPR_HV_BYTECHAN=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||
CONFIG_SERIAL_8250_RSA=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_NVRAM=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
|
@ -132,7 +127,6 @@ CONFIG_SPI_FSL_ESPI=y
|
|||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||
CONFIG_USB_HID=m
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_FSL=y
|
||||
|
@ -142,8 +136,6 @@ CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
|
|||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_OF=y
|
||||
CONFIG_MMC_SDHCI_OF_ESDHC=y
|
||||
CONFIG_EDAC=y
|
||||
CONFIG_EDAC_MM_EDAC=y
|
||||
CONFIG_EDAC_MPC85XX=y
|
||||
|
@ -170,19 +162,16 @@ CONFIG_HUGETLBFS=y
|
|||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_CRAMFS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=m
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=m
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_RCU_TRACE=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_MD4=y
|
||||
|
|
|
@ -56,6 +56,7 @@ CONFIG_INET_ESP=y
|
|||
CONFIG_IPV6=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
CONFIG_PPC64=y
|
||||
CONFIG_ALTIVEC=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
|
@ -13,15 +15,16 @@ CONFIG_MODULES=y
|
|||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_KEXEC=y
|
||||
# CONFIG_RELOCATABLE is not set
|
||||
# CONFIG_PPC_PSERIES is not set
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_PMAC64=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
# CONFIG_MIGRATION is not set
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
|
@ -49,6 +52,7 @@ CONFIG_NF_CT_NETLINK=m
|
|||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
|
@ -56,6 +60,8 @@ CONFIG_BLK_DEV_RAM_SIZE=65536
|
|||
CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_IDE=y
|
||||
CONFIG_BLK_DEV_IDECD=y
|
||||
CONFIG_BLK_DEV_IDE_PMAC=y
|
||||
CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
|
@ -79,24 +85,33 @@ CONFIG_DM_CRYPT=m
|
|||
CONFIG_DM_SNAPSHOT=m
|
||||
CONFIG_DM_MIRROR=m
|
||||
CONFIG_DM_ZERO=m
|
||||
CONFIG_MACINTOSH_DRIVERS=y
|
||||
CONFIG_IEEE1394=y
|
||||
CONFIG_IEEE1394_OHCI1394=y
|
||||
CONFIG_IEEE1394_SBP2=m
|
||||
CONFIG_IEEE1394_ETH1394=m
|
||||
CONFIG_IEEE1394_RAWIO=y
|
||||
CONFIG_IEEE1394_VIDEO1394=m
|
||||
CONFIG_IEEE1394_DV1394=m
|
||||
CONFIG_ADB_PMU=y
|
||||
CONFIG_PMAC_SMU=y
|
||||
CONFIG_MAC_EMUMOUSEBTN=y
|
||||
CONFIG_THERM_PM72=y
|
||||
CONFIG_WINDFARM=y
|
||||
CONFIG_WINDFARM_PM81=y
|
||||
CONFIG_WINDFARM_PM91=y
|
||||
CONFIG_WINDFARM_PM112=y
|
||||
CONFIG_WINDFARM_PM121=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_BONDING=m
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_MII=y
|
||||
CONFIG_BONDING=m
|
||||
CONFIG_TUN=m
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_SUNGEM=y
|
||||
CONFIG_ACENIC=m
|
||||
CONFIG_ACENIC_OMIT_TIGON_I=y
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_E1000=y
|
||||
CONFIG_SUNGEM=y
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPPOE=m
|
||||
CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_USB_CATC=m
|
||||
CONFIG_USB_KAWETH=m
|
||||
CONFIG_USB_PEGASUS=m
|
||||
|
@ -106,24 +121,36 @@ CONFIG_USB_USBNET=m
|
|||
# CONFIG_USB_NET_NET1080 is not set
|
||||
# CONFIG_USB_NET_CDC_SUBSET is not set
|
||||
# CONFIG_USB_NET_ZAURUS is not set
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPPOE=m
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_JOYDEV=m
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_GEN_RTC=y
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_AGP=y
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_NOUVEAU=y
|
||||
CONFIG_AGP=m
|
||||
CONFIG_AGP_UNINORTH=m
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB_TILEBLITTING=y
|
||||
CONFIG_FB_OF=y
|
||||
CONFIG_FB_NVIDIA=y
|
||||
CONFIG_FB_NVIDIA_I2C=y
|
||||
CONFIG_FB_RADEON=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_LOGO=y
|
||||
CONFIG_SOUND=m
|
||||
CONFIG_SND=m
|
||||
|
@ -131,7 +158,15 @@ CONFIG_SND_SEQUENCER=m
|
|||
CONFIG_SND_MIXER_OSS=m
|
||||
CONFIG_SND_PCM_OSS=m
|
||||
CONFIG_SND_SEQUENCER_OSS=y
|
||||
CONFIG_SND_POWERMAC=m
|
||||
CONFIG_SND_AOA=m
|
||||
CONFIG_SND_AOA_FABRIC_LAYOUT=m
|
||||
CONFIG_SND_AOA_ONYX=m
|
||||
CONFIG_SND_AOA_TAS=m
|
||||
CONFIG_SND_AOA_TOONIE=m
|
||||
CONFIG_SND_USB_AUDIO=m
|
||||
CONFIG_HID_PID=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_LOGITECH_FF=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
|
@ -139,12 +174,13 @@ CONFIG_HID_PETALYNX=y
|
|||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_PID=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
# CONFIG_USB_EHCI_HCD_PPC_OF is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
|
||||
CONFIG_USB_ACM=m
|
||||
CONFIG_USB_PRINTER=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
|
@ -208,6 +244,8 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
|
|||
CONFIG_REISERFS_FS_SECURITY=y
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_AUTOFS_FS=m
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_JOLIET=y
|
||||
CONFIG_ZISOFS=y
|
||||
|
@ -221,12 +259,14 @@ CONFIG_HFS_FS=m
|
|||
CONFIG_HFSPLUS_FS=m
|
||||
CONFIG_CRAMFS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_CODEPAGE_1250=y
|
||||
CONFIG_NLS_CODEPAGE_1251=y
|
||||
|
@ -234,23 +274,29 @@ CONFIG_NLS_ASCII=y
|
|||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_ISO8859_15=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_LATENCYTOP=y
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_BOOTX_TEXT=y
|
||||
CONFIG_CRYPTO_NULL=m
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_MD4=m
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_SHA256=m
|
||||
CONFIG_CRYPTO_SHA512=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_AES=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_CAST5=m
|
||||
CONFIG_CRYPTO_CAST6=m
|
||||
|
@ -260,6 +306,3 @@ CONFIG_CRYPTO_TEA=m
|
|||
CONFIG_CRYPTO_TWOFISH=m
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
# CONFIG_VIRTUALIZATION is not set
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
|
|
|
@ -2,12 +2,12 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
# CONFIG_PPC_CHRP is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
CONFIG_PPC_83xx=y
|
||||
|
@ -25,7 +25,6 @@ CONFIG_ASP834x=y
|
|||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
|
@ -42,10 +41,9 @@ CONFIG_INET_ESP=y
|
|||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
|
@ -64,15 +62,14 @@ CONFIG_ATA=y
|
|||
CONFIG_SATA_FSL=y
|
||||
CONFIG_SATA_SIL=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_UCC_GETH=y
|
||||
CONFIG_GIANFAR=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_DAVICOM_PHY=y
|
||||
CONFIG_VITESSE_PHY=y
|
||||
CONFIG_ICPLUS_PHY=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_GIANFAR=y
|
||||
CONFIG_UCC_GETH=y
|
||||
CONFIG_INPUT_FF_MEMLESS=m
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
|
@ -112,17 +109,12 @@ CONFIG_RTC_DRV_DS1374=y
|
|||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT3_FS=y
|
||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
|
|
|
@ -5,7 +5,9 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
|
@ -17,6 +19,8 @@ CONFIG_MODULE_UNLOAD=y
|
|||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MPC8540_ADS=y
|
||||
CONFIG_MPC8560_ADS=y
|
||||
CONFIG_MPC85xx_CDS=y
|
||||
|
@ -40,8 +44,6 @@ CONFIG_SBC8548=y
|
|||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=12
|
||||
|
@ -74,36 +76,25 @@ CONFIG_INET_ESP=y
|
|||
CONFIG_IPV6=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_FTL=y
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_MTD_NAND_IDS=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_NBD=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_EEPROM_LEGACY=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
|
@ -115,6 +106,7 @@ CONFIG_ATA=y
|
|||
CONFIG_SATA_AHCI=y
|
||||
CONFIG_SATA_FSL=y
|
||||
CONFIG_PATA_ALI=y
|
||||
CONFIG_PATA_VIA=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
CONFIG_FS_ENET=y
|
||||
|
@ -134,7 +126,6 @@ CONFIG_SERIAL_8250=y
|
|||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=2
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||
CONFIG_SERIAL_8250_RSA=y
|
||||
|
@ -183,7 +174,6 @@ CONFIG_HID_SAMSUNG=y
|
|||
CONFIG_HID_SONY=y
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_FSL=y
|
||||
|
@ -229,18 +219,13 @@ CONFIG_QNX4FS_FS=m
|
|||
CONFIG_SYSV_FS=m
|
||||
CONFIG_UFS_FS=m
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
|
|
|
@ -7,7 +7,9 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
|
@ -19,6 +21,8 @@ CONFIG_MODULE_UNLOAD=y
|
|||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MPC8540_ADS=y
|
||||
CONFIG_MPC8560_ADS=y
|
||||
CONFIG_MPC85xx_CDS=y
|
||||
|
@ -42,8 +46,6 @@ CONFIG_SBC8548=y
|
|||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
|
@ -77,36 +79,25 @@ CONFIG_INET_ESP=y
|
|||
CONFIG_IPV6=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_FTL=y
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_MTD_NAND_IDS=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_NBD=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_EEPROM_LEGACY=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
|
@ -137,7 +128,6 @@ CONFIG_SERIAL_8250=y
|
|||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=2
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||
CONFIG_SERIAL_8250_RSA=y
|
||||
|
@ -186,7 +176,6 @@ CONFIG_HID_SAMSUNG=y
|
|||
CONFIG_HID_SONY=y
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_FSL=y
|
||||
|
@ -232,18 +221,13 @@ CONFIG_QNX4FS_FS=m
|
|||
CONFIG_SYSV_FS=m
|
||||
CONFIG_UFS_FS=m
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
|
|
|
@ -553,9 +553,7 @@ static inline int cpu_has_feature(unsigned long feature)
|
|||
& feature);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HAVE_HW_BREAKPOINT
|
||||
#define HBP_NUM 1
|
||||
#endif /* CONFIG_HAVE_HW_BREAKPOINT */
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include <asm/kvm_asm.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
#define KVM_MAX_VCPUS NR_CPUS
|
||||
#define KVM_MAX_VCORES NR_CPUS
|
||||
|
|
|
@ -219,4 +219,16 @@ void kvmppc_claim_lpid(long lpid);
|
|||
void kvmppc_free_lpid(long lpid);
|
||||
void kvmppc_init_lpid(unsigned long nr_lpids);
|
||||
|
||||
static inline void kvmppc_mmu_flush_icache(pfn_t pfn)
|
||||
{
|
||||
/* Clear i-cache for new pages */
|
||||
struct page *page;
|
||||
page = pfn_to_page(pfn);
|
||||
if (!test_bit(PG_arch_1, &page->flags)) {
|
||||
flush_dcache_icache_page(page);
|
||||
set_bit(PG_arch_1, &page->flags);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif /* __POWERPC_KVM_PPC_H__ */
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/smp.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
struct mpic_msgr {
|
||||
u32 __iomem *base;
|
||||
|
|
|
@ -83,11 +83,10 @@ static int dma_iommu_dma_supported(struct device *dev, u64 mask)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if ((tbl->it_offset + tbl->it_size) > (mask >> IOMMU_PAGE_SHIFT)) {
|
||||
dev_info(dev, "Warning: IOMMU window too big for device mask\n");
|
||||
dev_info(dev, "mask: 0x%08llx, table end: 0x%08lx\n",
|
||||
mask, (tbl->it_offset + tbl->it_size) <<
|
||||
IOMMU_PAGE_SHIFT);
|
||||
if (tbl->it_offset > (mask >> IOMMU_PAGE_SHIFT)) {
|
||||
dev_info(dev, "Warning: IOMMU offset too big for device mask\n");
|
||||
dev_info(dev, "mask: 0x%08llx, table offset: 0x%08lx\n",
|
||||
mask, tbl->it_offset << IOMMU_PAGE_SHIFT);
|
||||
return 0;
|
||||
} else
|
||||
return 1;
|
||||
|
|
|
@ -253,7 +253,7 @@ int __kprobes hw_breakpoint_handler(struct die_args *args)
|
|||
|
||||
/* Do not emulate user-space instructions, instead single-step them */
|
||||
if (user_mode(regs)) {
|
||||
bp->ctx->task->thread.last_hit_ubp = bp;
|
||||
current->thread.last_hit_ubp = bp;
|
||||
regs->msr |= MSR_SE;
|
||||
goto out;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <asm/processor.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/debug.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
/*
|
||||
* This table contains the mapping between PowerPC hardware trap types, and
|
||||
|
@ -101,6 +102,21 @@ static int computeSignal(unsigned int tt)
|
|||
return SIGHUP; /* default for things we don't know about */
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* kgdb_skipexception - Bail out of KGDB when we've been triggered.
|
||||
* @exception: Exception vector number
|
||||
* @regs: Current &struct pt_regs.
|
||||
*
|
||||
* On some architectures we need to skip a breakpoint exception when
|
||||
* it occurs after a breakpoint has been removed.
|
||||
*
|
||||
*/
|
||||
int kgdb_skipexception(int exception, struct pt_regs *regs)
|
||||
{
|
||||
return kgdb_isremovedbreak(regs->nip);
|
||||
}
|
||||
|
||||
static int kgdb_call_nmi_hook(struct pt_regs *regs)
|
||||
{
|
||||
kgdb_nmicallback(raw_smp_processor_id(), regs);
|
||||
|
@ -138,6 +154,8 @@ static int kgdb_handle_breakpoint(struct pt_regs *regs)
|
|||
static int kgdb_singlestep(struct pt_regs *regs)
|
||||
{
|
||||
struct thread_info *thread_info, *exception_thread_info;
|
||||
struct thread_info *backup_current_thread_info = \
|
||||
(struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL);
|
||||
|
||||
if (user_mode(regs))
|
||||
return 0;
|
||||
|
@ -155,13 +173,17 @@ static int kgdb_singlestep(struct pt_regs *regs)
|
|||
thread_info = (struct thread_info *)(regs->gpr[1] & ~(THREAD_SIZE-1));
|
||||
exception_thread_info = current_thread_info();
|
||||
|
||||
if (thread_info != exception_thread_info)
|
||||
if (thread_info != exception_thread_info) {
|
||||
/* Save the original current_thread_info. */
|
||||
memcpy(backup_current_thread_info, exception_thread_info, sizeof *thread_info);
|
||||
memcpy(exception_thread_info, thread_info, sizeof *thread_info);
|
||||
}
|
||||
|
||||
kgdb_handle_exception(0, SIGTRAP, 0, regs);
|
||||
|
||||
if (thread_info != exception_thread_info)
|
||||
memcpy(thread_info, exception_thread_info, sizeof *thread_info);
|
||||
/* Restore current_thread_info lastly. */
|
||||
memcpy(exception_thread_info, backup_current_thread_info, sizeof *thread_info);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -410,7 +432,6 @@ int kgdb_arch_handle_exception(int vector, int signo, int err_code,
|
|||
#else
|
||||
linux_regs->msr |= MSR_SE;
|
||||
#endif
|
||||
kgdb_single_step = 1;
|
||||
atomic_set(&kgdb_cpu_doing_single_step,
|
||||
raw_smp_processor_id());
|
||||
}
|
||||
|
|
|
@ -107,11 +107,11 @@ long ppc64_personality(unsigned long personality)
|
|||
long ret;
|
||||
|
||||
if (personality(current->personality) == PER_LINUX32
|
||||
&& personality == PER_LINUX)
|
||||
personality = PER_LINUX32;
|
||||
&& personality(personality) == PER_LINUX)
|
||||
personality = (personality & ~PER_MASK) | PER_LINUX32;
|
||||
ret = sys_personality(personality);
|
||||
if (ret == PER_LINUX32)
|
||||
ret = PER_LINUX;
|
||||
if (personality(ret) == PER_LINUX32)
|
||||
ret = (ret & ~PER_MASK) | PER_LINUX;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -211,6 +211,9 @@ int kvmppc_mmu_map_page(struct kvm_vcpu *vcpu, struct kvmppc_pte *orig_pte)
|
|||
pteg1 |= PP_RWRX;
|
||||
}
|
||||
|
||||
if (orig_pte->may_execute)
|
||||
kvmppc_mmu_flush_icache(hpaddr >> PAGE_SHIFT);
|
||||
|
||||
local_irq_disable();
|
||||
|
||||
if (pteg[rr]) {
|
||||
|
|
|
@ -126,6 +126,8 @@ int kvmppc_mmu_map_page(struct kvm_vcpu *vcpu, struct kvmppc_pte *orig_pte)
|
|||
|
||||
if (!orig_pte->may_execute)
|
||||
rflags |= HPTE_R_N;
|
||||
else
|
||||
kvmppc_mmu_flush_icache(hpaddr >> PAGE_SHIFT);
|
||||
|
||||
hash = hpt_hash(va, PTE_SIZE, MMU_SEGSIZE_256M);
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue