Merge tag 'drm-intel-next-2012-06-21-merged' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next
Daniel writes: New -next pull request. Highlights: - Remaining vlv patches from Jesse et al. - Some hw workarounds from Jesse - hw context support from Ben - full uncore sharing on ivb - prep work to move the gtt code from intel-gtt.c to drm/i915 for gen6+ - some backlight code improvements - leftovers for the timeout ioctl (we've forgotten the getparam) - ibx transcoder workarounds - some smaller fixlets and improvements - the new version of the "dont rely on HPD exclusively for VGA" patch Wrt regressions QA reported quite a few this time around. - The piglit/kernel-test fallout all has patches that are just awaiting review and merging into the next -next cycle. - Which just leaves a bunch of bugs about new modelines that don't work. It looks like these are all due to the new 16:9/16:10 modes in 3.5 (yeah, only in this manual testing cycle did the git branch used by QA contain a backmerge of mainline with these patches). Although I haven't yet confirmed this by letting our QA test the revert of that series. - Wrt bugs in general I'm trying to fight down some of our long-standing backlight issues (not regressions), but this seems to be a game of "you move, you lose" ... :(" Dropped merge bits since this had an -rc4 merge in it to fix some ugly conflicts.
This commit is contained in:
commit
4391b2cf4b
1
.mailmap
1
.mailmap
|
@ -111,6 +111,7 @@ Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
|
|||
Uwe Kleine-König <ukl@pengutronix.de>
|
||||
Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
|
||||
Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
|
||||
Viresh Kumar <viresh.linux@gmail.com> <viresh.kumar@st.com>
|
||||
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
|
||||
Yusuke Goda <goda.yusuke@renesas.com>
|
||||
Gustavo Padovan <gustavo@las.ic.unicamp.br>
|
||||
|
|
|
@ -219,6 +219,7 @@ What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_scale
|
|||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale
|
||||
|
@ -273,6 +274,7 @@ What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale_available
|
|||
What: /sys/.../iio:deviceX/in_voltageX_scale_available
|
||||
What: /sys/.../iio:deviceX/in_voltage-voltage_scale_available
|
||||
What: /sys/.../iio:deviceX/out_voltageX_scale_available
|
||||
What: /sys/.../iio:deviceX/out_altvoltageX_scale_available
|
||||
What: /sys/.../iio:deviceX/in_capacitance_scale_available
|
||||
KernelVersion: 2.635
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
|
@ -298,14 +300,19 @@ Description:
|
|||
gives the 3dB frequency of the filter in Hz.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_raw
|
||||
KernelVersion: 2.6.37
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Raw (unscaled, no bias etc.) output voltage for
|
||||
channel Y. The number must always be specified and
|
||||
unique if the output corresponds to a single channel.
|
||||
While DAC like devices typically use out_voltage,
|
||||
a continuous frequency generating device, such as
|
||||
a DDS or PLL should use out_altvoltage.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_voltageY&Z_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY&Z_raw
|
||||
KernelVersion: 2.6.37
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
|
@ -316,6 +323,8 @@ Description:
|
|||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_powerdown_mode
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_voltage_powerdown_mode
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_powerdown_mode
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltage_powerdown_mode
|
||||
KernelVersion: 2.6.38
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
|
@ -330,6 +339,8 @@ Description:
|
|||
|
||||
What: /sys/.../iio:deviceX/out_votlageY_powerdown_mode_available
|
||||
What: /sys/.../iio:deviceX/out_voltage_powerdown_mode_available
|
||||
What: /sys/.../iio:deviceX/out_altvotlageY_powerdown_mode_available
|
||||
What: /sys/.../iio:deviceX/out_altvoltage_powerdown_mode_available
|
||||
KernelVersion: 2.6.38
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
|
@ -338,6 +349,8 @@ Description:
|
|||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_powerdown
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_voltage_powerdown
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_powerdown
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltage_powerdown
|
||||
KernelVersion: 2.6.38
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
|
@ -346,6 +359,24 @@ Description:
|
|||
normal operation. Y may be suppressed if all outputs are
|
||||
controlled together.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency
|
||||
KernelVersion: 3.4.0
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Output frequency for channel Y in Hz. The number must always be
|
||||
specified and unique if the output corresponds to a single
|
||||
channel.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_phase
|
||||
KernelVersion: 3.4.0
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Phase in radians of one frequency/clock output Y
|
||||
(out_altvoltageY) relative to another frequency/clock output
|
||||
(out_altvoltageZ) of the device X. The number must always be
|
||||
specified and unique if the output corresponds to a single
|
||||
channel.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/events
|
||||
KernelVersion: 2.6.35
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
|
|
|
@ -60,4 +60,4 @@ Introduction
|
|||
Document Author
|
||||
---------------
|
||||
|
||||
Viresh Kumar <viresh.kumar@st.com>, (c) 2010-2012 ST Microelectronics
|
||||
Viresh Kumar <viresh.linux@gmail.com>, (c) 2010-2012 ST Microelectronics
|
||||
|
|
|
@ -6,7 +6,9 @@ Supported chips:
|
|||
Prefix: 'coretemp'
|
||||
CPUID: family 0x6, models 0xe (Pentium M DC), 0xf (Core 2 DC 65nm),
|
||||
0x16 (Core 2 SC 65nm), 0x17 (Penryn 45nm),
|
||||
0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield)
|
||||
0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield),
|
||||
0x26 (Tunnel Creek Atom), 0x27 (Medfield Atom),
|
||||
0x36 (Cedar Trail Atom)
|
||||
Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual
|
||||
Volume 3A: System Programming Guide
|
||||
http://softwarecommunity.intel.com/Wiki/Mobility/720.htm
|
||||
|
@ -52,6 +54,17 @@ Some information comes from ark.intel.com
|
|||
|
||||
Process Processor TjMax(C)
|
||||
|
||||
22nm Core i5/i7 Processors
|
||||
i7 3920XM, 3820QM, 3720QM, 3667U, 3520M 105
|
||||
i5 3427U, 3360M/3320M 105
|
||||
i7 3770/3770K 105
|
||||
i5 3570/3570K, 3550, 3470/3450 105
|
||||
i7 3770S 103
|
||||
i5 3570S/3550S, 3475S/3470S/3450S 103
|
||||
i7 3770T 94
|
||||
i5 3570T 94
|
||||
i5 3470T 91
|
||||
|
||||
32nm Core i3/i5/i7 Processors
|
||||
i7 660UM/640/620, 640LM/620, 620M, 610E 105
|
||||
i5 540UM/520/430, 540M/520/450/430 105
|
||||
|
@ -65,6 +78,11 @@ Process Processor TjMax(C)
|
|||
U3400 105
|
||||
P4505/P4500 90
|
||||
|
||||
32nm Atom Processors
|
||||
Z2460 90
|
||||
D2700/2550/2500 100
|
||||
N2850/2800/2650/2600 100
|
||||
|
||||
45nm Xeon Processors 5400 Quad-Core
|
||||
X5492, X5482, X5472, X5470, X5460, X5450 85
|
||||
E5472, E5462, E5450/40/30/20/10/05 85
|
||||
|
@ -85,6 +103,8 @@ Process Processor TjMax(C)
|
|||
N475/470/455/450 100
|
||||
N280/270 90
|
||||
330/230 125
|
||||
E680/660/640/620 90
|
||||
E680T/660T/640T/620T 110
|
||||
|
||||
45nm Core2 Processors
|
||||
Solo ULV SU3500/3300 100
|
||||
|
|
20
MAINTAINERS
20
MAINTAINERS
|
@ -579,7 +579,7 @@ F: drivers/net/appletalk/
|
|||
F: net/appletalk/
|
||||
|
||||
ARASAN COMPACT FLASH PATA CONTROLLER
|
||||
M: Viresh Kumar <viresh.kumar@st.com>
|
||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
||||
L: linux-ide@vger.kernel.org
|
||||
S: Maintained
|
||||
F: include/linux/pata_arasan_cf_data.h
|
||||
|
@ -5296,7 +5296,7 @@ S: Maintained
|
|||
F: drivers/pinctrl/
|
||||
|
||||
PIN CONTROLLER - ST SPEAR
|
||||
M: Viresh Kumar <viresh.kumar@st.com>
|
||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
||||
L: spear-devel@list.st.com
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
W: http://www.st.com/spear
|
||||
|
@ -5873,7 +5873,7 @@ S: Maintained
|
|||
F: drivers/tty/serial
|
||||
|
||||
SYNOPSYS DESIGNWARE DMAC DRIVER
|
||||
M: Viresh Kumar <viresh.kumar@st.com>
|
||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
||||
S: Maintained
|
||||
F: include/linux/dw_dmac.h
|
||||
F: drivers/dma/dw_dmac_regs.h
|
||||
|
@ -6021,7 +6021,7 @@ S: Maintained
|
|||
F: drivers/mmc/host/sdhci-s3c.c
|
||||
|
||||
SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
|
||||
M: Viresh Kumar <viresh.kumar@st.com>
|
||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
||||
L: spear-devel@list.st.com
|
||||
L: linux-mmc@vger.kernel.org
|
||||
S: Maintained
|
||||
|
@ -6377,7 +6377,7 @@ S: Maintained
|
|||
F: include/linux/compiler.h
|
||||
|
||||
SPEAR PLATFORM SUPPORT
|
||||
M: Viresh Kumar <viresh.kumar@st.com>
|
||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
||||
M: Shiraz Hashim <shiraz.hashim@st.com>
|
||||
L: spear-devel@list.st.com
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
|
@ -6386,7 +6386,7 @@ S: Maintained
|
|||
F: arch/arm/plat-spear/
|
||||
|
||||
SPEAR13XX MACHINE SUPPORT
|
||||
M: Viresh Kumar <viresh.kumar@st.com>
|
||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
||||
M: Shiraz Hashim <shiraz.hashim@st.com>
|
||||
L: spear-devel@list.st.com
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
|
@ -6395,7 +6395,7 @@ S: Maintained
|
|||
F: arch/arm/mach-spear13xx/
|
||||
|
||||
SPEAR3XX MACHINE SUPPORT
|
||||
M: Viresh Kumar <viresh.kumar@st.com>
|
||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
||||
M: Shiraz Hashim <shiraz.hashim@st.com>
|
||||
L: spear-devel@list.st.com
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
|
@ -6406,7 +6406,7 @@ F: arch/arm/mach-spear3xx/
|
|||
SPEAR6XX MACHINE SUPPORT
|
||||
M: Rajeev Kumar <rajeev-dlh.kumar@st.com>
|
||||
M: Shiraz Hashim <shiraz.hashim@st.com>
|
||||
M: Viresh Kumar <viresh.kumar@st.com>
|
||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
||||
L: spear-devel@list.st.com
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
W: http://www.st.com/spear
|
||||
|
@ -6414,7 +6414,7 @@ S: Maintained
|
|||
F: arch/arm/mach-spear6xx/
|
||||
|
||||
SPEAR CLOCK FRAMEWORK SUPPORT
|
||||
M: Viresh Kumar <viresh.kumar@st.com>
|
||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
||||
L: spear-devel@list.st.com
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
W: http://www.st.com/spear
|
||||
|
@ -7421,7 +7421,7 @@ F: include/linux/vlynq.h
|
|||
|
||||
VME SUBSYSTEM
|
||||
M: Martyn Welch <martyn.welch@ge.com>
|
||||
M: Manohar Vanga <manohar.vanga@cern.ch>
|
||||
M: Manohar Vanga <manohar.vanga@gmail.com>
|
||||
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
L: devel@driverdev.osuosl.org
|
||||
S: Maintained
|
||||
|
|
6
Makefile
6
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = 3
|
||||
PATCHLEVEL = 5
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc3
|
||||
EXTRAVERSION = -rc4
|
||||
NAME = Saber-toothed Squirrel
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
@ -561,6 +561,8 @@ else
|
|||
KBUILD_CFLAGS += -O2
|
||||
endif
|
||||
|
||||
include $(srctree)/arch/$(SRCARCH)/Makefile
|
||||
|
||||
ifdef CONFIG_READABLE_ASM
|
||||
# Disable optimizations that make assembler listings hard to read.
|
||||
# reorder blocks reorders the control in the function
|
||||
|
@ -571,8 +573,6 @@ KBUILD_CFLAGS += $(call cc-option,-fno-reorder-blocks,) \
|
|||
$(call cc-option,-fno-partial-inlining)
|
||||
endif
|
||||
|
||||
include $(srctree)/arch/$(SRCARCH)/Makefile
|
||||
|
||||
ifneq ($(CONFIG_FRAME_WARN),0)
|
||||
KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN})
|
||||
endif
|
||||
|
|
|
@ -589,6 +589,7 @@ config ARCH_ORION5X
|
|||
select PCI
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select NEED_MACH_IO_H
|
||||
select PLAT_ORION
|
||||
help
|
||||
Support for the following Marvell Orion 5x series SoCs:
|
||||
|
|
|
@ -44,6 +44,8 @@
|
|||
compatible = "ti,omap2-intc";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
ti,intc-size = <96>;
|
||||
reg = <0x480FE000 0x1000>;
|
||||
};
|
||||
|
||||
uart1: serial@4806a000 {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for SPEAr1310 Evaluation Baord
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for all SPEAr1310 SoCs
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for SPEAr1340 Evaluation Baord
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for all SPEAr1340 SoCs
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for all SPEAr13xx SoCs
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for SPEAr300 Evaluation Baord
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for SPEAr300 SoC
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for SPEAr310 Evaluation Baord
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for SPEAr310 SoC
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for SPEAr320 Evaluation Baord
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for SPEAr320 SoC
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* DTS file for all SPEAr3xx SoCs
|
||||
*
|
||||
* Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
|
||||
* Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
" .long 1b, 4f, 2b, 4f\n" \
|
||||
" .popsection\n" \
|
||||
" .pushsection .fixup,\"ax\"\n" \
|
||||
" .align 2\n" \
|
||||
"4: mov %0, " err_reg "\n" \
|
||||
" b 3b\n" \
|
||||
" .popsection"
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* ARM PrimeXsys System Controller SP810 header file
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -495,6 +495,7 @@ ENDPROC(__und_usr)
|
|||
* The out of line fixup for the ldrt above.
|
||||
*/
|
||||
.pushsection .fixup, "ax"
|
||||
.align 2
|
||||
4: mov pc, r9
|
||||
.popsection
|
||||
.pushsection __ex_table,"a"
|
||||
|
|
|
@ -660,7 +660,7 @@ static const union decode_item t32_table_1111_100x[] = {
|
|||
/* LDRSB (literal) 1111 1001 x001 1111 xxxx xxxx xxxx xxxx */
|
||||
/* LDRH (literal) 1111 1000 x011 1111 xxxx xxxx xxxx xxxx */
|
||||
/* LDRSH (literal) 1111 1001 x011 1111 xxxx xxxx xxxx xxxx */
|
||||
DECODE_EMULATEX (0xfe5f0000, 0xf81f0000, t32_simulate_ldr_literal,
|
||||
DECODE_SIMULATEX(0xfe5f0000, 0xf81f0000, t32_simulate_ldr_literal,
|
||||
REGS(PC, NOSPPCX, 0, 0, 0)),
|
||||
|
||||
/* STRB (immediate) 1111 1000 0000 xxxx xxxx 1xxx xxxx xxxx */
|
||||
|
|
|
@ -20,9 +20,6 @@
|
|||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/orion_spi.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
|
|
|
@ -159,6 +159,7 @@ static struct clk __init *clk_register_gate_fn(struct device *dev,
|
|||
gate_fn->gate.flags = clk_gate_flags;
|
||||
gate_fn->gate.lock = lock;
|
||||
gate_fn->gate.hw.init = &init;
|
||||
gate_fn->fn = fn;
|
||||
|
||||
/* ops is the gate ops, but with our disable function */
|
||||
if (clk_gate_fn_ops.disable != clk_gate_fn_disable) {
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#define IRQ_MASK_HIGH_OFF 0x0014
|
||||
|
||||
#define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300)
|
||||
#define TIMER_PHYS_BASE (BRIDGE_PHYS_BASE | 0x0300)
|
||||
|
||||
#define L2_CONFIG_REG (BRIDGE_VIRT_BASE | 0x0128)
|
||||
#define L2_WRITETHROUGH 0x00000010
|
||||
|
|
|
@ -80,6 +80,7 @@
|
|||
#define UART1_VIRT_BASE (DEV_BUS_VIRT_BASE | 0x2100)
|
||||
|
||||
#define BRIDGE_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x20000)
|
||||
#define BRIDGE_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x20000)
|
||||
|
||||
#define CRYPTO_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x30000)
|
||||
|
||||
|
|
|
@ -83,11 +83,9 @@ static struct musb_hdrc_config musb_config = {
|
|||
};
|
||||
|
||||
static struct musb_hdrc_platform_data tusb_data = {
|
||||
#if defined(CONFIG_USB_MUSB_OTG)
|
||||
#ifdef CONFIG_USB_GADGET_MUSB_HDRC
|
||||
.mode = MUSB_OTG,
|
||||
#elif defined(CONFIG_USB_MUSB_PERIPHERAL)
|
||||
.mode = MUSB_PERIPHERAL,
|
||||
#else /* defined(CONFIG_USB_MUSB_HOST) */
|
||||
#else
|
||||
.mode = MUSB_HOST,
|
||||
#endif
|
||||
.set_power = tusb_set_power,
|
||||
|
|
|
@ -81,13 +81,13 @@ static u8 omap3_beagle_version;
|
|||
static struct {
|
||||
int mmc1_gpio_wp;
|
||||
int usb_pwr_level;
|
||||
int reset_gpio;
|
||||
int dvi_pd_gpio;
|
||||
int usr_button_gpio;
|
||||
int mmc_caps;
|
||||
} beagle_config = {
|
||||
.mmc1_gpio_wp = -EINVAL,
|
||||
.usb_pwr_level = GPIOF_OUT_INIT_LOW,
|
||||
.reset_gpio = 129,
|
||||
.dvi_pd_gpio = -EINVAL,
|
||||
.usr_button_gpio = 4,
|
||||
.mmc_caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
|
||||
};
|
||||
|
@ -126,21 +126,21 @@ static void __init omap3_beagle_init_rev(void)
|
|||
printk(KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n");
|
||||
omap3_beagle_version = OMAP3BEAGLE_BOARD_AXBX;
|
||||
beagle_config.mmc1_gpio_wp = 29;
|
||||
beagle_config.reset_gpio = 170;
|
||||
beagle_config.dvi_pd_gpio = 170;
|
||||
beagle_config.usr_button_gpio = 7;
|
||||
break;
|
||||
case 6:
|
||||
printk(KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n");
|
||||
omap3_beagle_version = OMAP3BEAGLE_BOARD_C1_3;
|
||||
beagle_config.mmc1_gpio_wp = 23;
|
||||
beagle_config.reset_gpio = 170;
|
||||
beagle_config.dvi_pd_gpio = 170;
|
||||
beagle_config.usr_button_gpio = 7;
|
||||
break;
|
||||
case 5:
|
||||
printk(KERN_INFO "OMAP3 Beagle Rev: C4\n");
|
||||
omap3_beagle_version = OMAP3BEAGLE_BOARD_C4;
|
||||
beagle_config.mmc1_gpio_wp = 23;
|
||||
beagle_config.reset_gpio = 170;
|
||||
beagle_config.dvi_pd_gpio = 170;
|
||||
beagle_config.usr_button_gpio = 7;
|
||||
break;
|
||||
case 0:
|
||||
|
@ -274,11 +274,9 @@ static int beagle_twl_gpio_setup(struct device *dev,
|
|||
if (r)
|
||||
pr_err("%s: unable to configure nDVI_PWR_EN\n",
|
||||
__func__);
|
||||
r = gpio_request_one(gpio + 2, GPIOF_OUT_INIT_HIGH,
|
||||
"DVI_LDO_EN");
|
||||
if (r)
|
||||
pr_err("%s: unable to configure DVI_LDO_EN\n",
|
||||
__func__);
|
||||
|
||||
beagle_config.dvi_pd_gpio = gpio + 2;
|
||||
|
||||
} else {
|
||||
/*
|
||||
* REVISIT: need ehci-omap hooks for external VBUS
|
||||
|
@ -287,7 +285,7 @@ static int beagle_twl_gpio_setup(struct device *dev,
|
|||
if (gpio_request_one(gpio + 1, GPIOF_IN, "EHCI_nOC"))
|
||||
pr_err("%s: unable to configure EHCI_nOC\n", __func__);
|
||||
}
|
||||
dvi_panel.power_down_gpio = beagle_config.reset_gpio;
|
||||
dvi_panel.power_down_gpio = beagle_config.dvi_pd_gpio;
|
||||
|
||||
gpio_request_one(gpio + TWL4030_GPIO_MAX, beagle_config.usb_pwr_level,
|
||||
"nEN_USB_PWR");
|
||||
|
@ -499,7 +497,7 @@ static void __init omap3_beagle_init(void)
|
|||
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
|
||||
omap3_beagle_init_rev();
|
||||
|
||||
if (beagle_config.mmc1_gpio_wp != -EINVAL)
|
||||
if (gpio_is_valid(beagle_config.mmc1_gpio_wp))
|
||||
omap_mux_init_gpio(beagle_config.mmc1_gpio_wp, OMAP_PIN_INPUT);
|
||||
mmc[0].caps = beagle_config.mmc_caps;
|
||||
omap_hsmmc_init(mmc);
|
||||
|
@ -510,15 +508,13 @@ static void __init omap3_beagle_init(void)
|
|||
|
||||
platform_add_devices(omap3_beagle_devices,
|
||||
ARRAY_SIZE(omap3_beagle_devices));
|
||||
if (gpio_is_valid(beagle_config.dvi_pd_gpio))
|
||||
omap_mux_init_gpio(beagle_config.dvi_pd_gpio, OMAP_PIN_OUTPUT);
|
||||
omap_display_init(&beagle_dss_data);
|
||||
omap_serial_init();
|
||||
omap_sdrc_init(mt46h32m32lf6_sdrc_params,
|
||||
mt46h32m32lf6_sdrc_params);
|
||||
|
||||
omap_mux_init_gpio(170, OMAP_PIN_INPUT);
|
||||
/* REVISIT leave DVI powered down until it's needed ... */
|
||||
gpio_request_one(170, GPIOF_OUT_INIT_HIGH, "DVI_nPD");
|
||||
|
||||
usb_musb_init(NULL);
|
||||
usbhs_init(&usbhs_bdata);
|
||||
omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
|
||||
|
|
|
@ -84,6 +84,7 @@ static struct clk slimbus_clk = {
|
|||
|
||||
static struct clk sys_32k_ck = {
|
||||
.name = "sys_32k_ck",
|
||||
.clkdm_name = "prm_clkdm",
|
||||
.rate = 32768,
|
||||
.ops = &clkops_null,
|
||||
};
|
||||
|
@ -512,6 +513,7 @@ static struct clk ddrphy_ck = {
|
|||
.name = "ddrphy_ck",
|
||||
.parent = &dpll_core_m2_ck,
|
||||
.ops = &clkops_null,
|
||||
.clkdm_name = "l3_emif_clkdm",
|
||||
.fixed_div = 2,
|
||||
.recalc = &omap_fixed_divisor_recalc,
|
||||
};
|
||||
|
@ -769,6 +771,7 @@ static const struct clksel dpll_mpu_m2_div[] = {
|
|||
static struct clk dpll_mpu_m2_ck = {
|
||||
.name = "dpll_mpu_m2_ck",
|
||||
.parent = &dpll_mpu_ck,
|
||||
.clkdm_name = "cm_clkdm",
|
||||
.clksel = dpll_mpu_m2_div,
|
||||
.clksel_reg = OMAP4430_CM_DIV_M2_DPLL_MPU,
|
||||
.clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
|
||||
|
@ -1149,6 +1152,7 @@ static const struct clksel l3_div_div[] = {
|
|||
static struct clk l3_div_ck = {
|
||||
.name = "l3_div_ck",
|
||||
.parent = &div_core_ck,
|
||||
.clkdm_name = "cm_clkdm",
|
||||
.clksel = l3_div_div,
|
||||
.clksel_reg = OMAP4430_CM_CLKSEL_CORE,
|
||||
.clksel_mask = OMAP4430_CLKSEL_L3_MASK,
|
||||
|
@ -2824,6 +2828,7 @@ static const struct clksel trace_clk_div_div[] = {
|
|||
static struct clk trace_clk_div_ck = {
|
||||
.name = "trace_clk_div_ck",
|
||||
.parent = &pmd_trace_clk_mux_ck,
|
||||
.clkdm_name = "emu_sys_clkdm",
|
||||
.clksel = trace_clk_div_div,
|
||||
.clksel_reg = OMAP4430_CM_EMU_DEBUGSS_CLKCTRL,
|
||||
.clksel_mask = OMAP4430_CLKSEL_PMD_TRACE_CLK_MASK,
|
||||
|
|
|
@ -22,4 +22,15 @@
|
|||
*/
|
||||
#define MAX_MODULE_READY_TIME 2000
|
||||
|
||||
/*
|
||||
* MAX_MODULE_DISABLE_TIME: max duration in microseconds to wait for
|
||||
* the PRCM to request that a module enter the inactive state in the
|
||||
* case of OMAP2 & 3. In the case of OMAP4 this is the max duration
|
||||
* in microseconds for the module to reach the inactive state from
|
||||
* a functional state.
|
||||
* XXX FSUSB on OMAP4430 takes ~4ms to idle after reset during
|
||||
* kernel init.
|
||||
*/
|
||||
#define MAX_MODULE_DISABLE_TIME 5000
|
||||
|
||||
#endif
|
||||
|
|
|
@ -313,9 +313,9 @@ int omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs, u16 clkctrl_off
|
|||
|
||||
omap_test_timeout((_clkctrl_idlest(part, inst, cdoffs, clkctrl_offs) ==
|
||||
CLKCTRL_IDLEST_DISABLED),
|
||||
MAX_MODULE_READY_TIME, i);
|
||||
MAX_MODULE_DISABLE_TIME, i);
|
||||
|
||||
return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY;
|
||||
return (i < MAX_MODULE_DISABLE_TIME) ? 0 : -EBUSY;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include "control.h"
|
||||
#include "mux.h"
|
||||
#include "prm.h"
|
||||
#include "common.h"
|
||||
|
||||
#define OMAP_MUX_BASE_OFFSET 0x30 /* Offset from CTRL_BASE */
|
||||
#define OMAP_MUX_BASE_SZ 0x5ca
|
||||
|
|
|
@ -530,7 +530,7 @@ static int _disable_wakeup(struct omap_hwmod *oh, u32 *v)
|
|||
if (oh->class->sysc->idlemodes & SIDLE_SMART_WKUP)
|
||||
_set_slave_idlemode(oh, HWMOD_IDLEMODE_SMART, v);
|
||||
if (oh->class->sysc->idlemodes & MSTANDBY_SMART_WKUP)
|
||||
_set_master_standbymode(oh, HWMOD_IDLEMODE_SMART_WKUP, v);
|
||||
_set_master_standbymode(oh, HWMOD_IDLEMODE_SMART, v);
|
||||
|
||||
/* XXX test pwrdm_get_wken for this hwmod's subsystem */
|
||||
|
||||
|
|
|
@ -393,8 +393,7 @@ static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = {
|
|||
.rev_offs = 0x0000,
|
||||
.sysc_offs = 0x0004,
|
||||
.sysc_flags = SYSC_HAS_SIDLEMODE,
|
||||
.idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
|
||||
SIDLE_SMART_WKUP),
|
||||
.idlemodes = (SIDLE_FORCE | SIDLE_NO),
|
||||
.sysc_fields = &omap_hwmod_sysc_type1,
|
||||
};
|
||||
|
||||
|
@ -854,6 +853,11 @@ static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
|
|||
.name = "dss_hdmi",
|
||||
.class = &omap44xx_hdmi_hwmod_class,
|
||||
.clkdm_name = "l3_dss_clkdm",
|
||||
/*
|
||||
* HDMI audio requires to use no-idle mode. Hence,
|
||||
* set idle mode by software.
|
||||
*/
|
||||
.flags = HWMOD_SWSUP_SIDLE,
|
||||
.mpu_irqs = omap44xx_dss_hdmi_irqs,
|
||||
.sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
|
||||
.main_clk = "dss_48mhz_clk",
|
||||
|
|
|
@ -239,21 +239,15 @@ void am35x_set_mode(u8 musb_mode)
|
|||
|
||||
devconf2 &= ~CONF2_OTGMODE;
|
||||
switch (musb_mode) {
|
||||
#ifdef CONFIG_USB_MUSB_HDRC_HCD
|
||||
case MUSB_HOST: /* Force VBUS valid, ID = 0 */
|
||||
devconf2 |= CONF2_FORCE_HOST;
|
||||
break;
|
||||
#endif
|
||||
#ifdef CONFIG_USB_GADGET_MUSB_HDRC
|
||||
case MUSB_PERIPHERAL: /* Force VBUS valid, ID = 1 */
|
||||
devconf2 |= CONF2_FORCE_DEVICE;
|
||||
break;
|
||||
#endif
|
||||
#ifdef CONFIG_USB_MUSB_OTG
|
||||
case MUSB_OTG: /* Don't override the VBUS/ID comparators */
|
||||
devconf2 |= CONF2_NO_OVERRIDE;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
pr_info(KERN_INFO "Unsupported mode %u\n", musb_mode);
|
||||
}
|
||||
|
|
|
@ -41,12 +41,10 @@ static struct musb_hdrc_config musb_config = {
|
|||
};
|
||||
|
||||
static struct musb_hdrc_platform_data musb_plat = {
|
||||
#ifdef CONFIG_USB_MUSB_OTG
|
||||
#ifdef CONFIG_USB_GADGET_MUSB_HDRC
|
||||
.mode = MUSB_OTG,
|
||||
#elif defined(CONFIG_USB_MUSB_HDRC_HCD)
|
||||
#else
|
||||
.mode = MUSB_HOST,
|
||||
#elif defined(CONFIG_USB_GADGET_MUSB_HDRC)
|
||||
.mode = MUSB_PERIPHERAL,
|
||||
#endif
|
||||
/* .clock is set dynamically */
|
||||
.config = &musb_config,
|
||||
|
|
|
@ -300,7 +300,7 @@ tusb6010_setup_interface(struct musb_hdrc_platform_data *data,
|
|||
printk(error, 3, status);
|
||||
return status;
|
||||
}
|
||||
tusb_resources[2].start = irq + IH_GPIO_BASE;
|
||||
tusb_resources[2].start = gpio_to_irq(irq);
|
||||
|
||||
/* set up memory timings ... can speed them up later */
|
||||
if (!ps_refclk) {
|
||||
|
|
|
@ -35,5 +35,5 @@
|
|||
#define MAIN_IRQ_MASK (ORION5X_BRIDGE_VIRT_BASE | 0x204)
|
||||
|
||||
#define TIMER_VIRT_BASE (ORION5X_BRIDGE_VIRT_BASE | 0x300)
|
||||
|
||||
#define TIMER_PHYS_BASE (ORION5X_BRIDGE_PHYS_BASE | 0x300)
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
/*
|
||||
* arch/arm/mach-orion5x/include/mach/io.h
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
* warranty of any kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_IO_H
|
||||
#define __ASM_ARCH_IO_H
|
||||
|
||||
#include <mach/orion5x.h>
|
||||
#include <asm/sizes.h>
|
||||
|
||||
#define IO_SPACE_LIMIT SZ_2M
|
||||
static inline void __iomem *__io(unsigned long addr)
|
||||
{
|
||||
return (void __iomem *)(addr + ORION5X_PCIE_IO_VIRT_BASE);
|
||||
}
|
||||
|
||||
#define __io(a) __io(a)
|
||||
#endif
|
|
@ -82,6 +82,7 @@
|
|||
#define UART1_VIRT_BASE (ORION5X_DEV_BUS_VIRT_BASE | 0x2100)
|
||||
|
||||
#define ORION5X_BRIDGE_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x20000)
|
||||
#define ORION5X_BRIDGE_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x20000)
|
||||
|
||||
#define ORION5X_PCI_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x30000)
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Debugging macro include header spear13xx machine family
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* DMA information for SPEAr13xx machine family
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* spear13xx machine family generic header file
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* GPIO macros for SPEAr13xx machine family
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* IRQ helper macros for spear13xx machine family
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* spear13xx Machine family specific definition
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr3XX machine family specific timex definitions
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Serial port stubs for kernel decompress status messages
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr1310 machine source file
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr1340 machine source file
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr13XX machines common source file
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Debugging macro include header spear3xx machine family
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar<viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr3XX machine family generic header file
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar<viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* GPIO macros for SPEAr3xx machine family
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar<viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* IRQ helper macros for SPEAr3xx machine family
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Miscellaneous registers definitions for SPEAr3xx machine family
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr3xx Machine family specific definition
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr3XX machine family specific timex definitions
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Serial port stubs for kernel decompress status messages
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr300 machine source file
|
||||
*
|
||||
* Copyright (C) 2009-2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr310 machine source file
|
||||
*
|
||||
* Copyright (C) 2009-2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr320 machine source file
|
||||
*
|
||||
* Copyright (C) 2009-2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr3XX machines common source file
|
||||
*
|
||||
* Copyright (C) 2009-2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* GPIO macros for SPEAr6xx machine family
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Miscellaneous registers definitions for SPEAr6xx machine family
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
static bool is_enabled;
|
||||
|
||||
static void tegra_cpu_reset_handler_enable(void)
|
||||
static void __init tegra_cpu_reset_handler_enable(void)
|
||||
{
|
||||
void __iomem *iram_base = IO_ADDRESS(TEGRA_IRAM_RESET_BASE);
|
||||
void __iomem *evp_cpu_reset =
|
||||
|
|
|
@ -580,43 +580,12 @@ static void ux500_uart0_reset(void)
|
|||
udelay(1);
|
||||
}
|
||||
|
||||
/* This needs to be referenced by callbacks */
|
||||
struct pinctrl *u0_p;
|
||||
struct pinctrl_state *u0_def;
|
||||
struct pinctrl_state *u0_sleep;
|
||||
|
||||
static void ux500_uart0_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (IS_ERR(u0_p) || IS_ERR(u0_def))
|
||||
return;
|
||||
|
||||
ret = pinctrl_select_state(u0_p, u0_def);
|
||||
if (ret)
|
||||
pr_err("could not set UART0 defstate\n");
|
||||
}
|
||||
|
||||
static void ux500_uart0_exit(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (IS_ERR(u0_p) || IS_ERR(u0_sleep))
|
||||
return;
|
||||
|
||||
ret = pinctrl_select_state(u0_p, u0_sleep);
|
||||
if (ret)
|
||||
pr_err("could not set UART0 idlestate\n");
|
||||
}
|
||||
|
||||
static struct amba_pl011_data uart0_plat = {
|
||||
#ifdef CONFIG_STE_DMA40
|
||||
.dma_filter = stedma40_filter,
|
||||
.dma_rx_param = &uart0_dma_cfg_rx,
|
||||
.dma_tx_param = &uart0_dma_cfg_tx,
|
||||
#endif
|
||||
.init = ux500_uart0_init,
|
||||
.exit = ux500_uart0_exit,
|
||||
.reset = ux500_uart0_reset,
|
||||
};
|
||||
|
||||
|
@ -638,28 +607,7 @@ static struct amba_pl011_data uart2_plat = {
|
|||
|
||||
static void __init mop500_uart_init(struct device *parent)
|
||||
{
|
||||
struct amba_device *uart0_device;
|
||||
|
||||
uart0_device = db8500_add_uart0(parent, &uart0_plat);
|
||||
if (uart0_device) {
|
||||
u0_p = pinctrl_get(&uart0_device->dev);
|
||||
if (IS_ERR(u0_p))
|
||||
dev_err(&uart0_device->dev,
|
||||
"could not get UART0 pinctrl\n");
|
||||
else {
|
||||
u0_def = pinctrl_lookup_state(u0_p,
|
||||
PINCTRL_STATE_DEFAULT);
|
||||
if (IS_ERR(u0_def)) {
|
||||
dev_err(&uart0_device->dev,
|
||||
"could not get UART0 defstate\n");
|
||||
}
|
||||
u0_sleep = pinctrl_lookup_state(u0_p,
|
||||
PINCTRL_STATE_SLEEP);
|
||||
if (IS_ERR(u0_sleep))
|
||||
dev_err(&uart0_device->dev,
|
||||
"could not get UART0 idlestate\n");
|
||||
}
|
||||
}
|
||||
db8500_add_uart0(parent, &uart0_plat);
|
||||
db8500_add_uart1(parent, &uart1_plat);
|
||||
db8500_add_uart2(parent, &uart2_plat);
|
||||
}
|
||||
|
|
|
@ -762,6 +762,11 @@ b_epilogue:
|
|||
update_on_xread(ctx);
|
||||
emit(ARM_MOV_R(r_A, r_X), ctx);
|
||||
break;
|
||||
case BPF_S_ANC_ALU_XOR_X:
|
||||
/* A ^= X */
|
||||
update_on_xread(ctx);
|
||||
emit(ARM_EOR_R(r_A, r_A, r_X), ctx);
|
||||
break;
|
||||
case BPF_S_ANC_PROTOCOL:
|
||||
/* A = ntohs(skb->protocol) */
|
||||
ctx->seen |= SEEN_SKB;
|
||||
|
|
|
@ -68,6 +68,8 @@
|
|||
#define ARM_INST_CMP_R 0x01500000
|
||||
#define ARM_INST_CMP_I 0x03500000
|
||||
|
||||
#define ARM_INST_EOR_R 0x00200000
|
||||
|
||||
#define ARM_INST_LDRB_I 0x05d00000
|
||||
#define ARM_INST_LDRB_R 0x07d00000
|
||||
#define ARM_INST_LDRH_I 0x01d000b0
|
||||
|
@ -132,6 +134,8 @@
|
|||
#define ARM_CMP_R(rn, rm) _AL3_R(ARM_INST_CMP, 0, rn, rm)
|
||||
#define ARM_CMP_I(rn, imm) _AL3_I(ARM_INST_CMP, 0, rn, imm)
|
||||
|
||||
#define ARM_EOR_R(rd, rn, rm) _AL3_R(ARM_INST_EOR, rd, rn, rm)
|
||||
|
||||
#define ARM_LDR_I(rt, rn, off) (ARM_INST_LDR_I | (rt) << 12 | (rn) << 16 \
|
||||
| (off))
|
||||
#define ARM_LDRB_I(rt, rn, off) (ARM_INST_LDRB_I | (rt) << 12 | (rn) << 16 \
|
||||
|
|
|
@ -461,6 +461,7 @@ static int clk_dbg_show_summary(struct seq_file *s, void *unused)
|
|||
struct clk *c;
|
||||
struct clk *pa;
|
||||
|
||||
mutex_lock(&clocks_mutex);
|
||||
seq_printf(s, "%-30s %-30s %-10s %s\n",
|
||||
"clock-name", "parent-name", "rate", "use-count");
|
||||
|
||||
|
@ -469,6 +470,7 @@ static int clk_dbg_show_summary(struct seq_file *s, void *unused)
|
|||
seq_printf(s, "%-30s %-30s %-10lu %d\n",
|
||||
c->name, pa ? pa->name : "none", c->rate, c->usecount);
|
||||
}
|
||||
mutex_unlock(&clocks_mutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -582,7 +582,7 @@ void __init orion_spi_1_init(unsigned long mapbase)
|
|||
* Watchdog
|
||||
****************************************************************************/
|
||||
static struct resource orion_wdt_resource =
|
||||
DEFINE_RES_MEM(TIMER_VIRT_BASE, 0x28);
|
||||
DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x28);
|
||||
|
||||
static struct platform_device orion_wdt_device = {
|
||||
.name = "orion_wdt",
|
||||
|
|
|
@ -193,6 +193,7 @@ static const struct platform_device_id ssp_id_table[] = {
|
|||
{ "pxa25x-nssp", PXA25x_NSSP },
|
||||
{ "pxa27x-ssp", PXA27x_SSP },
|
||||
{ "pxa168-ssp", PXA168_SSP },
|
||||
{ "pxa910-ssp", PXA910_SSP },
|
||||
{ },
|
||||
};
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Debugging macro include header for spear platform
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* DMAC pl080 definitions for SPEAr platform
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr platform shared irq layer header file
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr platform specific timex definitions
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Serial port stubs for kernel decompress status messages
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* DMAC pl080 definitions for SPEAr platform
|
||||
*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr platform specific restart functions
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPEAr platform shared irq layer source file
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar<viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <asm/setup.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/sections.h>
|
||||
|
||||
#if defined(__H8300H__)
|
||||
#define CPU "H8/300H"
|
||||
|
@ -54,7 +55,6 @@ unsigned long memory_end;
|
|||
|
||||
char __initdata command_line[COMMAND_LINE_SIZE];
|
||||
|
||||
extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
|
||||
extern int _ramstart, _ramend;
|
||||
extern char _target_name[];
|
||||
extern void h8300_gpio_init(void);
|
||||
|
@ -119,9 +119,9 @@ void __init setup_arch(char **cmdline_p)
|
|||
memory_end = CONFIG_BLKDEV_RESERVE_ADDRESS;
|
||||
#endif
|
||||
|
||||
init_mm.start_code = (unsigned long) &_stext;
|
||||
init_mm.end_code = (unsigned long) &_etext;
|
||||
init_mm.end_data = (unsigned long) &_edata;
|
||||
init_mm.start_code = (unsigned long) _stext;
|
||||
init_mm.end_code = (unsigned long) _etext;
|
||||
init_mm.end_data = (unsigned long) _edata;
|
||||
init_mm.brk = (unsigned long) 0;
|
||||
|
||||
#if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) && defined(CONFIG_GDB_MAGICPRINT)
|
||||
|
@ -134,15 +134,12 @@ void __init setup_arch(char **cmdline_p)
|
|||
printk(KERN_INFO "H8/300 series support by Yoshinori Sato <ysato@users.sourceforge.jp>\n");
|
||||
|
||||
#ifdef DEBUG
|
||||
printk(KERN_DEBUG "KERNEL -> TEXT=0x%06x-0x%06x DATA=0x%06x-0x%06x "
|
||||
"BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext,
|
||||
(int) &_sdata, (int) &_edata,
|
||||
(int) &_sbss, (int) &_ebss);
|
||||
printk(KERN_DEBUG "KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x "
|
||||
"STACK=0x%06x-0x%06x\n",
|
||||
(int) &_ebss, (int) memory_start,
|
||||
(int) memory_start, (int) memory_end,
|
||||
(int) memory_end, (int) &_ramend);
|
||||
printk(KERN_DEBUG "KERNEL -> TEXT=0x%p-0x%p DATA=0x%p-0x%p "
|
||||
"BSS=0x%p-0x%p\n", _stext, _etext, _sdata, _edata, __bss_start,
|
||||
__bss_stop);
|
||||
printk(KERN_DEBUG "KERNEL -> ROMFS=0x%p-0x%06lx MEM=0x%06lx-0x%06lx "
|
||||
"STACK=0x%06lx-0x%p\n", __bss_stop, memory_start, memory_start,
|
||||
memory_end, memory_end, &_ramend);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEFAULT_CMDLINE
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include <asm/segment.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/sections.h>
|
||||
|
||||
#undef DEBUG
|
||||
|
||||
|
@ -123,7 +124,6 @@ void __init mem_init(void)
|
|||
int codek = 0, datak = 0, initk = 0;
|
||||
/* DAVIDM look at setup memory map generically with reserved area */
|
||||
unsigned long tmp;
|
||||
extern char _etext, _stext, _sdata, _ebss, __init_begin, __init_end;
|
||||
extern unsigned long _ramend, _ramstart;
|
||||
unsigned long len = &_ramend - &_ramstart;
|
||||
unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */
|
||||
|
@ -142,9 +142,9 @@ void __init mem_init(void)
|
|||
/* this will put all memory onto the freelists */
|
||||
totalram_pages = free_all_bootmem();
|
||||
|
||||
codek = (&_etext - &_stext) >> 10;
|
||||
datak = (&_ebss - &_sdata) >> 10;
|
||||
initk = (&__init_begin - &__init_end) >> 10;
|
||||
codek = (_etext - _stext) >> 10;
|
||||
datak = (__bss_stop - _sdata) >> 10;
|
||||
initk = (__init_begin - __init_end) >> 10;
|
||||
|
||||
tmp = nr_free_pages() << PAGE_SHIFT;
|
||||
printk(KERN_INFO "Memory available: %luk/%luk RAM, %luk/%luk ROM (%dk kernel code, %dk data)\n",
|
||||
|
@ -178,22 +178,21 @@ free_initmem(void)
|
|||
{
|
||||
#ifdef CONFIG_RAMKERNEL
|
||||
unsigned long addr;
|
||||
extern char __init_begin, __init_end;
|
||||
/*
|
||||
* the following code should be cool even if these sections
|
||||
* are not page aligned.
|
||||
*/
|
||||
addr = PAGE_ALIGN((unsigned long)(&__init_begin));
|
||||
addr = PAGE_ALIGN((unsigned long)(__init_begin));
|
||||
/* next to check that the page we free is not a partial page */
|
||||
for (; addr + PAGE_SIZE < (unsigned long)(&__init_end); addr +=PAGE_SIZE) {
|
||||
for (; addr + PAGE_SIZE < (unsigned long)__init_end; addr +=PAGE_SIZE) {
|
||||
ClearPageReserved(virt_to_page(addr));
|
||||
init_page_count(virt_to_page(addr));
|
||||
free_page(addr);
|
||||
totalram_pages++;
|
||||
}
|
||||
printk(KERN_INFO "Freeing unused kernel memory: %ldk freed (0x%x - 0x%x)\n",
|
||||
(addr - PAGE_ALIGN((long) &__init_begin)) >> 10,
|
||||
(int)(PAGE_ALIGN((unsigned long)(&__init_begin))),
|
||||
(addr - PAGE_ALIGN((long) __init_begin)) >> 10,
|
||||
(int)(PAGE_ALIGN((unsigned long)__init_begin)),
|
||||
(int)(addr - PAGE_SIZE));
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -268,24 +268,45 @@ static unsigned long do_h_register_vpa(struct kvm_vcpu *vcpu,
|
|||
return err;
|
||||
}
|
||||
|
||||
static void kvmppc_update_vpa(struct kvm *kvm, struct kvmppc_vpa *vpap)
|
||||
static void kvmppc_update_vpa(struct kvm_vcpu *vcpu, struct kvmppc_vpa *vpap)
|
||||
{
|
||||
struct kvm *kvm = vcpu->kvm;
|
||||
void *va;
|
||||
unsigned long nb;
|
||||
unsigned long gpa;
|
||||
|
||||
/*
|
||||
* We need to pin the page pointed to by vpap->next_gpa,
|
||||
* but we can't call kvmppc_pin_guest_page under the lock
|
||||
* as it does get_user_pages() and down_read(). So we
|
||||
* have to drop the lock, pin the page, then get the lock
|
||||
* again and check that a new area didn't get registered
|
||||
* in the meantime.
|
||||
*/
|
||||
for (;;) {
|
||||
gpa = vpap->next_gpa;
|
||||
spin_unlock(&vcpu->arch.vpa_update_lock);
|
||||
va = NULL;
|
||||
nb = 0;
|
||||
if (gpa)
|
||||
va = kvmppc_pin_guest_page(kvm, vpap->next_gpa, &nb);
|
||||
spin_lock(&vcpu->arch.vpa_update_lock);
|
||||
if (gpa == vpap->next_gpa)
|
||||
break;
|
||||
/* sigh... unpin that one and try again */
|
||||
if (va)
|
||||
kvmppc_unpin_guest_page(kvm, va);
|
||||
}
|
||||
|
||||
vpap->update_pending = 0;
|
||||
va = NULL;
|
||||
if (vpap->next_gpa) {
|
||||
va = kvmppc_pin_guest_page(kvm, vpap->next_gpa, &nb);
|
||||
if (nb < vpap->len) {
|
||||
/*
|
||||
* If it's now too short, it must be that userspace
|
||||
* has changed the mappings underlying guest memory,
|
||||
* so unregister the region.
|
||||
*/
|
||||
kvmppc_unpin_guest_page(kvm, va);
|
||||
va = NULL;
|
||||
}
|
||||
if (va && nb < vpap->len) {
|
||||
/*
|
||||
* If it's now too short, it must be that userspace
|
||||
* has changed the mappings underlying guest memory,
|
||||
* so unregister the region.
|
||||
*/
|
||||
kvmppc_unpin_guest_page(kvm, va);
|
||||
va = NULL;
|
||||
}
|
||||
if (vpap->pinned_addr)
|
||||
kvmppc_unpin_guest_page(kvm, vpap->pinned_addr);
|
||||
|
@ -296,20 +317,18 @@ static void kvmppc_update_vpa(struct kvm *kvm, struct kvmppc_vpa *vpap)
|
|||
|
||||
static void kvmppc_update_vpas(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct kvm *kvm = vcpu->kvm;
|
||||
|
||||
spin_lock(&vcpu->arch.vpa_update_lock);
|
||||
if (vcpu->arch.vpa.update_pending) {
|
||||
kvmppc_update_vpa(kvm, &vcpu->arch.vpa);
|
||||
kvmppc_update_vpa(vcpu, &vcpu->arch.vpa);
|
||||
init_vpa(vcpu, vcpu->arch.vpa.pinned_addr);
|
||||
}
|
||||
if (vcpu->arch.dtl.update_pending) {
|
||||
kvmppc_update_vpa(kvm, &vcpu->arch.dtl);
|
||||
kvmppc_update_vpa(vcpu, &vcpu->arch.dtl);
|
||||
vcpu->arch.dtl_ptr = vcpu->arch.dtl.pinned_addr;
|
||||
vcpu->arch.dtl_index = 0;
|
||||
}
|
||||
if (vcpu->arch.slb_shadow.update_pending)
|
||||
kvmppc_update_vpa(kvm, &vcpu->arch.slb_shadow);
|
||||
kvmppc_update_vpa(vcpu, &vcpu->arch.slb_shadow);
|
||||
spin_unlock(&vcpu->arch.vpa_update_lock);
|
||||
}
|
||||
|
||||
|
@ -800,12 +819,39 @@ static int kvmppc_run_core(struct kvmppc_vcore *vc)
|
|||
struct kvm_vcpu *vcpu, *vcpu0, *vnext;
|
||||
long ret;
|
||||
u64 now;
|
||||
int ptid, i;
|
||||
int ptid, i, need_vpa_update;
|
||||
|
||||
/* don't start if any threads have a signal pending */
|
||||
list_for_each_entry(vcpu, &vc->runnable_threads, arch.run_list)
|
||||
need_vpa_update = 0;
|
||||
list_for_each_entry(vcpu, &vc->runnable_threads, arch.run_list) {
|
||||
if (signal_pending(vcpu->arch.run_task))
|
||||
return 0;
|
||||
need_vpa_update |= vcpu->arch.vpa.update_pending |
|
||||
vcpu->arch.slb_shadow.update_pending |
|
||||
vcpu->arch.dtl.update_pending;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize *vc, in particular vc->vcore_state, so we can
|
||||
* drop the vcore lock if necessary.
|
||||
*/
|
||||
vc->n_woken = 0;
|
||||
vc->nap_count = 0;
|
||||
vc->entry_exit_count = 0;
|
||||
vc->vcore_state = VCORE_RUNNING;
|
||||
vc->in_guest = 0;
|
||||
vc->napping_threads = 0;
|
||||
|
||||
/*
|
||||
* Updating any of the vpas requires calling kvmppc_pin_guest_page,
|
||||
* which can't be called with any spinlocks held.
|
||||
*/
|
||||
if (need_vpa_update) {
|
||||
spin_unlock(&vc->lock);
|
||||
list_for_each_entry(vcpu, &vc->runnable_threads, arch.run_list)
|
||||
kvmppc_update_vpas(vcpu);
|
||||
spin_lock(&vc->lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* Make sure we are running on thread 0, and that
|
||||
|
@ -838,20 +884,10 @@ static int kvmppc_run_core(struct kvmppc_vcore *vc)
|
|||
if (vcpu->arch.ceded)
|
||||
vcpu->arch.ptid = ptid++;
|
||||
|
||||
vc->n_woken = 0;
|
||||
vc->nap_count = 0;
|
||||
vc->entry_exit_count = 0;
|
||||
vc->vcore_state = VCORE_RUNNING;
|
||||
vc->stolen_tb += mftb() - vc->preempt_tb;
|
||||
vc->in_guest = 0;
|
||||
vc->pcpu = smp_processor_id();
|
||||
vc->napping_threads = 0;
|
||||
list_for_each_entry(vcpu, &vc->runnable_threads, arch.run_list) {
|
||||
kvmppc_start_thread(vcpu);
|
||||
if (vcpu->arch.vpa.update_pending ||
|
||||
vcpu->arch.slb_shadow.update_pending ||
|
||||
vcpu->arch.dtl.update_pending)
|
||||
kvmppc_update_vpas(vcpu);
|
||||
kvmppc_create_dtl_entry(vcpu, vc);
|
||||
}
|
||||
/* Grab any remaining hw threads so they can't go into the kernel */
|
||||
|
|
|
@ -68,9 +68,7 @@ static const char *pseries_nvram_os_partitions[] = {
|
|||
};
|
||||
|
||||
static void oops_to_nvram(struct kmsg_dumper *dumper,
|
||||
enum kmsg_dump_reason reason,
|
||||
const char *old_msgs, unsigned long old_len,
|
||||
const char *new_msgs, unsigned long new_len);
|
||||
enum kmsg_dump_reason reason);
|
||||
|
||||
static struct kmsg_dumper nvram_kmsg_dumper = {
|
||||
.dump = oops_to_nvram
|
||||
|
@ -503,28 +501,6 @@ int __init pSeries_nvram_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Try to capture the last capture_len bytes of the printk buffer. Return
|
||||
* the amount actually captured.
|
||||
*/
|
||||
static size_t capture_last_msgs(const char *old_msgs, size_t old_len,
|
||||
const char *new_msgs, size_t new_len,
|
||||
char *captured, size_t capture_len)
|
||||
{
|
||||
if (new_len >= capture_len) {
|
||||
memcpy(captured, new_msgs + (new_len - capture_len),
|
||||
capture_len);
|
||||
return capture_len;
|
||||
} else {
|
||||
/* Grab the end of old_msgs. */
|
||||
size_t old_tail_len = min(old_len, capture_len - new_len);
|
||||
memcpy(captured, old_msgs + (old_len - old_tail_len),
|
||||
old_tail_len);
|
||||
memcpy(captured + old_tail_len, new_msgs, new_len);
|
||||
return old_tail_len + new_len;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Are we using the ibm,rtas-log for oops/panic reports? And if so,
|
||||
* would logging this oops/panic overwrite an RTAS event that rtas_errd
|
||||
|
@ -541,27 +517,6 @@ static int clobbering_unread_rtas_event(void)
|
|||
NVRAM_RTAS_READ_TIMEOUT);
|
||||
}
|
||||
|
||||
/* Squeeze out each line's <n> severity prefix. */
|
||||
static size_t elide_severities(char *buf, size_t len)
|
||||
{
|
||||
char *in, *out, *buf_end = buf + len;
|
||||
/* Assume a <n> at the very beginning marks the start of a line. */
|
||||
int newline = 1;
|
||||
|
||||
in = out = buf;
|
||||
while (in < buf_end) {
|
||||
if (newline && in+3 <= buf_end &&
|
||||
*in == '<' && isdigit(in[1]) && in[2] == '>') {
|
||||
in += 3;
|
||||
newline = 0;
|
||||
} else {
|
||||
newline = (*in == '\n');
|
||||
*out++ = *in++;
|
||||
}
|
||||
}
|
||||
return out - buf;
|
||||
}
|
||||
|
||||
/* Derived from logfs_compress() */
|
||||
static int nvram_compress(const void *in, void *out, size_t inlen,
|
||||
size_t outlen)
|
||||
|
@ -619,9 +574,7 @@ static int zip_oops(size_t text_len)
|
|||
* partition. If that's too much, go back and capture uncompressed text.
|
||||
*/
|
||||
static void oops_to_nvram(struct kmsg_dumper *dumper,
|
||||
enum kmsg_dump_reason reason,
|
||||
const char *old_msgs, unsigned long old_len,
|
||||
const char *new_msgs, unsigned long new_len)
|
||||
enum kmsg_dump_reason reason)
|
||||
{
|
||||
static unsigned int oops_count = 0;
|
||||
static bool panicking = false;
|
||||
|
@ -660,14 +613,14 @@ static void oops_to_nvram(struct kmsg_dumper *dumper,
|
|||
return;
|
||||
|
||||
if (big_oops_buf) {
|
||||
text_len = capture_last_msgs(old_msgs, old_len,
|
||||
new_msgs, new_len, big_oops_buf, big_oops_buf_sz);
|
||||
text_len = elide_severities(big_oops_buf, text_len);
|
||||
kmsg_dump_get_buffer(dumper, false,
|
||||
big_oops_buf, big_oops_buf_sz, &text_len);
|
||||
rc = zip_oops(text_len);
|
||||
}
|
||||
if (rc != 0) {
|
||||
text_len = capture_last_msgs(old_msgs, old_len,
|
||||
new_msgs, new_len, oops_data, oops_data_sz);
|
||||
kmsg_dump_rewind(dumper);
|
||||
kmsg_dump_get_buffer(dumper, true,
|
||||
oops_data, oops_data_sz, &text_len);
|
||||
err_type = ERR_TYPE_KERNEL_PANIC;
|
||||
*oops_len = (u16) text_len;
|
||||
}
|
||||
|
|
|
@ -443,7 +443,7 @@ static int __init vio_init(void)
|
|||
root_vdev = vio_create_one(hp, root, NULL);
|
||||
err = -ENODEV;
|
||||
if (!root_vdev) {
|
||||
printk(KERN_ERR "VIO: Coult not create root device.\n");
|
||||
printk(KERN_ERR "VIO: Could not create root device.\n");
|
||||
goto out_release;
|
||||
}
|
||||
|
||||
|
|
|
@ -47,16 +47,26 @@ static inline void native_set_pte(pte_t *ptep, pte_t pte)
|
|||
* they can run pmd_offset_map_lock or pmd_trans_huge or other pmd
|
||||
* operations.
|
||||
*
|
||||
* Without THP if the mmap_sem is hold for reading, the
|
||||
* pmd can only transition from null to not null while pmd_read_atomic runs.
|
||||
* So there's no need of literally reading it atomically.
|
||||
* Without THP if the mmap_sem is hold for reading, the pmd can only
|
||||
* transition from null to not null while pmd_read_atomic runs. So
|
||||
* we can always return atomic pmd values with this function.
|
||||
*
|
||||
* With THP if the mmap_sem is hold for reading, the pmd can become
|
||||
* THP or null or point to a pte (and in turn become "stable") at any
|
||||
* time under pmd_read_atomic, so it's mandatory to read it atomically
|
||||
* with cmpxchg8b.
|
||||
* trans_huge or none or point to a pte (and in turn become "stable")
|
||||
* at any time under pmd_read_atomic. We could read it really
|
||||
* atomically here with a atomic64_read for the THP enabled case (and
|
||||
* it would be a whole lot simpler), but to avoid using cmpxchg8b we
|
||||
* only return an atomic pmdval if the low part of the pmdval is later
|
||||
* found stable (i.e. pointing to a pte). And we're returning a none
|
||||
* pmdval if the low part of the pmd is none. In some cases the high
|
||||
* and low part of the pmdval returned may not be consistent if THP is
|
||||
* enabled (the low part may point to previously mapped hugepage,
|
||||
* while the high part may point to a more recently mapped hugepage),
|
||||
* but pmd_none_or_trans_huge_or_clear_bad() only needs the low part
|
||||
* of the pmd to be read atomically to decide if the pmd is unstable
|
||||
* or not, with the only exception of when the low part of the pmd is
|
||||
* zero in which case we return a none pmd.
|
||||
*/
|
||||
#ifndef CONFIG_TRANSPARENT_HUGEPAGE
|
||||
static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
|
||||
{
|
||||
pmdval_t ret;
|
||||
|
@ -74,12 +84,6 @@ static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
|
|||
|
||||
return (pmd_t) { ret };
|
||||
}
|
||||
#else /* CONFIG_TRANSPARENT_HUGEPAGE */
|
||||
static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
|
||||
{
|
||||
return (pmd_t) { atomic64_read((atomic64_t *)pmdp) };
|
||||
}
|
||||
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
|
||||
|
||||
static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
|
||||
{
|
||||
|
|
|
@ -110,19 +110,16 @@ static struct kmsg_dumper dw_dumper;
|
|||
static int dumper_registered;
|
||||
|
||||
static void dw_kmsg_dump(struct kmsg_dumper *dumper,
|
||||
enum kmsg_dump_reason reason,
|
||||
const char *s1, unsigned long l1,
|
||||
const char *s2, unsigned long l2)
|
||||
enum kmsg_dump_reason reason)
|
||||
{
|
||||
int i;
|
||||
static char line[1024];
|
||||
size_t len;
|
||||
|
||||
/* When run to this, we'd better re-init the HW */
|
||||
mrst_early_console_init();
|
||||
|
||||
for (i = 0; i < l1; i++)
|
||||
early_mrst_console.write(&early_mrst_console, s1 + i, 1);
|
||||
for (i = 0; i < l2; i++)
|
||||
early_mrst_console.write(&early_mrst_console, s2 + i, 1);
|
||||
while (kmsg_dump_get_line(dumper, true, line, sizeof(line), &len))
|
||||
early_mrst_console.write(&early_mrst_console, line, len);
|
||||
}
|
||||
|
||||
/* Set the ratio rate to 115200, 8n1, IRQ disabled */
|
||||
|
|
|
@ -68,8 +68,8 @@ endif
|
|||
|
||||
# Only build variant and/or platform if it includes a Makefile
|
||||
|
||||
buildvar := $(shell test -a $(srctree)/arch/xtensa/variants/$(VARIANT)/Makefile && echo arch/xtensa/variants/$(VARIANT)/)
|
||||
buildplf := $(shell test -a $(srctree)/arch/xtensa/platforms/$(PLATFORM)/Makefile && echo arch/xtensa/platforms/$(PLATFORM)/)
|
||||
buildvar := $(shell test -e $(srctree)/arch/xtensa/variants/$(VARIANT)/Makefile && echo arch/xtensa/variants/$(VARIANT)/)
|
||||
buildplf := $(shell test -e $(srctree)/arch/xtensa/platforms/$(PLATFORM)/Makefile && echo arch/xtensa/platforms/$(PLATFORM)/)
|
||||
|
||||
# Find libgcc.a
|
||||
|
||||
|
|
|
@ -83,7 +83,6 @@ SECTIONS
|
|||
|
||||
_text = .;
|
||||
_stext = .;
|
||||
_ftext = .;
|
||||
|
||||
.text :
|
||||
{
|
||||
|
@ -112,7 +111,7 @@ SECTIONS
|
|||
EXCEPTION_TABLE(16)
|
||||
/* Data section */
|
||||
|
||||
_fdata = .;
|
||||
_sdata = .;
|
||||
RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE)
|
||||
_edata = .;
|
||||
|
||||
|
|
|
@ -26,11 +26,7 @@
|
|||
|
||||
#include <asm/bootparam.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
/* References to section boundaries */
|
||||
|
||||
extern char _ftext, _etext, _fdata, _edata, _rodata_end;
|
||||
extern char __init_begin, __init_end;
|
||||
#include <asm/sections.h>
|
||||
|
||||
/*
|
||||
* mem_reserve(start, end, must_exist)
|
||||
|
@ -197,9 +193,9 @@ void __init mem_init(void)
|
|||
reservedpages++;
|
||||
}
|
||||
|
||||
codesize = (unsigned long) &_etext - (unsigned long) &_ftext;
|
||||
datasize = (unsigned long) &_edata - (unsigned long) &_fdata;
|
||||
initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin;
|
||||
codesize = (unsigned long) _etext - (unsigned long) _stext;
|
||||
datasize = (unsigned long) _edata - (unsigned long) _sdata;
|
||||
initsize = (unsigned long) __init_end - (unsigned long) __init_begin;
|
||||
|
||||
printk("Memory: %luk/%luk available (%ldk kernel code, %ldk reserved, "
|
||||
"%ldk data, %ldk init %ldk highmem)\n",
|
||||
|
@ -237,7 +233,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
|
|||
|
||||
void free_initmem(void)
|
||||
{
|
||||
free_reserved_mem(&__init_begin, &__init_end);
|
||||
printk("Freeing unused kernel memory: %dk freed\n",
|
||||
(&__init_end - &__init_begin) >> 10);
|
||||
free_reserved_mem(__init_begin, __init_end);
|
||||
printk("Freeing unused kernel memory: %zuk freed\n",
|
||||
(__init_end - __init_begin) >> 10);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Arasan Compact Flash host controller source file
|
||||
*
|
||||
* Copyright (C) 2011 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
@ -959,7 +959,7 @@ static struct platform_driver arasan_cf_driver = {
|
|||
|
||||
module_platform_driver(arasan_cf_driver);
|
||||
|
||||
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@st.com>");
|
||||
MODULE_AUTHOR("Viresh Kumar <viresh.linux@gmail.com>");
|
||||
MODULE_DESCRIPTION("Arasan ATA Compact Flash driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS("platform:" DRIVER_NAME);
|
||||
|
|
|
@ -100,7 +100,7 @@ static void driver_deferred_probe_add(struct device *dev)
|
|||
mutex_lock(&deferred_probe_mutex);
|
||||
if (list_empty(&dev->p->deferred_probe)) {
|
||||
dev_dbg(dev, "Added to deferred list\n");
|
||||
list_add(&dev->p->deferred_probe, &deferred_probe_pending_list);
|
||||
list_add_tail(&dev->p->deferred_probe, &deferred_probe_pending_list);
|
||||
}
|
||||
mutex_unlock(&deferred_probe_mutex);
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <asm/smp.h>
|
||||
#include "agp.h"
|
||||
#include "intel-agp.h"
|
||||
#include <drm/intel-gtt.h>
|
||||
|
||||
int intel_agp_enabled;
|
||||
EXPORT_SYMBOL(intel_agp_enabled);
|
||||
|
@ -747,7 +748,7 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
|
|||
|
||||
bridge->capndx = cap_ptr;
|
||||
|
||||
if (intel_gmch_probe(pdev, bridge))
|
||||
if (intel_gmch_probe(pdev, NULL, bridge))
|
||||
goto found_gmch;
|
||||
|
||||
for (i = 0; intel_agp_chipsets[i].name != NULL; i++) {
|
||||
|
@ -824,7 +825,7 @@ static void __devexit agp_intel_remove(struct pci_dev *pdev)
|
|||
|
||||
agp_remove_bridge(bridge);
|
||||
|
||||
intel_gmch_remove(pdev);
|
||||
intel_gmch_remove();
|
||||
|
||||
agp_put_bridge(bridge);
|
||||
}
|
||||
|
|
|
@ -251,7 +251,4 @@
|
|||
#define PCI_DEVICE_ID_INTEL_HASWELL_SDV 0x0c16 /* SDV */
|
||||
#define PCI_DEVICE_ID_INTEL_HASWELL_E_HB 0x0c04
|
||||
|
||||
int intel_gmch_probe(struct pci_dev *pdev,
|
||||
struct agp_bridge_data *bridge);
|
||||
void intel_gmch_remove(struct pci_dev *pdev);
|
||||
#endif
|
||||
|
|
|
@ -66,7 +66,6 @@ static struct _intel_private {
|
|||
struct pci_dev *bridge_dev;
|
||||
u8 __iomem *registers;
|
||||
phys_addr_t gtt_bus_addr;
|
||||
phys_addr_t gma_bus_addr;
|
||||
u32 PGETBL_save;
|
||||
u32 __iomem *gtt; /* I915G */
|
||||
bool clear_fake_agp; /* on first access via agp, fill with scratch */
|
||||
|
@ -76,6 +75,7 @@ static struct _intel_private {
|
|||
struct resource ifp_resource;
|
||||
int resource_valid;
|
||||
struct page *scratch_page;
|
||||
int refcount;
|
||||
} intel_private;
|
||||
|
||||
#define INTEL_GTT_GEN intel_private.driver->gen
|
||||
|
@ -648,6 +648,7 @@ static void intel_gtt_cleanup(void)
|
|||
|
||||
static int intel_gtt_init(void)
|
||||
{
|
||||
u32 gma_addr;
|
||||
u32 gtt_map_size;
|
||||
int ret;
|
||||
|
||||
|
@ -694,6 +695,15 @@ static int intel_gtt_init(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
if (INTEL_GTT_GEN <= 2)
|
||||
pci_read_config_dword(intel_private.pcidev, I810_GMADDR,
|
||||
&gma_addr);
|
||||
else
|
||||
pci_read_config_dword(intel_private.pcidev, I915_GMADDR,
|
||||
&gma_addr);
|
||||
|
||||
intel_private.base.gma_bus_addr = (gma_addr & PCI_BASE_ADDRESS_MEM_MASK);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -767,20 +777,10 @@ static void i830_write_entry(dma_addr_t addr, unsigned int entry,
|
|||
writel(addr | pte_flags, intel_private.gtt + entry);
|
||||
}
|
||||
|
||||
static bool intel_enable_gtt(void)
|
||||
bool intel_enable_gtt(void)
|
||||
{
|
||||
u32 gma_addr;
|
||||
u8 __iomem *reg;
|
||||
|
||||
if (INTEL_GTT_GEN <= 2)
|
||||
pci_read_config_dword(intel_private.pcidev, I810_GMADDR,
|
||||
&gma_addr);
|
||||
else
|
||||
pci_read_config_dword(intel_private.pcidev, I915_GMADDR,
|
||||
&gma_addr);
|
||||
|
||||
intel_private.gma_bus_addr = (gma_addr & PCI_BASE_ADDRESS_MEM_MASK);
|
||||
|
||||
if (INTEL_GTT_GEN >= 6)
|
||||
return true;
|
||||
|
||||
|
@ -823,6 +823,7 @@ static bool intel_enable_gtt(void)
|
|||
|
||||
return true;
|
||||
}
|
||||
EXPORT_SYMBOL(intel_enable_gtt);
|
||||
|
||||
static int i830_setup(void)
|
||||
{
|
||||
|
@ -860,7 +861,7 @@ static int intel_fake_agp_configure(void)
|
|||
return -EIO;
|
||||
|
||||
intel_private.clear_fake_agp = true;
|
||||
agp_bridge->gart_bus_addr = intel_private.gma_bus_addr;
|
||||
agp_bridge->gart_bus_addr = intel_private.base.gma_bus_addr;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1182,9 +1183,17 @@ static void gen6_write_entry(dma_addr_t addr, unsigned int entry,
|
|||
static void valleyview_write_entry(dma_addr_t addr, unsigned int entry,
|
||||
unsigned int flags)
|
||||
{
|
||||
unsigned int type_mask = flags & ~AGP_USER_CACHED_MEMORY_GFDT;
|
||||
unsigned int gfdt = flags & AGP_USER_CACHED_MEMORY_GFDT;
|
||||
u32 pte_flags;
|
||||
|
||||
pte_flags = GEN6_PTE_UNCACHED | I810_PTE_VALID;
|
||||
if (type_mask == AGP_USER_MEMORY)
|
||||
pte_flags = GEN6_PTE_UNCACHED | I810_PTE_VALID;
|
||||
else {
|
||||
pte_flags = GEN6_PTE_LLC | I810_PTE_VALID;
|
||||
if (gfdt)
|
||||
pte_flags |= GEN6_PTE_GFDT;
|
||||
}
|
||||
|
||||
/* gen6 has bit11-4 for physical addr bit39-32 */
|
||||
addr |= (addr >> 28) & 0xff0;
|
||||
|
@ -1244,6 +1253,7 @@ static int i9xx_setup(void)
|
|||
switch (INTEL_GTT_GEN) {
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
gtt_offset = MB(2);
|
||||
break;
|
||||
case 4:
|
||||
|
@ -1379,7 +1389,6 @@ static const struct intel_gtt_driver valleyview_gtt_driver = {
|
|||
.write_entry = valleyview_write_entry,
|
||||
.dma_mask_size = 40,
|
||||
.check_flags = gen6_check_flags,
|
||||
.chipset_flush = i9xx_chipset_flush,
|
||||
};
|
||||
|
||||
/* Table to describe Intel GMCH and AGP/PCIE GART drivers. At least one of
|
||||
|
@ -1523,14 +1532,32 @@ static int find_gmch(u16 device)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int intel_gmch_probe(struct pci_dev *pdev,
|
||||
struct agp_bridge_data *bridge)
|
||||
int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev,
|
||||
struct agp_bridge_data *bridge)
|
||||
{
|
||||
int i, mask;
|
||||
intel_private.driver = NULL;
|
||||
|
||||
/*
|
||||
* Can be called from the fake agp driver but also directly from
|
||||
* drm/i915.ko. Hence we need to check whether everything is set up
|
||||
* already.
|
||||
*/
|
||||
if (intel_private.driver) {
|
||||
intel_private.refcount++;
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (i = 0; intel_gtt_chipsets[i].name != NULL; i++) {
|
||||
if (find_gmch(intel_gtt_chipsets[i].gmch_chip_id)) {
|
||||
if (gpu_pdev) {
|
||||
if (gpu_pdev->device ==
|
||||
intel_gtt_chipsets[i].gmch_chip_id) {
|
||||
intel_private.pcidev = pci_dev_get(gpu_pdev);
|
||||
intel_private.driver =
|
||||
intel_gtt_chipsets[i].gtt_driver;
|
||||
|
||||
break;
|
||||
}
|
||||
} else if (find_gmch(intel_gtt_chipsets[i].gmch_chip_id)) {
|
||||
intel_private.driver =
|
||||
intel_gtt_chipsets[i].gtt_driver;
|
||||
break;
|
||||
|
@ -1540,13 +1567,17 @@ int intel_gmch_probe(struct pci_dev *pdev,
|
|||
if (!intel_private.driver)
|
||||
return 0;
|
||||
|
||||
bridge->driver = &intel_fake_agp_driver;
|
||||
bridge->dev_private_data = &intel_private;
|
||||
bridge->dev = pdev;
|
||||
intel_private.refcount++;
|
||||
|
||||
intel_private.bridge_dev = pci_dev_get(pdev);
|
||||
if (bridge) {
|
||||
bridge->driver = &intel_fake_agp_driver;
|
||||
bridge->dev_private_data = &intel_private;
|
||||
bridge->dev = bridge_pdev;
|
||||
}
|
||||
|
||||
dev_info(&pdev->dev, "Intel %s Chipset\n", intel_gtt_chipsets[i].name);
|
||||
intel_private.bridge_dev = pci_dev_get(bridge_pdev);
|
||||
|
||||
dev_info(&bridge_pdev->dev, "Intel %s Chipset\n", intel_gtt_chipsets[i].name);
|
||||
|
||||
mask = intel_private.driver->dma_mask_size;
|
||||
if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(mask)))
|
||||
|
@ -1556,11 +1587,11 @@ int intel_gmch_probe(struct pci_dev *pdev,
|
|||
pci_set_consistent_dma_mask(intel_private.pcidev,
|
||||
DMA_BIT_MASK(mask));
|
||||
|
||||
/*if (bridge->driver == &intel_810_driver)
|
||||
return 1;*/
|
||||
if (intel_gtt_init() != 0) {
|
||||
intel_gmch_remove();
|
||||
|
||||
if (intel_gtt_init() != 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -1579,12 +1610,16 @@ void intel_gtt_chipset_flush(void)
|
|||
}
|
||||
EXPORT_SYMBOL(intel_gtt_chipset_flush);
|
||||
|
||||
void intel_gmch_remove(struct pci_dev *pdev)
|
||||
void intel_gmch_remove(void)
|
||||
{
|
||||
if (--intel_private.refcount)
|
||||
return;
|
||||
|
||||
if (intel_private.pcidev)
|
||||
pci_dev_put(intel_private.pcidev);
|
||||
if (intel_private.bridge_dev)
|
||||
pci_dev_put(intel_private.bridge_dev);
|
||||
intel_private.driver = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(intel_gmch_remove);
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ static int atmel_trng_read(struct hwrng *rng, void *buf, size_t max,
|
|||
u32 *data = buf;
|
||||
|
||||
/* data ready? */
|
||||
if (readl(trng->base + TRNG_ODATA) & 1) {
|
||||
if (readl(trng->base + TRNG_ISR) & 1) {
|
||||
*data = readl(trng->base + TRNG_ODATA);
|
||||
/*
|
||||
ensure data ready is only set again AFTER the next data
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (C) 2012 ST Microelectronics
|
||||
* Viresh Kumar <viresh.kumar@st.com>
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue