Merge branch 'ath79' of git://dev.phrozen.org/mips-next into mips-for-linux-next
This commit is contained in:
commit
73d155b304
@ -10,8 +10,8 @@ Required properties:
|
|||||||
- compatible : Should be "fsl,<chip>-esdhc"
|
- compatible : Should be "fsl,<chip>-esdhc"
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- fsl,cd-internal : Indicate to use controller internal card detection
|
- fsl,cd-controller : Indicate to use controller internal card detection
|
||||||
- fsl,wp-internal : Indicate to use controller internal write protection
|
- fsl,wp-controller : Indicate to use controller internal write protection
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
@ -19,8 +19,8 @@ esdhc@70004000 {
|
|||||||
compatible = "fsl,imx51-esdhc";
|
compatible = "fsl,imx51-esdhc";
|
||||||
reg = <0x70004000 0x4000>;
|
reg = <0x70004000 0x4000>;
|
||||||
interrupts = <1>;
|
interrupts = <1>;
|
||||||
fsl,cd-internal;
|
fsl,cd-controller;
|
||||||
fsl,wp-internal;
|
fsl,wp-controller;
|
||||||
};
|
};
|
||||||
|
|
||||||
esdhc@70008000 {
|
esdhc@70008000 {
|
||||||
|
@ -2144,6 +2144,7 @@ source "drivers/cpufreq/Kconfig"
|
|||||||
config CPU_FREQ_IMX
|
config CPU_FREQ_IMX
|
||||||
tristate "CPUfreq driver for i.MX CPUs"
|
tristate "CPUfreq driver for i.MX CPUs"
|
||||||
depends on ARCH_MXC && CPU_FREQ
|
depends on ARCH_MXC && CPU_FREQ
|
||||||
|
select CPU_FREQ_TABLE
|
||||||
help
|
help
|
||||||
This enables the CPUfreq driver for i.MX CPUs.
|
This enables the CPUfreq driver for i.MX CPUs.
|
||||||
|
|
||||||
|
@ -154,5 +154,10 @@
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "i2c3";
|
ti,hwmods = "i2c3";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
wdt2: wdt@44e35000 {
|
||||||
|
compatible = "ti,omap3-wdt";
|
||||||
|
ti,hwmods = "wd_timer2";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -25,8 +25,8 @@
|
|||||||
aips@70000000 { /* aips-1 */
|
aips@70000000 { /* aips-1 */
|
||||||
spba@70000000 {
|
spba@70000000 {
|
||||||
esdhc@70004000 { /* ESDHC1 */
|
esdhc@70004000 { /* ESDHC1 */
|
||||||
fsl,cd-internal;
|
fsl,cd-controller;
|
||||||
fsl,wp-internal;
|
fsl,wp-controller;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,9 +41,13 @@
|
|||||||
};
|
};
|
||||||
power-blue {
|
power-blue {
|
||||||
label = "power:blue";
|
label = "power:blue";
|
||||||
gpios = <&gpio1 11 0>;
|
gpios = <&gpio1 10 0>;
|
||||||
linux,default-trigger = "timer";
|
linux,default-trigger = "timer";
|
||||||
};
|
};
|
||||||
|
power-red {
|
||||||
|
label = "power:red";
|
||||||
|
gpios = <&gpio1 11 0>;
|
||||||
|
};
|
||||||
usb1 {
|
usb1 {
|
||||||
label = "usb1:blue";
|
label = "usb1:blue";
|
||||||
gpios = <&gpio1 12 0>;
|
gpios = <&gpio1 12 0>;
|
||||||
|
@ -66,6 +66,7 @@
|
|||||||
|
|
||||||
vcxio: regulator@8 {
|
vcxio: regulator@8 {
|
||||||
compatible = "ti,twl6030-vcxio";
|
compatible = "ti,twl6030-vcxio";
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
vusb: regulator@9 {
|
vusb: regulator@9 {
|
||||||
@ -74,10 +75,12 @@
|
|||||||
|
|
||||||
v1v8: regulator@10 {
|
v1v8: regulator@10 {
|
||||||
compatible = "ti,twl6030-v1v8";
|
compatible = "ti,twl6030-v1v8";
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
v2v1: regulator@11 {
|
v2v1: regulator@11 {
|
||||||
compatible = "ti,twl6030-v2v1";
|
compatible = "ti,twl6030-v2v1";
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
clk32kg: regulator@12 {
|
clk32kg: regulator@12 {
|
||||||
|
@ -86,6 +86,7 @@ CONFIG_NEW_LEDS=y
|
|||||||
CONFIG_LEDS_CLASS=y
|
CONFIG_LEDS_CLASS=y
|
||||||
CONFIG_LEDS_LM3530=y
|
CONFIG_LEDS_LM3530=y
|
||||||
CONFIG_LEDS_LP5521=y
|
CONFIG_LEDS_LP5521=y
|
||||||
|
CONFIG_LEDS_GPIO=y
|
||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_AB8500=y
|
CONFIG_RTC_DRV_AB8500=y
|
||||||
CONFIG_RTC_DRV_PL031=y
|
CONFIG_RTC_DRV_PL031=y
|
||||||
|
@ -102,7 +102,8 @@ void __init dove_ehci1_init(void)
|
|||||||
void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
||||||
{
|
{
|
||||||
orion_ge00_init(eth_data, DOVE_GE00_PHYS_BASE,
|
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/backlight.h>
|
||||||
#include <plat/fb.h>
|
#include <plat/fb.h>
|
||||||
#include <plat/mfc.h>
|
#include <plat/mfc.h>
|
||||||
|
#include <plat/hdmi.h>
|
||||||
|
|
||||||
#include <mach/ohci.h>
|
#include <mach/ohci.h>
|
||||||
#include <mach/map.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);
|
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)
|
static void s5p_tv_setup(void)
|
||||||
{
|
{
|
||||||
/* Direct HPD to HDMI chip */
|
/* Direct HPD to HDMI chip */
|
||||||
@ -781,6 +787,7 @@ static void __init origen_machine_init(void)
|
|||||||
|
|
||||||
s5p_tv_setup();
|
s5p_tv_setup();
|
||||||
s5p_i2c_hdmiphy_set_platdata(NULL);
|
s5p_i2c_hdmiphy_set_platdata(NULL);
|
||||||
|
s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);
|
||||||
|
|
||||||
#ifdef CONFIG_DRM_EXYNOS
|
#ifdef CONFIG_DRM_EXYNOS
|
||||||
s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
|
s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include <plat/mfc.h>
|
#include <plat/mfc.h>
|
||||||
#include <plat/ehci.h>
|
#include <plat/ehci.h>
|
||||||
#include <plat/clock.h>
|
#include <plat/clock.h>
|
||||||
|
#include <plat/hdmi.h>
|
||||||
|
|
||||||
#include <mach/map.h>
|
#include <mach/map.h>
|
||||||
#include <mach/ohci.h>
|
#include <mach/ohci.h>
|
||||||
@ -354,6 +355,11 @@ static struct platform_pwm_backlight_data smdkv310_bl_data = {
|
|||||||
.pwm_period_ns = 1000,
|
.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)
|
static void s5p_tv_setup(void)
|
||||||
{
|
{
|
||||||
/* direct HPD to HDMI chip */
|
/* direct HPD to HDMI chip */
|
||||||
@ -388,6 +394,7 @@ static void __init smdkv310_machine_init(void)
|
|||||||
|
|
||||||
s5p_tv_setup();
|
s5p_tv_setup();
|
||||||
s5p_i2c_hdmiphy_set_platdata(NULL);
|
s5p_i2c_hdmiphy_set_platdata(NULL);
|
||||||
|
s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);
|
||||||
|
|
||||||
samsung_keypad_set_platdata(&smdkv310_keypad_data);
|
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_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_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 \
|
obj-$(CONFIG_COMMON_CLK) += clk-pllv1.o clk-pllv2.o clk-pllv3.o clk-gate2.o \
|
||||||
clk-pfd.o clk-busy.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_GPC) += gpc.o
|
||||||
obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
|
obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
|
||||||
obj-$(CONFIG_HAVE_IMX_SRC) += src.o
|
obj-$(CONFIG_HAVE_IMX_SRC) += src.o
|
||||||
obj-$(CONFIG_CPU_V7) += head-v7.o
|
AFLAGS_headsmp.o :=-Wa,-march=armv7-a
|
||||||
AFLAGS_head-v7.o :=-Wa,-march=armv7-a
|
obj-$(CONFIG_SMP) += headsmp.o platsmp.o
|
||||||
obj-$(CONFIG_SMP) += platsmp.o
|
|
||||||
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
||||||
obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o
|
obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o
|
||||||
|
|
||||||
ifeq ($(CONFIG_PM),y)
|
ifeq ($(CONFIG_PM),y)
|
||||||
obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o
|
obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o headsmp.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# i.MX5 based machines
|
# i.MX5 based machines
|
||||||
|
@ -152,7 +152,7 @@ enum mx6q_clks {
|
|||||||
ssi2, ssi3, uart_ipg, uart_serial, usboh3, usdhc1, usdhc2, usdhc3,
|
ssi2, ssi3, uart_ipg, uart_serial, usboh3, usdhc1, usdhc2, usdhc3,
|
||||||
usdhc4, vdo_axi, vpu_axi, cko1, pll1_sys, pll2_bus, pll3_usb_otg,
|
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,
|
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
|
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[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[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[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_di0_div_3_5] = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0_sel", 2, 7);
|
||||||
clk[ldb_di1_podf] = imx_clk_divider("ldb_di1_podf", "ldb_di1_sel", base + 0x20, 11, 1);
|
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_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[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);
|
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");
|
: "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
|
* platform-specific code to shutdown a CPU
|
||||||
*
|
*
|
||||||
@ -67,11 +51,10 @@ void platform_cpu_die(unsigned int cpu)
|
|||||||
{
|
{
|
||||||
cpu_enter_lowpower();
|
cpu_enter_lowpower();
|
||||||
imx_enable_cpu(cpu, false);
|
imx_enable_cpu(cpu, false);
|
||||||
cpu_do_idle();
|
|
||||||
cpu_leave_lowpower();
|
|
||||||
|
|
||||||
/* We should never return from idle */
|
/* spin here until hardware takes it down */
|
||||||
panic("cpu %d unexpectedly exit from shutdown\n", cpu);
|
while (1)
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
int platform_cpu_disable(unsigned int cpu)
|
int platform_cpu_disable(unsigned int cpu)
|
||||||
|
@ -71,7 +71,7 @@ soft:
|
|||||||
/* For imx6q sabrelite board: set KSZ9021RN RGMII pad skew */
|
/* For imx6q sabrelite board: set KSZ9021RN RGMII pad skew */
|
||||||
static int ksz9021rn_phy_fixup(struct phy_device *phydev)
|
static int ksz9021rn_phy_fixup(struct phy_device *phydev)
|
||||||
{
|
{
|
||||||
if (IS_ENABLED(CONFIG_PHYLIB)) {
|
if (IS_BUILTIN(CONFIG_PHYLIB)) {
|
||||||
/* min rx data delay */
|
/* min rx data delay */
|
||||||
phy_write(phydev, 0x0b, 0x8105);
|
phy_write(phydev, 0x0b, 0x8105);
|
||||||
phy_write(phydev, 0x0c, 0x0000);
|
phy_write(phydev, 0x0c, 0x0000);
|
||||||
@ -112,7 +112,7 @@ put_clk:
|
|||||||
|
|
||||||
static void __init imx6q_sabrelite_init(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,
|
phy_register_fixup_for_uid(PHY_ID_KSZ9021, MICREL_PHY_ID_MASK,
|
||||||
ksz9021rn_phy_fixup);
|
ksz9021rn_phy_fixup);
|
||||||
imx6q_sabrelite_cko1_setup();
|
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_DLINK_KIRKWOOD_DT) += kirkwood-dns325.dtb
|
||||||
dtb-$(CONFIG_MACH_ICONNECT_DT) += kirkwood-iconnect.dtb
|
dtb-$(CONFIG_MACH_ICONNECT_DT) += kirkwood-iconnect.dtb
|
||||||
dtb-$(CONFIG_MACH_IB62X0_DT) += kirkwood-ib62x0.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_GOFLEXNET_DT) += kirkwood-goflexnet.dtb
|
||||||
dtb-$(CONFIG_MACH_LSXL_DT) += kirkwood-lschlv2.dtb
|
dtb-$(CONFIG_MACH_LSXL_DT) += kirkwood-lschlv2.dtb
|
||||||
dtb-$(CONFIG_MACH_LSXL_DT) += kirkwood-lsxhl.dtb
|
dtb-$(CONFIG_MACH_LSXL_DT) += kirkwood-lsxhl.dtb
|
||||||
|
@ -301,7 +301,7 @@ void __init kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
|||||||
{
|
{
|
||||||
orion_ge00_init(eth_data,
|
orion_ge00_init(eth_data,
|
||||||
GE00_PHYS_BASE, IRQ_KIRKWOOD_GE00_SUM,
|
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 interface forgets the MAC address assigned by u-boot if
|
||||||
the clock is turned off, so claim the clk now. */
|
the clock is turned off, so claim the clk now. */
|
||||||
clk_prepare_enable(ge0);
|
clk_prepare_enable(ge0);
|
||||||
@ -315,7 +315,7 @@ void __init kirkwood_ge01_init(struct mv643xx_eth_platform_data *eth_data)
|
|||||||
{
|
{
|
||||||
orion_ge01_init(eth_data,
|
orion_ge01_init(eth_data,
|
||||||
GE01_PHYS_BASE, IRQ_KIRKWOOD_GE01_SUM,
|
GE01_PHYS_BASE, IRQ_KIRKWOOD_GE01_SUM,
|
||||||
IRQ_KIRKWOOD_GE01_ERR);
|
IRQ_KIRKWOOD_GE01_ERR, 1600);
|
||||||
clk_prepare_enable(ge1);
|
clk_prepare_enable(ge1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ static int __devinit sram_probe(struct platform_device *pdev)
|
|||||||
struct resource *res;
|
struct resource *res;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (!pdata && !pdata->pool_name)
|
if (!pdata || !pdata->pool_name)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
#define WIN0_OFF(n) (BRIDGE_VIRT_BASE + 0x0000 + ((n) << 4))
|
#define WIN0_OFF(n) (BRIDGE_VIRT_BASE + 0x0000 + ((n) << 4))
|
||||||
#define WIN8_OFF(n) (BRIDGE_VIRT_BASE + 0x0900 + (((n) - 8) << 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.
|
* Find the control register base address for this window.
|
||||||
|
@ -213,7 +213,8 @@ void __init mv78xx0_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
|||||||
{
|
{
|
||||||
orion_ge00_init(eth_data,
|
orion_ge00_init(eth_data,
|
||||||
GE00_PHYS_BASE, IRQ_MV78XX0_GE00_SUM,
|
GE00_PHYS_BASE, IRQ_MV78XX0_GE00_SUM,
|
||||||
IRQ_MV78XX0_GE_ERR);
|
IRQ_MV78XX0_GE_ERR,
|
||||||
|
MV643XX_TX_CSUM_DEFAULT_LIMIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -224,7 +225,8 @@ void __init mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data)
|
|||||||
{
|
{
|
||||||
orion_ge01_init(eth_data,
|
orion_ge01_init(eth_data,
|
||||||
GE01_PHYS_BASE, IRQ_MV78XX0_GE01_SUM,
|
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 PM_OPP if PM
|
||||||
select USB_ARCH_HAS_EHCI if USB_SUPPORT
|
select USB_ARCH_HAS_EHCI if USB_SUPPORT
|
||||||
select ARM_CPU_SUSPEND if PM
|
select ARM_CPU_SUSPEND if PM
|
||||||
select ARCH_NEEDS_CPU_IDLE_COUPLED
|
select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
|
||||||
|
|
||||||
config SOC_OMAP5
|
config SOC_OMAP5
|
||||||
bool "TI OMAP5"
|
bool "TI OMAP5"
|
||||||
select CPU_V7
|
select CPU_V7
|
||||||
select ARM_GIC
|
select ARM_GIC
|
||||||
select HAVE_SMP
|
select HAVE_SMP
|
||||||
|
select ARM_CPU_SUSPEND if PM
|
||||||
|
|
||||||
comment "OMAP Core Type"
|
comment "OMAP Core Type"
|
||||||
depends on ARCH_OMAP2
|
depends on ARCH_OMAP2
|
||||||
|
@ -554,6 +554,8 @@ static const struct usbhs_omap_board_data igep3_usbhs_bdata __initconst = {
|
|||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
static struct omap_board_mux board_mux[] __initdata = {
|
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 },
|
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -58,6 +58,7 @@
|
|||||||
#include "hsmmc.h"
|
#include "hsmmc.h"
|
||||||
#include "common-board-devices.h"
|
#include "common-board-devices.h"
|
||||||
|
|
||||||
|
#define OMAP3_EVM_TS_GPIO 175
|
||||||
#define OMAP3_EVM_EHCI_VBUS 22
|
#define OMAP3_EVM_EHCI_VBUS 22
|
||||||
#define OMAP3_EVM_EHCI_SELECT 61
|
#define OMAP3_EVM_EHCI_SELECT 61
|
||||||
|
|
||||||
|
@ -35,16 +35,6 @@ static struct omap2_mcspi_device_config ads7846_mcspi_config = {
|
|||||||
.turbo_mode = 0,
|
.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 = {
|
static struct ads7846_platform_data ads7846_config = {
|
||||||
.x_max = 0x0fff,
|
.x_max = 0x0fff,
|
||||||
.y_max = 0x0fff,
|
.y_max = 0x0fff,
|
||||||
@ -55,7 +45,6 @@ static struct ads7846_platform_data ads7846_config = {
|
|||||||
.debounce_rep = 1,
|
.debounce_rep = 1,
|
||||||
.gpio_pendown = -EINVAL,
|
.gpio_pendown = -EINVAL,
|
||||||
.keep_vref_on = 1,
|
.keep_vref_on = 1,
|
||||||
.get_pendown_state = &omap3_get_pendown_state,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct spi_board_info ads7846_spi_board_info __initdata = {
|
static struct spi_board_info ads7846_spi_board_info __initdata = {
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
#include "twl-common.h"
|
#include "twl-common.h"
|
||||||
|
|
||||||
#define NAND_BLOCK_SIZE SZ_128K
|
#define NAND_BLOCK_SIZE SZ_128K
|
||||||
#define OMAP3_EVM_TS_GPIO 175
|
|
||||||
|
|
||||||
struct mtd_partition;
|
struct mtd_partition;
|
||||||
struct ads7846_platform_data;
|
struct ads7846_platform_data;
|
||||||
|
@ -238,8 +238,9 @@ int __init omap4_idle_init(void)
|
|||||||
for_each_cpu(cpu_id, cpu_online_mask) {
|
for_each_cpu(cpu_id, cpu_online_mask) {
|
||||||
dev = &per_cpu(omap4_idle_dev, cpu_id);
|
dev = &per_cpu(omap4_idle_dev, cpu_id);
|
||||||
dev->cpu = cpu_id;
|
dev->cpu = cpu_id;
|
||||||
|
#ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED
|
||||||
dev->coupled_cpus = *cpu_online_mask;
|
dev->coupled_cpus = *cpu_online_mask;
|
||||||
|
#endif
|
||||||
cpuidle_register_driver(&omap4_idle_driver);
|
cpuidle_register_driver(&omap4_idle_driver);
|
||||||
|
|
||||||
if (cpuidle_register_device(dev)) {
|
if (cpuidle_register_device(dev)) {
|
||||||
|
@ -127,7 +127,6 @@ struct omap_mux_partition {
|
|||||||
* @gpio: GPIO number
|
* @gpio: GPIO number
|
||||||
* @muxnames: available signal modes for a ball
|
* @muxnames: available signal modes for a ball
|
||||||
* @balls: available balls on the package
|
* @balls: available balls on the package
|
||||||
* @partition: mux partition
|
|
||||||
*/
|
*/
|
||||||
struct omap_mux {
|
struct omap_mux {
|
||||||
u16 reg_offset;
|
u16 reg_offset;
|
||||||
|
@ -94,7 +94,7 @@ int __init omap4_opp_init(void)
|
|||||||
{
|
{
|
||||||
int r = -ENODEV;
|
int r = -ENODEV;
|
||||||
|
|
||||||
if (!cpu_is_omap44xx())
|
if (!cpu_is_omap443x())
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
r = omap_init_opp_table(omap44xx_opp_def_list,
|
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);
|
per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
|
||||||
core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
|
core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
|
||||||
|
|
||||||
if (mpu_next_state < PWRDM_POWER_ON) {
|
pwrdm_pre_transition(NULL);
|
||||||
pwrdm_pre_transition(mpu_pwrdm);
|
|
||||||
pwrdm_pre_transition(neon_pwrdm);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* PER */
|
/* PER */
|
||||||
if (per_next_state < PWRDM_POWER_ON) {
|
if (per_next_state < PWRDM_POWER_ON) {
|
||||||
pwrdm_pre_transition(per_pwrdm);
|
|
||||||
per_going_off = (per_next_state == PWRDM_POWER_OFF) ? 1 : 0;
|
per_going_off = (per_next_state == PWRDM_POWER_OFF) ? 1 : 0;
|
||||||
omap2_gpio_prepare_for_idle(per_going_off);
|
omap2_gpio_prepare_for_idle(per_going_off);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* CORE */
|
/* CORE */
|
||||||
if (core_next_state < PWRDM_POWER_ON) {
|
if (core_next_state < PWRDM_POWER_ON) {
|
||||||
pwrdm_pre_transition(core_pwrdm);
|
|
||||||
if (core_next_state == PWRDM_POWER_OFF) {
|
if (core_next_state == PWRDM_POWER_OFF) {
|
||||||
omap3_core_save_context();
|
omap3_core_save_context();
|
||||||
omap3_cm_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,
|
omap2_prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK,
|
||||||
OMAP3430_GR_MOD,
|
OMAP3430_GR_MOD,
|
||||||
OMAP3_PRM_VOLTCTRL_OFFSET);
|
OMAP3_PRM_VOLTCTRL_OFFSET);
|
||||||
pwrdm_post_transition(core_pwrdm);
|
|
||||||
}
|
}
|
||||||
omap3_intc_resume_idle();
|
omap3_intc_resume_idle();
|
||||||
|
|
||||||
/* PER */
|
pwrdm_post_transition(NULL);
|
||||||
if (per_next_state < PWRDM_POWER_ON) {
|
|
||||||
omap2_gpio_resume_after_idle();
|
|
||||||
pwrdm_post_transition(per_pwrdm);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mpu_next_state < PWRDM_POWER_ON) {
|
/* PER */
|
||||||
pwrdm_post_transition(mpu_pwrdm);
|
if (per_next_state < PWRDM_POWER_ON)
|
||||||
pwrdm_post_transition(neon_pwrdm);
|
omap2_gpio_resume_after_idle();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void omap3_pm_idle(void)
|
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.
|
* 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
|
* It returns to the caller for CPU INACTIVE and ON power states or in case
|
||||||
* CPU failed to transition to targeted OFF/DORMANT state.
|
* 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)
|
ENTRY(omap4_finish_suspend)
|
||||||
stmfd sp!, {lr}
|
stmfd sp!, {r4-r12, lr}
|
||||||
cmp r0, #0x0
|
cmp r0, #0x0
|
||||||
beq do_WFI @ No lowpower state, jump to WFI
|
beq do_WFI @ No lowpower state, jump to WFI
|
||||||
|
|
||||||
@ -226,7 +230,7 @@ scu_gp_clear:
|
|||||||
skip_scu_gp_clear:
|
skip_scu_gp_clear:
|
||||||
isb
|
isb
|
||||||
dsb
|
dsb
|
||||||
ldmfd sp!, {pc}
|
ldmfd sp!, {r4-r12, pc}
|
||||||
ENDPROC(omap4_finish_suspend)
|
ENDPROC(omap4_finish_suspend)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -67,6 +67,7 @@ void __init omap_pmic_init(int bus, u32 clkrate,
|
|||||||
const char *pmic_type, int pmic_irq,
|
const char *pmic_type, int pmic_irq,
|
||||||
struct twl4030_platform_data *pmic_data)
|
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,
|
strncpy(pmic_i2c_board_info.type, pmic_type,
|
||||||
sizeof(pmic_i2c_board_info.type));
|
sizeof(pmic_i2c_board_info.type));
|
||||||
pmic_i2c_board_info.irq = pmic_irq;
|
pmic_i2c_board_info.irq = pmic_irq;
|
||||||
|
@ -109,7 +109,8 @@ void __init orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data)
|
|||||||
{
|
{
|
||||||
orion_ge00_init(eth_data,
|
orion_ge00_init(eth_data,
|
||||||
ORION5X_ETH_PHYS_BASE, IRQ_ORION5X_ETH_SUM,
|
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 {
|
enum dma_ch {
|
||||||
DMACH_XD0,
|
DMACH_DT_PROP = -1, /* not yet supported, do not use */
|
||||||
|
DMACH_XD0 = 0,
|
||||||
DMACH_XD1,
|
DMACH_XD1,
|
||||||
DMACH_SDI,
|
DMACH_SDI,
|
||||||
DMACH_SPI0,
|
DMACH_SPI0,
|
||||||
|
@ -41,7 +41,6 @@ config MACH_HREFV60
|
|||||||
config MACH_SNOWBALL
|
config MACH_SNOWBALL
|
||||||
bool "U8500 Snowball platform"
|
bool "U8500 Snowball platform"
|
||||||
select MACH_MOP500
|
select MACH_MOP500
|
||||||
select LEDS_GPIO
|
|
||||||
help
|
help
|
||||||
Include support for the snowball development platform.
|
Include support for the snowball development platform.
|
||||||
|
|
||||||
|
@ -191,9 +191,9 @@ static struct platform_device *db8500_add_msp_i2s(struct device *parent,
|
|||||||
return pdev;
|
return pdev;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Platform device for ASoC U8500 machine */
|
/* Platform device for ASoC MOP500 machine */
|
||||||
static struct platform_device snd_soc_u8500 = {
|
static struct platform_device snd_soc_mop500 = {
|
||||||
.name = "snd-soc-u8500",
|
.name = "snd-soc-mop500",
|
||||||
.id = 0,
|
.id = 0,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = NULL,
|
.platform_data = NULL,
|
||||||
@ -227,8 +227,8 @@ int mop500_msp_init(struct device *parent)
|
|||||||
{
|
{
|
||||||
struct platform_device *msp1;
|
struct platform_device *msp1;
|
||||||
|
|
||||||
pr_info("%s: Register platform-device 'snd-soc-u8500'.\n", __func__);
|
pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
|
||||||
platform_device_register(&snd_soc_u8500);
|
platform_device_register(&snd_soc_mop500);
|
||||||
|
|
||||||
pr_info("Initialize MSP I2S-devices.\n");
|
pr_info("Initialize MSP I2S-devices.\n");
|
||||||
db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
|
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));
|
ARRAY_SIZE(mop500_platform_devs));
|
||||||
|
|
||||||
mop500_sdi_init(parent);
|
mop500_sdi_init(parent);
|
||||||
|
mop500_msp_init(parent);
|
||||||
i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
|
i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
|
||||||
i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
|
i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
|
||||||
i2c_register_board_info(2, mop500_i2c2_devices,
|
i2c_register_board_info(2, mop500_i2c2_devices,
|
||||||
@ -804,6 +805,8 @@ static void __init u8500_init_machine(void)
|
|||||||
|
|
||||||
mop500_uib_init();
|
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+")) {
|
} else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
|
||||||
/*
|
/*
|
||||||
* The HREFv60 board removed a GPIO expander and routed
|
* 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));
|
ARRAY_SIZE(mop500_platform_devs));
|
||||||
|
|
||||||
hrefv60_sdi_init(parent);
|
hrefv60_sdi_init(parent);
|
||||||
|
mop500_msp_init(parent);
|
||||||
|
|
||||||
i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
|
i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
|
||||||
i2c0_devs -= NUM_PRE_V60_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;
|
timer->reserved = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||||
|
|
||||||
if (timer) {
|
if (timer) {
|
||||||
ret = omap_dm_timer_prepare(timer);
|
ret = omap_dm_timer_prepare(timer);
|
||||||
@ -197,7 +198,6 @@ struct omap_dm_timer *omap_dm_timer_request(void)
|
|||||||
timer = NULL;
|
timer = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
|
||||||
|
|
||||||
if (!timer)
|
if (!timer)
|
||||||
pr_debug("%s: timer request failed!\n", __func__);
|
pr_debug("%s: timer request failed!\n", __func__);
|
||||||
@ -220,6 +220,7 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||||
|
|
||||||
if (timer) {
|
if (timer) {
|
||||||
ret = omap_dm_timer_prepare(timer);
|
ret = omap_dm_timer_prepare(timer);
|
||||||
@ -228,7 +229,6 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
|
|||||||
timer = NULL;
|
timer = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
|
||||||
|
|
||||||
if (!timer)
|
if (!timer)
|
||||||
pr_debug("%s: timer%d request failed!\n", __func__, id);
|
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)
|
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);
|
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() || \
|
#define cpu_class_is_omap1() (cpu_is_omap7xx() || cpu_is_omap15xx() || \
|
||||||
cpu_is_omap16xx())
|
cpu_is_omap16xx())
|
||||||
#define cpu_class_is_omap2() (cpu_is_omap24xx() || cpu_is_omap34xx() || \
|
#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 */
|
/* Various silicon revisions for omap2 */
|
||||||
#define OMAP242X_CLASS 0x24200024
|
#define OMAP242X_CLASS 0x24200024
|
||||||
|
@ -108,4 +108,13 @@
|
|||||||
# endif
|
# endif
|
||||||
#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 */
|
#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, \
|
_DEBUG_LL_ENTRY(mach, AM33XX_UART##p##_BASE, OMAP_PORT_SHIFT, \
|
||||||
AM33XXUART##p)
|
AM33XXUART##p)
|
||||||
|
|
||||||
static inline void __arch_decomp_setup(unsigned long arch_id)
|
static inline void arch_decomp_setup(void)
|
||||||
{
|
{
|
||||||
int port = 0;
|
int port = 0;
|
||||||
|
|
||||||
@ -198,8 +198,6 @@ static inline void __arch_decomp_setup(unsigned long arch_id)
|
|||||||
} while (0);
|
} while (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define arch_decomp_setup() __arch_decomp_setup(arch_id)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* nothing to do
|
* 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,
|
void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
|
||||||
unsigned long mapbase,
|
unsigned long mapbase,
|
||||||
unsigned long irq,
|
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,
|
fill_resources(&orion_ge00_shared, orion_ge00_shared_resources,
|
||||||
mapbase + 0x2000, SZ_16K - 1, irq_err);
|
mapbase + 0x2000, SZ_16K - 1, irq_err);
|
||||||
|
orion_ge00_shared_data.tx_csum_limit = tx_csum_limit;
|
||||||
ge_complete(&orion_ge00_shared_data,
|
ge_complete(&orion_ge00_shared_data,
|
||||||
orion_ge00_resources, irq, &orion_ge00_shared,
|
orion_ge00_resources, irq, &orion_ge00_shared,
|
||||||
eth_data, &orion_ge00);
|
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,
|
void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
|
||||||
unsigned long mapbase,
|
unsigned long mapbase,
|
||||||
unsigned long irq,
|
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,
|
fill_resources(&orion_ge01_shared, orion_ge01_shared_resources,
|
||||||
mapbase + 0x2000, SZ_16K - 1, irq_err);
|
mapbase + 0x2000, SZ_16K - 1, irq_err);
|
||||||
|
orion_ge01_shared_data.tx_csum_limit = tx_csum_limit;
|
||||||
ge_complete(&orion_ge01_shared_data,
|
ge_complete(&orion_ge01_shared_data,
|
||||||
orion_ge01_resources, irq, &orion_ge01_shared,
|
orion_ge01_resources, irq, &orion_ge01_shared,
|
||||||
eth_data, &orion_ge01);
|
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,
|
void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
|
||||||
unsigned long mapbase,
|
unsigned long mapbase,
|
||||||
unsigned long irq,
|
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,
|
void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
|
||||||
unsigned long mapbase,
|
unsigned long mapbase,
|
||||||
unsigned long irq,
|
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,
|
void __init orion_ge10_init(struct mv643xx_eth_platform_data *eth_data,
|
||||||
unsigned long mapbase,
|
unsigned long mapbase,
|
||||||
|
@ -430,7 +430,7 @@ s3c2410_dma_canload(struct s3c2410_dma_chan *chan)
|
|||||||
* when necessary.
|
* 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)
|
dma_addr_t data, int size)
|
||||||
{
|
{
|
||||||
struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel);
|
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-hsudc.h>
|
||||||
#include <linux/platform_data/s3c-hsotg.h>
|
#include <linux/platform_data/s3c-hsotg.h>
|
||||||
|
|
||||||
|
#include <media/s5p_hdmi.h>
|
||||||
|
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
#include <asm/pmu.h>
|
#include <asm/pmu.h>
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
@ -748,7 +750,8 @@ void __init s5p_i2c_hdmiphy_set_platdata(struct s3c2410_platform_i2c *pd)
|
|||||||
if (!pd) {
|
if (!pd) {
|
||||||
pd = &default_i2c_data;
|
pd = &default_i2c_data;
|
||||||
|
|
||||||
if (soc_is_exynos4210())
|
if (soc_is_exynos4210() ||
|
||||||
|
soc_is_exynos4212() || soc_is_exynos4412())
|
||||||
pd->bus_num = 8;
|
pd->bus_num = 8;
|
||||||
else if (soc_is_s5pv210())
|
else if (soc_is_s5pv210())
|
||||||
pd->bus_num = 3;
|
pd->bus_num = 3;
|
||||||
@ -759,6 +762,30 @@ void __init s5p_i2c_hdmiphy_set_platdata(struct s3c2410_platform_i2c *pd)
|
|||||||
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
||||||
&s5p_device_i2c_hdmiphy);
|
&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 */
|
#endif /* CONFIG_S5P_DEV_I2C_HDMIPHY */
|
||||||
|
|
||||||
/* I2S */
|
/* I2S */
|
||||||
|
16
arch/arm/plat-samsung/include/plat/hdmi.h
Normal file
16
arch/arm/plat-samsung/include/plat/hdmi.h
Normal file
@ -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
|
#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)
|
static void s3c_pm_save_uart(unsigned int uart, struct pm_uart_save *save)
|
||||||
{
|
{
|
||||||
|
@ -25,17 +25,7 @@
|
|||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "dev-usb.h"
|
#include "dev-usb.h"
|
||||||
|
|
||||||
static struct resource ath79_ohci_resources[] = {
|
static struct resource ath79_ohci_resources[2];
|
||||||
[0] = {
|
|
||||||
/* .start and .end fields are filled dynamically */
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
[1] = {
|
|
||||||
.start = ATH79_MISC_IRQ_OHCI,
|
|
||||||
.end = ATH79_MISC_IRQ_OHCI,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static u64 ath79_ohci_dmamask = DMA_BIT_MASK(32);
|
static u64 ath79_ohci_dmamask = DMA_BIT_MASK(32);
|
||||||
|
|
||||||
@ -54,17 +44,7 @@ static struct platform_device ath79_ohci_device = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource ath79_ehci_resources[] = {
|
static struct resource ath79_ehci_resources[2];
|
||||||
[0] = {
|
|
||||||
/* .start and .end fields are filled dynamically */
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
[1] = {
|
|
||||||
.start = ATH79_CPU_IRQ_USB,
|
|
||||||
.end = ATH79_CPU_IRQ_USB,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static u64 ath79_ehci_dmamask = DMA_BIT_MASK(32);
|
static u64 ath79_ehci_dmamask = DMA_BIT_MASK(32);
|
||||||
|
|
||||||
@ -90,6 +70,20 @@ static struct platform_device ath79_ehci_device = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void __init ath79_usb_init_resource(struct resource res[2],
|
||||||
|
unsigned long base,
|
||||||
|
unsigned long size,
|
||||||
|
int irq)
|
||||||
|
{
|
||||||
|
res[0].flags = IORESOURCE_MEM;
|
||||||
|
res[0].start = base;
|
||||||
|
res[0].end = base + size - 1;
|
||||||
|
|
||||||
|
res[1].flags = IORESOURCE_IRQ;
|
||||||
|
res[1].start = irq;
|
||||||
|
res[1].end = irq;
|
||||||
|
}
|
||||||
|
|
||||||
#define AR71XX_USB_RESET_MASK (AR71XX_RESET_USB_HOST | \
|
#define AR71XX_USB_RESET_MASK (AR71XX_RESET_USB_HOST | \
|
||||||
AR71XX_RESET_USB_PHY | \
|
AR71XX_RESET_USB_PHY | \
|
||||||
AR71XX_RESET_USB_OHCI_DLL)
|
AR71XX_RESET_USB_OHCI_DLL)
|
||||||
@ -114,12 +108,12 @@ static void __init ath79_usb_setup(void)
|
|||||||
|
|
||||||
mdelay(900);
|
mdelay(900);
|
||||||
|
|
||||||
ath79_ohci_resources[0].start = AR71XX_OHCI_BASE;
|
ath79_usb_init_resource(ath79_ohci_resources, AR71XX_OHCI_BASE,
|
||||||
ath79_ohci_resources[0].end = AR71XX_OHCI_BASE + AR71XX_OHCI_SIZE - 1;
|
AR71XX_OHCI_SIZE, ATH79_MISC_IRQ_OHCI);
|
||||||
platform_device_register(&ath79_ohci_device);
|
platform_device_register(&ath79_ohci_device);
|
||||||
|
|
||||||
ath79_ehci_resources[0].start = AR71XX_EHCI_BASE;
|
ath79_usb_init_resource(ath79_ehci_resources, AR71XX_EHCI_BASE,
|
||||||
ath79_ehci_resources[0].end = AR71XX_EHCI_BASE + AR71XX_EHCI_SIZE - 1;
|
AR71XX_EHCI_SIZE, ATH79_CPU_IRQ_USB);
|
||||||
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v1;
|
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v1;
|
||||||
platform_device_register(&ath79_ehci_device);
|
platform_device_register(&ath79_ehci_device);
|
||||||
}
|
}
|
||||||
@ -143,10 +137,8 @@ static void __init ar7240_usb_setup(void)
|
|||||||
|
|
||||||
iounmap(usb_ctrl_base);
|
iounmap(usb_ctrl_base);
|
||||||
|
|
||||||
ath79_ohci_resources[0].start = AR7240_OHCI_BASE;
|
ath79_usb_init_resource(ath79_ohci_resources, AR7240_OHCI_BASE,
|
||||||
ath79_ohci_resources[0].end = AR7240_OHCI_BASE + AR7240_OHCI_SIZE - 1;
|
AR7240_OHCI_SIZE, ATH79_CPU_IRQ_USB);
|
||||||
ath79_ohci_resources[1].start = ATH79_CPU_IRQ_USB;
|
|
||||||
ath79_ohci_resources[1].end = ATH79_CPU_IRQ_USB;
|
|
||||||
platform_device_register(&ath79_ohci_device);
|
platform_device_register(&ath79_ohci_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,8 +153,8 @@ static void __init ar724x_usb_setup(void)
|
|||||||
ath79_device_reset_clear(AR724X_RESET_USB_PHY);
|
ath79_device_reset_clear(AR724X_RESET_USB_PHY);
|
||||||
mdelay(10);
|
mdelay(10);
|
||||||
|
|
||||||
ath79_ehci_resources[0].start = AR724X_EHCI_BASE;
|
ath79_usb_init_resource(ath79_ehci_resources, AR724X_EHCI_BASE,
|
||||||
ath79_ehci_resources[0].end = AR724X_EHCI_BASE + AR724X_EHCI_SIZE - 1;
|
AR724X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
|
||||||
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
|
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
|
||||||
platform_device_register(&ath79_ehci_device);
|
platform_device_register(&ath79_ehci_device);
|
||||||
}
|
}
|
||||||
@ -178,8 +170,8 @@ static void __init ar913x_usb_setup(void)
|
|||||||
ath79_device_reset_clear(AR913X_RESET_USB_PHY);
|
ath79_device_reset_clear(AR913X_RESET_USB_PHY);
|
||||||
mdelay(10);
|
mdelay(10);
|
||||||
|
|
||||||
ath79_ehci_resources[0].start = AR913X_EHCI_BASE;
|
ath79_usb_init_resource(ath79_ehci_resources, AR913X_EHCI_BASE,
|
||||||
ath79_ehci_resources[0].end = AR913X_EHCI_BASE + AR913X_EHCI_SIZE - 1;
|
AR913X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
|
||||||
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
|
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
|
||||||
platform_device_register(&ath79_ehci_device);
|
platform_device_register(&ath79_ehci_device);
|
||||||
}
|
}
|
||||||
@ -195,8 +187,34 @@ static void __init ar933x_usb_setup(void)
|
|||||||
ath79_device_reset_clear(AR933X_RESET_USB_PHY);
|
ath79_device_reset_clear(AR933X_RESET_USB_PHY);
|
||||||
mdelay(10);
|
mdelay(10);
|
||||||
|
|
||||||
ath79_ehci_resources[0].start = AR933X_EHCI_BASE;
|
ath79_usb_init_resource(ath79_ehci_resources, AR933X_EHCI_BASE,
|
||||||
ath79_ehci_resources[0].end = AR933X_EHCI_BASE + AR933X_EHCI_SIZE - 1;
|
AR933X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
|
||||||
|
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
|
||||||
|
platform_device_register(&ath79_ehci_device);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init ar934x_usb_setup(void)
|
||||||
|
{
|
||||||
|
u32 bootstrap;
|
||||||
|
|
||||||
|
bootstrap = ath79_reset_rr(AR934X_RESET_REG_BOOTSTRAP);
|
||||||
|
if (bootstrap & AR934X_BOOTSTRAP_USB_MODE_DEVICE)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ath79_device_reset_set(AR934X_RESET_USBSUS_OVERRIDE);
|
||||||
|
udelay(1000);
|
||||||
|
|
||||||
|
ath79_device_reset_clear(AR934X_RESET_USB_PHY);
|
||||||
|
udelay(1000);
|
||||||
|
|
||||||
|
ath79_device_reset_clear(AR934X_RESET_USB_PHY_ANALOG);
|
||||||
|
udelay(1000);
|
||||||
|
|
||||||
|
ath79_device_reset_clear(AR934X_RESET_USB_HOST);
|
||||||
|
udelay(1000);
|
||||||
|
|
||||||
|
ath79_usb_init_resource(ath79_ehci_resources, AR934X_EHCI_BASE,
|
||||||
|
AR934X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
|
||||||
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
|
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
|
||||||
platform_device_register(&ath79_ehci_device);
|
platform_device_register(&ath79_ehci_device);
|
||||||
}
|
}
|
||||||
@ -213,6 +231,8 @@ void __init ath79_register_usb(void)
|
|||||||
ar913x_usb_setup();
|
ar913x_usb_setup();
|
||||||
else if (soc_is_ar933x())
|
else if (soc_is_ar933x())
|
||||||
ar933x_usb_setup();
|
ar933x_usb_setup();
|
||||||
|
else if (soc_is_ar934x())
|
||||||
|
ar934x_usb_setup();
|
||||||
else
|
else
|
||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "dev-gpio-buttons.h"
|
#include "dev-gpio-buttons.h"
|
||||||
#include "dev-leds-gpio.h"
|
#include "dev-leds-gpio.h"
|
||||||
#include "dev-spi.h"
|
#include "dev-spi.h"
|
||||||
|
#include "dev-usb.h"
|
||||||
#include "dev-wmac.h"
|
#include "dev-wmac.h"
|
||||||
#include "pci.h"
|
#include "pci.h"
|
||||||
|
|
||||||
@ -126,6 +127,7 @@ static void __init db120_setup(void)
|
|||||||
db120_gpio_keys);
|
db120_gpio_keys);
|
||||||
ath79_register_spi(&db120_spi_data, db120_spi_info,
|
ath79_register_spi(&db120_spi_data, db120_spi_info,
|
||||||
ARRAY_SIZE(db120_spi_info));
|
ARRAY_SIZE(db120_spi_info));
|
||||||
|
ath79_register_usb();
|
||||||
ath79_register_wmac(art + DB120_WMAC_CALDATA_OFFSET);
|
ath79_register_wmac(art + DB120_WMAC_CALDATA_OFFSET);
|
||||||
db120_pci_init(art + DB120_PCIE_CALDATA_OFFSET);
|
db120_pci_init(art + DB120_PCIE_CALDATA_OFFSET);
|
||||||
}
|
}
|
||||||
|
@ -63,6 +63,8 @@
|
|||||||
|
|
||||||
#define AR934X_WMAC_BASE (AR71XX_APB_BASE + 0x00100000)
|
#define AR934X_WMAC_BASE (AR71XX_APB_BASE + 0x00100000)
|
||||||
#define AR934X_WMAC_SIZE 0x20000
|
#define AR934X_WMAC_SIZE 0x20000
|
||||||
|
#define AR934X_EHCI_BASE 0x1b000000
|
||||||
|
#define AR934X_EHCI_SIZE 0x200
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DDR_CTRL block
|
* DDR_CTRL block
|
||||||
@ -288,6 +290,11 @@
|
|||||||
#define AR933X_RESET_USB_PHY BIT(4)
|
#define AR933X_RESET_USB_PHY BIT(4)
|
||||||
#define AR933X_RESET_USBSUS_OVERRIDE BIT(3)
|
#define AR933X_RESET_USBSUS_OVERRIDE BIT(3)
|
||||||
|
|
||||||
|
#define AR934X_RESET_USB_PHY_ANALOG BIT(11)
|
||||||
|
#define AR934X_RESET_USB_HOST BIT(5)
|
||||||
|
#define AR934X_RESET_USB_PHY BIT(4)
|
||||||
|
#define AR934X_RESET_USBSUS_OVERRIDE BIT(3)
|
||||||
|
|
||||||
#define AR933X_BOOTSTRAP_REF_CLK_40 BIT(0)
|
#define AR933X_BOOTSTRAP_REF_CLK_40 BIT(0)
|
||||||
|
|
||||||
#define AR934X_BOOTSTRAP_SW_OPTION8 BIT(23)
|
#define AR934X_BOOTSTRAP_SW_OPTION8 BIT(23)
|
||||||
|
@ -345,6 +345,13 @@
|
|||||||
/include/ "qoriq-duart-1.dtsi"
|
/include/ "qoriq-duart-1.dtsi"
|
||||||
/include/ "qoriq-gpio-0.dtsi"
|
/include/ "qoriq-gpio-0.dtsi"
|
||||||
/include/ "qoriq-usb2-mph-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"
|
/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"
|
/include/ "qoriq-sec4.0-0.dtsi"
|
||||||
};
|
};
|
||||||
|
@ -6,28 +6,27 @@ CONFIG_SYSVIPC=y
|
|||||||
CONFIG_POSIX_MQUEUE=y
|
CONFIG_POSIX_MQUEUE=y
|
||||||
CONFIG_BSD_PROCESS_ACCT=y
|
CONFIG_BSD_PROCESS_ACCT=y
|
||||||
CONFIG_AUDIT=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=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
|
||||||
CONFIG_KALLSYMS_ALL=y
|
CONFIG_KALLSYMS_ALL=y
|
||||||
CONFIG_KALLSYMS_EXTRA_PASS=y
|
|
||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||||
CONFIG_MODVERSIONS=y
|
CONFIG_MODVERSIONS=y
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
|
CONFIG_MAC_PARTITION=y
|
||||||
CONFIG_P1023_RDS=y
|
CONFIG_P1023_RDS=y
|
||||||
CONFIG_QUICC_ENGINE=y
|
CONFIG_QUICC_ENGINE=y
|
||||||
CONFIG_QE_GPIO=y
|
CONFIG_QE_GPIO=y
|
||||||
CONFIG_CPM2=y
|
CONFIG_CPM2=y
|
||||||
CONFIG_GPIO_MPC8XXX=y
|
|
||||||
CONFIG_HIGHMEM=y
|
CONFIG_HIGHMEM=y
|
||||||
CONFIG_NO_HZ=y
|
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
|
||||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||||
CONFIG_BINFMT_MISC=m
|
CONFIG_BINFMT_MISC=m
|
||||||
CONFIG_MATH_EMULATION=y
|
CONFIG_MATH_EMULATION=y
|
||||||
@ -63,11 +62,11 @@ CONFIG_INET_ESP=y
|
|||||||
CONFIG_IPV6=y
|
CONFIG_IPV6=y
|
||||||
CONFIG_IP_SCTP=m
|
CONFIG_IP_SCTP=m
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
CONFIG_PROC_DEVICETREE=y
|
CONFIG_PROC_DEVICETREE=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||||
CONFIG_MISC_DEVICES=y
|
|
||||||
CONFIG_EEPROM_LEGACY=y
|
CONFIG_EEPROM_LEGACY=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
CONFIG_CHR_DEV_ST=y
|
CONFIG_CHR_DEV_ST=y
|
||||||
@ -80,15 +79,14 @@ CONFIG_SATA_FSL=y
|
|||||||
CONFIG_SATA_SIL24=y
|
CONFIG_SATA_SIL24=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_DUMMY=y
|
CONFIG_DUMMY=y
|
||||||
|
CONFIG_FS_ENET=y
|
||||||
|
CONFIG_FSL_PQ_MDIO=y
|
||||||
|
CONFIG_E1000E=y
|
||||||
CONFIG_MARVELL_PHY=y
|
CONFIG_MARVELL_PHY=y
|
||||||
CONFIG_DAVICOM_PHY=y
|
CONFIG_DAVICOM_PHY=y
|
||||||
CONFIG_CICADA_PHY=y
|
CONFIG_CICADA_PHY=y
|
||||||
CONFIG_VITESSE_PHY=y
|
CONFIG_VITESSE_PHY=y
|
||||||
CONFIG_FIXED_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_FF_MEMLESS=m
|
||||||
# CONFIG_INPUT_MOUSEDEV is not set
|
# CONFIG_INPUT_MOUSEDEV is not set
|
||||||
# CONFIG_INPUT_KEYBOARD 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_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=2
|
CONFIG_SERIAL_8250_NR_UARTS=2
|
||||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||||
CONFIG_SERIAL_8250_EXTENDED=y
|
|
||||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||||
CONFIG_SERIAL_8250_RSA=y
|
CONFIG_SERIAL_8250_RSA=y
|
||||||
CONFIG_SERIAL_QE=m
|
CONFIG_SERIAL_QE=m
|
||||||
CONFIG_HW_RANDOM=y
|
|
||||||
CONFIG_NVRAM=y
|
CONFIG_NVRAM=y
|
||||||
CONFIG_I2C=y
|
CONFIG_I2C=y
|
||||||
CONFIG_I2C_CPM=m
|
CONFIG_I2C_CPM=m
|
||||||
CONFIG_I2C_MPC=y
|
CONFIG_I2C_MPC=y
|
||||||
|
CONFIG_GPIO_MPC8XXX=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||||
CONFIG_SOUND=y
|
CONFIG_SOUND=y
|
||||||
@ -123,7 +120,6 @@ CONFIG_DMADEVICES=y
|
|||||||
CONFIG_FSL_DMA=y
|
CONFIG_FSL_DMA=y
|
||||||
# CONFIG_NET_DMA is not set
|
# CONFIG_NET_DMA is not set
|
||||||
CONFIG_STAGING=y
|
CONFIG_STAGING=y
|
||||||
# CONFIG_STAGING_EXCLUDE_BUILD is not set
|
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||||
@ -150,22 +146,15 @@ CONFIG_QNX4FS_FS=m
|
|||||||
CONFIG_SYSV_FS=m
|
CONFIG_SYSV_FS=m
|
||||||
CONFIG_UFS_FS=m
|
CONFIG_UFS_FS=m
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
CONFIG_NFS_V3=y
|
|
||||||
CONFIG_NFS_V4=y
|
CONFIG_NFS_V4=y
|
||||||
CONFIG_ROOT_NFS=y
|
CONFIG_ROOT_NFS=y
|
||||||
CONFIG_NFSD=y
|
CONFIG_NFSD=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
|
||||||
CONFIG_MAC_PARTITION=y
|
|
||||||
CONFIG_CRC_T10DIF=y
|
CONFIG_CRC_T10DIF=y
|
||||||
CONFIG_FRAME_WARN=8092
|
CONFIG_FRAME_WARN=8092
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
|
||||||
CONFIG_DETECT_HUNG_TASK=y
|
CONFIG_DETECT_HUNG_TASK=y
|
||||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||||
CONFIG_DEBUG_INFO=y
|
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_PCBC=m
|
||||||
CONFIG_CRYPTO_SHA256=y
|
CONFIG_CRYPTO_SHA256=y
|
||||||
CONFIG_CRYPTO_SHA512=y
|
CONFIG_CRYPTO_SHA512=y
|
||||||
|
@ -6,8 +6,8 @@ CONFIG_SYSVIPC=y
|
|||||||
CONFIG_POSIX_MQUEUE=y
|
CONFIG_POSIX_MQUEUE=y
|
||||||
CONFIG_BSD_PROCESS_ACCT=y
|
CONFIG_BSD_PROCESS_ACCT=y
|
||||||
CONFIG_AUDIT=y
|
CONFIG_AUDIT=y
|
||||||
CONFIG_SPARSE_IRQ=y
|
CONFIG_NO_HZ=y
|
||||||
CONFIG_RCU_TRACE=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
CONFIG_IKCONFIG=y
|
CONFIG_IKCONFIG=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
@ -21,23 +21,22 @@ CONFIG_MODULE_UNLOAD=y
|
|||||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||||
CONFIG_MODVERSIONS=y
|
CONFIG_MODVERSIONS=y
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
|
CONFIG_MAC_PARTITION=y
|
||||||
CONFIG_P2041_RDB=y
|
CONFIG_P2041_RDB=y
|
||||||
CONFIG_P3041_DS=y
|
CONFIG_P3041_DS=y
|
||||||
CONFIG_P4080_DS=y
|
CONFIG_P4080_DS=y
|
||||||
CONFIG_P5020_DS=y
|
CONFIG_P5020_DS=y
|
||||||
CONFIG_HIGHMEM=y
|
CONFIG_HIGHMEM=y
|
||||||
CONFIG_NO_HZ=y
|
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
|
||||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||||
CONFIG_BINFMT_MISC=m
|
CONFIG_BINFMT_MISC=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_IRQ_ALL_CPUS=y
|
CONFIG_IRQ_ALL_CPUS=y
|
||||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||||
CONFIG_FSL_LBC=y
|
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCIEPORTBUS=y
|
CONFIG_PCIEPORTBUS=y
|
||||||
CONFIG_PCI_MSI=y
|
|
||||||
# CONFIG_PCIEASPM is not set
|
# CONFIG_PCIEASPM is not set
|
||||||
|
CONFIG_PCI_MSI=y
|
||||||
CONFIG_RAPIDIO=y
|
CONFIG_RAPIDIO=y
|
||||||
CONFIG_FSL_RIO=y
|
CONFIG_FSL_RIO=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
@ -70,6 +69,7 @@ CONFIG_INET_IPCOMP=y
|
|||||||
CONFIG_IPV6=y
|
CONFIG_IPV6=y
|
||||||
CONFIG_IP_SCTP=m
|
CONFIG_IP_SCTP=m
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_CHAR=y
|
CONFIG_MTD_CHAR=y
|
||||||
@ -77,17 +77,14 @@ CONFIG_MTD_BLOCK=y
|
|||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=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_M25P80=y
|
||||||
|
CONFIG_MTD_NAND=y
|
||||||
|
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||||
|
CONFIG_MTD_NAND_FSL_IFC=y
|
||||||
CONFIG_PROC_DEVICETREE=y
|
CONFIG_PROC_DEVICETREE=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||||
CONFIG_MISC_DEVICES=y
|
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
CONFIG_CHR_DEV_ST=y
|
CONFIG_CHR_DEV_ST=y
|
||||||
CONFIG_BLK_DEV_SR=y
|
CONFIG_BLK_DEV_SR=y
|
||||||
@ -115,11 +112,9 @@ CONFIG_SERIO_LIBPS2=y
|
|||||||
CONFIG_PPC_EPAPR_HV_BYTECHAN=y
|
CONFIG_PPC_EPAPR_HV_BYTECHAN=y
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_EXTENDED=y
|
|
||||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||||
CONFIG_SERIAL_8250_RSA=y
|
CONFIG_SERIAL_8250_RSA=y
|
||||||
CONFIG_HW_RANDOM=y
|
|
||||||
CONFIG_NVRAM=y
|
CONFIG_NVRAM=y
|
||||||
CONFIG_I2C=y
|
CONFIG_I2C=y
|
||||||
CONFIG_I2C_CHARDEV=y
|
CONFIG_I2C_CHARDEV=y
|
||||||
@ -132,7 +127,6 @@ CONFIG_SPI_FSL_ESPI=y
|
|||||||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||||
CONFIG_USB_HID=m
|
CONFIG_USB_HID=m
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
CONFIG_USB_DEVICEFS=y
|
|
||||||
CONFIG_USB_MON=y
|
CONFIG_USB_MON=y
|
||||||
CONFIG_USB_EHCI_HCD=y
|
CONFIG_USB_EHCI_HCD=y
|
||||||
CONFIG_USB_EHCI_FSL=y
|
CONFIG_USB_EHCI_FSL=y
|
||||||
@ -142,8 +136,6 @@ CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
|
|||||||
CONFIG_USB_STORAGE=y
|
CONFIG_USB_STORAGE=y
|
||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
||||||
CONFIG_MMC_SDHCI=y
|
CONFIG_MMC_SDHCI=y
|
||||||
CONFIG_MMC_SDHCI_OF=y
|
|
||||||
CONFIG_MMC_SDHCI_OF_ESDHC=y
|
|
||||||
CONFIG_EDAC=y
|
CONFIG_EDAC=y
|
||||||
CONFIG_EDAC_MM_EDAC=y
|
CONFIG_EDAC_MM_EDAC=y
|
||||||
CONFIG_EDAC_MPC85XX=y
|
CONFIG_EDAC_MPC85XX=y
|
||||||
@ -170,19 +162,16 @@ CONFIG_HUGETLBFS=y
|
|||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
CONFIG_CRAMFS=y
|
CONFIG_CRAMFS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
CONFIG_NFS_V3=y
|
|
||||||
CONFIG_NFS_V4=y
|
CONFIG_NFS_V4=y
|
||||||
CONFIG_ROOT_NFS=y
|
CONFIG_ROOT_NFS=y
|
||||||
CONFIG_NFSD=m
|
CONFIG_NFSD=m
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
|
||||||
CONFIG_MAC_PARTITION=y
|
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
CONFIG_NLS_UTF8=m
|
CONFIG_NLS_UTF8=m
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_SHIRQ=y
|
CONFIG_DEBUG_SHIRQ=y
|
||||||
CONFIG_DETECT_HUNG_TASK=y
|
CONFIG_DETECT_HUNG_TASK=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
CONFIG_RCU_TRACE=y
|
||||||
CONFIG_CRYPTO_NULL=y
|
CONFIG_CRYPTO_NULL=y
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_MD4=y
|
CONFIG_CRYPTO_MD4=y
|
||||||
|
@ -56,6 +56,7 @@ CONFIG_INET_ESP=y
|
|||||||
CONFIG_IPV6=y
|
CONFIG_IPV6=y
|
||||||
CONFIG_IP_SCTP=m
|
CONFIG_IP_SCTP=m
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_CHAR=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_EXPERIMENTAL=y
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
CONFIG_POSIX_MQUEUE=y
|
CONFIG_POSIX_MQUEUE=y
|
||||||
CONFIG_NO_HZ=y
|
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
|
||||||
CONFIG_IKCONFIG=y
|
CONFIG_IKCONFIG=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
@ -13,15 +15,16 @@ CONFIG_MODULES=y
|
|||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
CONFIG_MODVERSIONS=y
|
CONFIG_MODVERSIONS=y
|
||||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
# CONFIG_PPC_PSERIES is not set
|
||||||
CONFIG_MAC_PARTITION=y
|
|
||||||
CONFIG_SMP=y
|
|
||||||
CONFIG_NR_CPUS=4
|
|
||||||
CONFIG_KEXEC=y
|
|
||||||
# CONFIG_RELOCATABLE is not set
|
|
||||||
CONFIG_CPU_FREQ=y
|
CONFIG_CPU_FREQ=y
|
||||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||||
CONFIG_CPU_FREQ_GOV_USERSPACE=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_PCI_MSI=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
@ -49,6 +52,7 @@ CONFIG_NF_CT_NETLINK=m
|
|||||||
CONFIG_NF_CONNTRACK_IPV4=m
|
CONFIG_NF_CONNTRACK_IPV4=m
|
||||||
CONFIG_IP_NF_QUEUE=m
|
CONFIG_IP_NF_QUEUE=m
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
CONFIG_PROC_DEVICETREE=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_NBD=m
|
CONFIG_BLK_DEV_NBD=m
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
@ -56,6 +60,8 @@ CONFIG_BLK_DEV_RAM_SIZE=65536
|
|||||||
CONFIG_CDROM_PKTCDVD=m
|
CONFIG_CDROM_PKTCDVD=m
|
||||||
CONFIG_IDE=y
|
CONFIG_IDE=y
|
||||||
CONFIG_BLK_DEV_IDECD=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_BLK_DEV_SD=y
|
||||||
CONFIG_CHR_DEV_ST=y
|
CONFIG_CHR_DEV_ST=y
|
||||||
CONFIG_BLK_DEV_SR=y
|
CONFIG_BLK_DEV_SR=y
|
||||||
@ -79,24 +85,33 @@ CONFIG_DM_CRYPT=m
|
|||||||
CONFIG_DM_SNAPSHOT=m
|
CONFIG_DM_SNAPSHOT=m
|
||||||
CONFIG_DM_MIRROR=m
|
CONFIG_DM_MIRROR=m
|
||||||
CONFIG_DM_ZERO=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_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_NETDEVICES=y
|
||||||
CONFIG_BONDING=m
|
|
||||||
CONFIG_DUMMY=m
|
CONFIG_DUMMY=m
|
||||||
CONFIG_MII=y
|
CONFIG_BONDING=m
|
||||||
CONFIG_TUN=m
|
CONFIG_TUN=m
|
||||||
|
CONFIG_NET_ETHERNET=y
|
||||||
|
CONFIG_MII=y
|
||||||
|
CONFIG_SUNGEM=y
|
||||||
CONFIG_ACENIC=m
|
CONFIG_ACENIC=m
|
||||||
CONFIG_ACENIC_OMIT_TIGON_I=y
|
CONFIG_ACENIC_OMIT_TIGON_I=y
|
||||||
CONFIG_TIGON3=y
|
|
||||||
CONFIG_E1000=y
|
CONFIG_E1000=y
|
||||||
CONFIG_SUNGEM=y
|
CONFIG_TIGON3=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_USB_CATC=m
|
CONFIG_USB_CATC=m
|
||||||
CONFIG_USB_KAWETH=m
|
CONFIG_USB_KAWETH=m
|
||||||
CONFIG_USB_PEGASUS=m
|
CONFIG_USB_PEGASUS=m
|
||||||
@ -106,24 +121,36 @@ CONFIG_USB_USBNET=m
|
|||||||
# CONFIG_USB_NET_NET1080 is not set
|
# CONFIG_USB_NET_NET1080 is not set
|
||||||
# CONFIG_USB_NET_CDC_SUBSET is not set
|
# CONFIG_USB_NET_CDC_SUBSET is not set
|
||||||
# CONFIG_USB_NET_ZAURUS 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_MOUSEDEV_PSAUX is not set
|
||||||
CONFIG_INPUT_JOYDEV=m
|
CONFIG_INPUT_JOYDEV=m
|
||||||
CONFIG_INPUT_EVDEV=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
|
# CONFIG_KEYBOARD_ATKBD is not set
|
||||||
# CONFIG_MOUSE_PS2 is not set
|
# CONFIG_MOUSE_PS2 is not set
|
||||||
|
# CONFIG_SERIO_I8042 is not set
|
||||||
# CONFIG_SERIO_SERPORT is not set
|
# CONFIG_SERIO_SERPORT is not set
|
||||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
|
||||||
# CONFIG_HW_RANDOM is not set
|
# CONFIG_HW_RANDOM is not set
|
||||||
CONFIG_GEN_RTC=y
|
CONFIG_GEN_RTC=y
|
||||||
CONFIG_RAW_DRIVER=y
|
CONFIG_RAW_DRIVER=y
|
||||||
CONFIG_I2C_CHARDEV=y
|
CONFIG_I2C_CHARDEV=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_AGP=y
|
CONFIG_AGP=m
|
||||||
CONFIG_DRM=y
|
CONFIG_AGP_UNINORTH=m
|
||||||
CONFIG_DRM_NOUVEAU=y
|
|
||||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||||
|
CONFIG_FB=y
|
||||||
CONFIG_FIRMWARE_EDID=y
|
CONFIG_FIRMWARE_EDID=y
|
||||||
CONFIG_FB_TILEBLITTING=y
|
CONFIG_FB_TILEBLITTING=y
|
||||||
|
CONFIG_FB_OF=y
|
||||||
|
CONFIG_FB_NVIDIA=y
|
||||||
|
CONFIG_FB_NVIDIA_I2C=y
|
||||||
CONFIG_FB_RADEON=y
|
CONFIG_FB_RADEON=y
|
||||||
|
# CONFIG_VGA_CONSOLE is not set
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
CONFIG_LOGO=y
|
CONFIG_LOGO=y
|
||||||
CONFIG_SOUND=m
|
CONFIG_SOUND=m
|
||||||
CONFIG_SND=m
|
CONFIG_SND=m
|
||||||
@ -131,7 +158,15 @@ CONFIG_SND_SEQUENCER=m
|
|||||||
CONFIG_SND_MIXER_OSS=m
|
CONFIG_SND_MIXER_OSS=m
|
||||||
CONFIG_SND_PCM_OSS=m
|
CONFIG_SND_PCM_OSS=m
|
||||||
CONFIG_SND_SEQUENCER_OSS=y
|
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_SND_USB_AUDIO=m
|
||||||
|
CONFIG_HID_PID=y
|
||||||
|
CONFIG_USB_HIDDEV=y
|
||||||
CONFIG_HID_GYRATION=y
|
CONFIG_HID_GYRATION=y
|
||||||
CONFIG_LOGITECH_FF=y
|
CONFIG_LOGITECH_FF=y
|
||||||
CONFIG_HID_PANTHERLORD=y
|
CONFIG_HID_PANTHERLORD=y
|
||||||
@ -139,12 +174,13 @@ CONFIG_HID_PETALYNX=y
|
|||||||
CONFIG_HID_SAMSUNG=y
|
CONFIG_HID_SAMSUNG=y
|
||||||
CONFIG_HID_SONY=y
|
CONFIG_HID_SONY=y
|
||||||
CONFIG_HID_SUNPLUS=y
|
CONFIG_HID_SUNPLUS=y
|
||||||
CONFIG_HID_PID=y
|
|
||||||
CONFIG_USB_HIDDEV=y
|
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_DEVICEFS=y
|
||||||
CONFIG_USB_MON=y
|
CONFIG_USB_MON=y
|
||||||
CONFIG_USB_EHCI_HCD=y
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
# CONFIG_USB_EHCI_HCD_PPC_OF is not set
|
||||||
CONFIG_USB_OHCI_HCD=y
|
CONFIG_USB_OHCI_HCD=y
|
||||||
|
CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
|
||||||
CONFIG_USB_ACM=m
|
CONFIG_USB_ACM=m
|
||||||
CONFIG_USB_PRINTER=y
|
CONFIG_USB_PRINTER=y
|
||||||
CONFIG_USB_STORAGE=y
|
CONFIG_USB_STORAGE=y
|
||||||
@ -208,6 +244,8 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
|
|||||||
CONFIG_REISERFS_FS_SECURITY=y
|
CONFIG_REISERFS_FS_SECURITY=y
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
CONFIG_XFS_POSIX_ACL=y
|
CONFIG_XFS_POSIX_ACL=y
|
||||||
|
CONFIG_INOTIFY=y
|
||||||
|
CONFIG_AUTOFS_FS=m
|
||||||
CONFIG_ISO9660_FS=y
|
CONFIG_ISO9660_FS=y
|
||||||
CONFIG_JOLIET=y
|
CONFIG_JOLIET=y
|
||||||
CONFIG_ZISOFS=y
|
CONFIG_ZISOFS=y
|
||||||
@ -221,12 +259,14 @@ CONFIG_HFS_FS=m
|
|||||||
CONFIG_HFSPLUS_FS=m
|
CONFIG_HFSPLUS_FS=m
|
||||||
CONFIG_CRAMFS=y
|
CONFIG_CRAMFS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3=y
|
||||||
CONFIG_NFS_V3_ACL=y
|
CONFIG_NFS_V3_ACL=y
|
||||||
CONFIG_NFS_V4=y
|
CONFIG_NFS_V4=y
|
||||||
CONFIG_NFSD=y
|
CONFIG_NFSD=y
|
||||||
CONFIG_NFSD_V3_ACL=y
|
CONFIG_NFSD_V3_ACL=y
|
||||||
CONFIG_NFSD_V4=y
|
CONFIG_NFSD_V4=y
|
||||||
CONFIG_CIFS=m
|
CONFIG_CIFS=m
|
||||||
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_CODEPAGE_1250=y
|
CONFIG_NLS_CODEPAGE_1250=y
|
||||||
CONFIG_NLS_CODEPAGE_1251=y
|
CONFIG_NLS_CODEPAGE_1251=y
|
||||||
@ -234,23 +274,29 @@ CONFIG_NLS_ASCII=y
|
|||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
CONFIG_NLS_ISO8859_15=y
|
CONFIG_NLS_ISO8859_15=y
|
||||||
CONFIG_NLS_UTF8=y
|
CONFIG_NLS_UTF8=y
|
||||||
|
CONFIG_CRC_T10DIF=y
|
||||||
|
CONFIG_LIBCRC32C=m
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
# CONFIG_UNUSED_SYMBOLS is not set
|
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_DEBUG_MUTEXES=y
|
CONFIG_DEBUG_MUTEXES=y
|
||||||
|
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||||
CONFIG_LATENCYTOP=y
|
CONFIG_LATENCYTOP=y
|
||||||
CONFIG_STRICT_DEVMEM=y
|
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||||
|
CONFIG_BOOTX_TEXT=y
|
||||||
CONFIG_CRYPTO_NULL=m
|
CONFIG_CRYPTO_NULL=m
|
||||||
CONFIG_CRYPTO_TEST=m
|
CONFIG_CRYPTO_TEST=m
|
||||||
|
CONFIG_CRYPTO_ECB=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_HMAC=y
|
CONFIG_CRYPTO_HMAC=y
|
||||||
|
CONFIG_CRYPTO_MD4=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
CONFIG_CRYPTO_SHA256=m
|
CONFIG_CRYPTO_SHA256=m
|
||||||
CONFIG_CRYPTO_SHA512=m
|
CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
CONFIG_CRYPTO_AES=m
|
CONFIG_CRYPTO_AES=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
|
CONFIG_CRYPTO_ARC4=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAST5=m
|
CONFIG_CRYPTO_CAST5=m
|
||||||
CONFIG_CRYPTO_CAST6=m
|
CONFIG_CRYPTO_CAST6=m
|
||||||
@ -260,6 +306,3 @@ CONFIG_CRYPTO_TEA=m
|
|||||||
CONFIG_CRYPTO_TWOFISH=m
|
CONFIG_CRYPTO_TWOFISH=m
|
||||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||||
# CONFIG_CRYPTO_HW 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_SYSVIPC=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
|
||||||
CONFIG_EXPERT=y
|
CONFIG_EXPERT=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
# CONFIG_PPC_CHRP is not set
|
# CONFIG_PPC_CHRP is not set
|
||||||
# CONFIG_PPC_PMAC is not set
|
# CONFIG_PPC_PMAC is not set
|
||||||
CONFIG_PPC_83xx=y
|
CONFIG_PPC_83xx=y
|
||||||
@ -25,7 +25,6 @@ CONFIG_ASP834x=y
|
|||||||
CONFIG_QUICC_ENGINE=y
|
CONFIG_QUICC_ENGINE=y
|
||||||
CONFIG_QE_GPIO=y
|
CONFIG_QE_GPIO=y
|
||||||
CONFIG_MATH_EMULATION=y
|
CONFIG_MATH_EMULATION=y
|
||||||
CONFIG_SPARSE_IRQ=y
|
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
@ -42,10 +41,9 @@ CONFIG_INET_ESP=y
|
|||||||
# CONFIG_INET_LRO is not set
|
# CONFIG_INET_LRO is not set
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
# CONFIG_FW_LOADER is not set
|
# CONFIG_FW_LOADER is not set
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_PARTITIONS=y
|
|
||||||
CONFIG_MTD_OF_PARTS=y
|
|
||||||
CONFIG_MTD_CHAR=y
|
CONFIG_MTD_CHAR=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
@ -64,15 +62,14 @@ CONFIG_ATA=y
|
|||||||
CONFIG_SATA_FSL=y
|
CONFIG_SATA_FSL=y
|
||||||
CONFIG_SATA_SIL=y
|
CONFIG_SATA_SIL=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
|
CONFIG_MII=y
|
||||||
|
CONFIG_UCC_GETH=y
|
||||||
|
CONFIG_GIANFAR=y
|
||||||
CONFIG_MARVELL_PHY=y
|
CONFIG_MARVELL_PHY=y
|
||||||
CONFIG_DAVICOM_PHY=y
|
CONFIG_DAVICOM_PHY=y
|
||||||
CONFIG_VITESSE_PHY=y
|
CONFIG_VITESSE_PHY=y
|
||||||
CONFIG_ICPLUS_PHY=y
|
CONFIG_ICPLUS_PHY=y
|
||||||
CONFIG_FIXED_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_FF_MEMLESS=m
|
||||||
# CONFIG_INPUT_MOUSEDEV is not set
|
# CONFIG_INPUT_MOUSEDEV is not set
|
||||||
# CONFIG_INPUT_KEYBOARD is not set
|
# CONFIG_INPUT_KEYBOARD is not set
|
||||||
@ -112,17 +109,12 @@ CONFIG_RTC_DRV_DS1374=y
|
|||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||||
CONFIG_INOTIFY=y
|
|
||||||
CONFIG_PROC_KCORE=y
|
CONFIG_PROC_KCORE=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
CONFIG_NFS_V3=y
|
|
||||||
CONFIG_NFS_V4=y
|
CONFIG_NFS_V4=y
|
||||||
CONFIG_ROOT_NFS=y
|
CONFIG_ROOT_NFS=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
|
||||||
CONFIG_CRC_T10DIF=y
|
CONFIG_CRC_T10DIF=y
|
||||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
|
||||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
|
||||||
CONFIG_CRYPTO_ECB=m
|
CONFIG_CRYPTO_ECB=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_SHA256=y
|
CONFIG_CRYPTO_SHA256=y
|
||||||
|
@ -5,7 +5,9 @@ CONFIG_SYSVIPC=y
|
|||||||
CONFIG_POSIX_MQUEUE=y
|
CONFIG_POSIX_MQUEUE=y
|
||||||
CONFIG_BSD_PROCESS_ACCT=y
|
CONFIG_BSD_PROCESS_ACCT=y
|
||||||
CONFIG_AUDIT=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=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
@ -17,6 +19,8 @@ CONFIG_MODULE_UNLOAD=y
|
|||||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||||
CONFIG_MODVERSIONS=y
|
CONFIG_MODVERSIONS=y
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
|
CONFIG_MAC_PARTITION=y
|
||||||
CONFIG_MPC8540_ADS=y
|
CONFIG_MPC8540_ADS=y
|
||||||
CONFIG_MPC8560_ADS=y
|
CONFIG_MPC8560_ADS=y
|
||||||
CONFIG_MPC85xx_CDS=y
|
CONFIG_MPC85xx_CDS=y
|
||||||
@ -40,8 +44,6 @@ CONFIG_SBC8548=y
|
|||||||
CONFIG_QUICC_ENGINE=y
|
CONFIG_QUICC_ENGINE=y
|
||||||
CONFIG_QE_GPIO=y
|
CONFIG_QE_GPIO=y
|
||||||
CONFIG_HIGHMEM=y
|
CONFIG_HIGHMEM=y
|
||||||
CONFIG_NO_HZ=y
|
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
|
||||||
CONFIG_BINFMT_MISC=m
|
CONFIG_BINFMT_MISC=m
|
||||||
CONFIG_MATH_EMULATION=y
|
CONFIG_MATH_EMULATION=y
|
||||||
CONFIG_FORCE_MAX_ZONEORDER=12
|
CONFIG_FORCE_MAX_ZONEORDER=12
|
||||||
@ -74,36 +76,25 @@ CONFIG_INET_ESP=y
|
|||||||
CONFIG_IPV6=y
|
CONFIG_IPV6=y
|
||||||
CONFIG_IP_SCTP=m
|
CONFIG_IP_SCTP=m
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_CHAR=y
|
CONFIG_MTD_CHAR=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
|
||||||
CONFIG_FTL=y
|
CONFIG_FTL=y
|
||||||
CONFIG_MTD_GEN_PROBE=y
|
CONFIG_MTD_CFI=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_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_CFI_UTIL=y
|
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_PARTITIONS=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_OF_PARTS=y
|
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_NAND=y
|
||||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||||
CONFIG_MTD_NAND_FSL_IFC=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_PROC_DEVICETREE=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_NBD=y
|
CONFIG_BLK_DEV_NBD=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||||
CONFIG_MISC_DEVICES=y
|
|
||||||
CONFIG_EEPROM_LEGACY=y
|
CONFIG_EEPROM_LEGACY=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
CONFIG_CHR_DEV_ST=y
|
CONFIG_CHR_DEV_ST=y
|
||||||
@ -115,6 +106,7 @@ CONFIG_ATA=y
|
|||||||
CONFIG_SATA_AHCI=y
|
CONFIG_SATA_AHCI=y
|
||||||
CONFIG_SATA_FSL=y
|
CONFIG_SATA_FSL=y
|
||||||
CONFIG_PATA_ALI=y
|
CONFIG_PATA_ALI=y
|
||||||
|
CONFIG_PATA_VIA=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_DUMMY=y
|
CONFIG_DUMMY=y
|
||||||
CONFIG_FS_ENET=y
|
CONFIG_FS_ENET=y
|
||||||
@ -134,7 +126,6 @@ CONFIG_SERIAL_8250=y
|
|||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=2
|
CONFIG_SERIAL_8250_NR_UARTS=2
|
||||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||||
CONFIG_SERIAL_8250_EXTENDED=y
|
|
||||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||||
CONFIG_SERIAL_8250_RSA=y
|
CONFIG_SERIAL_8250_RSA=y
|
||||||
@ -183,7 +174,6 @@ CONFIG_HID_SAMSUNG=y
|
|||||||
CONFIG_HID_SONY=y
|
CONFIG_HID_SONY=y
|
||||||
CONFIG_HID_SUNPLUS=y
|
CONFIG_HID_SUNPLUS=y
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
CONFIG_USB_DEVICEFS=y
|
|
||||||
CONFIG_USB_MON=y
|
CONFIG_USB_MON=y
|
||||||
CONFIG_USB_EHCI_HCD=y
|
CONFIG_USB_EHCI_HCD=y
|
||||||
CONFIG_USB_EHCI_FSL=y
|
CONFIG_USB_EHCI_FSL=y
|
||||||
@ -229,18 +219,13 @@ CONFIG_QNX4FS_FS=m
|
|||||||
CONFIG_SYSV_FS=m
|
CONFIG_SYSV_FS=m
|
||||||
CONFIG_UFS_FS=m
|
CONFIG_UFS_FS=m
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
CONFIG_NFS_V3=y
|
|
||||||
CONFIG_NFS_V4=y
|
CONFIG_NFS_V4=y
|
||||||
CONFIG_ROOT_NFS=y
|
CONFIG_ROOT_NFS=y
|
||||||
CONFIG_NFSD=y
|
CONFIG_NFSD=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
|
||||||
CONFIG_MAC_PARTITION=y
|
|
||||||
CONFIG_CRC_T10DIF=y
|
CONFIG_CRC_T10DIF=y
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
CONFIG_DETECT_HUNG_TASK=y
|
CONFIG_DETECT_HUNG_TASK=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
|
||||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_SHA256=y
|
CONFIG_CRYPTO_SHA256=y
|
||||||
CONFIG_CRYPTO_SHA512=y
|
CONFIG_CRYPTO_SHA512=y
|
||||||
|
@ -7,7 +7,9 @@ CONFIG_SYSVIPC=y
|
|||||||
CONFIG_POSIX_MQUEUE=y
|
CONFIG_POSIX_MQUEUE=y
|
||||||
CONFIG_BSD_PROCESS_ACCT=y
|
CONFIG_BSD_PROCESS_ACCT=y
|
||||||
CONFIG_AUDIT=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=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
@ -19,6 +21,8 @@ CONFIG_MODULE_UNLOAD=y
|
|||||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||||
CONFIG_MODVERSIONS=y
|
CONFIG_MODVERSIONS=y
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
|
CONFIG_MAC_PARTITION=y
|
||||||
CONFIG_MPC8540_ADS=y
|
CONFIG_MPC8540_ADS=y
|
||||||
CONFIG_MPC8560_ADS=y
|
CONFIG_MPC8560_ADS=y
|
||||||
CONFIG_MPC85xx_CDS=y
|
CONFIG_MPC85xx_CDS=y
|
||||||
@ -42,8 +46,6 @@ CONFIG_SBC8548=y
|
|||||||
CONFIG_QUICC_ENGINE=y
|
CONFIG_QUICC_ENGINE=y
|
||||||
CONFIG_QE_GPIO=y
|
CONFIG_QE_GPIO=y
|
||||||
CONFIG_HIGHMEM=y
|
CONFIG_HIGHMEM=y
|
||||||
CONFIG_NO_HZ=y
|
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
|
||||||
CONFIG_BINFMT_MISC=m
|
CONFIG_BINFMT_MISC=m
|
||||||
CONFIG_MATH_EMULATION=y
|
CONFIG_MATH_EMULATION=y
|
||||||
CONFIG_IRQ_ALL_CPUS=y
|
CONFIG_IRQ_ALL_CPUS=y
|
||||||
@ -77,36 +79,25 @@ CONFIG_INET_ESP=y
|
|||||||
CONFIG_IPV6=y
|
CONFIG_IPV6=y
|
||||||
CONFIG_IP_SCTP=m
|
CONFIG_IP_SCTP=m
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_CHAR=y
|
CONFIG_MTD_CHAR=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
|
||||||
CONFIG_FTL=y
|
CONFIG_FTL=y
|
||||||
CONFIG_MTD_GEN_PROBE=y
|
CONFIG_MTD_CFI=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_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_CFI_UTIL=y
|
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_PARTITIONS=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_OF_PARTS=y
|
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_NAND=y
|
||||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||||
CONFIG_MTD_NAND_FSL_IFC=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_PROC_DEVICETREE=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_NBD=y
|
CONFIG_BLK_DEV_NBD=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||||
CONFIG_MISC_DEVICES=y
|
|
||||||
CONFIG_EEPROM_LEGACY=y
|
CONFIG_EEPROM_LEGACY=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
CONFIG_CHR_DEV_ST=y
|
CONFIG_CHR_DEV_ST=y
|
||||||
@ -137,7 +128,6 @@ CONFIG_SERIAL_8250=y
|
|||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=2
|
CONFIG_SERIAL_8250_NR_UARTS=2
|
||||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||||
CONFIG_SERIAL_8250_EXTENDED=y
|
|
||||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||||
CONFIG_SERIAL_8250_RSA=y
|
CONFIG_SERIAL_8250_RSA=y
|
||||||
@ -186,7 +176,6 @@ CONFIG_HID_SAMSUNG=y
|
|||||||
CONFIG_HID_SONY=y
|
CONFIG_HID_SONY=y
|
||||||
CONFIG_HID_SUNPLUS=y
|
CONFIG_HID_SUNPLUS=y
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
CONFIG_USB_DEVICEFS=y
|
|
||||||
CONFIG_USB_MON=y
|
CONFIG_USB_MON=y
|
||||||
CONFIG_USB_EHCI_HCD=y
|
CONFIG_USB_EHCI_HCD=y
|
||||||
CONFIG_USB_EHCI_FSL=y
|
CONFIG_USB_EHCI_FSL=y
|
||||||
@ -232,18 +221,13 @@ CONFIG_QNX4FS_FS=m
|
|||||||
CONFIG_SYSV_FS=m
|
CONFIG_SYSV_FS=m
|
||||||
CONFIG_UFS_FS=m
|
CONFIG_UFS_FS=m
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
CONFIG_NFS_V3=y
|
|
||||||
CONFIG_NFS_V4=y
|
CONFIG_NFS_V4=y
|
||||||
CONFIG_ROOT_NFS=y
|
CONFIG_ROOT_NFS=y
|
||||||
CONFIG_NFSD=y
|
CONFIG_NFSD=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
|
||||||
CONFIG_MAC_PARTITION=y
|
|
||||||
CONFIG_CRC_T10DIF=y
|
CONFIG_CRC_T10DIF=y
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
CONFIG_DETECT_HUNG_TASK=y
|
CONFIG_DETECT_HUNG_TASK=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
|
||||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_SHA256=y
|
CONFIG_CRYPTO_SHA256=y
|
||||||
CONFIG_CRYPTO_SHA512=y
|
CONFIG_CRYPTO_SHA512=y
|
||||||
|
@ -553,9 +553,7 @@ static inline int cpu_has_feature(unsigned long feature)
|
|||||||
& feature);
|
& feature);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_HAVE_HW_BREAKPOINT
|
|
||||||
#define HBP_NUM 1
|
#define HBP_NUM 1
|
||||||
#endif /* CONFIG_HAVE_HW_BREAKPOINT */
|
|
||||||
|
|
||||||
#endif /* !__ASSEMBLY__ */
|
#endif /* !__ASSEMBLY__ */
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include <asm/kvm_asm.h>
|
#include <asm/kvm_asm.h>
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
#include <asm/cacheflush.h>
|
||||||
|
|
||||||
#define KVM_MAX_VCPUS NR_CPUS
|
#define KVM_MAX_VCPUS NR_CPUS
|
||||||
#define KVM_MAX_VCORES 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_free_lpid(long lpid);
|
||||||
void kvmppc_init_lpid(unsigned long nr_lpids);
|
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__ */
|
#endif /* __POWERPC_KVM_PPC_H__ */
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <asm/smp.h>
|
#include <asm/smp.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
|
||||||
struct mpic_msgr {
|
struct mpic_msgr {
|
||||||
u32 __iomem *base;
|
u32 __iomem *base;
|
||||||
|
@ -83,11 +83,10 @@ static int dma_iommu_dma_supported(struct device *dev, u64 mask)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((tbl->it_offset + tbl->it_size) > (mask >> IOMMU_PAGE_SHIFT)) {
|
if (tbl->it_offset > (mask >> IOMMU_PAGE_SHIFT)) {
|
||||||
dev_info(dev, "Warning: IOMMU window too big for device mask\n");
|
dev_info(dev, "Warning: IOMMU offset too big for device mask\n");
|
||||||
dev_info(dev, "mask: 0x%08llx, table end: 0x%08lx\n",
|
dev_info(dev, "mask: 0x%08llx, table offset: 0x%08lx\n",
|
||||||
mask, (tbl->it_offset + tbl->it_size) <<
|
mask, tbl->it_offset << IOMMU_PAGE_SHIFT);
|
||||||
IOMMU_PAGE_SHIFT);
|
|
||||||
return 0;
|
return 0;
|
||||||
} else
|
} else
|
||||||
return 1;
|
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 */
|
/* Do not emulate user-space instructions, instead single-step them */
|
||||||
if (user_mode(regs)) {
|
if (user_mode(regs)) {
|
||||||
bp->ctx->task->thread.last_hit_ubp = bp;
|
current->thread.last_hit_ubp = bp;
|
||||||
regs->msr |= MSR_SE;
|
regs->msr |= MSR_SE;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <asm/machdep.h>
|
#include <asm/machdep.h>
|
||||||
#include <asm/debug.h>
|
#include <asm/debug.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This table contains the mapping between PowerPC hardware trap types, and
|
* 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 */
|
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)
|
static int kgdb_call_nmi_hook(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
kgdb_nmicallback(raw_smp_processor_id(), 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)
|
static int kgdb_singlestep(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
struct thread_info *thread_info, *exception_thread_info;
|
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))
|
if (user_mode(regs))
|
||||||
return 0;
|
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));
|
thread_info = (struct thread_info *)(regs->gpr[1] & ~(THREAD_SIZE-1));
|
||||||
exception_thread_info = current_thread_info();
|
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);
|
memcpy(exception_thread_info, thread_info, sizeof *thread_info);
|
||||||
|
}
|
||||||
|
|
||||||
kgdb_handle_exception(0, SIGTRAP, 0, regs);
|
kgdb_handle_exception(0, SIGTRAP, 0, regs);
|
||||||
|
|
||||||
if (thread_info != exception_thread_info)
|
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;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -410,7 +432,6 @@ int kgdb_arch_handle_exception(int vector, int signo, int err_code,
|
|||||||
#else
|
#else
|
||||||
linux_regs->msr |= MSR_SE;
|
linux_regs->msr |= MSR_SE;
|
||||||
#endif
|
#endif
|
||||||
kgdb_single_step = 1;
|
|
||||||
atomic_set(&kgdb_cpu_doing_single_step,
|
atomic_set(&kgdb_cpu_doing_single_step,
|
||||||
raw_smp_processor_id());
|
raw_smp_processor_id());
|
||||||
}
|
}
|
||||||
|
@ -107,11 +107,11 @@ long ppc64_personality(unsigned long personality)
|
|||||||
long ret;
|
long ret;
|
||||||
|
|
||||||
if (personality(current->personality) == PER_LINUX32
|
if (personality(current->personality) == PER_LINUX32
|
||||||
&& personality == PER_LINUX)
|
&& personality(personality) == PER_LINUX)
|
||||||
personality = PER_LINUX32;
|
personality = (personality & ~PER_MASK) | PER_LINUX32;
|
||||||
ret = sys_personality(personality);
|
ret = sys_personality(personality);
|
||||||
if (ret == PER_LINUX32)
|
if (personality(ret) == PER_LINUX32)
|
||||||
ret = PER_LINUX;
|
ret = (ret & ~PER_MASK) | PER_LINUX;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -211,6 +211,9 @@ next_pteg:
|
|||||||
pteg1 |= PP_RWRX;
|
pteg1 |= PP_RWRX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (orig_pte->may_execute)
|
||||||
|
kvmppc_mmu_flush_icache(hpaddr >> PAGE_SHIFT);
|
||||||
|
|
||||||
local_irq_disable();
|
local_irq_disable();
|
||||||
|
|
||||||
if (pteg[rr]) {
|
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)
|
if (!orig_pte->may_execute)
|
||||||
rflags |= HPTE_R_N;
|
rflags |= HPTE_R_N;
|
||||||
|
else
|
||||||
|
kvmppc_mmu_flush_icache(hpaddr >> PAGE_SHIFT);
|
||||||
|
|
||||||
hash = hpt_hash(va, PTE_SIZE, MMU_SEGSIZE_256M);
|
hash = hpt_hash(va, PTE_SIZE, MMU_SEGSIZE_256M);
|
||||||
|
|
||||||
|
@ -1421,13 +1421,13 @@ _GLOBAL(kvmppc_h_cede)
|
|||||||
sync /* order setting ceded vs. testing prodded */
|
sync /* order setting ceded vs. testing prodded */
|
||||||
lbz r5,VCPU_PRODDED(r3)
|
lbz r5,VCPU_PRODDED(r3)
|
||||||
cmpwi r5,0
|
cmpwi r5,0
|
||||||
bne 1f
|
bne kvm_cede_prodded
|
||||||
li r0,0 /* set trap to 0 to say hcall is handled */
|
li r0,0 /* set trap to 0 to say hcall is handled */
|
||||||
stw r0,VCPU_TRAP(r3)
|
stw r0,VCPU_TRAP(r3)
|
||||||
li r0,H_SUCCESS
|
li r0,H_SUCCESS
|
||||||
std r0,VCPU_GPR(R3)(r3)
|
std r0,VCPU_GPR(R3)(r3)
|
||||||
BEGIN_FTR_SECTION
|
BEGIN_FTR_SECTION
|
||||||
b 2f /* just send it up to host on 970 */
|
b kvm_cede_exit /* just send it up to host on 970 */
|
||||||
END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_206)
|
END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_206)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1446,7 +1446,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_206)
|
|||||||
or r4,r4,r0
|
or r4,r4,r0
|
||||||
PPC_POPCNTW(R7,R4)
|
PPC_POPCNTW(R7,R4)
|
||||||
cmpw r7,r8
|
cmpw r7,r8
|
||||||
bge 2f
|
bge kvm_cede_exit
|
||||||
stwcx. r4,0,r6
|
stwcx. r4,0,r6
|
||||||
bne 31b
|
bne 31b
|
||||||
li r0,1
|
li r0,1
|
||||||
@ -1555,7 +1555,8 @@ kvm_end_cede:
|
|||||||
b hcall_real_fallback
|
b hcall_real_fallback
|
||||||
|
|
||||||
/* cede when already previously prodded case */
|
/* cede when already previously prodded case */
|
||||||
1: li r0,0
|
kvm_cede_prodded:
|
||||||
|
li r0,0
|
||||||
stb r0,VCPU_PRODDED(r3)
|
stb r0,VCPU_PRODDED(r3)
|
||||||
sync /* order testing prodded vs. clearing ceded */
|
sync /* order testing prodded vs. clearing ceded */
|
||||||
stb r0,VCPU_CEDED(r3)
|
stb r0,VCPU_CEDED(r3)
|
||||||
@ -1563,7 +1564,8 @@ kvm_end_cede:
|
|||||||
blr
|
blr
|
||||||
|
|
||||||
/* we've ceded but we want to give control to the host */
|
/* we've ceded but we want to give control to the host */
|
||||||
2: li r3,H_TOO_HARD
|
kvm_cede_exit:
|
||||||
|
li r3,H_TOO_HARD
|
||||||
blr
|
blr
|
||||||
|
|
||||||
secondary_too_late:
|
secondary_too_late:
|
||||||
|
@ -322,11 +322,11 @@ static inline void kvmppc_e500_ref_release(struct tlbe_ref *ref)
|
|||||||
static void clear_tlb1_bitmap(struct kvmppc_vcpu_e500 *vcpu_e500)
|
static void clear_tlb1_bitmap(struct kvmppc_vcpu_e500 *vcpu_e500)
|
||||||
{
|
{
|
||||||
if (vcpu_e500->g2h_tlb1_map)
|
if (vcpu_e500->g2h_tlb1_map)
|
||||||
memset(vcpu_e500->g2h_tlb1_map,
|
memset(vcpu_e500->g2h_tlb1_map, 0,
|
||||||
sizeof(u64) * vcpu_e500->gtlb_params[1].entries, 0);
|
sizeof(u64) * vcpu_e500->gtlb_params[1].entries);
|
||||||
if (vcpu_e500->h2g_tlb1_rmap)
|
if (vcpu_e500->h2g_tlb1_rmap)
|
||||||
memset(vcpu_e500->h2g_tlb1_rmap,
|
memset(vcpu_e500->h2g_tlb1_rmap, 0,
|
||||||
sizeof(unsigned int) * host_tlb_params[1].entries, 0);
|
sizeof(unsigned int) * host_tlb_params[1].entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void clear_tlb_privs(struct kvmppc_vcpu_e500 *vcpu_e500)
|
static void clear_tlb_privs(struct kvmppc_vcpu_e500 *vcpu_e500)
|
||||||
@ -539,6 +539,9 @@ static inline void kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,
|
|||||||
|
|
||||||
kvmppc_e500_setup_stlbe(&vcpu_e500->vcpu, gtlbe, tsize,
|
kvmppc_e500_setup_stlbe(&vcpu_e500->vcpu, gtlbe, tsize,
|
||||||
ref, gvaddr, stlbe);
|
ref, gvaddr, stlbe);
|
||||||
|
|
||||||
|
/* Clear i-cache for new pages */
|
||||||
|
kvmppc_mmu_flush_icache(pfn);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX only map the one-one case, for now use TLB0 */
|
/* XXX only map the one-one case, for now use TLB0 */
|
||||||
|
@ -288,7 +288,7 @@ err1; stb r0,0(r3)
|
|||||||
std r0,16(r1)
|
std r0,16(r1)
|
||||||
stdu r1,-STACKFRAMESIZE(r1)
|
stdu r1,-STACKFRAMESIZE(r1)
|
||||||
bl .enter_vmx_usercopy
|
bl .enter_vmx_usercopy
|
||||||
cmpwi r3,0
|
cmpwi cr1,r3,0
|
||||||
ld r0,STACKFRAMESIZE+16(r1)
|
ld r0,STACKFRAMESIZE+16(r1)
|
||||||
ld r3,STACKFRAMESIZE+48(r1)
|
ld r3,STACKFRAMESIZE+48(r1)
|
||||||
ld r4,STACKFRAMESIZE+56(r1)
|
ld r4,STACKFRAMESIZE+56(r1)
|
||||||
@ -326,38 +326,7 @@ err1; stb r0,0(r3)
|
|||||||
dcbt r0,r8,0b01010 /* GO */
|
dcbt r0,r8,0b01010 /* GO */
|
||||||
.machine pop
|
.machine pop
|
||||||
|
|
||||||
/*
|
beq cr1,.Lunwind_stack_nonvmx_copy
|
||||||
* We prefetch both the source and destination using enhanced touch
|
|
||||||
* instructions. We use a stream ID of 0 for the load side and
|
|
||||||
* 1 for the store side.
|
|
||||||
*/
|
|
||||||
clrrdi r6,r4,7
|
|
||||||
clrrdi r9,r3,7
|
|
||||||
ori r9,r9,1 /* stream=1 */
|
|
||||||
|
|
||||||
srdi r7,r5,7 /* length in cachelines, capped at 0x3FF */
|
|
||||||
cmpldi cr1,r7,0x3FF
|
|
||||||
ble cr1,1f
|
|
||||||
li r7,0x3FF
|
|
||||||
1: lis r0,0x0E00 /* depth=7 */
|
|
||||||
sldi r7,r7,7
|
|
||||||
or r7,r7,r0
|
|
||||||
ori r10,r7,1 /* stream=1 */
|
|
||||||
|
|
||||||
lis r8,0x8000 /* GO=1 */
|
|
||||||
clrldi r8,r8,32
|
|
||||||
|
|
||||||
.machine push
|
|
||||||
.machine "power4"
|
|
||||||
dcbt r0,r6,0b01000
|
|
||||||
dcbt r0,r7,0b01010
|
|
||||||
dcbtst r0,r9,0b01000
|
|
||||||
dcbtst r0,r10,0b01010
|
|
||||||
eieio
|
|
||||||
dcbt r0,r8,0b01010 /* GO */
|
|
||||||
.machine pop
|
|
||||||
|
|
||||||
beq .Lunwind_stack_nonvmx_copy
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If source and destination are not relatively aligned we use a
|
* If source and destination are not relatively aligned we use a
|
||||||
|
@ -222,7 +222,7 @@ _GLOBAL(memcpy_power7)
|
|||||||
std r0,16(r1)
|
std r0,16(r1)
|
||||||
stdu r1,-STACKFRAMESIZE(r1)
|
stdu r1,-STACKFRAMESIZE(r1)
|
||||||
bl .enter_vmx_copy
|
bl .enter_vmx_copy
|
||||||
cmpwi r3,0
|
cmpwi cr1,r3,0
|
||||||
ld r0,STACKFRAMESIZE+16(r1)
|
ld r0,STACKFRAMESIZE+16(r1)
|
||||||
ld r3,STACKFRAMESIZE+48(r1)
|
ld r3,STACKFRAMESIZE+48(r1)
|
||||||
ld r4,STACKFRAMESIZE+56(r1)
|
ld r4,STACKFRAMESIZE+56(r1)
|
||||||
@ -260,7 +260,7 @@ _GLOBAL(memcpy_power7)
|
|||||||
dcbt r0,r8,0b01010 /* GO */
|
dcbt r0,r8,0b01010 /* GO */
|
||||||
.machine pop
|
.machine pop
|
||||||
|
|
||||||
beq .Lunwind_stack_nonvmx_copy
|
beq cr1,.Lunwind_stack_nonvmx_copy
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If source and destination are not relatively aligned we use a
|
* If source and destination are not relatively aligned we use a
|
||||||
|
@ -469,6 +469,7 @@ void flush_dcache_icache_page(struct page *page)
|
|||||||
__flush_dcache_icache_phys(page_to_pfn(page) << PAGE_SHIFT);
|
__flush_dcache_icache_phys(page_to_pfn(page) << PAGE_SHIFT);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(flush_dcache_icache_page);
|
||||||
|
|
||||||
void clear_user_page(void *page, unsigned long vaddr, struct page *pg)
|
void clear_user_page(void *page, unsigned long vaddr, struct page *pg)
|
||||||
{
|
{
|
||||||
|
@ -1431,7 +1431,7 @@ static void perf_event_interrupt(struct pt_regs *regs)
|
|||||||
if (!event->hw.idx || is_limited_pmc(event->hw.idx))
|
if (!event->hw.idx || is_limited_pmc(event->hw.idx))
|
||||||
continue;
|
continue;
|
||||||
val = read_pmc(event->hw.idx);
|
val = read_pmc(event->hw.idx);
|
||||||
if ((int)val < 0) {
|
if (pmc_overflow(val)) {
|
||||||
/* event has overflowed */
|
/* event has overflowed */
|
||||||
found = 1;
|
found = 1;
|
||||||
record_and_restart(event, val, regs);
|
record_and_restart(event, val, regs);
|
||||||
|
@ -465,7 +465,7 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
|
|||||||
iounmap(hose->cfg_data);
|
iounmap(hose->cfg_data);
|
||||||
iounmap(hose->cfg_addr);
|
iounmap(hose->cfg_addr);
|
||||||
pcibios_free_controller(hose);
|
pcibios_free_controller(hose);
|
||||||
return 0;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_pci_cmd(hose);
|
setup_pci_cmd(hose);
|
||||||
@ -827,6 +827,7 @@ struct device_node *fsl_pci_primary;
|
|||||||
|
|
||||||
void __devinit fsl_pci_init(void)
|
void __devinit fsl_pci_init(void)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
struct device_node *node;
|
struct device_node *node;
|
||||||
struct pci_controller *hose;
|
struct pci_controller *hose;
|
||||||
dma_addr_t max = 0xffffffff;
|
dma_addr_t max = 0xffffffff;
|
||||||
@ -855,10 +856,12 @@ void __devinit fsl_pci_init(void)
|
|||||||
if (!fsl_pci_primary)
|
if (!fsl_pci_primary)
|
||||||
fsl_pci_primary = node;
|
fsl_pci_primary = node;
|
||||||
|
|
||||||
fsl_add_bridge(node, fsl_pci_primary == node);
|
ret = fsl_add_bridge(node, fsl_pci_primary == node);
|
||||||
hose = pci_find_hose_for_OF_device(node);
|
if (ret == 0) {
|
||||||
max = min(max, hose->dma_window_base_cur +
|
hose = pci_find_hose_for_OF_device(node);
|
||||||
hose->dma_window_size);
|
max = min(max, hose->dma_window_base_cur +
|
||||||
|
hose->dma_window_size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,9 @@
|
|||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/of_platform.h>
|
#include <linux/of_platform.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
|
#include <linux/err.h>
|
||||||
|
#include <linux/export.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
#include <asm/prom.h>
|
#include <asm/prom.h>
|
||||||
#include <asm/hw_irq.h>
|
#include <asm/hw_irq.h>
|
||||||
#include <asm/ppc-pci.h>
|
#include <asm/ppc-pci.h>
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include <linux/reboot.h>
|
#include <linux/reboot.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/kallsyms.h>
|
#include <linux/kallsyms.h>
|
||||||
|
#include <linux/kmsg_dump.h>
|
||||||
#include <linux/cpumask.h>
|
#include <linux/cpumask.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/sysrq.h>
|
#include <linux/sysrq.h>
|
||||||
@ -894,13 +895,13 @@ cmds(struct pt_regs *excp)
|
|||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
printf("Unrecognized command: ");
|
printf("Unrecognized command: ");
|
||||||
do {
|
do {
|
||||||
if (' ' < cmd && cmd <= '~')
|
if (' ' < cmd && cmd <= '~')
|
||||||
putchar(cmd);
|
putchar(cmd);
|
||||||
else
|
else
|
||||||
printf("\\x%x", cmd);
|
printf("\\x%x", cmd);
|
||||||
cmd = inchar();
|
cmd = inchar();
|
||||||
} while (cmd != '\n');
|
} while (cmd != '\n');
|
||||||
printf(" (type ? for help)\n");
|
printf(" (type ? for help)\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1097,7 +1098,7 @@ static long check_bp_loc(unsigned long addr)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *breakpoint_help_string =
|
static char *breakpoint_help_string =
|
||||||
"Breakpoint command usage:\n"
|
"Breakpoint command usage:\n"
|
||||||
"b show breakpoints\n"
|
"b show breakpoints\n"
|
||||||
"b <addr> [cnt] set breakpoint at given instr addr\n"
|
"b <addr> [cnt] set breakpoint at given instr addr\n"
|
||||||
@ -1193,7 +1194,7 @@ bpt_cmds(void)
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
termch = cmd;
|
termch = cmd;
|
||||||
cmd = skipbl();
|
cmd = skipbl();
|
||||||
if (cmd == '?') {
|
if (cmd == '?') {
|
||||||
printf(breakpoint_help_string);
|
printf(breakpoint_help_string);
|
||||||
break;
|
break;
|
||||||
@ -1359,7 +1360,7 @@ static void xmon_show_stack(unsigned long sp, unsigned long lr,
|
|||||||
sp + REGS_OFFSET);
|
sp + REGS_OFFSET);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf("--- Exception: %lx %s at ", regs.trap,
|
printf("--- Exception: %lx %s at ", regs.trap,
|
||||||
getvecname(TRAP(®s)));
|
getvecname(TRAP(®s)));
|
||||||
pc = regs.nip;
|
pc = regs.nip;
|
||||||
lr = regs.link;
|
lr = regs.link;
|
||||||
@ -1623,14 +1624,14 @@ static void super_regs(void)
|
|||||||
|
|
||||||
cmd = skipbl();
|
cmd = skipbl();
|
||||||
if (cmd == '\n') {
|
if (cmd == '\n') {
|
||||||
unsigned long sp, toc;
|
unsigned long sp, toc;
|
||||||
asm("mr %0,1" : "=r" (sp) :);
|
asm("mr %0,1" : "=r" (sp) :);
|
||||||
asm("mr %0,2" : "=r" (toc) :);
|
asm("mr %0,2" : "=r" (toc) :);
|
||||||
|
|
||||||
printf("msr = "REG" sprg0= "REG"\n",
|
printf("msr = "REG" sprg0= "REG"\n",
|
||||||
mfmsr(), mfspr(SPRN_SPRG0));
|
mfmsr(), mfspr(SPRN_SPRG0));
|
||||||
printf("pvr = "REG" sprg1= "REG"\n",
|
printf("pvr = "REG" sprg1= "REG"\n",
|
||||||
mfspr(SPRN_PVR), mfspr(SPRN_SPRG1));
|
mfspr(SPRN_PVR), mfspr(SPRN_SPRG1));
|
||||||
printf("dec = "REG" sprg2= "REG"\n",
|
printf("dec = "REG" sprg2= "REG"\n",
|
||||||
mfspr(SPRN_DEC), mfspr(SPRN_SPRG2));
|
mfspr(SPRN_DEC), mfspr(SPRN_SPRG2));
|
||||||
printf("sp = "REG" sprg3= "REG"\n", sp, mfspr(SPRN_SPRG3));
|
printf("sp = "REG" sprg3= "REG"\n", sp, mfspr(SPRN_SPRG3));
|
||||||
@ -1783,7 +1784,7 @@ byterev(unsigned char *val, int size)
|
|||||||
static int brev;
|
static int brev;
|
||||||
static int mnoread;
|
static int mnoread;
|
||||||
|
|
||||||
static char *memex_help_string =
|
static char *memex_help_string =
|
||||||
"Memory examine command usage:\n"
|
"Memory examine command usage:\n"
|
||||||
"m [addr] [flags] examine/change memory\n"
|
"m [addr] [flags] examine/change memory\n"
|
||||||
" addr is optional. will start where left off.\n"
|
" addr is optional. will start where left off.\n"
|
||||||
@ -1798,7 +1799,7 @@ static char *memex_help_string =
|
|||||||
"NOTE: flags are saved as defaults\n"
|
"NOTE: flags are saved as defaults\n"
|
||||||
"";
|
"";
|
||||||
|
|
||||||
static char *memex_subcmd_help_string =
|
static char *memex_subcmd_help_string =
|
||||||
"Memory examine subcommands:\n"
|
"Memory examine subcommands:\n"
|
||||||
" hexval write this val to current location\n"
|
" hexval write this val to current location\n"
|
||||||
" 'string' write chars from string to this location\n"
|
" 'string' write chars from string to this location\n"
|
||||||
@ -2064,7 +2065,7 @@ prdump(unsigned long adrs, long ndump)
|
|||||||
nr = mread(adrs, temp, r);
|
nr = mread(adrs, temp, r);
|
||||||
adrs += nr;
|
adrs += nr;
|
||||||
for (m = 0; m < r; ++m) {
|
for (m = 0; m < r; ++m) {
|
||||||
if ((m & (sizeof(long) - 1)) == 0 && m > 0)
|
if ((m & (sizeof(long) - 1)) == 0 && m > 0)
|
||||||
putchar(' ');
|
putchar(' ');
|
||||||
if (m < nr)
|
if (m < nr)
|
||||||
printf("%.2x", temp[m]);
|
printf("%.2x", temp[m]);
|
||||||
@ -2072,7 +2073,7 @@ prdump(unsigned long adrs, long ndump)
|
|||||||
printf("%s", fault_chars[fault_type]);
|
printf("%s", fault_chars[fault_type]);
|
||||||
}
|
}
|
||||||
for (; m < 16; ++m) {
|
for (; m < 16; ++m) {
|
||||||
if ((m & (sizeof(long) - 1)) == 0)
|
if ((m & (sizeof(long) - 1)) == 0)
|
||||||
putchar(' ');
|
putchar(' ');
|
||||||
printf(" ");
|
printf(" ");
|
||||||
}
|
}
|
||||||
@ -2148,45 +2149,28 @@ print_address(unsigned long addr)
|
|||||||
void
|
void
|
||||||
dump_log_buf(void)
|
dump_log_buf(void)
|
||||||
{
|
{
|
||||||
const unsigned long size = 128;
|
struct kmsg_dumper dumper = { .active = 1 };
|
||||||
unsigned long end, addr;
|
unsigned char buf[128];
|
||||||
unsigned char buf[size + 1];
|
size_t len;
|
||||||
|
|
||||||
addr = 0;
|
if (setjmp(bus_error_jmp) != 0) {
|
||||||
buf[size] = '\0';
|
printf("Error dumping printk buffer!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (setjmp(bus_error_jmp) != 0) {
|
catch_memory_errors = 1;
|
||||||
printf("Unable to lookup symbol __log_buf!\n");
|
sync();
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
catch_memory_errors = 1;
|
kmsg_dump_rewind_nolock(&dumper);
|
||||||
sync();
|
while (kmsg_dump_get_line_nolock(&dumper, false, buf, sizeof(buf), &len)) {
|
||||||
addr = kallsyms_lookup_name("__log_buf");
|
buf[len] = '\0';
|
||||||
|
printf("%s", buf);
|
||||||
|
}
|
||||||
|
|
||||||
if (! addr)
|
sync();
|
||||||
printf("Symbol __log_buf not found!\n");
|
/* wait a little while to see if we get a machine check */
|
||||||
else {
|
__delay(200);
|
||||||
end = addr + (1 << CONFIG_LOG_BUF_SHIFT);
|
catch_memory_errors = 0;
|
||||||
while (addr < end) {
|
|
||||||
if (! mread(addr, buf, size)) {
|
|
||||||
printf("Can't read memory at address 0x%lx\n", addr);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("%s", buf);
|
|
||||||
|
|
||||||
if (strlen(buf) < size)
|
|
||||||
break;
|
|
||||||
|
|
||||||
addr += size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sync();
|
|
||||||
/* wait a little while to see if we get a machine check */
|
|
||||||
__delay(200);
|
|
||||||
catch_memory_errors = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -475,13 +475,26 @@ register_address(struct x86_emulate_ctxt *ctxt, unsigned long reg)
|
|||||||
return address_mask(ctxt, reg);
|
return address_mask(ctxt, reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void masked_increment(ulong *reg, ulong mask, int inc)
|
||||||
|
{
|
||||||
|
assign_masked(reg, *reg + inc, mask);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
register_address_increment(struct x86_emulate_ctxt *ctxt, unsigned long *reg, int inc)
|
register_address_increment(struct x86_emulate_ctxt *ctxt, unsigned long *reg, int inc)
|
||||||
{
|
{
|
||||||
|
ulong mask;
|
||||||
|
|
||||||
if (ctxt->ad_bytes == sizeof(unsigned long))
|
if (ctxt->ad_bytes == sizeof(unsigned long))
|
||||||
*reg += inc;
|
mask = ~0UL;
|
||||||
else
|
else
|
||||||
*reg = (*reg & ~ad_mask(ctxt)) | ((*reg + inc) & ad_mask(ctxt));
|
mask = ad_mask(ctxt);
|
||||||
|
masked_increment(reg, mask, inc);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void rsp_increment(struct x86_emulate_ctxt *ctxt, int inc)
|
||||||
|
{
|
||||||
|
masked_increment(&ctxt->regs[VCPU_REGS_RSP], stack_mask(ctxt), inc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void jmp_rel(struct x86_emulate_ctxt *ctxt, int rel)
|
static inline void jmp_rel(struct x86_emulate_ctxt *ctxt, int rel)
|
||||||
@ -1522,8 +1535,8 @@ static int push(struct x86_emulate_ctxt *ctxt, void *data, int bytes)
|
|||||||
{
|
{
|
||||||
struct segmented_address addr;
|
struct segmented_address addr;
|
||||||
|
|
||||||
register_address_increment(ctxt, &ctxt->regs[VCPU_REGS_RSP], -bytes);
|
rsp_increment(ctxt, -bytes);
|
||||||
addr.ea = register_address(ctxt, ctxt->regs[VCPU_REGS_RSP]);
|
addr.ea = ctxt->regs[VCPU_REGS_RSP] & stack_mask(ctxt);
|
||||||
addr.seg = VCPU_SREG_SS;
|
addr.seg = VCPU_SREG_SS;
|
||||||
|
|
||||||
return segmented_write(ctxt, addr, data, bytes);
|
return segmented_write(ctxt, addr, data, bytes);
|
||||||
@ -1542,13 +1555,13 @@ static int emulate_pop(struct x86_emulate_ctxt *ctxt,
|
|||||||
int rc;
|
int rc;
|
||||||
struct segmented_address addr;
|
struct segmented_address addr;
|
||||||
|
|
||||||
addr.ea = register_address(ctxt, ctxt->regs[VCPU_REGS_RSP]);
|
addr.ea = ctxt->regs[VCPU_REGS_RSP] & stack_mask(ctxt);
|
||||||
addr.seg = VCPU_SREG_SS;
|
addr.seg = VCPU_SREG_SS;
|
||||||
rc = segmented_read(ctxt, addr, dest, len);
|
rc = segmented_read(ctxt, addr, dest, len);
|
||||||
if (rc != X86EMUL_CONTINUE)
|
if (rc != X86EMUL_CONTINUE)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
register_address_increment(ctxt, &ctxt->regs[VCPU_REGS_RSP], len);
|
rsp_increment(ctxt, len);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1688,8 +1701,7 @@ static int em_popa(struct x86_emulate_ctxt *ctxt)
|
|||||||
|
|
||||||
while (reg >= VCPU_REGS_RAX) {
|
while (reg >= VCPU_REGS_RAX) {
|
||||||
if (reg == VCPU_REGS_RSP) {
|
if (reg == VCPU_REGS_RSP) {
|
||||||
register_address_increment(ctxt, &ctxt->regs[VCPU_REGS_RSP],
|
rsp_increment(ctxt, ctxt->op_bytes);
|
||||||
ctxt->op_bytes);
|
|
||||||
--reg;
|
--reg;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2825,7 +2837,7 @@ static int em_ret_near_imm(struct x86_emulate_ctxt *ctxt)
|
|||||||
rc = emulate_pop(ctxt, &ctxt->dst.val, ctxt->op_bytes);
|
rc = emulate_pop(ctxt, &ctxt->dst.val, ctxt->op_bytes);
|
||||||
if (rc != X86EMUL_CONTINUE)
|
if (rc != X86EMUL_CONTINUE)
|
||||||
return rc;
|
return rc;
|
||||||
register_address_increment(ctxt, &ctxt->regs[VCPU_REGS_RSP], ctxt->src.val);
|
rsp_increment(ctxt, ctxt->src.val);
|
||||||
return X86EMUL_CONTINUE;
|
return X86EMUL_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4112,17 +4112,22 @@ static int mmu_shrink(struct shrinker *shrink, struct shrink_control *sc)
|
|||||||
int idx;
|
int idx;
|
||||||
LIST_HEAD(invalid_list);
|
LIST_HEAD(invalid_list);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Never scan more than sc->nr_to_scan VM instances.
|
||||||
|
* Will not hit this condition practically since we do not try
|
||||||
|
* to shrink more than one VM and it is very unlikely to see
|
||||||
|
* !n_used_mmu_pages so many times.
|
||||||
|
*/
|
||||||
|
if (!nr_to_scan--)
|
||||||
|
break;
|
||||||
/*
|
/*
|
||||||
* n_used_mmu_pages is accessed without holding kvm->mmu_lock
|
* n_used_mmu_pages is accessed without holding kvm->mmu_lock
|
||||||
* here. We may skip a VM instance errorneosly, but we do not
|
* here. We may skip a VM instance errorneosly, but we do not
|
||||||
* want to shrink a VM that only started to populate its MMU
|
* want to shrink a VM that only started to populate its MMU
|
||||||
* anyway.
|
* anyway.
|
||||||
*/
|
*/
|
||||||
if (kvm->arch.n_used_mmu_pages > 0) {
|
if (!kvm->arch.n_used_mmu_pages)
|
||||||
if (!nr_to_scan--)
|
|
||||||
break;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
idx = srcu_read_lock(&kvm->srcu);
|
idx = srcu_read_lock(&kvm->srcu);
|
||||||
spin_lock(&kvm->mmu_lock);
|
spin_lock(&kvm->mmu_lock);
|
||||||
|
@ -806,7 +806,7 @@ EXPORT_SYMBOL_GPL(kvm_rdpmc);
|
|||||||
* kvm-specific. Those are put in the beginning of the list.
|
* kvm-specific. Those are put in the beginning of the list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define KVM_SAVE_MSRS_BEGIN 9
|
#define KVM_SAVE_MSRS_BEGIN 10
|
||||||
static u32 msrs_to_save[] = {
|
static u32 msrs_to_save[] = {
|
||||||
MSR_KVM_SYSTEM_TIME, MSR_KVM_WALL_CLOCK,
|
MSR_KVM_SYSTEM_TIME, MSR_KVM_WALL_CLOCK,
|
||||||
MSR_KVM_SYSTEM_TIME_NEW, MSR_KVM_WALL_CLOCK_NEW,
|
MSR_KVM_SYSTEM_TIME_NEW, MSR_KVM_WALL_CLOCK_NEW,
|
||||||
|
@ -31,7 +31,6 @@
|
|||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/gfp.h>
|
#include <linux/gfp.h>
|
||||||
#include <linux/memblock.h>
|
#include <linux/memblock.h>
|
||||||
#include <linux/syscore_ops.h>
|
|
||||||
|
|
||||||
#include <xen/xen.h>
|
#include <xen/xen.h>
|
||||||
#include <xen/interface/xen.h>
|
#include <xen/interface/xen.h>
|
||||||
@ -1470,130 +1469,38 @@ asmlinkage void __init xen_start_kernel(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_XEN_PVHVM
|
void __ref xen_hvm_init_shared_info(void)
|
||||||
/*
|
|
||||||
* The pfn containing the shared_info is located somewhere in RAM. This
|
|
||||||
* will cause trouble if the current kernel is doing a kexec boot into a
|
|
||||||
* new kernel. The new kernel (and its startup code) can not know where
|
|
||||||
* the pfn is, so it can not reserve the page. The hypervisor will
|
|
||||||
* continue to update the pfn, and as a result memory corruption occours
|
|
||||||
* in the new kernel.
|
|
||||||
*
|
|
||||||
* One way to work around this issue is to allocate a page in the
|
|
||||||
* xen-platform pci device's BAR memory range. But pci init is done very
|
|
||||||
* late and the shared_info page is already in use very early to read
|
|
||||||
* the pvclock. So moving the pfn from RAM to MMIO is racy because some
|
|
||||||
* code paths on other vcpus could access the pfn during the small
|
|
||||||
* window when the old pfn is moved to the new pfn. There is even a
|
|
||||||
* small window were the old pfn is not backed by a mfn, and during that
|
|
||||||
* time all reads return -1.
|
|
||||||
*
|
|
||||||
* Because it is not known upfront where the MMIO region is located it
|
|
||||||
* can not be used right from the start in xen_hvm_init_shared_info.
|
|
||||||
*
|
|
||||||
* To minimise trouble the move of the pfn is done shortly before kexec.
|
|
||||||
* This does not eliminate the race because all vcpus are still online
|
|
||||||
* when the syscore_ops will be called. But hopefully there is no work
|
|
||||||
* pending at this point in time. Also the syscore_op is run last which
|
|
||||||
* reduces the risk further.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static struct shared_info *xen_hvm_shared_info;
|
|
||||||
|
|
||||||
static void xen_hvm_connect_shared_info(unsigned long pfn)
|
|
||||||
{
|
{
|
||||||
|
int cpu;
|
||||||
struct xen_add_to_physmap xatp;
|
struct xen_add_to_physmap xatp;
|
||||||
|
static struct shared_info *shared_info_page = 0;
|
||||||
|
|
||||||
|
if (!shared_info_page)
|
||||||
|
shared_info_page = (struct shared_info *)
|
||||||
|
extend_brk(PAGE_SIZE, PAGE_SIZE);
|
||||||
xatp.domid = DOMID_SELF;
|
xatp.domid = DOMID_SELF;
|
||||||
xatp.idx = 0;
|
xatp.idx = 0;
|
||||||
xatp.space = XENMAPSPACE_shared_info;
|
xatp.space = XENMAPSPACE_shared_info;
|
||||||
xatp.gpfn = pfn;
|
xatp.gpfn = __pa(shared_info_page) >> PAGE_SHIFT;
|
||||||
if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp))
|
if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp))
|
||||||
BUG();
|
BUG();
|
||||||
|
|
||||||
}
|
HYPERVISOR_shared_info = (struct shared_info *)shared_info_page;
|
||||||
static void xen_hvm_set_shared_info(struct shared_info *sip)
|
|
||||||
{
|
|
||||||
int cpu;
|
|
||||||
|
|
||||||
HYPERVISOR_shared_info = sip;
|
|
||||||
|
|
||||||
/* xen_vcpu is a pointer to the vcpu_info struct in the shared_info
|
/* xen_vcpu is a pointer to the vcpu_info struct in the shared_info
|
||||||
* page, we use it in the event channel upcall and in some pvclock
|
* page, we use it in the event channel upcall and in some pvclock
|
||||||
* related functions. We don't need the vcpu_info placement
|
* related functions. We don't need the vcpu_info placement
|
||||||
* optimizations because we don't use any pv_mmu or pv_irq op on
|
* optimizations because we don't use any pv_mmu or pv_irq op on
|
||||||
* HVM.
|
* HVM.
|
||||||
* When xen_hvm_set_shared_info is run at boot time only vcpu 0 is
|
* When xen_hvm_init_shared_info is run at boot time only vcpu 0 is
|
||||||
* online but xen_hvm_set_shared_info is run at resume time too and
|
* online but xen_hvm_init_shared_info is run at resume time too and
|
||||||
* in that case multiple vcpus might be online. */
|
* in that case multiple vcpus might be online. */
|
||||||
for_each_online_cpu(cpu) {
|
for_each_online_cpu(cpu) {
|
||||||
per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu];
|
per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reconnect the shared_info pfn to a mfn */
|
#ifdef CONFIG_XEN_PVHVM
|
||||||
void xen_hvm_resume_shared_info(void)
|
|
||||||
{
|
|
||||||
xen_hvm_connect_shared_info(__pa(xen_hvm_shared_info) >> PAGE_SHIFT);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_KEXEC
|
|
||||||
static struct shared_info *xen_hvm_shared_info_kexec;
|
|
||||||
static unsigned long xen_hvm_shared_info_pfn_kexec;
|
|
||||||
|
|
||||||
/* Remember a pfn in MMIO space for kexec reboot */
|
|
||||||
void __devinit xen_hvm_prepare_kexec(struct shared_info *sip, unsigned long pfn)
|
|
||||||
{
|
|
||||||
xen_hvm_shared_info_kexec = sip;
|
|
||||||
xen_hvm_shared_info_pfn_kexec = pfn;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void xen_hvm_syscore_shutdown(void)
|
|
||||||
{
|
|
||||||
struct xen_memory_reservation reservation = {
|
|
||||||
.domid = DOMID_SELF,
|
|
||||||
.nr_extents = 1,
|
|
||||||
};
|
|
||||||
unsigned long prev_pfn;
|
|
||||||
int rc;
|
|
||||||
|
|
||||||
if (!xen_hvm_shared_info_kexec)
|
|
||||||
return;
|
|
||||||
|
|
||||||
prev_pfn = __pa(xen_hvm_shared_info) >> PAGE_SHIFT;
|
|
||||||
set_xen_guest_handle(reservation.extent_start, &prev_pfn);
|
|
||||||
|
|
||||||
/* Move pfn to MMIO, disconnects previous pfn from mfn */
|
|
||||||
xen_hvm_connect_shared_info(xen_hvm_shared_info_pfn_kexec);
|
|
||||||
|
|
||||||
/* Update pointers, following hypercall is also a memory barrier */
|
|
||||||
xen_hvm_set_shared_info(xen_hvm_shared_info_kexec);
|
|
||||||
|
|
||||||
/* Allocate new mfn for previous pfn */
|
|
||||||
do {
|
|
||||||
rc = HYPERVISOR_memory_op(XENMEM_populate_physmap, &reservation);
|
|
||||||
if (rc == 0)
|
|
||||||
msleep(123);
|
|
||||||
} while (rc == 0);
|
|
||||||
|
|
||||||
/* Make sure the previous pfn is really connected to a (new) mfn */
|
|
||||||
BUG_ON(rc != 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct syscore_ops xen_hvm_syscore_ops = {
|
|
||||||
.shutdown = xen_hvm_syscore_shutdown,
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Use a pfn in RAM, may move to MMIO before kexec. */
|
|
||||||
static void __init xen_hvm_init_shared_info(void)
|
|
||||||
{
|
|
||||||
/* Remember pointer for resume */
|
|
||||||
xen_hvm_shared_info = extend_brk(PAGE_SIZE, PAGE_SIZE);
|
|
||||||
xen_hvm_connect_shared_info(__pa(xen_hvm_shared_info) >> PAGE_SHIFT);
|
|
||||||
xen_hvm_set_shared_info(xen_hvm_shared_info);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init init_hvm_pv_info(void)
|
static void __init init_hvm_pv_info(void)
|
||||||
{
|
{
|
||||||
int major, minor;
|
int major, minor;
|
||||||
@ -1644,9 +1551,6 @@ static void __init xen_hvm_guest_init(void)
|
|||||||
init_hvm_pv_info();
|
init_hvm_pv_info();
|
||||||
|
|
||||||
xen_hvm_init_shared_info();
|
xen_hvm_init_shared_info();
|
||||||
#ifdef CONFIG_KEXEC
|
|
||||||
register_syscore_ops(&xen_hvm_syscore_ops);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (xen_feature(XENFEAT_hvm_callback_vector))
|
if (xen_feature(XENFEAT_hvm_callback_vector))
|
||||||
xen_have_vector_callback = 1;
|
xen_have_vector_callback = 1;
|
||||||
|
@ -196,9 +196,11 @@ RESERVE_BRK(p2m_mid_identity, PAGE_SIZE * 2 * 3);
|
|||||||
|
|
||||||
/* When we populate back during bootup, the amount of pages can vary. The
|
/* When we populate back during bootup, the amount of pages can vary. The
|
||||||
* max we have is seen is 395979, but that does not mean it can't be more.
|
* max we have is seen is 395979, but that does not mean it can't be more.
|
||||||
* But some machines can have 3GB I/O holes even. So lets reserve enough
|
* Some machines can have 3GB I/O holes even. With early_can_reuse_p2m_middle
|
||||||
* for 4GB of I/O and E820 holes. */
|
* it can re-use Xen provided mfn_list array, so we only need to allocate at
|
||||||
RESERVE_BRK(p2m_populated, PMD_SIZE * 4);
|
* most three P2M top nodes. */
|
||||||
|
RESERVE_BRK(p2m_populated, PAGE_SIZE * 3);
|
||||||
|
|
||||||
static inline unsigned p2m_top_index(unsigned long pfn)
|
static inline unsigned p2m_top_index(unsigned long pfn)
|
||||||
{
|
{
|
||||||
BUG_ON(pfn >= MAX_P2M_PFN);
|
BUG_ON(pfn >= MAX_P2M_PFN);
|
||||||
@ -575,12 +577,99 @@ static bool __init early_alloc_p2m(unsigned long pfn)
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Skim over the P2M tree looking at pages that are either filled with
|
||||||
|
* INVALID_P2M_ENTRY or with 1:1 PFNs. If found, re-use that page and
|
||||||
|
* replace the P2M leaf with a p2m_missing or p2m_identity.
|
||||||
|
* Stick the old page in the new P2M tree location.
|
||||||
|
*/
|
||||||
|
bool __init early_can_reuse_p2m_middle(unsigned long set_pfn, unsigned long set_mfn)
|
||||||
|
{
|
||||||
|
unsigned topidx;
|
||||||
|
unsigned mididx;
|
||||||
|
unsigned ident_pfns;
|
||||||
|
unsigned inv_pfns;
|
||||||
|
unsigned long *p2m;
|
||||||
|
unsigned long *mid_mfn_p;
|
||||||
|
unsigned idx;
|
||||||
|
unsigned long pfn;
|
||||||
|
|
||||||
|
/* We only look when this entails a P2M middle layer */
|
||||||
|
if (p2m_index(set_pfn))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (pfn = 0; pfn <= MAX_DOMAIN_PAGES; pfn += P2M_PER_PAGE) {
|
||||||
|
topidx = p2m_top_index(pfn);
|
||||||
|
|
||||||
|
if (!p2m_top[topidx])
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (p2m_top[topidx] == p2m_mid_missing)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
mididx = p2m_mid_index(pfn);
|
||||||
|
p2m = p2m_top[topidx][mididx];
|
||||||
|
if (!p2m)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ((p2m == p2m_missing) || (p2m == p2m_identity))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ((unsigned long)p2m == INVALID_P2M_ENTRY)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ident_pfns = 0;
|
||||||
|
inv_pfns = 0;
|
||||||
|
for (idx = 0; idx < P2M_PER_PAGE; idx++) {
|
||||||
|
/* IDENTITY_PFNs are 1:1 */
|
||||||
|
if (p2m[idx] == IDENTITY_FRAME(pfn + idx))
|
||||||
|
ident_pfns++;
|
||||||
|
else if (p2m[idx] == INVALID_P2M_ENTRY)
|
||||||
|
inv_pfns++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((ident_pfns == P2M_PER_PAGE) || (inv_pfns == P2M_PER_PAGE))
|
||||||
|
goto found;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
found:
|
||||||
|
/* Found one, replace old with p2m_identity or p2m_missing */
|
||||||
|
p2m_top[topidx][mididx] = (ident_pfns ? p2m_identity : p2m_missing);
|
||||||
|
/* And the other for save/restore.. */
|
||||||
|
mid_mfn_p = p2m_top_mfn_p[topidx];
|
||||||
|
/* NOTE: Even if it is a p2m_identity it should still be point to
|
||||||
|
* a page filled with INVALID_P2M_ENTRY entries. */
|
||||||
|
mid_mfn_p[mididx] = virt_to_mfn(p2m_missing);
|
||||||
|
|
||||||
|
/* Reset where we want to stick the old page in. */
|
||||||
|
topidx = p2m_top_index(set_pfn);
|
||||||
|
mididx = p2m_mid_index(set_pfn);
|
||||||
|
|
||||||
|
/* This shouldn't happen */
|
||||||
|
if (WARN_ON(p2m_top[topidx] == p2m_mid_missing))
|
||||||
|
early_alloc_p2m(set_pfn);
|
||||||
|
|
||||||
|
if (WARN_ON(p2m_top[topidx][mididx] != p2m_missing))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
p2m_init(p2m);
|
||||||
|
p2m_top[topidx][mididx] = p2m;
|
||||||
|
mid_mfn_p = p2m_top_mfn_p[topidx];
|
||||||
|
mid_mfn_p[mididx] = virt_to_mfn(p2m);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
bool __init early_set_phys_to_machine(unsigned long pfn, unsigned long mfn)
|
bool __init early_set_phys_to_machine(unsigned long pfn, unsigned long mfn)
|
||||||
{
|
{
|
||||||
if (unlikely(!__set_phys_to_machine(pfn, mfn))) {
|
if (unlikely(!__set_phys_to_machine(pfn, mfn))) {
|
||||||
if (!early_alloc_p2m(pfn))
|
if (!early_alloc_p2m(pfn))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (early_can_reuse_p2m_middle(pfn, mfn))
|
||||||
|
return __set_phys_to_machine(pfn, mfn);
|
||||||
|
|
||||||
if (!early_alloc_p2m_middle(pfn, false /* boundary crossover OK!*/))
|
if (!early_alloc_p2m_middle(pfn, false /* boundary crossover OK!*/))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -78,9 +78,16 @@ static void __init xen_add_extra_mem(u64 start, u64 size)
|
|||||||
memblock_reserve(start, size);
|
memblock_reserve(start, size);
|
||||||
|
|
||||||
xen_max_p2m_pfn = PFN_DOWN(start + size);
|
xen_max_p2m_pfn = PFN_DOWN(start + size);
|
||||||
|
for (pfn = PFN_DOWN(start); pfn < xen_max_p2m_pfn; pfn++) {
|
||||||
|
unsigned long mfn = pfn_to_mfn(pfn);
|
||||||
|
|
||||||
|
if (WARN(mfn == pfn, "Trying to over-write 1-1 mapping (pfn: %lx)\n", pfn))
|
||||||
|
continue;
|
||||||
|
WARN(mfn != INVALID_P2M_ENTRY, "Trying to remove %lx which has %lx mfn!\n",
|
||||||
|
pfn, mfn);
|
||||||
|
|
||||||
for (pfn = PFN_DOWN(start); pfn <= xen_max_p2m_pfn; pfn++)
|
|
||||||
__set_phys_to_machine(pfn, INVALID_P2M_ENTRY);
|
__set_phys_to_machine(pfn, INVALID_P2M_ENTRY);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned long __init xen_do_chunk(unsigned long start,
|
static unsigned long __init xen_do_chunk(unsigned long start,
|
||||||
|
@ -30,7 +30,7 @@ void xen_arch_hvm_post_suspend(int suspend_cancelled)
|
|||||||
{
|
{
|
||||||
#ifdef CONFIG_XEN_PVHVM
|
#ifdef CONFIG_XEN_PVHVM
|
||||||
int cpu;
|
int cpu;
|
||||||
xen_hvm_resume_shared_info();
|
xen_hvm_init_shared_info();
|
||||||
xen_callback_vector();
|
xen_callback_vector();
|
||||||
xen_unplug_emulated_devices();
|
xen_unplug_emulated_devices();
|
||||||
if (xen_feature(XENFEAT_hvm_safe_pvclock)) {
|
if (xen_feature(XENFEAT_hvm_safe_pvclock)) {
|
||||||
|
@ -41,7 +41,7 @@ void xen_enable_syscall(void);
|
|||||||
void xen_vcpu_restore(void);
|
void xen_vcpu_restore(void);
|
||||||
|
|
||||||
void xen_callback_vector(void);
|
void xen_callback_vector(void);
|
||||||
void xen_hvm_resume_shared_info(void);
|
void xen_hvm_init_shared_info(void);
|
||||||
void xen_unplug_emulated_devices(void);
|
void xen_unplug_emulated_devices(void);
|
||||||
|
|
||||||
void __init xen_build_dynamic_phys_to_machine(void);
|
void __init xen_build_dynamic_phys_to_machine(void);
|
||||||
|
@ -218,7 +218,7 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
|
|||||||
|
|
||||||
policy->cur = policy->min = policy->max = omap_getspeed(policy->cpu);
|
policy->cur = policy->min = policy->max = omap_getspeed(policy->cpu);
|
||||||
|
|
||||||
if (atomic_inc_return(&freq_table_users) == 1)
|
if (!freq_table)
|
||||||
result = opp_init_cpufreq_table(mpu_dev, &freq_table);
|
result = opp_init_cpufreq_table(mpu_dev, &freq_table);
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
@ -227,6 +227,8 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
|
|||||||
goto fail_ck;
|
goto fail_ck;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
atomic_inc_return(&freq_table_users);
|
||||||
|
|
||||||
result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
|
result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
|
||||||
if (result)
|
if (result)
|
||||||
goto fail_table;
|
goto fail_table;
|
||||||
|
@ -34,6 +34,12 @@ static const struct dmi_system_id __initconst atk_force_new_if[] = {
|
|||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "SABERTOOTH X58")
|
DMI_MATCH(DMI_BOARD_NAME, "SABERTOOTH X58")
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
/* Old interface reads the same sensor for fan0 and fan1 */
|
||||||
|
.ident = "Asus M5A78L",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_NAME, "M5A78L")
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
@ -166,18 +166,17 @@ static long booke_wdt_ioctl(struct file *file,
|
|||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case WDIOC_GETSUPPORT:
|
case WDIOC_GETSUPPORT:
|
||||||
if (copy_to_user((void *)arg, &ident, sizeof(ident)))
|
return copy_to_user(p, &ident, sizeof(ident)) ? -EFAULT : 0;
|
||||||
return -EFAULT;
|
|
||||||
case WDIOC_GETSTATUS:
|
case WDIOC_GETSTATUS:
|
||||||
return put_user(0, p);
|
return put_user(0, p);
|
||||||
case WDIOC_GETBOOTSTATUS:
|
case WDIOC_GETBOOTSTATUS:
|
||||||
/* XXX: something is clearing TSR */
|
/* XXX: something is clearing TSR */
|
||||||
tmp = mfspr(SPRN_TSR) & TSR_WRS(3);
|
tmp = mfspr(SPRN_TSR) & TSR_WRS(3);
|
||||||
/* returns CARDRESET if last reset was caused by the WDT */
|
/* returns CARDRESET if last reset was caused by the WDT */
|
||||||
return (tmp ? WDIOF_CARDRESET : 0);
|
return put_user((tmp ? WDIOF_CARDRESET : 0), p);
|
||||||
case WDIOC_SETOPTIONS:
|
case WDIOC_SETOPTIONS:
|
||||||
if (get_user(tmp, p))
|
if (get_user(tmp, p))
|
||||||
return -EINVAL;
|
return -EFAULT;
|
||||||
if (tmp == WDIOS_ENABLECARD) {
|
if (tmp == WDIOS_ENABLECARD) {
|
||||||
booke_wdt_ping();
|
booke_wdt_ping();
|
||||||
break;
|
break;
|
||||||
|
@ -101,19 +101,6 @@ static int platform_pci_resume(struct pci_dev *pdev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __devinit prepare_shared_info(void)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_KEXEC
|
|
||||||
unsigned long addr;
|
|
||||||
struct shared_info *hvm_shared_info;
|
|
||||||
|
|
||||||
addr = alloc_xen_mmio(PAGE_SIZE);
|
|
||||||
hvm_shared_info = ioremap(addr, PAGE_SIZE);
|
|
||||||
memset(hvm_shared_info, 0, PAGE_SIZE);
|
|
||||||
xen_hvm_prepare_kexec(hvm_shared_info, addr >> PAGE_SHIFT);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __devinit platform_pci_init(struct pci_dev *pdev,
|
static int __devinit platform_pci_init(struct pci_dev *pdev,
|
||||||
const struct pci_device_id *ent)
|
const struct pci_device_id *ent)
|
||||||
{
|
{
|
||||||
@ -151,8 +138,6 @@ static int __devinit platform_pci_init(struct pci_dev *pdev,
|
|||||||
platform_mmio = mmio_addr;
|
platform_mmio = mmio_addr;
|
||||||
platform_mmiolen = mmio_len;
|
platform_mmiolen = mmio_len;
|
||||||
|
|
||||||
prepare_shared_info();
|
|
||||||
|
|
||||||
if (!xen_have_vector_callback) {
|
if (!xen_have_vector_callback) {
|
||||||
ret = xen_allocate_irq(pdev);
|
ret = xen_allocate_irq(pdev);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -26,6 +26,7 @@ static int sync_request(struct page *page, struct block_device *bdev, int rw)
|
|||||||
struct completion complete;
|
struct completion complete;
|
||||||
|
|
||||||
bio_init(&bio);
|
bio_init(&bio);
|
||||||
|
bio.bi_max_vecs = 1;
|
||||||
bio.bi_io_vec = &bio_vec;
|
bio.bi_io_vec = &bio_vec;
|
||||||
bio_vec.bv_page = page;
|
bio_vec.bv_page = page;
|
||||||
bio_vec.bv_len = PAGE_SIZE;
|
bio_vec.bv_len = PAGE_SIZE;
|
||||||
@ -95,12 +96,11 @@ static int __bdev_writeseg(struct super_block *sb, u64 ofs, pgoff_t index,
|
|||||||
struct address_space *mapping = super->s_mapping_inode->i_mapping;
|
struct address_space *mapping = super->s_mapping_inode->i_mapping;
|
||||||
struct bio *bio;
|
struct bio *bio;
|
||||||
struct page *page;
|
struct page *page;
|
||||||
struct request_queue *q = bdev_get_queue(sb->s_bdev);
|
unsigned int max_pages;
|
||||||
unsigned int max_pages = queue_max_hw_sectors(q) >> (PAGE_SHIFT - 9);
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (max_pages > BIO_MAX_PAGES)
|
max_pages = min(nr_pages, (size_t) bio_get_nr_vecs(super->s_bdev));
|
||||||
max_pages = BIO_MAX_PAGES;
|
|
||||||
bio = bio_alloc(GFP_NOFS, max_pages);
|
bio = bio_alloc(GFP_NOFS, max_pages);
|
||||||
BUG_ON(!bio);
|
BUG_ON(!bio);
|
||||||
|
|
||||||
@ -190,12 +190,11 @@ static int do_erase(struct super_block *sb, u64 ofs, pgoff_t index,
|
|||||||
{
|
{
|
||||||
struct logfs_super *super = logfs_super(sb);
|
struct logfs_super *super = logfs_super(sb);
|
||||||
struct bio *bio;
|
struct bio *bio;
|
||||||
struct request_queue *q = bdev_get_queue(sb->s_bdev);
|
unsigned int max_pages;
|
||||||
unsigned int max_pages = queue_max_hw_sectors(q) >> (PAGE_SHIFT - 9);
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (max_pages > BIO_MAX_PAGES)
|
max_pages = min(nr_pages, (size_t) bio_get_nr_vecs(super->s_bdev));
|
||||||
max_pages = BIO_MAX_PAGES;
|
|
||||||
bio = bio_alloc(GFP_NOFS, max_pages);
|
bio = bio_alloc(GFP_NOFS, max_pages);
|
||||||
BUG_ON(!bio);
|
BUG_ON(!bio);
|
||||||
|
|
||||||
|
@ -156,10 +156,26 @@ static void __logfs_destroy_inode(struct inode *inode)
|
|||||||
call_rcu(&inode->i_rcu, logfs_i_callback);
|
call_rcu(&inode->i_rcu, logfs_i_callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void __logfs_destroy_meta_inode(struct inode *inode)
|
||||||
|
{
|
||||||
|
struct logfs_inode *li = logfs_inode(inode);
|
||||||
|
BUG_ON(li->li_block);
|
||||||
|
call_rcu(&inode->i_rcu, logfs_i_callback);
|
||||||
|
}
|
||||||
|
|
||||||
static void logfs_destroy_inode(struct inode *inode)
|
static void logfs_destroy_inode(struct inode *inode)
|
||||||
{
|
{
|
||||||
struct logfs_inode *li = logfs_inode(inode);
|
struct logfs_inode *li = logfs_inode(inode);
|
||||||
|
|
||||||
|
if (inode->i_ino < LOGFS_RESERVED_INOS) {
|
||||||
|
/*
|
||||||
|
* The reserved inodes are never destroyed unless we are in
|
||||||
|
* unmont path.
|
||||||
|
*/
|
||||||
|
__logfs_destroy_meta_inode(inode);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
BUG_ON(list_empty(&li->li_freeing_list));
|
BUG_ON(list_empty(&li->li_freeing_list));
|
||||||
spin_lock(&logfs_inode_lock);
|
spin_lock(&logfs_inode_lock);
|
||||||
li->li_refcount--;
|
li->li_refcount--;
|
||||||
@ -373,8 +389,8 @@ static void logfs_put_super(struct super_block *sb)
|
|||||||
{
|
{
|
||||||
struct logfs_super *super = logfs_super(sb);
|
struct logfs_super *super = logfs_super(sb);
|
||||||
/* kill the meta-inodes */
|
/* kill the meta-inodes */
|
||||||
iput(super->s_master_inode);
|
|
||||||
iput(super->s_segfile_inode);
|
iput(super->s_segfile_inode);
|
||||||
|
iput(super->s_master_inode);
|
||||||
iput(super->s_mapping_inode);
|
iput(super->s_mapping_inode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -565,7 +565,7 @@ static void write_wbuf(struct super_block *sb, struct logfs_area *area,
|
|||||||
index = ofs >> PAGE_SHIFT;
|
index = ofs >> PAGE_SHIFT;
|
||||||
page_ofs = ofs & (PAGE_SIZE - 1);
|
page_ofs = ofs & (PAGE_SIZE - 1);
|
||||||
|
|
||||||
page = find_lock_page(mapping, index);
|
page = find_or_create_page(mapping, index, GFP_NOFS);
|
||||||
BUG_ON(!page);
|
BUG_ON(!page);
|
||||||
memcpy(wbuf, page_address(page) + page_ofs, super->s_writesize);
|
memcpy(wbuf, page_address(page) + page_ofs, super->s_writesize);
|
||||||
unlock_page(page);
|
unlock_page(page);
|
||||||
|
@ -2189,7 +2189,6 @@ void logfs_evict_inode(struct inode *inode)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
BUG_ON(inode->i_ino < LOGFS_RESERVED_INOS);
|
|
||||||
page = inode_to_page(inode);
|
page = inode_to_page(inode);
|
||||||
BUG_ON(!page); /* FIXME: Use emergency page */
|
BUG_ON(!page); /* FIXME: Use emergency page */
|
||||||
logfs_put_write_page(page);
|
logfs_put_write_page(page);
|
||||||
|
@ -886,7 +886,7 @@ static struct logfs_area *alloc_area(struct super_block *sb)
|
|||||||
|
|
||||||
static void map_invalidatepage(struct page *page, unsigned long l)
|
static void map_invalidatepage(struct page *page, unsigned long l)
|
||||||
{
|
{
|
||||||
BUG();
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int map_releasepage(struct page *page, gfp_t g)
|
static int map_releasepage(struct page *page, gfp_t g)
|
||||||
|
@ -179,12 +179,14 @@ xfs_ioc_trim(
|
|||||||
* used by the fstrim application. In the end it really doesn't
|
* used by the fstrim application. In the end it really doesn't
|
||||||
* matter as trimming blocks is an advisory interface.
|
* matter as trimming blocks is an advisory interface.
|
||||||
*/
|
*/
|
||||||
|
if (range.start >= XFS_FSB_TO_B(mp, mp->m_sb.sb_dblocks) ||
|
||||||
|
range.minlen > XFS_FSB_TO_B(mp, XFS_ALLOC_AG_MAX_USABLE(mp)))
|
||||||
|
return -XFS_ERROR(EINVAL);
|
||||||
|
|
||||||
start = BTOBB(range.start);
|
start = BTOBB(range.start);
|
||||||
end = start + BTOBBT(range.len) - 1;
|
end = start + BTOBBT(range.len) - 1;
|
||||||
minlen = BTOBB(max_t(u64, granularity, range.minlen));
|
minlen = BTOBB(max_t(u64, granularity, range.minlen));
|
||||||
|
|
||||||
if (XFS_BB_TO_FSB(mp, start) >= mp->m_sb.sb_dblocks)
|
|
||||||
return -XFS_ERROR(EINVAL);
|
|
||||||
if (end > XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks) - 1)
|
if (end > XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks) - 1)
|
||||||
end = XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)- 1;
|
end = XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)- 1;
|
||||||
|
|
||||||
|
@ -962,23 +962,22 @@ xfs_dialloc(
|
|||||||
if (!pag->pagi_freecount && !okalloc)
|
if (!pag->pagi_freecount && !okalloc)
|
||||||
goto nextag;
|
goto nextag;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Then read in the AGI buffer and recheck with the AGI buffer
|
||||||
|
* lock held.
|
||||||
|
*/
|
||||||
error = xfs_ialloc_read_agi(mp, tp, agno, &agbp);
|
error = xfs_ialloc_read_agi(mp, tp, agno, &agbp);
|
||||||
if (error)
|
if (error)
|
||||||
goto out_error;
|
goto out_error;
|
||||||
|
|
||||||
/*
|
|
||||||
* Once the AGI has been read in we have to recheck
|
|
||||||
* pagi_freecount with the AGI buffer lock held.
|
|
||||||
*/
|
|
||||||
if (pag->pagi_freecount) {
|
if (pag->pagi_freecount) {
|
||||||
xfs_perag_put(pag);
|
xfs_perag_put(pag);
|
||||||
goto out_alloc;
|
goto out_alloc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!okalloc) {
|
if (!okalloc)
|
||||||
xfs_trans_brelse(tp, agbp);
|
goto nextag_relse_buffer;
|
||||||
goto nextag;
|
|
||||||
}
|
|
||||||
|
|
||||||
error = xfs_ialloc_ag_alloc(tp, agbp, &ialloced);
|
error = xfs_ialloc_ag_alloc(tp, agbp, &ialloced);
|
||||||
if (error) {
|
if (error) {
|
||||||
@ -1007,6 +1006,8 @@ xfs_dialloc(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nextag_relse_buffer:
|
||||||
|
xfs_trans_brelse(tp, agbp);
|
||||||
nextag:
|
nextag:
|
||||||
xfs_perag_put(pag);
|
xfs_perag_put(pag);
|
||||||
if (++agno == mp->m_sb.sb_agcount)
|
if (++agno == mp->m_sb.sb_agcount)
|
||||||
|
@ -857,7 +857,7 @@ xfs_rtbuf_get(
|
|||||||
xfs_buf_t *bp; /* block buffer, result */
|
xfs_buf_t *bp; /* block buffer, result */
|
||||||
xfs_inode_t *ip; /* bitmap or summary inode */
|
xfs_inode_t *ip; /* bitmap or summary inode */
|
||||||
xfs_bmbt_irec_t map;
|
xfs_bmbt_irec_t map;
|
||||||
int nmap;
|
int nmap = 1;
|
||||||
int error; /* error value */
|
int error; /* error value */
|
||||||
|
|
||||||
ip = issum ? mp->m_rsumip : mp->m_rbmip;
|
ip = issum ? mp->m_rsumip : mp->m_rbmip;
|
||||||
|
@ -194,6 +194,10 @@ static inline int cpuidle_play_dead(void) {return -ENODEV; }
|
|||||||
|
|
||||||
#ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED
|
#ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED
|
||||||
void cpuidle_coupled_parallel_barrier(struct cpuidle_device *dev, atomic_t *a);
|
void cpuidle_coupled_parallel_barrier(struct cpuidle_device *dev, atomic_t *a);
|
||||||
|
#else
|
||||||
|
static inline void cpuidle_coupled_parallel_barrier(struct cpuidle_device *dev, atomic_t *a)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/******************************
|
/******************************
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
#define MV643XX_ETH_SIZE_REG_4 0x2224
|
#define MV643XX_ETH_SIZE_REG_4 0x2224
|
||||||
#define MV643XX_ETH_BASE_ADDR_ENABLE_REG 0x2290
|
#define MV643XX_ETH_BASE_ADDR_ENABLE_REG 0x2290
|
||||||
|
|
||||||
|
#define MV643XX_TX_CSUM_DEFAULT_LIMIT 0
|
||||||
|
|
||||||
struct mv643xx_eth_shared_platform_data {
|
struct mv643xx_eth_shared_platform_data {
|
||||||
struct mbus_dram_target_info *dram;
|
struct mbus_dram_target_info *dram;
|
||||||
struct platform_device *shared_smi;
|
struct platform_device *shared_smi;
|
||||||
|
@ -58,8 +58,6 @@ void notify_remote_via_irq(int irq);
|
|||||||
|
|
||||||
void xen_irq_resume(void);
|
void xen_irq_resume(void);
|
||||||
|
|
||||||
void xen_hvm_prepare_kexec(struct shared_info *sip, unsigned long pfn);
|
|
||||||
|
|
||||||
/* Clear an irq's pending state, in preparation for polling on it */
|
/* Clear an irq's pending state, in preparation for polling on it */
|
||||||
void xen_clear_irq_pending(int irq);
|
void xen_clear_irq_pending(int irq);
|
||||||
void xen_set_irq_pending(int irq);
|
void xen_set_irq_pending(int irq);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user