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"
|
||||
|
||||
Optional properties:
|
||||
- fsl,cd-internal : Indicate to use controller internal card detection
|
||||
- fsl,wp-internal : Indicate to use controller internal write protection
|
||||
- fsl,cd-controller : Indicate to use controller internal card detection
|
||||
- fsl,wp-controller : Indicate to use controller internal write protection
|
||||
|
||||
Examples:
|
||||
|
||||
@ -19,8 +19,8 @@ esdhc@70004000 {
|
||||
compatible = "fsl,imx51-esdhc";
|
||||
reg = <0x70004000 0x4000>;
|
||||
interrupts = <1>;
|
||||
fsl,cd-internal;
|
||||
fsl,wp-internal;
|
||||
fsl,cd-controller;
|
||||
fsl,wp-controller;
|
||||
};
|
||||
|
||||
esdhc@70008000 {
|
||||
|
@ -2144,6 +2144,7 @@ source "drivers/cpufreq/Kconfig"
|
||||
config CPU_FREQ_IMX
|
||||
tristate "CPUfreq driver for i.MX CPUs"
|
||||
depends on ARCH_MXC && CPU_FREQ
|
||||
select CPU_FREQ_TABLE
|
||||
help
|
||||
This enables the CPUfreq driver for i.MX CPUs.
|
||||
|
||||
|
@ -154,5 +154,10 @@
|
||||
#size-cells = <0>;
|
||||
ti,hwmods = "i2c3";
|
||||
};
|
||||
|
||||
wdt2: wdt@44e35000 {
|
||||
compatible = "ti,omap3-wdt";
|
||||
ti,hwmods = "wd_timer2";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -25,8 +25,8 @@
|
||||
aips@70000000 { /* aips-1 */
|
||||
spba@70000000 {
|
||||
esdhc@70004000 { /* ESDHC1 */
|
||||
fsl,cd-internal;
|
||||
fsl,wp-internal;
|
||||
fsl,cd-controller;
|
||||
fsl,wp-controller;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -41,9 +41,13 @@
|
||||
};
|
||||
power-blue {
|
||||
label = "power:blue";
|
||||
gpios = <&gpio1 11 0>;
|
||||
gpios = <&gpio1 10 0>;
|
||||
linux,default-trigger = "timer";
|
||||
};
|
||||
power-red {
|
||||
label = "power:red";
|
||||
gpios = <&gpio1 11 0>;
|
||||
};
|
||||
usb1 {
|
||||
label = "usb1:blue";
|
||||
gpios = <&gpio1 12 0>;
|
||||
|
@ -66,6 +66,7 @@
|
||||
|
||||
vcxio: regulator@8 {
|
||||
compatible = "ti,twl6030-vcxio";
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vusb: regulator@9 {
|
||||
@ -74,10 +75,12 @@
|
||||
|
||||
v1v8: regulator@10 {
|
||||
compatible = "ti,twl6030-v1v8";
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
v2v1: regulator@11 {
|
||||
compatible = "ti,twl6030-v2v1";
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
clk32kg: regulator@12 {
|
||||
|
@ -86,6 +86,7 @@ CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_LM3530=y
|
||||
CONFIG_LEDS_LP5521=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_AB8500=y
|
||||
CONFIG_RTC_DRV_PL031=y
|
||||
|
@ -102,7 +102,8 @@ void __init dove_ehci1_init(void)
|
||||
void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
{
|
||||
orion_ge00_init(eth_data, DOVE_GE00_PHYS_BASE,
|
||||
IRQ_DOVE_GE00_SUM, IRQ_DOVE_GE00_ERR);
|
||||
IRQ_DOVE_GE00_SUM, IRQ_DOVE_GE00_ERR,
|
||||
1600);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -42,6 +42,7 @@
|
||||
#include <plat/backlight.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/mfc.h>
|
||||
#include <plat/hdmi.h>
|
||||
|
||||
#include <mach/ohci.h>
|
||||
#include <mach/map.h>
|
||||
@ -734,6 +735,11 @@ static void __init origen_bt_setup(void)
|
||||
s3c_gpio_setpull(EXYNOS4_GPX2(2), S3C_GPIO_PULL_NONE);
|
||||
}
|
||||
|
||||
/* I2C module and id for HDMIPHY */
|
||||
static struct i2c_board_info hdmiphy_info = {
|
||||
I2C_BOARD_INFO("hdmiphy-exynos4210", 0x38),
|
||||
};
|
||||
|
||||
static void s5p_tv_setup(void)
|
||||
{
|
||||
/* Direct HPD to HDMI chip */
|
||||
@ -781,6 +787,7 @@ static void __init origen_machine_init(void)
|
||||
|
||||
s5p_tv_setup();
|
||||
s5p_i2c_hdmiphy_set_platdata(NULL);
|
||||
s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);
|
||||
|
||||
#ifdef CONFIG_DRM_EXYNOS
|
||||
s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
|
||||
|
@ -40,6 +40,7 @@
|
||||
#include <plat/mfc.h>
|
||||
#include <plat/ehci.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/hdmi.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/ohci.h>
|
||||
@ -354,6 +355,11 @@ static struct platform_pwm_backlight_data smdkv310_bl_data = {
|
||||
.pwm_period_ns = 1000,
|
||||
};
|
||||
|
||||
/* I2C module and id for HDMIPHY */
|
||||
static struct i2c_board_info hdmiphy_info = {
|
||||
I2C_BOARD_INFO("hdmiphy-exynos4210", 0x38),
|
||||
};
|
||||
|
||||
static void s5p_tv_setup(void)
|
||||
{
|
||||
/* direct HPD to HDMI chip */
|
||||
@ -388,6 +394,7 @@ static void __init smdkv310_machine_init(void)
|
||||
|
||||
s5p_tv_setup();
|
||||
s5p_i2c_hdmiphy_set_platdata(NULL);
|
||||
s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);
|
||||
|
||||
samsung_keypad_set_platdata(&smdkv310_keypad_data);
|
||||
|
||||
|
@ -9,7 +9,8 @@ obj-$(CONFIG_SOC_IMX27) += clk-imx27.o mm-imx27.o ehci-imx27.o
|
||||
obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o clk-imx31.o iomux-imx31.o ehci-imx31.o pm-imx3.o
|
||||
obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o clk-imx35.o ehci-imx35.o pm-imx3.o
|
||||
|
||||
obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clk-imx51-imx53.o ehci-imx5.o pm-imx5.o cpu_op-mx51.o
|
||||
imx5-pm-$(CONFIG_PM) += pm-imx5.o
|
||||
obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clk-imx51-imx53.o ehci-imx5.o $(imx5-pm-y) cpu_op-mx51.o
|
||||
|
||||
obj-$(CONFIG_COMMON_CLK) += clk-pllv1.o clk-pllv2.o clk-pllv3.o clk-gate2.o \
|
||||
clk-pfd.o clk-busy.o
|
||||
@ -70,14 +71,13 @@ obj-$(CONFIG_DEBUG_LL) += lluart.o
|
||||
obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o
|
||||
obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
|
||||
obj-$(CONFIG_HAVE_IMX_SRC) += src.o
|
||||
obj-$(CONFIG_CPU_V7) += head-v7.o
|
||||
AFLAGS_head-v7.o :=-Wa,-march=armv7-a
|
||||
obj-$(CONFIG_SMP) += platsmp.o
|
||||
AFLAGS_headsmp.o :=-Wa,-march=armv7-a
|
||||
obj-$(CONFIG_SMP) += headsmp.o platsmp.o
|
||||
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
||||
obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o
|
||||
|
||||
ifeq ($(CONFIG_PM),y)
|
||||
obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o
|
||||
obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o headsmp.o
|
||||
endif
|
||||
|
||||
# i.MX5 based machines
|
||||
|
@ -152,7 +152,7 @@ enum mx6q_clks {
|
||||
ssi2, ssi3, uart_ipg, uart_serial, usboh3, usdhc1, usdhc2, usdhc3,
|
||||
usdhc4, vdo_axi, vpu_axi, cko1, pll1_sys, pll2_bus, pll3_usb_otg,
|
||||
pll4_audio, pll5_video, pll6_mlb, pll7_usb_host, pll8_enet, ssi1_ipg,
|
||||
ssi2_ipg, ssi3_ipg, rom, usbphy1, usbphy2,
|
||||
ssi2_ipg, ssi3_ipg, rom, usbphy1, usbphy2, ldb_di0_div_3_5, ldb_di1_div_3_5,
|
||||
clk_max
|
||||
};
|
||||
|
||||
@ -288,8 +288,10 @@ int __init mx6q_clocks_init(void)
|
||||
clk[gpu3d_shader] = imx_clk_divider("gpu3d_shader", "gpu3d_shader_sel", base + 0x18, 29, 3);
|
||||
clk[ipu1_podf] = imx_clk_divider("ipu1_podf", "ipu1_sel", base + 0x3c, 11, 3);
|
||||
clk[ipu2_podf] = imx_clk_divider("ipu2_podf", "ipu2_sel", base + 0x3c, 16, 3);
|
||||
clk[ldb_di0_podf] = imx_clk_divider("ldb_di0_podf", "ldb_di0_sel", base + 0x20, 10, 1);
|
||||
clk[ldb_di1_podf] = imx_clk_divider("ldb_di1_podf", "ldb_di1_sel", base + 0x20, 11, 1);
|
||||
clk[ldb_di0_div_3_5] = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0_sel", 2, 7);
|
||||
clk[ldb_di0_podf] = imx_clk_divider("ldb_di0_podf", "ldb_di0_div_3_5", base + 0x20, 10, 1);
|
||||
clk[ldb_di1_div_3_5] = imx_clk_fixed_factor("ldb_di1_div_3_5", "ldb_di1_sel", 2, 7);
|
||||
clk[ldb_di1_podf] = imx_clk_divider("ldb_di1_podf", "ldb_di1_div_3_5", base + 0x20, 11, 1);
|
||||
clk[ipu1_di0_pre] = imx_clk_divider("ipu1_di0_pre", "ipu1_di0_pre_sel", base + 0x34, 3, 3);
|
||||
clk[ipu1_di1_pre] = imx_clk_divider("ipu1_di1_pre", "ipu1_di1_pre_sel", base + 0x34, 12, 3);
|
||||
clk[ipu2_di0_pre] = imx_clk_divider("ipu2_di0_pre", "ipu2_di0_pre_sel", base + 0x38, 3, 3);
|
||||
|
@ -42,22 +42,6 @@ static inline void cpu_enter_lowpower(void)
|
||||
: "cc");
|
||||
}
|
||||
|
||||
static inline void cpu_leave_lowpower(void)
|
||||
{
|
||||
unsigned int v;
|
||||
|
||||
asm volatile(
|
||||
"mrc p15, 0, %0, c1, c0, 0\n"
|
||||
" orr %0, %0, %1\n"
|
||||
" mcr p15, 0, %0, c1, c0, 0\n"
|
||||
" mrc p15, 0, %0, c1, c0, 1\n"
|
||||
" orr %0, %0, %2\n"
|
||||
" mcr p15, 0, %0, c1, c0, 1\n"
|
||||
: "=&r" (v)
|
||||
: "Ir" (CR_C), "Ir" (0x40)
|
||||
: "cc");
|
||||
}
|
||||
|
||||
/*
|
||||
* platform-specific code to shutdown a CPU
|
||||
*
|
||||
@ -67,11 +51,10 @@ void platform_cpu_die(unsigned int cpu)
|
||||
{
|
||||
cpu_enter_lowpower();
|
||||
imx_enable_cpu(cpu, false);
|
||||
cpu_do_idle();
|
||||
cpu_leave_lowpower();
|
||||
|
||||
/* We should never return from idle */
|
||||
panic("cpu %d unexpectedly exit from shutdown\n", cpu);
|
||||
/* spin here until hardware takes it down */
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
int platform_cpu_disable(unsigned int cpu)
|
||||
|
@ -71,7 +71,7 @@ soft:
|
||||
/* For imx6q sabrelite board: set KSZ9021RN RGMII pad skew */
|
||||
static int ksz9021rn_phy_fixup(struct phy_device *phydev)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_PHYLIB)) {
|
||||
if (IS_BUILTIN(CONFIG_PHYLIB)) {
|
||||
/* min rx data delay */
|
||||
phy_write(phydev, 0x0b, 0x8105);
|
||||
phy_write(phydev, 0x0c, 0x0000);
|
||||
@ -112,7 +112,7 @@ put_clk:
|
||||
|
||||
static void __init imx6q_sabrelite_init(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_PHYLIB))
|
||||
if (IS_BUILTIN(CONFIG_PHYLIB))
|
||||
phy_register_fixup_for_uid(PHY_ID_KSZ9021, MICREL_PHY_ID_MASK,
|
||||
ksz9021rn_phy_fixup);
|
||||
imx6q_sabrelite_cko1_setup();
|
||||
|
@ -7,7 +7,8 @@ dtb-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += kirkwood-dns320.dtb
|
||||
dtb-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += kirkwood-dns325.dtb
|
||||
dtb-$(CONFIG_MACH_ICONNECT_DT) += kirkwood-iconnect.dtb
|
||||
dtb-$(CONFIG_MACH_IB62X0_DT) += kirkwood-ib62x0.dtb
|
||||
dtb-$(CONFIG_MACH_TS219_DT) += kirkwood-qnap-ts219.dtb
|
||||
dtb-$(CONFIG_MACH_TS219_DT) += kirkwood-ts219-6281.dtb
|
||||
dtb-$(CONFIG_MACH_TS219_DT) += kirkwood-ts219-6282.dtb
|
||||
dtb-$(CONFIG_MACH_GOFLEXNET_DT) += kirkwood-goflexnet.dtb
|
||||
dtb-$(CONFIG_MACH_LSXL_DT) += kirkwood-lschlv2.dtb
|
||||
dtb-$(CONFIG_MACH_LSXL_DT) += kirkwood-lsxhl.dtb
|
||||
|
@ -301,7 +301,7 @@ void __init kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
{
|
||||
orion_ge00_init(eth_data,
|
||||
GE00_PHYS_BASE, IRQ_KIRKWOOD_GE00_SUM,
|
||||
IRQ_KIRKWOOD_GE00_ERR);
|
||||
IRQ_KIRKWOOD_GE00_ERR, 1600);
|
||||
/* The interface forgets the MAC address assigned by u-boot if
|
||||
the clock is turned off, so claim the clk now. */
|
||||
clk_prepare_enable(ge0);
|
||||
@ -315,7 +315,7 @@ void __init kirkwood_ge01_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
{
|
||||
orion_ge01_init(eth_data,
|
||||
GE01_PHYS_BASE, IRQ_KIRKWOOD_GE01_SUM,
|
||||
IRQ_KIRKWOOD_GE01_ERR);
|
||||
IRQ_KIRKWOOD_GE01_ERR, 1600);
|
||||
clk_prepare_enable(ge1);
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ static int __devinit sram_probe(struct platform_device *pdev)
|
||||
struct resource *res;
|
||||
int ret = 0;
|
||||
|
||||
if (!pdata && !pdata->pool_name)
|
||||
if (!pdata || !pdata->pool_name)
|
||||
return -ENODEV;
|
||||
|
||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||
|
@ -37,7 +37,7 @@
|
||||
#define WIN0_OFF(n) (BRIDGE_VIRT_BASE + 0x0000 + ((n) << 4))
|
||||
#define WIN8_OFF(n) (BRIDGE_VIRT_BASE + 0x0900 + (((n) - 8) << 4))
|
||||
|
||||
static void __init __iomem *win_cfg_base(int win)
|
||||
static void __init __iomem *win_cfg_base(const struct orion_addr_map_cfg *cfg, int win)
|
||||
{
|
||||
/*
|
||||
* Find the control register base address for this window.
|
||||
|
@ -213,7 +213,8 @@ void __init mv78xx0_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
{
|
||||
orion_ge00_init(eth_data,
|
||||
GE00_PHYS_BASE, IRQ_MV78XX0_GE00_SUM,
|
||||
IRQ_MV78XX0_GE_ERR);
|
||||
IRQ_MV78XX0_GE_ERR,
|
||||
MV643XX_TX_CSUM_DEFAULT_LIMIT);
|
||||
}
|
||||
|
||||
|
||||
@ -224,7 +225,8 @@ void __init mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
{
|
||||
orion_ge01_init(eth_data,
|
||||
GE01_PHYS_BASE, IRQ_MV78XX0_GE01_SUM,
|
||||
NO_IRQ);
|
||||
NO_IRQ,
|
||||
MV643XX_TX_CSUM_DEFAULT_LIMIT);
|
||||
}
|
||||
|
||||
|
||||
|
@ -62,13 +62,14 @@ config ARCH_OMAP4
|
||||
select PM_OPP if PM
|
||||
select USB_ARCH_HAS_EHCI if USB_SUPPORT
|
||||
select ARM_CPU_SUSPEND if PM
|
||||
select ARCH_NEEDS_CPU_IDLE_COUPLED
|
||||
select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
|
||||
|
||||
config SOC_OMAP5
|
||||
bool "TI OMAP5"
|
||||
select CPU_V7
|
||||
select ARM_GIC
|
||||
select HAVE_SMP
|
||||
select ARM_CPU_SUSPEND if PM
|
||||
|
||||
comment "OMAP Core Type"
|
||||
depends on ARCH_OMAP2
|
||||
|
@ -554,6 +554,8 @@ static const struct usbhs_omap_board_data igep3_usbhs_bdata __initconst = {
|
||||
|
||||
#ifdef CONFIG_OMAP_MUX
|
||||
static struct omap_board_mux board_mux[] __initdata = {
|
||||
/* SMSC9221 LAN Controller ETH IRQ (GPIO_176) */
|
||||
OMAP3_MUX(MCSPI1_CS2, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
|
||||
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||
};
|
||||
#endif
|
||||
|
@ -58,6 +58,7 @@
|
||||
#include "hsmmc.h"
|
||||
#include "common-board-devices.h"
|
||||
|
||||
#define OMAP3_EVM_TS_GPIO 175
|
||||
#define OMAP3_EVM_EHCI_VBUS 22
|
||||
#define OMAP3_EVM_EHCI_SELECT 61
|
||||
|
||||
|
@ -35,16 +35,6 @@ static struct omap2_mcspi_device_config ads7846_mcspi_config = {
|
||||
.turbo_mode = 0,
|
||||
};
|
||||
|
||||
/*
|
||||
* ADS7846 driver maybe request a gpio according to the value
|
||||
* of pdata->get_pendown_state, but we have done this. So set
|
||||
* get_pendown_state to avoid twice gpio requesting.
|
||||
*/
|
||||
static int omap3_get_pendown_state(void)
|
||||
{
|
||||
return !gpio_get_value(OMAP3_EVM_TS_GPIO);
|
||||
}
|
||||
|
||||
static struct ads7846_platform_data ads7846_config = {
|
||||
.x_max = 0x0fff,
|
||||
.y_max = 0x0fff,
|
||||
@ -55,7 +45,6 @@ static struct ads7846_platform_data ads7846_config = {
|
||||
.debounce_rep = 1,
|
||||
.gpio_pendown = -EINVAL,
|
||||
.keep_vref_on = 1,
|
||||
.get_pendown_state = &omap3_get_pendown_state,
|
||||
};
|
||||
|
||||
static struct spi_board_info ads7846_spi_board_info __initdata = {
|
||||
|
@ -4,7 +4,6 @@
|
||||
#include "twl-common.h"
|
||||
|
||||
#define NAND_BLOCK_SIZE SZ_128K
|
||||
#define OMAP3_EVM_TS_GPIO 175
|
||||
|
||||
struct mtd_partition;
|
||||
struct ads7846_platform_data;
|
||||
|
@ -238,8 +238,9 @@ int __init omap4_idle_init(void)
|
||||
for_each_cpu(cpu_id, cpu_online_mask) {
|
||||
dev = &per_cpu(omap4_idle_dev, cpu_id);
|
||||
dev->cpu = cpu_id;
|
||||
#ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED
|
||||
dev->coupled_cpus = *cpu_online_mask;
|
||||
|
||||
#endif
|
||||
cpuidle_register_driver(&omap4_idle_driver);
|
||||
|
||||
if (cpuidle_register_device(dev)) {
|
||||
|
@ -127,7 +127,6 @@ struct omap_mux_partition {
|
||||
* @gpio: GPIO number
|
||||
* @muxnames: available signal modes for a ball
|
||||
* @balls: available balls on the package
|
||||
* @partition: mux partition
|
||||
*/
|
||||
struct omap_mux {
|
||||
u16 reg_offset;
|
||||
|
@ -94,7 +94,7 @@ int __init omap4_opp_init(void)
|
||||
{
|
||||
int r = -ENODEV;
|
||||
|
||||
if (!cpu_is_omap44xx())
|
||||
if (!cpu_is_omap443x())
|
||||
return r;
|
||||
|
||||
r = omap_init_opp_table(omap44xx_opp_def_list,
|
||||
|
@ -272,21 +272,16 @@ void omap_sram_idle(void)
|
||||
per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
|
||||
core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
|
||||
|
||||
if (mpu_next_state < PWRDM_POWER_ON) {
|
||||
pwrdm_pre_transition(mpu_pwrdm);
|
||||
pwrdm_pre_transition(neon_pwrdm);
|
||||
}
|
||||
pwrdm_pre_transition(NULL);
|
||||
|
||||
/* PER */
|
||||
if (per_next_state < PWRDM_POWER_ON) {
|
||||
pwrdm_pre_transition(per_pwrdm);
|
||||
per_going_off = (per_next_state == PWRDM_POWER_OFF) ? 1 : 0;
|
||||
omap2_gpio_prepare_for_idle(per_going_off);
|
||||
}
|
||||
|
||||
/* CORE */
|
||||
if (core_next_state < PWRDM_POWER_ON) {
|
||||
pwrdm_pre_transition(core_pwrdm);
|
||||
if (core_next_state == PWRDM_POWER_OFF) {
|
||||
omap3_core_save_context();
|
||||
omap3_cm_save_context();
|
||||
@ -339,20 +334,14 @@ void omap_sram_idle(void)
|
||||
omap2_prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK,
|
||||
OMAP3430_GR_MOD,
|
||||
OMAP3_PRM_VOLTCTRL_OFFSET);
|
||||
pwrdm_post_transition(core_pwrdm);
|
||||
}
|
||||
omap3_intc_resume_idle();
|
||||
|
||||
/* PER */
|
||||
if (per_next_state < PWRDM_POWER_ON) {
|
||||
omap2_gpio_resume_after_idle();
|
||||
pwrdm_post_transition(per_pwrdm);
|
||||
}
|
||||
pwrdm_post_transition(NULL);
|
||||
|
||||
if (mpu_next_state < PWRDM_POWER_ON) {
|
||||
pwrdm_post_transition(mpu_pwrdm);
|
||||
pwrdm_post_transition(neon_pwrdm);
|
||||
}
|
||||
/* PER */
|
||||
if (per_next_state < PWRDM_POWER_ON)
|
||||
omap2_gpio_resume_after_idle();
|
||||
}
|
||||
|
||||
static void omap3_pm_idle(void)
|
||||
|
@ -56,9 +56,13 @@ ppa_por_params:
|
||||
* The restore function pointer is stored at CPUx_WAKEUP_NS_PA_ADDR_OFFSET.
|
||||
* It returns to the caller for CPU INACTIVE and ON power states or in case
|
||||
* CPU failed to transition to targeted OFF/DORMANT state.
|
||||
*
|
||||
* omap4_finish_suspend() calls v7_flush_dcache_all() which doesn't save
|
||||
* stack frame and it expects the caller to take care of it. Hence the entire
|
||||
* stack frame is saved to avoid possible stack corruption.
|
||||
*/
|
||||
ENTRY(omap4_finish_suspend)
|
||||
stmfd sp!, {lr}
|
||||
stmfd sp!, {r4-r12, lr}
|
||||
cmp r0, #0x0
|
||||
beq do_WFI @ No lowpower state, jump to WFI
|
||||
|
||||
@ -226,7 +230,7 @@ scu_gp_clear:
|
||||
skip_scu_gp_clear:
|
||||
isb
|
||||
dsb
|
||||
ldmfd sp!, {pc}
|
||||
ldmfd sp!, {r4-r12, pc}
|
||||
ENDPROC(omap4_finish_suspend)
|
||||
|
||||
/*
|
||||
|
@ -67,6 +67,7 @@ void __init omap_pmic_init(int bus, u32 clkrate,
|
||||
const char *pmic_type, int pmic_irq,
|
||||
struct twl4030_platform_data *pmic_data)
|
||||
{
|
||||
omap_mux_init_signal("sys_nirq", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE);
|
||||
strncpy(pmic_i2c_board_info.type, pmic_type,
|
||||
sizeof(pmic_i2c_board_info.type));
|
||||
pmic_i2c_board_info.irq = pmic_irq;
|
||||
|
@ -109,7 +109,8 @@ void __init orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
{
|
||||
orion_ge00_init(eth_data,
|
||||
ORION5X_ETH_PHYS_BASE, IRQ_ORION5X_ETH_SUM,
|
||||
IRQ_ORION5X_ETH_ERR);
|
||||
IRQ_ORION5X_ETH_ERR,
|
||||
MV643XX_TX_CSUM_DEFAULT_LIMIT);
|
||||
}
|
||||
|
||||
|
||||
|
@ -24,7 +24,8 @@
|
||||
*/
|
||||
|
||||
enum dma_ch {
|
||||
DMACH_XD0,
|
||||
DMACH_DT_PROP = -1, /* not yet supported, do not use */
|
||||
DMACH_XD0 = 0,
|
||||
DMACH_XD1,
|
||||
DMACH_SDI,
|
||||
DMACH_SPI0,
|
||||
|
@ -41,7 +41,6 @@ config MACH_HREFV60
|
||||
config MACH_SNOWBALL
|
||||
bool "U8500 Snowball platform"
|
||||
select MACH_MOP500
|
||||
select LEDS_GPIO
|
||||
help
|
||||
Include support for the snowball development platform.
|
||||
|
||||
|
@ -191,9 +191,9 @@ static struct platform_device *db8500_add_msp_i2s(struct device *parent,
|
||||
return pdev;
|
||||
}
|
||||
|
||||
/* Platform device for ASoC U8500 machine */
|
||||
static struct platform_device snd_soc_u8500 = {
|
||||
.name = "snd-soc-u8500",
|
||||
/* Platform device for ASoC MOP500 machine */
|
||||
static struct platform_device snd_soc_mop500 = {
|
||||
.name = "snd-soc-mop500",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = NULL,
|
||||
@ -227,8 +227,8 @@ int mop500_msp_init(struct device *parent)
|
||||
{
|
||||
struct platform_device *msp1;
|
||||
|
||||
pr_info("%s: Register platform-device 'snd-soc-u8500'.\n", __func__);
|
||||
platform_device_register(&snd_soc_u8500);
|
||||
pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
|
||||
platform_device_register(&snd_soc_mop500);
|
||||
|
||||
pr_info("Initialize MSP I2S-devices.\n");
|
||||
db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
|
||||
|
@ -797,6 +797,7 @@ static void __init u8500_init_machine(void)
|
||||
ARRAY_SIZE(mop500_platform_devs));
|
||||
|
||||
mop500_sdi_init(parent);
|
||||
mop500_msp_init(parent);
|
||||
i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
|
||||
i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
|
||||
i2c_register_board_info(2, mop500_i2c2_devices,
|
||||
@ -804,6 +805,8 @@ static void __init u8500_init_machine(void)
|
||||
|
||||
mop500_uib_init();
|
||||
|
||||
} else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
|
||||
mop500_msp_init(parent);
|
||||
} else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
|
||||
/*
|
||||
* The HREFv60 board removed a GPIO expander and routed
|
||||
@ -815,6 +818,7 @@ static void __init u8500_init_machine(void)
|
||||
ARRAY_SIZE(mop500_platform_devs));
|
||||
|
||||
hrefv60_sdi_init(parent);
|
||||
mop500_msp_init(parent);
|
||||
|
||||
i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
|
||||
i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES;
|
||||
|
@ -189,6 +189,7 @@ struct omap_dm_timer *omap_dm_timer_request(void)
|
||||
timer->reserved = 1;
|
||||
break;
|
||||
}
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (timer) {
|
||||
ret = omap_dm_timer_prepare(timer);
|
||||
@ -197,7 +198,6 @@ struct omap_dm_timer *omap_dm_timer_request(void)
|
||||
timer = NULL;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (!timer)
|
||||
pr_debug("%s: timer request failed!\n", __func__);
|
||||
@ -220,6 +220,7 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
|
||||
break;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (timer) {
|
||||
ret = omap_dm_timer_prepare(timer);
|
||||
@ -228,7 +229,6 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
|
||||
timer = NULL;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (!timer)
|
||||
pr_debug("%s: timer%d request failed!\n", __func__, id);
|
||||
@ -258,7 +258,7 @@ EXPORT_SYMBOL_GPL(omap_dm_timer_enable);
|
||||
|
||||
void omap_dm_timer_disable(struct omap_dm_timer *timer)
|
||||
{
|
||||
pm_runtime_put(&timer->pdev->dev);
|
||||
pm_runtime_put_sync(&timer->pdev->dev);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timer_disable);
|
||||
|
||||
|
@ -372,7 +372,8 @@ IS_OMAP_TYPE(3430, 0x3430)
|
||||
#define cpu_class_is_omap1() (cpu_is_omap7xx() || cpu_is_omap15xx() || \
|
||||
cpu_is_omap16xx())
|
||||
#define cpu_class_is_omap2() (cpu_is_omap24xx() || cpu_is_omap34xx() || \
|
||||
cpu_is_omap44xx() || soc_is_omap54xx())
|
||||
cpu_is_omap44xx() || soc_is_omap54xx() || \
|
||||
soc_is_am33xx())
|
||||
|
||||
/* Various silicon revisions for omap2 */
|
||||
#define OMAP242X_CLASS 0x24200024
|
||||
|
@ -108,4 +108,13 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SOC_AM33XX
|
||||
# ifdef OMAP_NAME
|
||||
# undef MULTI_OMAP2
|
||||
# define MULTI_OMAP2
|
||||
# else
|
||||
# define OMAP_NAME am33xx
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* __PLAT_OMAP_MULTI_H */
|
||||
|
@ -110,7 +110,7 @@ static inline void flush(void)
|
||||
_DEBUG_LL_ENTRY(mach, AM33XX_UART##p##_BASE, OMAP_PORT_SHIFT, \
|
||||
AM33XXUART##p)
|
||||
|
||||
static inline void __arch_decomp_setup(unsigned long arch_id)
|
||||
static inline void arch_decomp_setup(void)
|
||||
{
|
||||
int port = 0;
|
||||
|
||||
@ -198,8 +198,6 @@ static inline void __arch_decomp_setup(unsigned long arch_id)
|
||||
} while (0);
|
||||
}
|
||||
|
||||
#define arch_decomp_setup() __arch_decomp_setup(arch_id)
|
||||
|
||||
/*
|
||||
* nothing to do
|
||||
*/
|
||||
|
@ -291,10 +291,12 @@ static struct platform_device orion_ge00 = {
|
||||
void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
|
||||
unsigned long mapbase,
|
||||
unsigned long irq,
|
||||
unsigned long irq_err)
|
||||
unsigned long irq_err,
|
||||
unsigned int tx_csum_limit)
|
||||
{
|
||||
fill_resources(&orion_ge00_shared, orion_ge00_shared_resources,
|
||||
mapbase + 0x2000, SZ_16K - 1, irq_err);
|
||||
orion_ge00_shared_data.tx_csum_limit = tx_csum_limit;
|
||||
ge_complete(&orion_ge00_shared_data,
|
||||
orion_ge00_resources, irq, &orion_ge00_shared,
|
||||
eth_data, &orion_ge00);
|
||||
@ -343,10 +345,12 @@ static struct platform_device orion_ge01 = {
|
||||
void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
|
||||
unsigned long mapbase,
|
||||
unsigned long irq,
|
||||
unsigned long irq_err)
|
||||
unsigned long irq_err,
|
||||
unsigned int tx_csum_limit)
|
||||
{
|
||||
fill_resources(&orion_ge01_shared, orion_ge01_shared_resources,
|
||||
mapbase + 0x2000, SZ_16K - 1, irq_err);
|
||||
orion_ge01_shared_data.tx_csum_limit = tx_csum_limit;
|
||||
ge_complete(&orion_ge01_shared_data,
|
||||
orion_ge01_resources, irq, &orion_ge01_shared,
|
||||
eth_data, &orion_ge01);
|
||||
|
@ -39,12 +39,14 @@ void __init orion_rtc_init(unsigned long mapbase,
|
||||
void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
|
||||
unsigned long mapbase,
|
||||
unsigned long irq,
|
||||
unsigned long irq_err);
|
||||
unsigned long irq_err,
|
||||
unsigned int tx_csum_limit);
|
||||
|
||||
void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
|
||||
unsigned long mapbase,
|
||||
unsigned long irq,
|
||||
unsigned long irq_err);
|
||||
unsigned long irq_err,
|
||||
unsigned int tx_csum_limit);
|
||||
|
||||
void __init orion_ge10_init(struct mv643xx_eth_platform_data *eth_data,
|
||||
unsigned long mapbase,
|
||||
|
@ -430,7 +430,7 @@ s3c2410_dma_canload(struct s3c2410_dma_chan *chan)
|
||||
* when necessary.
|
||||
*/
|
||||
|
||||
int s3c2410_dma_enqueue(unsigned int channel, void *id,
|
||||
int s3c2410_dma_enqueue(enum dma_ch channel, void *id,
|
||||
dma_addr_t data, int size)
|
||||
{
|
||||
struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel);
|
||||
|
@ -32,6 +32,8 @@
|
||||
#include <linux/platform_data/s3c-hsudc.h>
|
||||
#include <linux/platform_data/s3c-hsotg.h>
|
||||
|
||||
#include <media/s5p_hdmi.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
#include <asm/pmu.h>
|
||||
#include <asm/mach/arch.h>
|
||||
@ -748,7 +750,8 @@ void __init s5p_i2c_hdmiphy_set_platdata(struct s3c2410_platform_i2c *pd)
|
||||
if (!pd) {
|
||||
pd = &default_i2c_data;
|
||||
|
||||
if (soc_is_exynos4210())
|
||||
if (soc_is_exynos4210() ||
|
||||
soc_is_exynos4212() || soc_is_exynos4412())
|
||||
pd->bus_num = 8;
|
||||
else if (soc_is_s5pv210())
|
||||
pd->bus_num = 3;
|
||||
@ -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),
|
||||
&s5p_device_i2c_hdmiphy);
|
||||
}
|
||||
|
||||
struct s5p_hdmi_platform_data s5p_hdmi_def_platdata;
|
||||
|
||||
void __init s5p_hdmi_set_platdata(struct i2c_board_info *hdmiphy_info,
|
||||
struct i2c_board_info *mhl_info, int mhl_bus)
|
||||
{
|
||||
struct s5p_hdmi_platform_data *pd = &s5p_hdmi_def_platdata;
|
||||
|
||||
if (soc_is_exynos4210() ||
|
||||
soc_is_exynos4212() || soc_is_exynos4412())
|
||||
pd->hdmiphy_bus = 8;
|
||||
else if (soc_is_s5pv210())
|
||||
pd->hdmiphy_bus = 3;
|
||||
else
|
||||
pd->hdmiphy_bus = 0;
|
||||
|
||||
pd->hdmiphy_info = hdmiphy_info;
|
||||
pd->mhl_info = mhl_info;
|
||||
pd->mhl_bus = mhl_bus;
|
||||
|
||||
s3c_set_platdata(pd, sizeof(struct s5p_hdmi_platform_data),
|
||||
&s5p_device_hdmi);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_S5P_DEV_I2C_HDMIPHY */
|
||||
|
||||
/* I2S */
|
||||
|
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
|
||||
|
||||
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)
|
||||
{
|
||||
|
@ -25,17 +25,7 @@
|
||||
#include "common.h"
|
||||
#include "dev-usb.h"
|
||||
|
||||
static struct resource ath79_ohci_resources[] = {
|
||||
[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 struct resource ath79_ohci_resources[2];
|
||||
|
||||
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[] = {
|
||||
[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 struct resource ath79_ehci_resources[2];
|
||||
|
||||
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 | \
|
||||
AR71XX_RESET_USB_PHY | \
|
||||
AR71XX_RESET_USB_OHCI_DLL)
|
||||
@ -114,12 +108,12 @@ static void __init ath79_usb_setup(void)
|
||||
|
||||
mdelay(900);
|
||||
|
||||
ath79_ohci_resources[0].start = AR71XX_OHCI_BASE;
|
||||
ath79_ohci_resources[0].end = AR71XX_OHCI_BASE + AR71XX_OHCI_SIZE - 1;
|
||||
ath79_usb_init_resource(ath79_ohci_resources, AR71XX_OHCI_BASE,
|
||||
AR71XX_OHCI_SIZE, ATH79_MISC_IRQ_OHCI);
|
||||
platform_device_register(&ath79_ohci_device);
|
||||
|
||||
ath79_ehci_resources[0].start = AR71XX_EHCI_BASE;
|
||||
ath79_ehci_resources[0].end = AR71XX_EHCI_BASE + AR71XX_EHCI_SIZE - 1;
|
||||
ath79_usb_init_resource(ath79_ehci_resources, AR71XX_EHCI_BASE,
|
||||
AR71XX_EHCI_SIZE, ATH79_CPU_IRQ_USB);
|
||||
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v1;
|
||||
platform_device_register(&ath79_ehci_device);
|
||||
}
|
||||
@ -143,10 +137,8 @@ static void __init ar7240_usb_setup(void)
|
||||
|
||||
iounmap(usb_ctrl_base);
|
||||
|
||||
ath79_ohci_resources[0].start = AR7240_OHCI_BASE;
|
||||
ath79_ohci_resources[0].end = AR7240_OHCI_BASE + AR7240_OHCI_SIZE - 1;
|
||||
ath79_ohci_resources[1].start = ATH79_CPU_IRQ_USB;
|
||||
ath79_ohci_resources[1].end = ATH79_CPU_IRQ_USB;
|
||||
ath79_usb_init_resource(ath79_ohci_resources, AR7240_OHCI_BASE,
|
||||
AR7240_OHCI_SIZE, ATH79_CPU_IRQ_USB);
|
||||
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);
|
||||
mdelay(10);
|
||||
|
||||
ath79_ehci_resources[0].start = AR724X_EHCI_BASE;
|
||||
ath79_ehci_resources[0].end = AR724X_EHCI_BASE + AR724X_EHCI_SIZE - 1;
|
||||
ath79_usb_init_resource(ath79_ehci_resources, AR724X_EHCI_BASE,
|
||||
AR724X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
|
||||
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
|
||||
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);
|
||||
mdelay(10);
|
||||
|
||||
ath79_ehci_resources[0].start = AR913X_EHCI_BASE;
|
||||
ath79_ehci_resources[0].end = AR913X_EHCI_BASE + AR913X_EHCI_SIZE - 1;
|
||||
ath79_usb_init_resource(ath79_ehci_resources, AR913X_EHCI_BASE,
|
||||
AR913X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
|
||||
ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
|
||||
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);
|
||||
mdelay(10);
|
||||
|
||||
ath79_ehci_resources[0].start = AR933X_EHCI_BASE;
|
||||
ath79_ehci_resources[0].end = AR933X_EHCI_BASE + AR933X_EHCI_SIZE - 1;
|
||||
ath79_usb_init_resource(ath79_ehci_resources, AR933X_EHCI_BASE,
|
||||
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;
|
||||
platform_device_register(&ath79_ehci_device);
|
||||
}
|
||||
@ -213,6 +231,8 @@ void __init ath79_register_usb(void)
|
||||
ar913x_usb_setup();
|
||||
else if (soc_is_ar933x())
|
||||
ar933x_usb_setup();
|
||||
else if (soc_is_ar934x())
|
||||
ar934x_usb_setup();
|
||||
else
|
||||
BUG();
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "dev-gpio-buttons.h"
|
||||
#include "dev-leds-gpio.h"
|
||||
#include "dev-spi.h"
|
||||
#include "dev-usb.h"
|
||||
#include "dev-wmac.h"
|
||||
#include "pci.h"
|
||||
|
||||
@ -126,6 +127,7 @@ static void __init db120_setup(void)
|
||||
db120_gpio_keys);
|
||||
ath79_register_spi(&db120_spi_data, db120_spi_info,
|
||||
ARRAY_SIZE(db120_spi_info));
|
||||
ath79_register_usb();
|
||||
ath79_register_wmac(art + DB120_WMAC_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_SIZE 0x20000
|
||||
#define AR934X_EHCI_BASE 0x1b000000
|
||||
#define AR934X_EHCI_SIZE 0x200
|
||||
|
||||
/*
|
||||
* DDR_CTRL block
|
||||
@ -288,6 +290,11 @@
|
||||
#define AR933X_RESET_USB_PHY BIT(4)
|
||||
#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 AR934X_BOOTSTRAP_SW_OPTION8 BIT(23)
|
||||
|
@ -345,6 +345,13 @@
|
||||
/include/ "qoriq-duart-1.dtsi"
|
||||
/include/ "qoriq-gpio-0.dtsi"
|
||||
/include/ "qoriq-usb2-mph-0.dtsi"
|
||||
usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
|
||||
port0;
|
||||
};
|
||||
/include/ "qoriq-usb2-dr-0.dtsi"
|
||||
usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
};
|
||||
/include/ "qoriq-sec4.0-0.dtsi"
|
||||
};
|
||||
|
@ -6,28 +6,27 @@ CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
CONFIG_KALLSYMS_EXTRA_PASS=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_P1023_RDS=y
|
||||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_CPM2=y
|
||||
CONFIG_GPIO_MPC8XXX=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_MATH_EMULATION=y
|
||||
@ -63,11 +62,11 @@ CONFIG_INET_ESP=y
|
||||
CONFIG_IPV6=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_EEPROM_LEGACY=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
@ -80,15 +79,14 @@ CONFIG_SATA_FSL=y
|
||||
CONFIG_SATA_SIL24=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
CONFIG_FS_ENET=y
|
||||
CONFIG_FSL_PQ_MDIO=y
|
||||
CONFIG_E1000E=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_DAVICOM_PHY=y
|
||||
CONFIG_CICADA_PHY=y
|
||||
CONFIG_VITESSE_PHY=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_FS_ENET=y
|
||||
CONFIG_E1000E=y
|
||||
CONFIG_FSL_PQ_MDIO=y
|
||||
CONFIG_INPUT_FF_MEMLESS=m
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
@ -98,16 +96,15 @@ CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=2
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||
CONFIG_SERIAL_8250_RSA=y
|
||||
CONFIG_SERIAL_QE=m
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_NVRAM=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CPM=m
|
||||
CONFIG_I2C_MPC=y
|
||||
CONFIG_GPIO_MPC8XXX=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||
CONFIG_SOUND=y
|
||||
@ -123,7 +120,6 @@ CONFIG_DMADEVICES=y
|
||||
CONFIG_FSL_DMA=y
|
||||
# CONFIG_NET_DMA is not set
|
||||
CONFIG_STAGING=y
|
||||
# CONFIG_STAGING_EXCLUDE_BUILD is not set
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT3_FS=y
|
||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||
@ -150,22 +146,15 @@ CONFIG_QNX4FS_FS=m
|
||||
CONFIG_SYSV_FS=m
|
||||
CONFIG_UFS_FS=m
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_FRAME_WARN=8092
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
|
@ -6,8 +6,8 @@ CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_RCU_TRACE=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
@ -21,23 +21,22 @@ CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_P2041_RDB=y
|
||||
CONFIG_P3041_DS=y
|
||||
CONFIG_P4080_DS=y
|
||||
CONFIG_P5020_DS=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
CONFIG_FSL_LBC=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCI_MSI=y
|
||||
# CONFIG_PCIEASPM is not set
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_RAPIDIO=y
|
||||
CONFIG_FSL_RIO=y
|
||||
CONFIG_NET=y
|
||||
@ -70,6 +69,7 @@ CONFIG_INET_IPCOMP=y
|
||||
CONFIG_IPV6=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
@ -77,17 +77,14 @@ CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_NAND_IDS=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
@ -115,11 +112,9 @@ CONFIG_SERIO_LIBPS2=y
|
||||
CONFIG_PPC_EPAPR_HV_BYTECHAN=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||
CONFIG_SERIAL_8250_RSA=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_NVRAM=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
@ -132,7 +127,6 @@ CONFIG_SPI_FSL_ESPI=y
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||
CONFIG_USB_HID=m
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_FSL=y
|
||||
@ -142,8 +136,6 @@ CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_OF=y
|
||||
CONFIG_MMC_SDHCI_OF_ESDHC=y
|
||||
CONFIG_EDAC=y
|
||||
CONFIG_EDAC_MM_EDAC=y
|
||||
CONFIG_EDAC_MPC85XX=y
|
||||
@ -170,19 +162,16 @@ CONFIG_HUGETLBFS=y
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_CRAMFS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=m
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=m
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_RCU_TRACE=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_MD4=y
|
||||
|
@ -56,6 +56,7 @@ CONFIG_INET_ESP=y
|
||||
CONFIG_IPV6=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
|
@ -1,8 +1,10 @@
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_ALTIVEC=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
@ -13,15 +15,16 @@ CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_KEXEC=y
|
||||
# CONFIG_RELOCATABLE is not set
|
||||
# CONFIG_PPC_PSERIES is not set
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_PMAC64=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
# CONFIG_MIGRATION is not set
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
@ -49,6 +52,7 @@ CONFIG_NF_CT_NETLINK=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
@ -56,6 +60,8 @@ CONFIG_BLK_DEV_RAM_SIZE=65536
|
||||
CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_IDE=y
|
||||
CONFIG_BLK_DEV_IDECD=y
|
||||
CONFIG_BLK_DEV_IDE_PMAC=y
|
||||
CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
@ -79,24 +85,33 @@ CONFIG_DM_CRYPT=m
|
||||
CONFIG_DM_SNAPSHOT=m
|
||||
CONFIG_DM_MIRROR=m
|
||||
CONFIG_DM_ZERO=m
|
||||
CONFIG_MACINTOSH_DRIVERS=y
|
||||
CONFIG_IEEE1394=y
|
||||
CONFIG_IEEE1394_OHCI1394=y
|
||||
CONFIG_IEEE1394_SBP2=m
|
||||
CONFIG_IEEE1394_ETH1394=m
|
||||
CONFIG_IEEE1394_RAWIO=y
|
||||
CONFIG_IEEE1394_VIDEO1394=m
|
||||
CONFIG_IEEE1394_DV1394=m
|
||||
CONFIG_ADB_PMU=y
|
||||
CONFIG_PMAC_SMU=y
|
||||
CONFIG_MAC_EMUMOUSEBTN=y
|
||||
CONFIG_THERM_PM72=y
|
||||
CONFIG_WINDFARM=y
|
||||
CONFIG_WINDFARM_PM81=y
|
||||
CONFIG_WINDFARM_PM91=y
|
||||
CONFIG_WINDFARM_PM112=y
|
||||
CONFIG_WINDFARM_PM121=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_BONDING=m
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_MII=y
|
||||
CONFIG_BONDING=m
|
||||
CONFIG_TUN=m
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_SUNGEM=y
|
||||
CONFIG_ACENIC=m
|
||||
CONFIG_ACENIC_OMIT_TIGON_I=y
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_E1000=y
|
||||
CONFIG_SUNGEM=y
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPPOE=m
|
||||
CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_USB_CATC=m
|
||||
CONFIG_USB_KAWETH=m
|
||||
CONFIG_USB_PEGASUS=m
|
||||
@ -106,24 +121,36 @@ CONFIG_USB_USBNET=m
|
||||
# CONFIG_USB_NET_NET1080 is not set
|
||||
# CONFIG_USB_NET_CDC_SUBSET is not set
|
||||
# CONFIG_USB_NET_ZAURUS is not set
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPPOE=m
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_JOYDEV=m
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_GEN_RTC=y
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_AGP=y
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_NOUVEAU=y
|
||||
CONFIG_AGP=m
|
||||
CONFIG_AGP_UNINORTH=m
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB_TILEBLITTING=y
|
||||
CONFIG_FB_OF=y
|
||||
CONFIG_FB_NVIDIA=y
|
||||
CONFIG_FB_NVIDIA_I2C=y
|
||||
CONFIG_FB_RADEON=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_LOGO=y
|
||||
CONFIG_SOUND=m
|
||||
CONFIG_SND=m
|
||||
@ -131,7 +158,15 @@ CONFIG_SND_SEQUENCER=m
|
||||
CONFIG_SND_MIXER_OSS=m
|
||||
CONFIG_SND_PCM_OSS=m
|
||||
CONFIG_SND_SEQUENCER_OSS=y
|
||||
CONFIG_SND_POWERMAC=m
|
||||
CONFIG_SND_AOA=m
|
||||
CONFIG_SND_AOA_FABRIC_LAYOUT=m
|
||||
CONFIG_SND_AOA_ONYX=m
|
||||
CONFIG_SND_AOA_TAS=m
|
||||
CONFIG_SND_AOA_TOONIE=m
|
||||
CONFIG_SND_USB_AUDIO=m
|
||||
CONFIG_HID_PID=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_LOGITECH_FF=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
@ -139,12 +174,13 @@ CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_PID=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
# CONFIG_USB_EHCI_HCD_PPC_OF is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
|
||||
CONFIG_USB_ACM=m
|
||||
CONFIG_USB_PRINTER=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
@ -208,6 +244,8 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
|
||||
CONFIG_REISERFS_FS_SECURITY=y
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_AUTOFS_FS=m
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_JOLIET=y
|
||||
CONFIG_ZISOFS=y
|
||||
@ -221,12 +259,14 @@ CONFIG_HFS_FS=m
|
||||
CONFIG_HFSPLUS_FS=m
|
||||
CONFIG_CRAMFS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_CODEPAGE_1250=y
|
||||
CONFIG_NLS_CODEPAGE_1251=y
|
||||
@ -234,23 +274,29 @@ CONFIG_NLS_ASCII=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_ISO8859_15=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_LATENCYTOP=y
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_BOOTX_TEXT=y
|
||||
CONFIG_CRYPTO_NULL=m
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_MD4=m
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_SHA256=m
|
||||
CONFIG_CRYPTO_SHA512=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_AES=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_CAST5=m
|
||||
CONFIG_CRYPTO_CAST6=m
|
||||
@ -260,6 +306,3 @@ CONFIG_CRYPTO_TEA=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
# CONFIG_VIRTUALIZATION is not set
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
|
@ -2,12 +2,12 @@ CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
# CONFIG_PPC_CHRP is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
CONFIG_PPC_83xx=y
|
||||
@ -25,7 +25,6 @@ CONFIG_ASP834x=y
|
||||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
@ -42,10 +41,9 @@ CONFIG_INET_ESP=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
@ -64,15 +62,14 @@ CONFIG_ATA=y
|
||||
CONFIG_SATA_FSL=y
|
||||
CONFIG_SATA_SIL=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_UCC_GETH=y
|
||||
CONFIG_GIANFAR=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_DAVICOM_PHY=y
|
||||
CONFIG_VITESSE_PHY=y
|
||||
CONFIG_ICPLUS_PHY=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_GIANFAR=y
|
||||
CONFIG_UCC_GETH=y
|
||||
CONFIG_INPUT_FF_MEMLESS=m
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
@ -112,17 +109,12 @@ CONFIG_RTC_DRV_DS1374=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT3_FS=y
|
||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
|
@ -5,7 +5,9 @@ CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
@ -17,6 +19,8 @@ CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MPC8540_ADS=y
|
||||
CONFIG_MPC8560_ADS=y
|
||||
CONFIG_MPC85xx_CDS=y
|
||||
@ -40,8 +44,6 @@ CONFIG_SBC8548=y
|
||||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=12
|
||||
@ -74,36 +76,25 @@ CONFIG_INET_ESP=y
|
||||
CONFIG_IPV6=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_FTL=y
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_MTD_NAND_IDS=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_NBD=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_EEPROM_LEGACY=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
@ -115,6 +106,7 @@ CONFIG_ATA=y
|
||||
CONFIG_SATA_AHCI=y
|
||||
CONFIG_SATA_FSL=y
|
||||
CONFIG_PATA_ALI=y
|
||||
CONFIG_PATA_VIA=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
CONFIG_FS_ENET=y
|
||||
@ -134,7 +126,6 @@ CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=2
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||
CONFIG_SERIAL_8250_RSA=y
|
||||
@ -183,7 +174,6 @@ CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_FSL=y
|
||||
@ -229,18 +219,13 @@ CONFIG_QNX4FS_FS=m
|
||||
CONFIG_SYSV_FS=m
|
||||
CONFIG_UFS_FS=m
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
|
@ -7,7 +7,9 @@ CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
@ -19,6 +21,8 @@ CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MPC8540_ADS=y
|
||||
CONFIG_MPC8560_ADS=y
|
||||
CONFIG_MPC85xx_CDS=y
|
||||
@ -42,8 +46,6 @@ CONFIG_SBC8548=y
|
||||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
@ -77,36 +79,25 @@ CONFIG_INET_ESP=y
|
||||
CONFIG_IPV6=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_FTL=y
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_MTD_NAND_IDS=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_NBD=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_EEPROM_LEGACY=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
@ -137,7 +128,6 @@ CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=2
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||
CONFIG_SERIAL_8250_RSA=y
|
||||
@ -186,7 +176,6 @@ CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_FSL=y
|
||||
@ -232,18 +221,13 @@ CONFIG_QNX4FS_FS=m
|
||||
CONFIG_SYSV_FS=m
|
||||
CONFIG_UFS_FS=m
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
|
@ -553,9 +553,7 @@ static inline int cpu_has_feature(unsigned long feature)
|
||||
& feature);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HAVE_HW_BREAKPOINT
|
||||
#define HBP_NUM 1
|
||||
#endif /* CONFIG_HAVE_HW_BREAKPOINT */
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include <asm/kvm_asm.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
#define KVM_MAX_VCPUS NR_CPUS
|
||||
#define KVM_MAX_VCORES NR_CPUS
|
||||
|
@ -219,4 +219,16 @@ void kvmppc_claim_lpid(long lpid);
|
||||
void kvmppc_free_lpid(long lpid);
|
||||
void kvmppc_init_lpid(unsigned long nr_lpids);
|
||||
|
||||
static inline void kvmppc_mmu_flush_icache(pfn_t pfn)
|
||||
{
|
||||
/* Clear i-cache for new pages */
|
||||
struct page *page;
|
||||
page = pfn_to_page(pfn);
|
||||
if (!test_bit(PG_arch_1, &page->flags)) {
|
||||
flush_dcache_icache_page(page);
|
||||
set_bit(PG_arch_1, &page->flags);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif /* __POWERPC_KVM_PPC_H__ */
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/smp.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
struct mpic_msgr {
|
||||
u32 __iomem *base;
|
||||
|
@ -83,11 +83,10 @@ static int dma_iommu_dma_supported(struct device *dev, u64 mask)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((tbl->it_offset + tbl->it_size) > (mask >> IOMMU_PAGE_SHIFT)) {
|
||||
dev_info(dev, "Warning: IOMMU window too big for device mask\n");
|
||||
dev_info(dev, "mask: 0x%08llx, table end: 0x%08lx\n",
|
||||
mask, (tbl->it_offset + tbl->it_size) <<
|
||||
IOMMU_PAGE_SHIFT);
|
||||
if (tbl->it_offset > (mask >> IOMMU_PAGE_SHIFT)) {
|
||||
dev_info(dev, "Warning: IOMMU offset too big for device mask\n");
|
||||
dev_info(dev, "mask: 0x%08llx, table offset: 0x%08lx\n",
|
||||
mask, tbl->it_offset << IOMMU_PAGE_SHIFT);
|
||||
return 0;
|
||||
} else
|
||||
return 1;
|
||||
|
@ -253,7 +253,7 @@ int __kprobes hw_breakpoint_handler(struct die_args *args)
|
||||
|
||||
/* Do not emulate user-space instructions, instead single-step them */
|
||||
if (user_mode(regs)) {
|
||||
bp->ctx->task->thread.last_hit_ubp = bp;
|
||||
current->thread.last_hit_ubp = bp;
|
||||
regs->msr |= MSR_SE;
|
||||
goto out;
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <asm/processor.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/debug.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
/*
|
||||
* This table contains the mapping between PowerPC hardware trap types, and
|
||||
@ -101,6 +102,21 @@ static int computeSignal(unsigned int tt)
|
||||
return SIGHUP; /* default for things we don't know about */
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* kgdb_skipexception - Bail out of KGDB when we've been triggered.
|
||||
* @exception: Exception vector number
|
||||
* @regs: Current &struct pt_regs.
|
||||
*
|
||||
* On some architectures we need to skip a breakpoint exception when
|
||||
* it occurs after a breakpoint has been removed.
|
||||
*
|
||||
*/
|
||||
int kgdb_skipexception(int exception, struct pt_regs *regs)
|
||||
{
|
||||
return kgdb_isremovedbreak(regs->nip);
|
||||
}
|
||||
|
||||
static int kgdb_call_nmi_hook(struct pt_regs *regs)
|
||||
{
|
||||
kgdb_nmicallback(raw_smp_processor_id(), regs);
|
||||
@ -138,6 +154,8 @@ static int kgdb_handle_breakpoint(struct pt_regs *regs)
|
||||
static int kgdb_singlestep(struct pt_regs *regs)
|
||||
{
|
||||
struct thread_info *thread_info, *exception_thread_info;
|
||||
struct thread_info *backup_current_thread_info = \
|
||||
(struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL);
|
||||
|
||||
if (user_mode(regs))
|
||||
return 0;
|
||||
@ -155,13 +173,17 @@ static int kgdb_singlestep(struct pt_regs *regs)
|
||||
thread_info = (struct thread_info *)(regs->gpr[1] & ~(THREAD_SIZE-1));
|
||||
exception_thread_info = current_thread_info();
|
||||
|
||||
if (thread_info != exception_thread_info)
|
||||
if (thread_info != exception_thread_info) {
|
||||
/* Save the original current_thread_info. */
|
||||
memcpy(backup_current_thread_info, exception_thread_info, sizeof *thread_info);
|
||||
memcpy(exception_thread_info, thread_info, sizeof *thread_info);
|
||||
}
|
||||
|
||||
kgdb_handle_exception(0, SIGTRAP, 0, regs);
|
||||
|
||||
if (thread_info != exception_thread_info)
|
||||
memcpy(thread_info, exception_thread_info, sizeof *thread_info);
|
||||
/* Restore current_thread_info lastly. */
|
||||
memcpy(exception_thread_info, backup_current_thread_info, sizeof *thread_info);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -410,7 +432,6 @@ int kgdb_arch_handle_exception(int vector, int signo, int err_code,
|
||||
#else
|
||||
linux_regs->msr |= MSR_SE;
|
||||
#endif
|
||||
kgdb_single_step = 1;
|
||||
atomic_set(&kgdb_cpu_doing_single_step,
|
||||
raw_smp_processor_id());
|
||||
}
|
||||
|
@ -107,11 +107,11 @@ long ppc64_personality(unsigned long personality)
|
||||
long ret;
|
||||
|
||||
if (personality(current->personality) == PER_LINUX32
|
||||
&& personality == PER_LINUX)
|
||||
personality = PER_LINUX32;
|
||||
&& personality(personality) == PER_LINUX)
|
||||
personality = (personality & ~PER_MASK) | PER_LINUX32;
|
||||
ret = sys_personality(personality);
|
||||
if (ret == PER_LINUX32)
|
||||
ret = PER_LINUX;
|
||||
if (personality(ret) == PER_LINUX32)
|
||||
ret = (ret & ~PER_MASK) | PER_LINUX;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
@ -211,6 +211,9 @@ next_pteg:
|
||||
pteg1 |= PP_RWRX;
|
||||
}
|
||||
|
||||
if (orig_pte->may_execute)
|
||||
kvmppc_mmu_flush_icache(hpaddr >> PAGE_SHIFT);
|
||||
|
||||
local_irq_disable();
|
||||
|
||||
if (pteg[rr]) {
|
||||
|
@ -126,6 +126,8 @@ int kvmppc_mmu_map_page(struct kvm_vcpu *vcpu, struct kvmppc_pte *orig_pte)
|
||||
|
||||
if (!orig_pte->may_execute)
|
||||
rflags |= HPTE_R_N;
|
||||
else
|
||||
kvmppc_mmu_flush_icache(hpaddr >> PAGE_SHIFT);
|
||||
|
||||
hash = hpt_hash(va, PTE_SIZE, MMU_SEGSIZE_256M);
|
||||
|
||||
|
@ -1421,13 +1421,13 @@ _GLOBAL(kvmppc_h_cede)
|
||||
sync /* order setting ceded vs. testing prodded */
|
||||
lbz r5,VCPU_PRODDED(r3)
|
||||
cmpwi r5,0
|
||||
bne 1f
|
||||
bne kvm_cede_prodded
|
||||
li r0,0 /* set trap to 0 to say hcall is handled */
|
||||
stw r0,VCPU_TRAP(r3)
|
||||
li r0,H_SUCCESS
|
||||
std r0,VCPU_GPR(R3)(r3)
|
||||
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)
|
||||
|
||||
/*
|
||||
@ -1446,7 +1446,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_206)
|
||||
or r4,r4,r0
|
||||
PPC_POPCNTW(R7,R4)
|
||||
cmpw r7,r8
|
||||
bge 2f
|
||||
bge kvm_cede_exit
|
||||
stwcx. r4,0,r6
|
||||
bne 31b
|
||||
li r0,1
|
||||
@ -1555,7 +1555,8 @@ kvm_end_cede:
|
||||
b hcall_real_fallback
|
||||
|
||||
/* cede when already previously prodded case */
|
||||
1: li r0,0
|
||||
kvm_cede_prodded:
|
||||
li r0,0
|
||||
stb r0,VCPU_PRODDED(r3)
|
||||
sync /* order testing prodded vs. clearing ceded */
|
||||
stb r0,VCPU_CEDED(r3)
|
||||
@ -1563,7 +1564,8 @@ kvm_end_cede:
|
||||
blr
|
||||
|
||||
/* 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
|
||||
|
||||
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)
|
||||
{
|
||||
if (vcpu_e500->g2h_tlb1_map)
|
||||
memset(vcpu_e500->g2h_tlb1_map,
|
||||
sizeof(u64) * vcpu_e500->gtlb_params[1].entries, 0);
|
||||
memset(vcpu_e500->g2h_tlb1_map, 0,
|
||||
sizeof(u64) * vcpu_e500->gtlb_params[1].entries);
|
||||
if (vcpu_e500->h2g_tlb1_rmap)
|
||||
memset(vcpu_e500->h2g_tlb1_rmap,
|
||||
sizeof(unsigned int) * host_tlb_params[1].entries, 0);
|
||||
memset(vcpu_e500->h2g_tlb1_rmap, 0,
|
||||
sizeof(unsigned int) * host_tlb_params[1].entries);
|
||||
}
|
||||
|
||||
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,
|
||||
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 */
|
||||
|
@ -288,7 +288,7 @@ err1; stb r0,0(r3)
|
||||
std r0,16(r1)
|
||||
stdu r1,-STACKFRAMESIZE(r1)
|
||||
bl .enter_vmx_usercopy
|
||||
cmpwi r3,0
|
||||
cmpwi cr1,r3,0
|
||||
ld r0,STACKFRAMESIZE+16(r1)
|
||||
ld r3,STACKFRAMESIZE+48(r1)
|
||||
ld r4,STACKFRAMESIZE+56(r1)
|
||||
@ -326,38 +326,7 @@ err1; stb r0,0(r3)
|
||||
dcbt r0,r8,0b01010 /* GO */
|
||||
.machine pop
|
||||
|
||||
/*
|
||||
* 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
|
||||
beq cr1,.Lunwind_stack_nonvmx_copy
|
||||
|
||||
/*
|
||||
* If source and destination are not relatively aligned we use a
|
||||
|
@ -222,7 +222,7 @@ _GLOBAL(memcpy_power7)
|
||||
std r0,16(r1)
|
||||
stdu r1,-STACKFRAMESIZE(r1)
|
||||
bl .enter_vmx_copy
|
||||
cmpwi r3,0
|
||||
cmpwi cr1,r3,0
|
||||
ld r0,STACKFRAMESIZE+16(r1)
|
||||
ld r3,STACKFRAMESIZE+48(r1)
|
||||
ld r4,STACKFRAMESIZE+56(r1)
|
||||
@ -260,7 +260,7 @@ _GLOBAL(memcpy_power7)
|
||||
dcbt r0,r8,0b01010 /* GO */
|
||||
.machine pop
|
||||
|
||||
beq .Lunwind_stack_nonvmx_copy
|
||||
beq cr1,.Lunwind_stack_nonvmx_copy
|
||||
|
||||
/*
|
||||
* 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);
|
||||
#endif
|
||||
}
|
||||
EXPORT_SYMBOL(flush_dcache_icache_page);
|
||||
|
||||
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))
|
||||
continue;
|
||||
val = read_pmc(event->hw.idx);
|
||||
if ((int)val < 0) {
|
||||
if (pmc_overflow(val)) {
|
||||
/* event has overflowed */
|
||||
found = 1;
|
||||
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_addr);
|
||||
pcibios_free_controller(hose);
|
||||
return 0;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
setup_pci_cmd(hose);
|
||||
@ -827,6 +827,7 @@ struct device_node *fsl_pci_primary;
|
||||
|
||||
void __devinit fsl_pci_init(void)
|
||||
{
|
||||
int ret;
|
||||
struct device_node *node;
|
||||
struct pci_controller *hose;
|
||||
dma_addr_t max = 0xffffffff;
|
||||
@ -855,10 +856,12 @@ void __devinit fsl_pci_init(void)
|
||||
if (!fsl_pci_primary)
|
||||
fsl_pci_primary = node;
|
||||
|
||||
fsl_add_bridge(node, fsl_pci_primary == node);
|
||||
hose = pci_find_hose_for_OF_device(node);
|
||||
max = min(max, hose->dma_window_base_cur +
|
||||
hose->dma_window_size);
|
||||
ret = fsl_add_bridge(node, fsl_pci_primary == node);
|
||||
if (ret == 0) {
|
||||
hose = pci_find_hose_for_OF_device(node);
|
||||
max = min(max, hose->dma_window_base_cur +
|
||||
hose->dma_window_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,9 @@
|
||||
#include <linux/list.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/slab.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/hw_irq.h>
|
||||
#include <asm/ppc-pci.h>
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <linux/reboot.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/kallsyms.h>
|
||||
#include <linux/kmsg_dump.h>
|
||||
#include <linux/cpumask.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/sysrq.h>
|
||||
@ -894,13 +895,13 @@ cmds(struct pt_regs *excp)
|
||||
#endif
|
||||
default:
|
||||
printf("Unrecognized command: ");
|
||||
do {
|
||||
do {
|
||||
if (' ' < cmd && cmd <= '~')
|
||||
putchar(cmd);
|
||||
else
|
||||
printf("\\x%x", cmd);
|
||||
cmd = inchar();
|
||||
} while (cmd != '\n');
|
||||
} while (cmd != '\n');
|
||||
printf(" (type ? for help)\n");
|
||||
break;
|
||||
}
|
||||
@ -1097,7 +1098,7 @@ static long check_bp_loc(unsigned long addr)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static char *breakpoint_help_string =
|
||||
static char *breakpoint_help_string =
|
||||
"Breakpoint command usage:\n"
|
||||
"b show breakpoints\n"
|
||||
"b <addr> [cnt] set breakpoint at given instr addr\n"
|
||||
@ -1193,7 +1194,7 @@ bpt_cmds(void)
|
||||
|
||||
default:
|
||||
termch = cmd;
|
||||
cmd = skipbl();
|
||||
cmd = skipbl();
|
||||
if (cmd == '?') {
|
||||
printf(breakpoint_help_string);
|
||||
break;
|
||||
@ -1359,7 +1360,7 @@ static void xmon_show_stack(unsigned long sp, unsigned long lr,
|
||||
sp + REGS_OFFSET);
|
||||
break;
|
||||
}
|
||||
printf("--- Exception: %lx %s at ", regs.trap,
|
||||
printf("--- Exception: %lx %s at ", regs.trap,
|
||||
getvecname(TRAP(®s)));
|
||||
pc = regs.nip;
|
||||
lr = regs.link;
|
||||
@ -1623,14 +1624,14 @@ static void super_regs(void)
|
||||
|
||||
cmd = skipbl();
|
||||
if (cmd == '\n') {
|
||||
unsigned long sp, toc;
|
||||
unsigned long sp, toc;
|
||||
asm("mr %0,1" : "=r" (sp) :);
|
||||
asm("mr %0,2" : "=r" (toc) :);
|
||||
|
||||
printf("msr = "REG" sprg0= "REG"\n",
|
||||
mfmsr(), mfspr(SPRN_SPRG0));
|
||||
printf("pvr = "REG" sprg1= "REG"\n",
|
||||
mfspr(SPRN_PVR), mfspr(SPRN_SPRG1));
|
||||
mfspr(SPRN_PVR), mfspr(SPRN_SPRG1));
|
||||
printf("dec = "REG" sprg2= "REG"\n",
|
||||
mfspr(SPRN_DEC), mfspr(SPRN_SPRG2));
|
||||
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 mnoread;
|
||||
|
||||
static char *memex_help_string =
|
||||
static char *memex_help_string =
|
||||
"Memory examine command usage:\n"
|
||||
"m [addr] [flags] examine/change memory\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"
|
||||
"";
|
||||
|
||||
static char *memex_subcmd_help_string =
|
||||
static char *memex_subcmd_help_string =
|
||||
"Memory examine subcommands:\n"
|
||||
" hexval write this val to current 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);
|
||||
adrs += nr;
|
||||
for (m = 0; m < r; ++m) {
|
||||
if ((m & (sizeof(long) - 1)) == 0 && m > 0)
|
||||
if ((m & (sizeof(long) - 1)) == 0 && m > 0)
|
||||
putchar(' ');
|
||||
if (m < nr)
|
||||
printf("%.2x", temp[m]);
|
||||
@ -2072,7 +2073,7 @@ prdump(unsigned long adrs, long ndump)
|
||||
printf("%s", fault_chars[fault_type]);
|
||||
}
|
||||
for (; m < 16; ++m) {
|
||||
if ((m & (sizeof(long) - 1)) == 0)
|
||||
if ((m & (sizeof(long) - 1)) == 0)
|
||||
putchar(' ');
|
||||
printf(" ");
|
||||
}
|
||||
@ -2148,45 +2149,28 @@ print_address(unsigned long addr)
|
||||
void
|
||||
dump_log_buf(void)
|
||||
{
|
||||
const unsigned long size = 128;
|
||||
unsigned long end, addr;
|
||||
unsigned char buf[size + 1];
|
||||
struct kmsg_dumper dumper = { .active = 1 };
|
||||
unsigned char buf[128];
|
||||
size_t len;
|
||||
|
||||
addr = 0;
|
||||
buf[size] = '\0';
|
||||
if (setjmp(bus_error_jmp) != 0) {
|
||||
printf("Error dumping printk buffer!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (setjmp(bus_error_jmp) != 0) {
|
||||
printf("Unable to lookup symbol __log_buf!\n");
|
||||
return;
|
||||
}
|
||||
catch_memory_errors = 1;
|
||||
sync();
|
||||
|
||||
catch_memory_errors = 1;
|
||||
sync();
|
||||
addr = kallsyms_lookup_name("__log_buf");
|
||||
kmsg_dump_rewind_nolock(&dumper);
|
||||
while (kmsg_dump_get_line_nolock(&dumper, false, buf, sizeof(buf), &len)) {
|
||||
buf[len] = '\0';
|
||||
printf("%s", buf);
|
||||
}
|
||||
|
||||
if (! addr)
|
||||
printf("Symbol __log_buf not found!\n");
|
||||
else {
|
||||
end = addr + (1 << CONFIG_LOG_BUF_SHIFT);
|
||||
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;
|
||||
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);
|
||||
}
|
||||
|
||||
static void masked_increment(ulong *reg, ulong mask, int inc)
|
||||
{
|
||||
assign_masked(reg, *reg + inc, mask);
|
||||
}
|
||||
|
||||
static inline void
|
||||
register_address_increment(struct x86_emulate_ctxt *ctxt, unsigned long *reg, int inc)
|
||||
{
|
||||
ulong mask;
|
||||
|
||||
if (ctxt->ad_bytes == sizeof(unsigned long))
|
||||
*reg += inc;
|
||||
mask = ~0UL;
|
||||
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)
|
||||
@ -1522,8 +1535,8 @@ static int push(struct x86_emulate_ctxt *ctxt, void *data, int bytes)
|
||||
{
|
||||
struct segmented_address addr;
|
||||
|
||||
register_address_increment(ctxt, &ctxt->regs[VCPU_REGS_RSP], -bytes);
|
||||
addr.ea = register_address(ctxt, ctxt->regs[VCPU_REGS_RSP]);
|
||||
rsp_increment(ctxt, -bytes);
|
||||
addr.ea = ctxt->regs[VCPU_REGS_RSP] & stack_mask(ctxt);
|
||||
addr.seg = VCPU_SREG_SS;
|
||||
|
||||
return segmented_write(ctxt, addr, data, bytes);
|
||||
@ -1542,13 +1555,13 @@ static int emulate_pop(struct x86_emulate_ctxt *ctxt,
|
||||
int rc;
|
||||
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;
|
||||
rc = segmented_read(ctxt, addr, dest, len);
|
||||
if (rc != X86EMUL_CONTINUE)
|
||||
return rc;
|
||||
|
||||
register_address_increment(ctxt, &ctxt->regs[VCPU_REGS_RSP], len);
|
||||
rsp_increment(ctxt, len);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -1688,8 +1701,7 @@ static int em_popa(struct x86_emulate_ctxt *ctxt)
|
||||
|
||||
while (reg >= VCPU_REGS_RAX) {
|
||||
if (reg == VCPU_REGS_RSP) {
|
||||
register_address_increment(ctxt, &ctxt->regs[VCPU_REGS_RSP],
|
||||
ctxt->op_bytes);
|
||||
rsp_increment(ctxt, ctxt->op_bytes);
|
||||
--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);
|
||||
if (rc != X86EMUL_CONTINUE)
|
||||
return rc;
|
||||
register_address_increment(ctxt, &ctxt->regs[VCPU_REGS_RSP], ctxt->src.val);
|
||||
rsp_increment(ctxt, ctxt->src.val);
|
||||
return X86EMUL_CONTINUE;
|
||||
}
|
||||
|
||||
|
@ -4112,17 +4112,22 @@ static int mmu_shrink(struct shrinker *shrink, struct shrink_control *sc)
|
||||
int idx;
|
||||
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
|
||||
* here. We may skip a VM instance errorneosly, but we do not
|
||||
* want to shrink a VM that only started to populate its MMU
|
||||
* anyway.
|
||||
*/
|
||||
if (kvm->arch.n_used_mmu_pages > 0) {
|
||||
if (!nr_to_scan--)
|
||||
break;
|
||||
if (!kvm->arch.n_used_mmu_pages)
|
||||
continue;
|
||||
}
|
||||
|
||||
idx = srcu_read_lock(&kvm->srcu);
|
||||
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.
|
||||
*/
|
||||
|
||||
#define KVM_SAVE_MSRS_BEGIN 9
|
||||
#define KVM_SAVE_MSRS_BEGIN 10
|
||||
static u32 msrs_to_save[] = {
|
||||
MSR_KVM_SYSTEM_TIME, MSR_KVM_WALL_CLOCK,
|
||||
MSR_KVM_SYSTEM_TIME_NEW, MSR_KVM_WALL_CLOCK_NEW,
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include <linux/pci.h>
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/syscore_ops.h>
|
||||
|
||||
#include <xen/xen.h>
|
||||
#include <xen/interface/xen.h>
|
||||
@ -1470,130 +1469,38 @@ asmlinkage void __init xen_start_kernel(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_XEN_PVHVM
|
||||
/*
|
||||
* 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)
|
||||
void __ref xen_hvm_init_shared_info(void)
|
||||
{
|
||||
int cpu;
|
||||
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.idx = 0;
|
||||
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))
|
||||
BUG();
|
||||
|
||||
}
|
||||
static void xen_hvm_set_shared_info(struct shared_info *sip)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
HYPERVISOR_shared_info = sip;
|
||||
HYPERVISOR_shared_info = (struct shared_info *)shared_info_page;
|
||||
|
||||
/* 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
|
||||
* related functions. We don't need the vcpu_info placement
|
||||
* optimizations because we don't use any pv_mmu or pv_irq op on
|
||||
* HVM.
|
||||
* When xen_hvm_set_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
|
||||
* When xen_hvm_init_shared_info is run at boot time only vcpu 0 is
|
||||
* online but xen_hvm_init_shared_info is run at resume time too and
|
||||
* in that case multiple vcpus might be online. */
|
||||
for_each_online_cpu(cpu) {
|
||||
per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu];
|
||||
}
|
||||
}
|
||||
|
||||
/* Reconnect the shared_info pfn to a mfn */
|
||||
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);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_XEN_PVHVM
|
||||
static void __init init_hvm_pv_info(void)
|
||||
{
|
||||
int major, minor;
|
||||
@ -1644,9 +1551,6 @@ static void __init xen_hvm_guest_init(void)
|
||||
init_hvm_pv_info();
|
||||
|
||||
xen_hvm_init_shared_info();
|
||||
#ifdef CONFIG_KEXEC
|
||||
register_syscore_ops(&xen_hvm_syscore_ops);
|
||||
#endif
|
||||
|
||||
if (xen_feature(XENFEAT_hvm_callback_vector))
|
||||
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
|
||||
* 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
|
||||
* for 4GB of I/O and E820 holes. */
|
||||
RESERVE_BRK(p2m_populated, PMD_SIZE * 4);
|
||||
* Some machines can have 3GB I/O holes even. With early_can_reuse_p2m_middle
|
||||
* it can re-use Xen provided mfn_list array, so we only need to allocate at
|
||||
* most three P2M top nodes. */
|
||||
RESERVE_BRK(p2m_populated, PAGE_SIZE * 3);
|
||||
|
||||
static inline unsigned p2m_top_index(unsigned long pfn)
|
||||
{
|
||||
BUG_ON(pfn >= MAX_P2M_PFN);
|
||||
@ -575,12 +577,99 @@ static bool __init early_alloc_p2m(unsigned long pfn)
|
||||
}
|
||||
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)
|
||||
{
|
||||
if (unlikely(!__set_phys_to_machine(pfn, mfn))) {
|
||||
if (!early_alloc_p2m(pfn))
|
||||
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!*/))
|
||||
return false;
|
||||
|
||||
|
@ -78,9 +78,16 @@ static void __init xen_add_extra_mem(u64 start, u64 size)
|
||||
memblock_reserve(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);
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
int cpu;
|
||||
xen_hvm_resume_shared_info();
|
||||
xen_hvm_init_shared_info();
|
||||
xen_callback_vector();
|
||||
xen_unplug_emulated_devices();
|
||||
if (xen_feature(XENFEAT_hvm_safe_pvclock)) {
|
||||
|
@ -41,7 +41,7 @@ void xen_enable_syscall(void);
|
||||
void xen_vcpu_restore(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 __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);
|
||||
|
||||
if (atomic_inc_return(&freq_table_users) == 1)
|
||||
if (!freq_table)
|
||||
result = opp_init_cpufreq_table(mpu_dev, &freq_table);
|
||||
|
||||
if (result) {
|
||||
@ -227,6 +227,8 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
|
||||
goto fail_ck;
|
||||
}
|
||||
|
||||
atomic_inc_return(&freq_table_users);
|
||||
|
||||
result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
|
||||
if (result)
|
||||
goto fail_table;
|
||||
|
@ -34,6 +34,12 @@ static const struct dmi_system_id __initconst atk_force_new_if[] = {
|
||||
.matches = {
|
||||
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) {
|
||||
case WDIOC_GETSUPPORT:
|
||||
if (copy_to_user((void *)arg, &ident, sizeof(ident)))
|
||||
return -EFAULT;
|
||||
return copy_to_user(p, &ident, sizeof(ident)) ? -EFAULT : 0;
|
||||
case WDIOC_GETSTATUS:
|
||||
return put_user(0, p);
|
||||
case WDIOC_GETBOOTSTATUS:
|
||||
/* XXX: something is clearing TSR */
|
||||
tmp = mfspr(SPRN_TSR) & TSR_WRS(3);
|
||||
/* 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:
|
||||
if (get_user(tmp, p))
|
||||
return -EINVAL;
|
||||
return -EFAULT;
|
||||
if (tmp == WDIOS_ENABLECARD) {
|
||||
booke_wdt_ping();
|
||||
break;
|
||||
|
@ -101,19 +101,6 @@ static int platform_pci_resume(struct pci_dev *pdev)
|
||||
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,
|
||||
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_mmiolen = mmio_len;
|
||||
|
||||
prepare_shared_info();
|
||||
|
||||
if (!xen_have_vector_callback) {
|
||||
ret = xen_allocate_irq(pdev);
|
||||
if (ret) {
|
||||
|
@ -26,6 +26,7 @@ static int sync_request(struct page *page, struct block_device *bdev, int rw)
|
||||
struct completion complete;
|
||||
|
||||
bio_init(&bio);
|
||||
bio.bi_max_vecs = 1;
|
||||
bio.bi_io_vec = &bio_vec;
|
||||
bio_vec.bv_page = page;
|
||||
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 bio *bio;
|
||||
struct page *page;
|
||||
struct request_queue *q = bdev_get_queue(sb->s_bdev);
|
||||
unsigned int max_pages = queue_max_hw_sectors(q) >> (PAGE_SHIFT - 9);
|
||||
unsigned int max_pages;
|
||||
int i;
|
||||
|
||||
if (max_pages > BIO_MAX_PAGES)
|
||||
max_pages = BIO_MAX_PAGES;
|
||||
max_pages = min(nr_pages, (size_t) bio_get_nr_vecs(super->s_bdev));
|
||||
|
||||
bio = bio_alloc(GFP_NOFS, max_pages);
|
||||
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 bio *bio;
|
||||
struct request_queue *q = bdev_get_queue(sb->s_bdev);
|
||||
unsigned int max_pages = queue_max_hw_sectors(q) >> (PAGE_SHIFT - 9);
|
||||
unsigned int max_pages;
|
||||
int i;
|
||||
|
||||
if (max_pages > BIO_MAX_PAGES)
|
||||
max_pages = BIO_MAX_PAGES;
|
||||
max_pages = min(nr_pages, (size_t) bio_get_nr_vecs(super->s_bdev));
|
||||
|
||||
bio = bio_alloc(GFP_NOFS, max_pages);
|
||||
BUG_ON(!bio);
|
||||
|
||||
|
@ -156,10 +156,26 @@ static void __logfs_destroy_inode(struct inode *inode)
|
||||
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)
|
||||
{
|
||||
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));
|
||||
spin_lock(&logfs_inode_lock);
|
||||
li->li_refcount--;
|
||||
@ -373,8 +389,8 @@ static void logfs_put_super(struct super_block *sb)
|
||||
{
|
||||
struct logfs_super *super = logfs_super(sb);
|
||||
/* kill the meta-inodes */
|
||||
iput(super->s_master_inode);
|
||||
iput(super->s_segfile_inode);
|
||||
iput(super->s_master_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;
|
||||
page_ofs = ofs & (PAGE_SIZE - 1);
|
||||
|
||||
page = find_lock_page(mapping, index);
|
||||
page = find_or_create_page(mapping, index, GFP_NOFS);
|
||||
BUG_ON(!page);
|
||||
memcpy(wbuf, page_address(page) + page_ofs, super->s_writesize);
|
||||
unlock_page(page);
|
||||
|
@ -2189,7 +2189,6 @@ void logfs_evict_inode(struct inode *inode)
|
||||
return;
|
||||
}
|
||||
|
||||
BUG_ON(inode->i_ino < LOGFS_RESERVED_INOS);
|
||||
page = inode_to_page(inode);
|
||||
BUG_ON(!page); /* FIXME: Use emergency 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)
|
||||
{
|
||||
BUG();
|
||||
return;
|
||||
}
|
||||
|
||||
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
|
||||
* 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);
|
||||
end = start + BTOBBT(range.len) - 1;
|
||||
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)
|
||||
end = XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)- 1;
|
||||
|
||||
|
@ -962,23 +962,22 @@ xfs_dialloc(
|
||||
if (!pag->pagi_freecount && !okalloc)
|
||||
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);
|
||||
if (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) {
|
||||
xfs_perag_put(pag);
|
||||
goto out_alloc;
|
||||
}
|
||||
|
||||
if (!okalloc) {
|
||||
xfs_trans_brelse(tp, agbp);
|
||||
goto nextag;
|
||||
}
|
||||
if (!okalloc)
|
||||
goto nextag_relse_buffer;
|
||||
|
||||
|
||||
error = xfs_ialloc_ag_alloc(tp, agbp, &ialloced);
|
||||
if (error) {
|
||||
@ -1007,6 +1006,8 @@ xfs_dialloc(
|
||||
return 0;
|
||||
}
|
||||
|
||||
nextag_relse_buffer:
|
||||
xfs_trans_brelse(tp, agbp);
|
||||
nextag:
|
||||
xfs_perag_put(pag);
|
||||
if (++agno == mp->m_sb.sb_agcount)
|
||||
|
@ -857,7 +857,7 @@ xfs_rtbuf_get(
|
||||
xfs_buf_t *bp; /* block buffer, result */
|
||||
xfs_inode_t *ip; /* bitmap or summary inode */
|
||||
xfs_bmbt_irec_t map;
|
||||
int nmap;
|
||||
int nmap = 1;
|
||||
int error; /* error value */
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
/******************************
|
||||
|
@ -15,6 +15,8 @@
|
||||
#define MV643XX_ETH_SIZE_REG_4 0x2224
|
||||
#define MV643XX_ETH_BASE_ADDR_ENABLE_REG 0x2290
|
||||
|
||||
#define MV643XX_TX_CSUM_DEFAULT_LIMIT 0
|
||||
|
||||
struct mv643xx_eth_shared_platform_data {
|
||||
struct mbus_dram_target_info *dram;
|
||||
struct platform_device *shared_smi;
|
||||
|
@ -58,8 +58,6 @@ void notify_remote_via_irq(int irq);
|
||||
|
||||
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 */
|
||||
void xen_clear_irq_pending(int irq);
|
||||
void xen_set_irq_pending(int irq);
|
||||
|
Loading…
Reference in New Issue
Block a user