- Move the ab8500 compatible string from the board to the
chipset.
- Define GPIO line names for the boards.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJXV8y4AAoJEEEQszewGV1zXRUP/RitlC4vtzEXCfhTHdg3BQI1
uNkHl96N3sgQaj/67ImT46E078JlIz9uNFhxj3jXxIk5BOaJoBBG6Giz8NzFpEl/
Jh7YFzUW4L5v8O4vp5Fl1vEUvXoZn8MZClihcREihcjecm6FAD0CHujmu6dn2cpx
sC7L1mbmS8IWvGeLxohfCoeAJFnSsNwJ2BUqgdnM/dxRFa33fr45XTGIVeV5XkI6
JPYyM7jsGnbg9YqWX+RdLLMLD1DcriSpXjVbmHdfW6avqAjWT6USIe7gjcG6YUwR
6Pqh0HLGVH6PNVRlkIlV1hVizPPb3At4ouMT9I09kmoAD1mpg1AsiadunA4F2EPa
oDgajYRI4Teuj171jCjWyCnJIcluqhXK+QgYFs/ubT1BklKBxBwOHFgz0yIhpSEq
VBMEjfyXko+wYpCfG+ZZEPyqOhBFQfhlQnS8TzL4nMI1oma7XnY7s/Ph0oSuZOlx
L+FeQQ21SV2gBnO1oTTUk+D9D8V0Vwq9WvQWNt6kEt5E8AwGPX0N1FCGCFAyrwa+
+YmCIBpMZj5TtYHhf6frRx+dEe5e3or3NdR0a43jXhPYxPkWhXVcBVKzMuPFfA0z
5/3JDx37bFNmvSXW7ysw5dZeimvYtZfitw/9EOnxk9vS5ASiEOA2VtCTx9h3OZLs
1ZDvxa/0XAOHTp5gbmv8
=sOoX
-----END PGP SIGNATURE-----
Merge tag 'ux500-dt-asoc-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson into next/dt
Ux500 devicetree patches:
- Move the ab8500 compatible string from the board to the
chipset.
- Define GPIO line names for the boards.
* tag 'ux500-dt-asoc-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson:
ARM: dts: UX500: name the GPIO lines on HREFv60plus
ARM: dts: Ux500: name the GPIO lines on Snowball
ARM: dts: Ux500: move compatible string to chipset
Signed-off-by: Olof Johansson <olof@lixom.net>
* Use ICRAM1 for jump stub on R-Car Gen 2 SoCs
* Postpone call to pm_genpd_init
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJXV2vKAAoJENfPZGlqN0++Bi4P/2ZVe7ZQnG0EIdzY+hBHPj/k
pS3dSrenUdeaM7vYVpB2S6f+6lqh3Dn6//jsY2/x127H9oj8cSzTidkLYXEUZb7v
KjZIwjPq4+UjaA1hd2WZxjcbJKgkKz1BGh+GWUjvr/99cyh5ySkHMvsNHfyBjDQd
SwKnklzCIJHws8UkKgEXtUutS+Z3LcClxNe5L+0dAnvh5dMp1Up/zTXsq5pDegr2
ytQYjh+TEFmuUxLx3YB511LjrLDfpAB7yGHDajAbZjDi3KtlKqbypdx+TgiqT9hh
zA5HP67XQFeJFp2DzariztVx+nHMrVd7atRn0qSX64TgqMPwpIMTLPEVFP+wCDyg
2bqgIAoGJfg4bl1IL9QRTt607SyHALIzjP+n7Jb2wPejW8OtubHmKVdTamevrZTe
lQvDNv6RwAZF60X1SkagxL13GAS3YRhKKi7wMDVb9ARzplvbh0KSDsu94k0S+wOE
dGBDnAPGe0A0HHBm5IMgADBW6RRvLAnwkr73gGIbBbTX/rwctawnBi+eIkEZUfqF
YzV3XavNOC5sXxGjQ5IiufHx/WL5XIy8np1aQNA67l3fFNYi/xrtgtFk+YKlcuiJ
OJvNHvM0BaV5g09UYUEfO6zlN1lFUhWji6Q+ro5GSAgDl9Ki8SwQfA5wSjBW113E
TdkCIRN0hkXf+AzPG5or
=DKN7
-----END PGP SIGNATURE-----
Merge tag 'renesas-soc-for-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/soc
Renesas ARM Based SoC Updates for v4.8
* Use ICRAM1 for jump stub on R-Car Gen 2 SoCs
* Postpone call to pm_genpd_init
* tag 'renesas-soc-for-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
ARM: shmobile: rcar-gen2: Use ICRAM1 for jump stub on all SoCs
ARM: shmobile: pm-rmobile: Postpone call to pm_genpd_init()
Signed-off-by: Olof Johansson <olof@lixom.net>
Kasan causes the compiler to instrument C code and is used at runtime to
detect accesses to memory that has been freed, or not yet allocated.
The code in snapshot.c saves and restores memory when hibernating. This will
access whole pages in the slab cache that have both free and allocated
areas, resulting in a large number of false positives from Kasan.
Disable instrumentation of this file.
Signed-off-by: James Morse <james.morse@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1. Disable big.LITTLE switcher so the cpufreq-dt could be enabled.
2. Enable Samsung media platform drivers.
3. Enable some board-specific drivers for boards: Trats2, Universal C210.
4. Few more minor additions.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJXVWOmAAoJEME3ZuaGi4PX+9IP/RR7BP8TVGGKIqTYboQGR+mc
6JfBYabC2iUZwN3Unnjo4FxUFqCAtSZ/2g5RTe3sPG7wAjTSX3OtpLv4TEvX9gHe
1gVplOuXS4c4IEg2Uw9K7L+SnOFrGyC9Lk7ywCUO4dEk2PJC/xsvQX6JrZRFM3ne
pJ6Fpz86vPqa+yqyYBw6Jd3j0po3VL7LzhKC+n9HyMbuJ7Drl3yOjzgPHxGY6GJq
UlLdKxQ5PEtMCucMoxvgYdbjFHT+VsIM1nJYY9VSKvSUhiczMZvXnrPrUHNk1or8
i/hs0MhgxLiPl/2h3eYKpKzodDp7XOy1+W3NPTralkixMA8ZOwLZRzAiKwAkZBk9
KKIVaW5E6Yh6JEaAJ0KyiVibAuVkMKXnc7JAEDvwwYCu5j4fx/EdzeaYMFS8DUS/
iMeksxP3TOyQ51Le+Z9nWrOAKLsUChZgLAB3b724GRNJqZ73+yprkV/O7A7Lb3T2
joW3ge+JSu/n8RgvFGsZo0i/LLRXJrBGsIqihJtuunBm3wiUjQVGD83XIu2bToNO
SEd42WHpuvAIGgKjKjQlXVyTlhnk5p8AbgI28IZ34FDLxTpG+t1lYErFRulPrScC
g+OfW92wfm6sk9k8upNNTfzAjttHdzHHSAaKa1jxP25eB9T/g1Gu9TEu20QXvqJz
cjUVNYi32q51B22PjvVy
=xPJg
-----END PGP SIGNATURE-----
Merge tag 'samsung-defconfig-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into next/defconfig
Samsung defconfig update for v4.8:
1. Disable big.LITTLE switcher so the cpufreq-dt could be enabled.
2. Enable Samsung media platform drivers.
3. Enable some board-specific drivers for boards: Trats2, Universal C210.
4. Few more minor additions.
* tag 'samsung-defconfig-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
ARM: exynos_defconfig: Save defconfig on current linux-next
ARM: multi_v7_defconfig: Enable s5p-secss driver
ARM: multi_v7_defconfig: Enable drivers for Exynos4210 Universal C210 board
ARM: multi_v7_defconfig: Enable Trats2 audio codec, touchscreen and sensors
ARM: multi_v7_defconfig: Switch max77693 to module
ARM: multi_v7_defconfig: Enable Exynos MFC driver as module
ARM: exynos_defconfig: Enable MFC driver as module
ARM: multi_v7_defconfig: Enable Samsung media platform drivers as modules
ARM: exynos_defconfig: Enable Samsung media platform drivers as modules
ARM: multi_v7_defconfig: Enable Exynos DRM Mixer driver
ARM: exynos_defconfig: Disable big.LITTLE switcher
Signed-off-by: Olof Johansson <olof@lixom.net>
This brings support for Hardkernel's Odroid XU board. It was the first
design with big.LITTLE SoC from Samsung: Exynos5410. The board is not
very popular. Newer XU3 and XU4 got more attention.
Board details:
1. Exynos5410 octa-core (A15+A7, however as of now only one cluster is
enabled),
2. 2 GB DDR3 RAM,
3. PowerVR SGX544MP3 GPU (not enabled in DTS),
4. USB 3.0 Host x 1, USB 3.0 OTG x 1, USB 2.0 Host x 4,
5. HDMI 1.4a, MIPI DSI and Display Port (Display Port not on all of
revisions though),
6. eMMC 4.5 and microSD slots.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJXVWVcAAoJEME3ZuaGi4PXFVQP/3JyYEYpBw+6tu0PasYz2cYr
D2fprLkHlfFOY+wGdHoTuBsjsOj1nwTXyVAA/zhIqudgJFXH67vR+BABoCDVT7J0
/pYfMT4rm9Wa4ddKJnE6bv78IbAI52S1tzKsHRi+YlceVbKFUWJAqSsaJYVDOaci
Sxg4/sbD2VcU7xlDNw2lSux6du3MEkdbarOd3l58eKMwvqSRCmvx7YultrrFwDhV
JByy1VG+WXAWyaE59VRZ+kAGHMDTz7KK8YNjkUGmgJK0Ryd6C8kETw1ZC8fiA/tZ
+QlnDehngSZ15x79RI7JUj/F+UY2QrMDzLk6qIa2E3sgWv4aJ0csFymk1+mUDhJF
vO8EwqF+YnbwNG1mmzmqBgeQxb3EdKdM/onanpazIlQAlpaJIJpBbKR8x2Doa6TZ
g/f37FQW3l1DEBT3H2IXd6Yx1FgCnlFjPb0fwnS5sG05YyOEKdKTss+5LKShG5J4
VeN8/EmaocRvQx0GE0pRr0nhuaWt9E59jXrAmBe8OUVIjQYTvxRoH2mWEQ0iuOEZ
+VRD/WwtkdqeUBOSFYckVWDanJPqh3qLZ+eCEqoguMKtqCTC3eJp2euIBsawA4DW
Nxl6Zy5iIMfc7j4VtoDy7qDtBJ1hzeX8gzRE+tVXrtpiMs2gd1+Jkofr2nTIihU9
h/Hg9dc34pSV9by8hutW
=7u0/
-----END PGP SIGNATURE-----
Merge tag 'samsung-dt-odroid-xu-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into next/dt
Topic branch for adding Exynos 5410 Odroid XU board for v4.8.
This brings support for Hardkernel's Odroid XU board. It was the first
design with big.LITTLE SoC from Samsung: Exynos5410. The board is not
very popular. Newer XU3 and XU4 got more attention.
Board details:
1. Exynos5410 octa-core (A15+A7, however as of now only one cluster is
enabled),
2. 2 GB DDR3 RAM,
3. PowerVR SGX544MP3 GPU (not enabled in DTS),
4. USB 3.0 Host x 1, USB 3.0 OTG x 1, USB 2.0 Host x 4,
5. HDMI 1.4a, MIPI DSI and Display Port (Display Port not on all of
revisions though),
6. eMMC 4.5 and microSD slots.
* tag 'samsung-dt-odroid-xu-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux: (28 commits)
ARM: dts: exynos: Add watchdog and Security SubSystem to Exynos5410
ARM: dts: exynos: Configure PWM, usb3503, PMIC and thermal on Odroid XU board
ARM: dts: exynos: Add Thermal Management Unit to Exynos5410
ARM: dts: exynos: Interrupt for USB DWC3-1 differs between Exynos5420 and 5410
dt-bindings: clock: Add watchdog and SSS clock IDs to Exynos5410
dt-bindings: clock: Add TMU clock ID to Exynos5410
ARM: dts: exynos: Add RTC and I2C to Exynos5410
ARM: dts: exynos: Add I2C, PWM and UART pinctrl to Exynos5410
ARM: dts: exynos: Move HSI2C nodes to exynos54xx.dtsi
ARM: dts: exynos: Add initial support for Odroid XU board
ARM: dts: exynos: Add USB to Exynos5410
ARM: dts: exynos: Move common Exynos5410/542x/5800 nodes to new DTSI
ARM: dts: exynos: MCT is not an interrupt controller and extend length of iomap
ARM: dts: exynos: Enable UART3 on Exynos5410
ARM: dts: exynos: Include common exynos5 in exynos5410.dtsi
ARM: dts: exynos: Move Exynos5250 and Exynos5420 nodes under soc
ARM: dts: exynos: Use phandle to get parent node in exynos5250-snow
ARM: dts: exynos: Prepare for inclusion of exynos5.dtsi in exynos5410.dtsi
ARM: dts: exynos: Move common nodes to exynos5.dtsi
ARM: dts: exynos: Split Odroid XU3 LEDs to separate DTSI
...
Signed-off-by: Olof Johansson <olof@lixom.net>
Fix the use of 0 instead of NULL to clk_get() call. This stops the
following warning:
drivers/cpufreq/mvebu-cpufreq.c:73:40: warning: Using plain integer as NULL pointer
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Add Broxton CPU model number.
Broxton requires core_params to get performance limits via MSRs, but
it is an Atom platform, which requires more power optimized algorithm.
So the P state selection will use similar algorithm as other Atom
platforms.
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1. Add missing async bridge for MFC power domain on Exynos5420.
This fixes imprecise abort on s5p-mfc re-bind.
2. Define regulator supplies for MMC nodes on Exynos4412 Odroid boards
and for TMU on Exynos542x Peach boards.
3. Thermal cleanups on Odroid XU3-family (Exynos5422).
4. Enable AX88760 USB hub on Origen board (Exynos4412).
5. Minor cleanups.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJXVWLzAAoJEME3ZuaGi4PXxwcP/iEIEXDy/0gKaJ2mEMcutI+/
en2KPLXa+pg4JOSoVQKAPgiwwNeC+z4zgT38XJGn2Zs/YO9BbTNzJ4pzafqTXoko
h5us4YNDcy9xUb95gr7zS6YDfs0+hzFJ+Aqzfz/BL5cZgM0dowla2LqNSzqHXPXJ
6e8JYHLRb3uq+eYKVIeO1kj6WgcFuDFgRy627gimtqnZgInpFH3jL4G3e7jcRv1N
yG+UDaOn1lB4NEdwbQ5nBFGok5Ihs9Gh1XiVDigMRBxaiXtyUnoo7BGoHRWf8QrV
fOMl6EZ93fhI/b503W2cxB7zMZ85iReSzpxU6NWI29BcozrcqE5TAVZZRyMZ47Er
MlTSdE2b5E4yU0mwYWHluJ2EugJNJObopWQ7OC850QuS4x056AO3y9tfV4hR1LWD
BvuCo3IDuU0s0M1TX/JeoDXfBA11eLNfwuqbmpsoEKwu2Zy8mLzda3AQvML1ycSr
GusZAKp+FrtXBp/+QlZzYQuYoMbzxnih4aQX+gwGekD6YwhI6DIfqmU4yAUMyHTn
WlTO5Hw0LYb7nCad4X5P9NnGNIzEJLCUa0BSmgjtQkDPmAmMT6UKdAftjuXj0gHy
mRyRGoYdXJxNBD/sTcm9gd7mk+FmkMcUj0qnK4qHG4O3RAnys3rYdLUc4n+DXOha
XOqWdz4GYFA0lv4P6MMg
=E3ZO
-----END PGP SIGNATURE-----
Merge tag 'samsung-dt-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into next/dt
Samsung DeviceTree update for v4.8:
1. Add missing async bridge for MFC power domain on Exynos5420.
This fixes imprecise abort on s5p-mfc re-bind.
2. Define regulator supplies for MMC nodes on Exynos4412 Odroid boards
and for TMU on Exynos542x Peach boards.
3. Thermal cleanups on Odroid XU3-family (Exynos5422).
4. Enable AX88760 USB hub on Origen board (Exynos4412).
5. Minor cleanups.
* tag 'samsung-dt-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
ARM: dts: exynos: No need to enable TMU nodes on Odroid XU3 family
ARM: dts: exynos: Add TMU nodes regulator supply for Peach boards
ARM: dts: exynos: Use new compatible string for thermistors in Trats2
ARM: dts: exynos: Remove unneded always-on for regulators on Peach boards
ARM: dts: exynos: Enable AX88760 USB hub on Origen board
ARM: dts: exynos: Only Odroid XU3-family boards use DTSI with CPU thermal nodes
ARM: dts: exynos: Lower SD card interface voltage to 2.8 V on Odroid X/X2/U3
ARM: dts: exynos: Define vqmmc for eMMC card on Odroid X/X2/U3
ARM: dts: exynos: Define vqmmc for SD card and allow disabling regulators on Odroid X/X2/U3
ARM: dts: exynos: Add async-bridge clock to MFC power domain for Exynos5420
Signed-off-by: Olof Johansson <olof@lixom.net>
The conservative governor registers a transition notifier so it
can update its internal requested_freq value if it falls out of the
policy->min...policy->max range, but requested_freq is not really
necessary.
That value is used to track the frequency requested by the governor
previously, but policy->cur can be used instead of it and then the
governor will not have to worry about updating the tracked value when
the current frequency changes independently (for example, as a result
of min or max changes).
Accodringly, drop requested_freq from struct cs_policy_dbs_info
and modify cs_dbs_timer() to use policy->cur instead of it.
While at it, notice that __cpufreq_driver_target() clamps its
target_freq argument between policy->min and policy->max, so
the callers of it don't have to do that and make additional
changes in cs_dbs_timer() in accordance with that.
After these changes the transition notifier used by the conservative
governor is not necessary any more, so drop it, which also makes it
possible to drop the struct cs_governor definition and simplify the
code accordingly.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
1. Move the power domain driver from arm/mach-exynos and prepare
for supporting ARMv8.
2. Add COMPILE_TEST.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJXVWC+AAoJEME3ZuaGi4PXf4gP/3Hv1/awGDmI0eCoPovzp4fS
uxTtPmp5V4NgU2R7tYzmo6/8fUu2YSFlSVFrM1CYgCwM+E67GQsmfBS0MB4r3ssZ
q4QvTIynvV0jybl0ZjPC0bso1A9rDhKSg+mME8nghkb6JBfqqUcKzx1fYm2nTH/9
lksO13WWwNgtQ4qs9xMlilFKxKZAX/XpYakLsvNqH3v/iNz/OKn2kneyGtkKiplZ
lsab3bJn+bKJOQFLtBTstnVNNb0ji0Q7ZbLylgFfskyqFOPp2om+6TEjnn/czNYU
t6reUFABZq4E2XvkZRwBP5y/4JquSbJO3UzvfgDYEqnJpArEnzG8xe+cvw6inono
Nwv2nXRo40v7Ta43oSmLiHvCeLKd/ldmoKK0s9IKB5dxfmpkixqu2qHuleqRmrYp
bFy1mxkpq7CwFxBpxpIyN91TNdieTF/O49pzUGCBjqnEVYC0EiZT4VxTuvv2jg0J
tSWDAxc0u8Uk0N5yol0yWejYQgq6i/hJH+HwR6iDoeKSbaoj72dYgBNGD9HsSgcn
BHeb1L1T4qWdgvNX5wzfnnoh4nIAh64UmxQCrzbzPDGuCmUx7EOEPQpvrwl8JBNT
DM7XRh4NpTpU8KIDA8MxeHzG47YHOSkk7Y4UzSv+C+S6IGxzrDZ5uXnz4tVDIWhV
1YBOmVufh9JXHxMRcIpy
=P4zd
-----END PGP SIGNATURE-----
Merge tag 'samsung-drivers-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into next/drivers
Samsung drivers/soc update for v4.8:
1. Move the power domain driver from arm/mach-exynos and prepare
for supporting ARMv8.
2. Add COMPILE_TEST.
* tag 'samsung-drivers-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
soc: samsung: pm_domains: Enable COMPILE_TEST for build coverage
soc: samsung: pm_domains: Prepare for supporting ARMv8 Exynos
ARM: EXYNOS: Move pm_domains driver to drivers/soc/samsung
Signed-off-by: Olof Johansson <olof@lixom.net>
Multiple calls to disable an IRQ would have caused the driver to
dereference a poisoned list item. This re-initializes the list to allow
multiple requests to disable the IRQ.
Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by Jon Derrick: <jonathan.derrick@intel.com>
VMD device doesn't usually have device archdata specific dma_ops, so we
need to override the default ops for VMD devices.
Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by Jon Derrick: <jonathan.derrick@intel.com>
osif_table is never modified, so declare it as const.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
David reported that the length for memset was incorrect (element sizes
were not taken into account). Then I saw that we are clearing kzalloced
memory, so we can simply drop this code.
Reported-by: David Binderman <dcb314@hotmail.com>
Reviewed-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
The interrupt handling code makes it look like several status values
may be merged together before being processed, while this will never
happen. Change from bit-wise OR to simple assignment to make it more
obvious and avoid misunderstanding.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Some I2C devices have multiple addresses assigned, for example each address
corresponding to a different internal register map page of the device.
So far drivers which need support for this have handled this with a driver
specific and non-generic implementation, e.g. passing the additional address
via platform data.
This patch provides a new helper function called i2c_new_secondary_device()
which is intended to provide a generic way to get the secondary address
as well as instantiate a struct i2c_client for the secondary address.
The function expects a pointer to the primary i2c_client, a name
for the secondary address and an optional default address. The name is used
as a handle to specify which secondary address to get.
The default address is used as a fallback in case no secondary address
was explicitly specified. In case no secondary address and no default
address were specified the function returns NULL.
For now the function only supports look-up of the secondary address
from devicetree, but it can be extended in the future
to for example support board files and/or ACPI.
Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@veo-labs.com>
Acked-by: Rob Herring <robh@kernel.org>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Add back runtime PM support for PCIe ports that was removed by
fe9a743a26 ("PCI/PM: Drop unused runtime PM support code for PCIe
ports").
We cannot enable it automatically for all ports since there have been
problems previously [1]. In summary suspended PCIe ports were not able
to deal with ACPI-based hotplug reliably. One reason why this might happen
is the fact that when a PCIe port is powered down, config space access to
the devices behind the port is not possible. If the BIOS hotplug SMI
handler assumes the port is always in D0 it will not be able to find the
hotplugged devices. To be on the safe side only enable runtime PM if the
port does not claim to support hotplug.
For PCIe ports not using hotplug, we enable and allow runtime PM
automatically. Since 'bridge_d3' can be changed any time we check this in
driver ->runtime_idle() and ->runtime_suspend() and only allow runtime
suspend if the flag is still set. Use autosuspend with default of 100ms
idle time to prevent the port from repeatedly suspending and resuming on
continuous configuration space access of devices behind the port.
The actual power transition to D3 and back is handled in the PCI core.
Idea to automatically unblock (allow) runtime PM for PCIe ports came from
Dave Airlie.
[1] https://bugzilla.kernel.org/show_bug.cgi?id=53811
This includes a fix for lockdep issue reported by Valdis Kletnieks.
Tested-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
If a PCI bridge (or PCIe port) that is runtime suspended gets an ACPI
hotplug event, such as BUS_CHECK we need to make sure it is resumed before
devices below the bridge are re-scanned. Otherwise the devices behind the
port are not accessible and will be treated as hot-unplugged.
To fix this, resume PCI bridges from runtime suspend while rescanning.
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
When a PCI device is removed through sysfs interface, the upstream bridge
(PCIe port) can be runtime suspended if it was the last device on that bus.
Now, if the bridge is in D3 we cannot find devices below the bridge
anymore. For example following fails to find the removed device again:
# echo 1 > /sys/bus/pci/devices/0000:00:01.0/0000:01:00.0/remove
# echo 1 > /sys/bus/pci/devices/0000:00:01.0/rescan
Where 0000:00:01.0 is the bridge device.
In order to be able to rescan devices below the bridge add
pm_runtime_get_sync()/pm_runtime_put() calls to pci_scan_bridge(). This
should keep bridges powered on while their children devices are being
scanned.
Reported-by: Peter Wu <peter@lekensteyn.nl>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Currently the Linux PCI core does not touch power state of PCI bridges and
PCIe ports when system suspend is entered. Leaving them in D0 consumes
power unnecessarily and may prevent the CPU from entering deeper C-states.
With recent PCIe hardware we can power down the ports to save power given
that we take into account few restrictions:
- The PCIe port hardware is recent enough, starting from 2015.
- Devices connected to PCIe ports are effectively in D3cold once the port
is transitioned to D3 (the config space is not accessible anymore and
the link may be powered down).
- Devices behind the PCIe port need to be allowed to transition to D3cold
and back. There is a way both drivers and userspace can forbid this.
- If the device behind the PCIe port is capable of waking the system it
needs to be able to do so from D3cold.
This patch adds a new flag to struct pci_device called 'bridge_d3'. This
flag is set and cleared by the PCI core whenever there is a change in power
management state of any of the devices behind the PCIe port. When system
later on is suspended we only need to check this flag and if it is true
transition the port to D3 otherwise we leave it in D0.
Also provide override mechanism via command line parameter
"pcie_port_pm=[off|force]" that can be used to disable or enable the
feature regardless of the BIOS manufacturing date.
Tested-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
The PCI core skips bridges and ports when the system is suspended. The PCI
core checks return value of pci_has_subordinate() in pci_pm_suspend_noirq()
to skip all devices where it is non-zero (which means PCI bridges and PCIe
ports).
Since PCIe ports are never suspended in the first place, there is no need
to set d3cold_allowed for them.
Tested-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Define the port mapping for the SmartRG SR400ACE device.
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Add interrupt mapping for the Switch Register Access Block. Only 12
interrupts are usable at the moment even though up to 32 are dedicated
to the SRAB.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Add the Switch Register Access Block which is a special piece of
hardware allowing us to perform indirect read/writes towards the
integrated BCM5301X Ethernet switch.
We also add the 4 Gigabit MAC Device Tree nodes within the brcm,bus-axi
bus node to get proper binding between the BCMA instantiated core and
the Device Tree nodes. We will need that to be able to reference
Ethernet Device Tree nodes in a future patch adding the switch ports
layout.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
When executing in a PCI passthrough based virtuzliation environment, the
hypervisor will usually attempt to send a PCIe bus reset signal to the
ASIC when the VM reboots. In this scenario, the card is not correctly
initialized, but we still consider it to be posted. Therefore, in a
passthrough based environemnt we should always post the card to guarantee
it is in a good state for driver initialization.
Ported from amdgpu commit:
amdgpu: fix asic initialization for virtualized environments
Cc: Andres Rodriguez <andres.rodriguez@amd.com>
Cc: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
When executing in a PCI passthrough based virtuzliation environemnt, the
hypervisor will usually attempt to send a PCIe bus reset signal to the
ASIC when the VM reboots. In this scenario, the card is not correctly
initialized, but we still consider it to be posted. Therefore, in a
passthrough based environemnt we should always post the card to guarantee
it is in a good state for driver initialization.
However, if we are operating in SR-IOV mode it is up to the GIM driver
to manage the asic state, therefore we should not post the card (and
shouldn't be able to do it either).
v2: add missing semi-colon
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Andres Rodriguez <andres.rodriguez@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
mkdir sync_dirty_inode
- init_inode_metadata
- lock_page(node)
- make_empty_dir
- filemap_fdatawrite()
- do_writepages
- lock_page(data)
- write_page(data)
- lock_page(node)
- f2fs_init_acl
- error
- truncate_inode_pages
- lock_page(data)
So, we don't need to truncate data pages in this error case, which will
be done by f2fs_evict_inode.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This mount option is to enable original log-structured filesystem forcefully.
So, there should be no random writes for main area.
Especially, this supports host-managed SMR device.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Every time a device is removed with ->hot_remove_disk() a synchronize_rcu() call is made
which can delay several milliseconds in some case.
If lots of devices fail at once - as could happen with a large RAID10 where one set
of devices are removed all at once - these delays can add up to be very inconcenient.
As failure is not reversible we can check for that first, setting a
separate flag if it is found, and then all synchronize_rcu() once for
all the flagged devices. Then ->hot_remove_disk() function can skip the
synchronize_rcu() step if the flag is set.
fix build error(Shaohua)
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
It is important that we never increment rdev->nr_pending on a Faulty
device as ->hot_remove_disk() assumes that once the Faulty flag is visible
no code will take a new reference.
Some places take a new reference after only check In_sync. This should
be safe as the two are changed together. However to make the code more
obviously safe, add checks for 'Faulty' as well.
Note: the actual rule is:
Never increment nr_pending if Faulty is set and Blocked is clear,
never clear Faulty, and never set Blocked without holding a reference
through nr_pending.
fix build error (Shaohua)
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Being in the middle of resync is no longer protection against failed
rdevs disappearing. So add rcu protection.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
The rdev could be freed while handle_failed_sync is running, so
rcu protection is needed.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Since remove_and_add_spares() was added to hot_remove_disk() it has
been possible for an rdev to be hot-removed while fix_read_error()
was running, so we need to be more careful, and take a reference to
the rdev while performing IO.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
'mirror' is only used to find 'rdev', several times.
So just find 'rdev' once, and use it instead.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Both functions use conf->mirrors[mirror].rdev several times, so
improve readability by storing this in a local variable.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
'tmp' is only ever used to extract 'tmp->rdev', so just use 'rdev' directly.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
rdev already holds conf->mirrors[d].rdev, so no need to load it again.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
mirrors[].rdev can become NULL at any point unless:
- a counted reference is held
- ->reconfig_mutex is held, or
- rcu_read_lock() is held
Reshape isn't always suitably careful as in the past rdev couldn't be
removed during reshape. It can now, so add protection.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
mirrors[].rdev can become NULL at any point unless:
- a counted reference is held
- ->reconfig_mutex is held, or
- rcu_read_lock() is held
Previously they could not become NULL during a resync/recovery/reshape either.
However when remove_and_add_spares() was added to hot_remove_disk(), that
changed.
So raid10_sync_request didn't previously need to protect rdev access,
but now it does.
Fix missed check(Shaohua)
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>