Ricardo Ribalda Delgado [Mon, 7 Oct 2019 15:06:31 +0000 (12:06 -0300)]
media: add V4L2_CTRL_TYPE_AREA control type
Commit
d1dc49370f8371b00e682ac409aa1987ce641e93 upstream.
This type contains the width and the height of a rectangular area.
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Petr Štetiar [Sat, 7 Mar 2020 21:37:52 +0000 (22:37 +0100)]
add Sensirion SPS30 to i2c-sensor overlay
Add support for Sensirion SPS30 particulate matter sensor with fixed
address 0x69.
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Nick B [Mon, 9 Mar 2020 13:05:39 +0000 (09:05 -0400)]
Reduce noise from rpi poe hat fan
This adds 2 extra states, at 40c and 45c, with PWM of 31 and 63 (out
of 255) for the rpi poe hat fan. This significantly improves user
experience by providing a smoother ramp up of the fan, from a pwm 0
to 31 to 63 then finally to 150, and additionally makes it very easy
for users to further tweak the values as needed for their specific
application.
The possible concerns I have are that a hysteresis of 2000 (2c) could
be too narrow, and that running the fan more at a reduced temperature
(40000 - 40c) could cause problems.
Signed-off-by: Nick B <nick@pelagiris.org>
Yukimasa Sugizaki [Fri, 20 Mar 2020 10:01:23 +0000 (19:01 +0900)]
drm/v3d: Replace wait_for macros to remove use of msleep (#3510)
commit
9daee6141cc9c75b09659b02b1cb9eeb2f5e16cc upstream.
The wait_for macro's for Broadcom V3D driver used msleep, which is
inappropriate due to its inaccuracy at low values (minimum wait time
is about 30ms on the Raspberry Pi). This sleep was triggering in
v3d_clean_caches(), causing us to only be able to dispatch ~33 compute
jobs per second.
This patch replaces the macro with the one from the Intel i915 version
which uses usleep_range to provide more accurate waits.
v2: Split from the vc4 patch so that we can confidently apply to
stable (by anholt)
Signed-off-by: James Hughes <james.hughes@raspberrypi.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20200217153145.13780-1-james.hughes@raspberrypi.com
Link: https://github.com/raspberrypi/linux/issues/3460
Fixes:
57692c94dcbe ("drm/v3d: Introduce a new DRM driver for Broadcom V3D V3.x+")
Co-authored-by: James Hughes <james.hughes@raspberrypi.com>
Hans de Goede [Mon, 18 Nov 2019 15:51:32 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Explicitly memset the passed in drm_cmdline_mode struct
Commit
d1fe276b5115f0d581c3cfe6154633b3547e8aab upstream.
Instead of only setting mode->specified on false on an early exit and
leaving e.g. mode->bpp_specified and mode->refresh_specified as is,
lets be consistent and just zero out the entire passed in struct at
the top of drm_mode_parse_command_line_for_connector()
Changes in v3:
-Drop "mode->specified = false;" line instead of the "return false;" (oops)
This crasher was reported-by: kernel test robot <lkp@intel.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-11-hdegoede@redhat.com
Hans de Goede [Mon, 18 Nov 2019 15:51:31 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Remove some unnecessary code (v2)
Commit
5b926617cdef41ce0696e09834991194b1759e28 upstream.
fb_get_options() will return fb_mode_option if no video=<connector-name>
argument is present on the kernel commandline, so there is no need to also
do this in drm_mode_parse_command_line_for_connector() as our only caller
uses fb_get_options() to get the mode_option argument.
Changes in v2:
-Split out the changes dealing with the initialization of the mode struct
into a separate patch
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-10-hdegoede@redhat.com
Hans de Goede [Mon, 18 Nov 2019 15:51:30 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Add support for specifying panel_orientation (v2)
Commit
4e7a4a6fbdc669c44e6079f9d5eb25673749455f upstream.
Sometimes we want to override a connector's panel_orientation from the
kernel commandline. Either for testing and for special cases, e.g. a kiosk
like setup which uses a TV mounted in portrait mode.
Users can already specify a "rotate" option through a video= kernel cmdline
option. But that only supports 0/180 degrees (see drm_client_modeset TODO)
and only works for in kernel modeset clients, not for userspace kms users.
The "panel-orientation" connector property OTOH does support 90/270 degrees
as it leaves dealing with the rotation up to userspace and this does work
for userspace kms clients (at least those which support this property).
Changes in v2:
-Add missing ':' after @panel_orientation (reported by kbuild test robot)
BugLink: https://gitlab.freedesktop.org/plymouth/plymouth/merge_requests/83
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-9-hdegoede@redhat.com
Hans de Goede [Mon, 18 Nov 2019 15:51:29 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Allow specifying stand-alone options
Commit
7b1cce760afe38b40f0989cdf10b2190dccf9815 upstream.
Some options which can be specified on the commandline, such as
margin_right=..., margin_left=..., etc. are applied not only to the
specified mode, but to all modes. As such it would be nice if the user
can simply say e.g.
video=HDMI-1:margin_right=14,margin_left=24,margin_bottom=36,margin_top=42
This commit refactors drm_mode_parse_command_line_for_connector() to
add support for this, and as a nice side effect also cleans up the
function a bit.
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-8-hdegoede@redhat.com
Hans de Goede [Mon, 18 Nov 2019 15:51:28 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Set bpp/refresh_specified after successful parsing
Commit
6a2d163756545aa3180d7851d5f8322b865e72be upstream.
drm_connector_get_cmdline_mode() calls
drm_mode_parse_command_line_for_connector() with &connector->cmdline_mode
as mode argument, so anything which we store in the mode arguments gets
kept even if we return false.
Avoid storing a possibly false-postive bpp/refresh_specified setting
in connector->cmdline_mode by moving the setting of these to after
successful parsing of the bpp/refresh parts of the video= argument.
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-7-hdegoede@redhat.com
Hans de Goede [Mon, 18 Nov 2019 15:51:27 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Add freestanding argument to drm_mode_parse_cmdline_options()
Commit
99e2716e053734b70434502867be24d20a3e2d84 upstream.
Add a freestanding function argument to drm_mode_parse_cmdline_options()
similar to how drm_mode_parse_cmdline_extra() already has this.
This is a preparation patch for allowing parsing of stand-alone options
without a mode before them, e.g.: video=HDMI-1:margin_right=14,...
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-6-hdegoede@redhat.com
Hans de Goede [Mon, 18 Nov 2019 15:51:26 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Rework drm_mode_parse_cmdline_options()
Commit
739b200c2edcaaa7a86f37b0c11db57956433dfb upstream.
Refactor drm_mode_parse_cmdline_options() so that it takes a pointer
to the first option, rather then a pointer to the ',' before the first
option.
This is a preparation patch for allowing parsing of stand-alone options
without a mode before them, e.g.: video=HDMI-1:margin_right=14,...
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-5-hdegoede@redhat.com
Hans de Goede [Mon, 18 Nov 2019 15:51:25 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Accept extras directly after mode combined with options
Commit
cfb0881b8f621b656a9e23b31944a5db94cf5842 upstream.
Before this commit it was impossible to combine an extra mode argument
specified directly after the resolution with an option, e.g.
video=HDMI-1:720x480e,rotate=180 would not work, either the "e" to force
enable would need to be dropped or the ",rotate=180", otherwise the
mode_option would not be accepted.
This commit fixes this by setting parse_extras to true in this case, so
that drm_mode_parse_cmdline_res_mode() parses the extra arguments directly
after the resolution.
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-4-hdegoede@redhat.com
Hans de Goede [Mon, 18 Nov 2019 15:51:24 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Stop parsing extras after bpp / refresh at ', '
Commit
c2ed3e941901810ad3d55ce1935fa22c5007fee4 upstream.
Before this commit it was impossible to add an extra mode argument after
a bpp or refresh specifier, combined with an option, e.g.
video=HDMI-1:720x480-24e,rotate=180 would not work, either the "e" to
force enable would need to be dropped or the ",rotate=180", otherwise
the mode_option would not be accepted.
This commit fixes this by fixing the length calculation if extras_ptr
is set to stop the extra parsing at the start of the options (stop at the
',' options_ptr points to).
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-3-hdegoede@redhat.com
Hans de Goede [Mon, 18 Nov 2019 15:51:23 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Make various char pointers const
Commit
83e14ea3a64f00897cc31974d3ae4e27e5a7405b upstream.
We are not supposed to modify the passed in string, make char pointers
used in drm_mode_parse_cmdline_options() const char * where possible.
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-2-hdegoede@redhat.com
Hans de Goede [Mon, 18 Nov 2019 15:51:22 +0000 (16:51 +0100)]
drm/modes: parse_cmdline: Fix possible reference past end of string
Commit
8582e244e5fe72d2e9ace186fa8f3ed3bb4122e1 upstream.
Before this commit, if the last option of a video=... option is for
example "rotate" without a "=<value>" after it then delim will point to
the terminating 0 of the string, and value which is sets to <delim + 1>
will point one position past the end of the string.
This commit fixes this by enforcing that the contents of delim equals '='
as it should be for options which take a value, this check is done in a
new drm_mode_parse_cmdline_int helper function which factors out the
common integer parsing code for all the options which take an int.
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-1-hdegoede@redhat.com
Nicolas Saenz Julienne [Tue, 25 Feb 2020 13:11:59 +0000 (14:11 +0100)]
net: bcmgenet: Clear ID_MODE_DIS in EXT_RGMII_OOB_CTRL when not needed
commit
402482a6a78e5c61d8a2ec6311fc5b4aca392cd6 upstream.
Outdated Raspberry Pi 4 firmware might configure the external PHY as
rgmii although the kernel currently sets it as rgmii-rxid. This makes
connections unreliable as ID_MODE_DIS is left enabled. To avoid this,
explicitly clear that bit whenever we don't need it.
Fixes:
da38802211cc ("net: bcmgenet: Add RGMII_RXID support")
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Matthias Reichl <hias@horus.com>
Phil Elwell [Thu, 19 Mar 2020 10:04:46 +0000 (10:04 +0000)]
ARM: dts: bcm271x: Use a53 pmu, drop RPI364
The upstream bcm2837.dtsi uses cortex-a53-pmu, so we can do the same
but with a fallback to the cortex-a7-pmu which is supported by the
32-bit kernel.
Now that we're using the natural fallback mechanism of compatible
strings, the RPI364 macro no longer serves any purpose - remove it.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Tue, 17 Mar 2020 16:39:07 +0000 (16:39 +0000)]
ARM: dts: bcm2711: Add 32-bit PMU compatibility
The "arm" architecture has no support for the cortex-a72 as such, but
the performance and measurement unit from the cortex-a15 seems to be
compatible.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
AMuszkat [Mon, 24 Feb 2020 21:56:59 +0000 (22:56 +0100)]
Add support for merus-amp soundcard and ma120x0p codec
correct checkpatch warnings and errors
Signed-off-by: AMuszkat <ariel.muszkat@gmail.com>
Matthias Reichl [Fri, 6 Mar 2020 10:08:10 +0000 (11:08 +0100)]
gpio-ir-overlay: add parameter to configure signal polarity (#3490)
Standard IR receivers use inverted / active-low signalling
and the gpio-ir overlay configures the GPIO appropriately
as GPIO_ACTIVE_LOW (1).
In order to support (rather rare) non-inverted / active-high
signalling the GPIO needs to be configured as GPIO_ACTIVE_HIGH (0).
Add an "invert" parameter to override this like in the gpio-ir-tx
overlay.
Signed-off-by: Matthias Reichl <hias@horus.com>
Dave Stevenson [Fri, 24 Jan 2020 14:24:33 +0000 (14:24 +0000)]
drm/vc4: Add DRM_FORMAT_P030 support to firmware-kms
Adds support for this format which is 3 10bit samples packed into
4 bytes, as used by the HEVC codec block.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Dave Stevenson [Fri, 24 Jan 2020 14:22:06 +0000 (14:22 +0000)]
drm/fourcc: Add packed 10bit YUV 4:2:0 format
Adds a format that is 3 10bit YUV 4:2:0 samples packed into
a 32bit work (with 2 spare bits).
Supported on Broadcom BCM2711 chips.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Maxime Ripard [Thu, 26 Dec 2019 14:44:31 +0000 (15:44 +0100)]
drm/vc4: fkms: Change crtc_state structure name to avoid conflict
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
David Plowman [Wed, 29 Jan 2020 15:31:32 +0000 (15:31 +0000)]
media: ov5647: change defaults to better match raw camera applications.
Specifically:
* AWB is now off by default.
* AEC/AGC is also off by default.
* The default mode is changed to the 10-bit 2x2 binned mode.
AWB and AEC/AGC can be re-enabled using the usual V4L2 controls. The
original 8-bit mode will be respected if an application requests the
8-bit format.
Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
David Plowman [Wed, 29 Jan 2020 15:31:28 +0000 (15:31 +0000)]
media: ov5647: Add extra 10-bit sensor modes.
The 8-bit VGA mode remains, we add the following 10-bit modes:
Mode 0: 2592x1944 full resolution.
Mode 1: 1920x1080 full resolution, but centre-cropped.
(This mode achieves 30fps, mode 0 does not.)
Mode 2: 1296x972 full field-of-view 2x2 binned mode.
Mode 3: VGA full field of view mode.
Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
David Plowman [Wed, 29 Jan 2020 15:31:23 +0000 (15:31 +0000)]
media: ov5647: Add V4L2 controls for analogue gain, exposure and AWB
Added basic v4l2_ctrl_handler infrastructure (there was none
previously).
Added controls to let AWB/AEC/AGC run in the sensor's auto mode or
manually. Also controls to set exposure (in lines) and analogue gain
(as a register code) from user code.
Also delete registers (just the one) from the VGA mode register set
that are now controlled by the new V4L2 controls.
Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
David Plowman [Wed, 29 Jan 2020 15:30:53 +0000 (15:30 +0000)]
media: ov5647: Add basic support for multiple sensor modes.
Specifically:
Added a structure ov5647_mode and a list of supported_modes (though no
actual new modes as yet). The state object points to the "current mode".
ov5647_enum_mbus_code, ov5647_enum_frame_size, ov5647_set_fmt and
ov5647_get_fmt all needed upgrading to cope with multiple modes.
__sensor_init (which writes all the registers) is now called by
ov5647_stream_on (once the mode is known) rather than by
ov5647_sensor_power.
Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
David Plowman [Wed, 15 Jan 2020 13:40:38 +0000 (13:40 +0000)]
media: ov5647: Fix return codes from ov5647_write/ov5647_read functions.
Previously they were returning positive non-zero codes for success,
which were getting passed up the call stack. Since release 4.19,
do_dentry_open (fs/open.c) has been catching these and flagging an
error. (So this driver has been broken since that date.)
Fixes: 3c2472a [media] media: i2c: Add support for OV5647 sensor
Signed-off-by: David Plowman <david.plowman@raspberrypi.org>
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Nataliya Korovkina [Thu, 12 Mar 2020 21:22:53 +0000 (17:22 -0400)]
Kbuild: Allow .dtbo overlays to be built, adjust.
This is adjustment to commit
d368ceaacdccd7732dc97d1d7987bdf7149d62e3 "kbuild: Allow .dtbo overlays to be built piecemeal"
prepare3 target has gone from mainline tree in branch 5.4.y
Signed-off-by: Nataliya Korovkina <malus.brandywine@gmail.com>
Dave Stevenson [Wed, 11 Mar 2020 12:07:57 +0000 (12:07 +0000)]
overlays: imx219: Correct link frequency to match the upstream driver
The upstream driver is checking the link frequency parameter, and
the overlay had the wrong value.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Dave Stevenson [Mon, 20 Jan 2020 08:15:58 +0000 (05:15 -0300)]
media: i2c: Add driver for Sony IMX219 sensor
Commit
1283b3b8f82b9004fbb94398cade5c8e797a2c8d upstream.
(Currently on linux-media/master, queued for 5.7)
Adds a driver for the 8MPix Sony IMX219 CSI2 sensor.
Whilst the sensor supports 2 or 4 CSI2 data lanes, this driver
currently only supports 2 lanes.
8MPix @ 15fps, 1080P @ 30fps (cropped FOV), and 1640x1232 (2x2 binned)
@ 30fps are currently supported.
[Sakari Ailus: make imx219_check_hwcfg static]
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Andrey Konovalov <andrey.konovalov@linaro.org>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Andrey Konovalov [Mon, 20 Jan 2020 08:15:57 +0000 (05:15 -0300)]
media: dt-bindings: media: i2c: Add IMX219 CMOS sensor binding
Commit
9d730f2cf4c0391785855dd231577d2de2594df9 upstream.
(Currently on linux-media/master, queued for 5.7)
Add YAML device tree binding for IMX219 CMOS image sensor, and
the relevant MAINTAINERS entries.
Signed-off-by: Andrey Konovalov <andrey.konovalov@linaro.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Dave Stevenson [Wed, 11 Mar 2020 12:14:58 +0000 (12:14 +0000)]
Revert "media: dt-bindings: Add binding for the Sony IMX219 sensor"
This reverts commit
e3dca865875b345a2fa45e8295e32d701c666334.
Dave Stevenson [Wed, 11 Mar 2020 12:14:49 +0000 (12:14 +0000)]
Revert "media: i2c: Add driver for Sony IMX219 sensor"
This reverts commit
39d484cb87cbe5da5035199fbdec1f3c0b71d2ea.
Phil Elwell [Mon, 2 Mar 2020 15:05:25 +0000 (15:05 +0000)]
bcm2711-rpi.dtsi: Use upstream pcie node
Now that the upstream bcm2711 DT has a pcie DT node there's no need to
define one downstream.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Marek Szyprowski [Thu, 27 Feb 2020 11:51:46 +0000 (12:51 +0100)]
PCI: brcmstb: Fix build on 32bit ARM platforms with older compilers
commit
73a7a271b3eee7b83f29b13866163776f1cbef89 upstream.
Some older compilers have no implementation for the helper for 64-bit
unsigned division/modulo, so linking pcie-brcmstb driver causes the
"undefined reference to `__aeabi_uldivmod'" error.
*rc_bar2_size is always a power of two, because it is calculated as:
"1ULL << fls64(entry->res->end - entry->res->start)", so the modulo
operation in the subsequent check can be replaced by a simple logical
AND with a proper mask.
Link: https://lore.kernel.org/r/20200227115146.24515-1-m.szyprowski@samsung.com
Fixes:
c0452137034b ("PCI: brcmstb: Add Broadcom STB PCIe host controller driver")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Jim Quinlan [Mon, 16 Dec 2019 11:01:10 +0000 (12:01 +0100)]
PCI: brcmstb: Add MSI support
commit
40ca1bf580ef24df30702032ba5e40dfdcaa200b upstream.
This adds MSI support to the Broadcom STB PCIe host controller. The MSI
controller is physically located within the PCIe block, however, there
is no reason why the MSI controller could not be moved elsewhere in the
future. MSIX is not supported by the HW.
Since the internal Brcmstb MSI controller is intertwined with the PCIe
controller, it is not its own platform device but rather part of the
PCIe platform device.
Signed-off-by: Jim Quinlan <james.quinlan@broadcom.com>
Co-developed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Andrew Murray <andrew.murray@arm.com>
Jim Quinlan [Mon, 16 Dec 2019 11:01:09 +0000 (12:01 +0100)]
PCI: brcmstb: Add Broadcom STB PCIe host controller driver
commit
c0452137034bda8f686dd9a2e167949bfffd6776 upstream.
This adds a basic driver for Broadcom's STB PCIe controller, for now
aimed at Raspberry Pi 4's SoC, bcm2711.
Signed-off-by: Jim Quinlan <james.quinlan@broadcom.com>
Co-developed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
[lorenzo.pieralisi@arm.com: updated brcm_pcie_get_rc_bar2_size_and_offset()according to https://lore.kernel.org/linux-pci/
be8ddb33a7360af1815cf686f77f3f0913d02be3.camel@suse.de]
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reviewed-by: Andrew Murray <andrew.murray@arm.com>
Reviewed-by: Jeremy Linton <jeremy.linton@arm.com>
Nicolas Saenz Julienne [Mon, 16 Dec 2019 11:01:08 +0000 (12:01 +0100)]
ARM: dts: bcm2711: Enable PCIe controller
commit
d5c8dc0d4c880fbde5293cc186b1ab23466254c4 upstream.
This enables bcm2711's PCIe bus, which is hardwired to a VIA
Technologies XHCI USB 3.0 controller.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Nicolas Saenz Julienne [Thu, 21 Nov 2019 09:26:44 +0000 (10:26 +0100)]
dma-mapping: treat dev->bus_dma_mask as a DMA limit
commit
a7ba70f1787f977f970cd116076c6fce4b9e01cc upstream.
Using a mask to represent bus DMA constraints has a set of limitations.
The biggest one being it can only hold a power of two (minus one). The
DMA mapping code is already aware of this and treats dev->bus_dma_mask
as a limit. This quirk is already used by some architectures although
still rare.
With the introduction of the Raspberry Pi 4 we've found a new contender
for the use of bus DMA limits, as its PCIe bus can only address the
lower 3GB of memory (of a total of 4GB). This is impossible to represent
with a mask. To make things worse the device-tree code rounds non power
of two bus DMA limits to the next power of two, which is unacceptable in
this case.
In the light of this, rename dev->bus_dma_mask to dev->bus_dma_limit all
over the tree and treat it as such. Note that dev->bus_dma_limit should
contain the higher accessible DMA address.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Christoph Hellwig [Tue, 19 Nov 2019 16:38:58 +0000 (17:38 +0100)]
dma-direct: exclude dma_direct_map_resource from the min_low_pfn check
commit
68a33b1794665ba8a1d1ef1d3bfcc7c587d380a6 upstream.
The valid memory address check in dma_capable only makes sense when mapping
normal memory, not when using dma_map_resource to map a device resource.
Add a new boolean argument to dma_capable to exclude that check for the
dma_map_resource case.
Fixes:
b12d66278dd6 ("dma-direct: check for overflows on 32 bit DMA addresses")
Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Christoph Hellwig [Tue, 12 Nov 2019 16:07:43 +0000 (17:07 +0100)]
dma-direct: avoid a forward declaration for phys_to_dma
Move dma_capable down a bit so that we don't need a forward declaration
for phys_to_dma.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
(cherry picked from commit
c7345159f7db6fb69ec1c3b3f8f28cd05c731be2)
Christoph Hellwig [Tue, 12 Nov 2019 16:06:04 +0000 (17:06 +0100)]
dma-direct: unify the dma_capable definitions
commit
130c1ccbf55330b55e82612a6e54eebb82c9d746 upstream.
Currently each architectures that wants to override dma_to_phys and
phys_to_dma also has to provide dma_capable. But there isn't really
any good reason for that. powerpc and mips just have copies of the
generic one minus the latests fix, and the arm one was the inspiration
for said fix, but misses the bus_dma_mask handling.
Make all architectures use the generic version instead.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
Reviewed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Rob Herring [Wed, 30 Oct 2019 22:30:57 +0000 (17:30 -0500)]
PCI: of: Add inbound resource parsing to helpers
Extend devm_of_pci_get_host_bridge_resources() and
pci_parse_request_of_pci_ranges() helpers to also parse the inbound
addresses from DT 'dma-ranges' and populate a resource list with the
translated addresses. This will help ensure 'dma-ranges' is always
parsed in a consistent way.
Tested-by: Srinath Mannam <srinath.mannam@broadcom.com>
Tested-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> # for AArdvark
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reviewed-by: Srinath Mannam <srinath.mannam@broadcom.com>
Reviewed-by: Andrew Murray <andrew.murray@arm.com>
Acked-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
Cc: Jingoo Han <jingoohan1@gmail.com>
Cc: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Will Deacon <will@kernel.org>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Toan Le <toan@os.amperecomputing.com>
Cc: Ley Foon Tan <lftan@altera.com>
Cc: Tom Joseph <tjoseph@cadence.com>
Cc: Ray Jui <rjui@broadcom.com>
Cc: Scott Branden <sbranden@broadcom.com>
Cc: bcm-kernel-feedback-list@broadcom.com
Cc: Ryder Lee <ryder.lee@mediatek.com>
Cc: Karthikeyan Mitran <m.karthikeyan@mobiveil.co.in>
Cc: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
Cc: Simon Horman <horms@verge.net.au>
Cc: Shawn Lin <shawn.lin@rock-chips.com>
Cc: Heiko Stuebner <heiko@sntech.de>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: rfi@lists.rocketboards.org
Cc: linux-mediatek@lists.infradead.org
Cc: linux-renesas-soc@vger.kernel.org
Cc: linux-rockchip@lists.infradead.org
(cherry picked from commit
331f63457165a30c708280de2c77f1742c6351dc)
Nicolas Saenz Julienne [Thu, 7 Nov 2019 15:06:45 +0000 (16:06 +0100)]
x86/PCI: sta2x11: use default DMA address translation
commit
e380a0394c36a3a878c858418d5dd7f5f195b6fc upstream.
The devices found behind this PCIe chip have unusual DMA mapping
constraints as there is an AMBA interconnect placed in between them and
the different PCI endpoints. The offset between physical memory
addresses and AMBA's view is provided by reading a PCI config register,
which is saved and used whenever DMA mapping is needed.
It turns out that this DMA setup can be represented by properly setting
'dma_pfn_offset', 'dma_bus_mask' and 'dma_mask' during the PCI device
enable fixup. And ultimately allows us to get rid of this device's
custom DMA functions.
Aside from the code deletion and DMA setup, sta2x11_pdev_to_mapping() is
moved to avoid warnings whenever CONFIG_PM is not enabled.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Nicolas Saenz Julienne [Thu, 7 Nov 2019 15:06:44 +0000 (16:06 +0100)]
dma-direct: check for overflows on 32 bit DMA addresses
As seen on the new Raspberry Pi 4 and sta2x11's DMA implementation it is
possible for a device configured with 32 bit DMA addresses and a partial
DMA mapping located at the end of the address space to overflow. It
happens when a higher physical address, not DMAable, is translated to
it's DMA counterpart.
For example the Raspberry Pi 4, configurable up to 4 GB of memory, has
an interconnect capable of addressing the lower 1 GB of physical memory
with a DMA offset of 0xc0000000. It transpires that, any attempt to
translate physical addresses higher than the first GB will result in an
overflow which dma_capable() can't detect as it only checks for
addresses bigger then the maximum allowed DMA address.
Fix this by verifying in dma_capable() if the DMA address range provided
is at any point lower than the minimum possible DMA address on the bus.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
(cherry picked from commit
b12d66278dd627cbe1ea7c000aa4715aaf8830c8)
Nicolas Saenz Julienne [Mon, 14 Oct 2019 18:31:03 +0000 (20:31 +0200)]
dma/direct: turn ARCH_ZONE_DMA_BITS into a variable
commit
8b5369ea580964dbc982781bfb9fb93459fc5e8d upstream.
Some architectures, notably ARM, are interested in tweaking this
depending on their runtime DMA addressing limitations.
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Rob Herring [Mon, 28 Oct 2019 16:32:32 +0000 (11:32 -0500)]
resource: Add a resource_list_first_type helper
commit
494f8b10d832456a96be4ee7317425f6936cabc8 upstream.
A common pattern is looping over a resource_list just to get a matching
entry with a specific type. Add resource_list_first_type() helper which
implements this.
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Nicolas Saenz Julienne [Wed, 11 Sep 2019 18:25:46 +0000 (20:25 +0200)]
mm: refresh ZONE_DMA and ZONE_DMA32 comments in 'enum zone_type'
commit
734f9246e791d8da278957b2c326d7709b2a97c0 upstream.
These zones usage has evolved with time and the comments were outdated.
This joins both ZONE_DMA and ZONE_DMA32 explanation and gives up to date
examples on how they are used on different architectures.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Nicolas Saenz Julienne [Wed, 11 Sep 2019 18:25:45 +0000 (20:25 +0200)]
arm64: use both ZONE_DMA and ZONE_DMA32
commit
1a8e1cef7603e218339ac63cb3178b25554524e5 upstream.
So far all arm64 devices have supported 32 bit DMA masks for their
peripherals. This is not true anymore for the Raspberry Pi 4 as most of
it's peripherals can only address the first GB of memory on a total of
up to 4 GB.
This goes against ZONE_DMA32's intent, as it's expected for ZONE_DMA32
to be addressable with a 32 bit mask. So it was decided to re-introduce
ZONE_DMA in arm64.
ZONE_DMA will contain the lower 1G of memory, which is currently the
memory area addressable by any peripheral on an arm64 device.
ZONE_DMA32 will contain the rest of the 32 bit addressable memory.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Nicolas Saenz Julienne [Wed, 11 Sep 2019 18:25:44 +0000 (20:25 +0200)]
arm64: rename variables used to calculate ZONE_DMA32's size
commit
a573cdd7973dedd87e62196c400332896bb236c8 upstream.
Let the name indicate that they are used to calculate ZONE_DMA32's size
as opposed to ZONE_DMA.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Nicolas Saenz Julienne [Wed, 11 Sep 2019 18:25:43 +0000 (20:25 +0200)]
arm64: mm: use arm64_dma_phys_limit instead of calling max_zone_dma_phys()
commit
ae970dc096b2d39f65f2e18d142e3978dc9ee1c7 upstream.
By the time we call zones_sizes_init() arm64_dma_phys_limit already
contains the result of max_zone_dma_phys(). We use the variable instead
of calling the function directly to save some precious cpu time.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Robin Murphy [Wed, 3 Jul 2019 17:42:20 +0000 (18:42 +0100)]
of: Make of_dma_get_range() work on bus nodes
commit
951d48855d86e72e0d6de73440fe09d363168064 upstream.
Since the "dma-ranges" property is only valid for a node representing a
bus, of_dma_get_range() currently assumes the node passed in is a leaf
representing a device, and starts the walk from its parent. In cases
like PCI host controllers on typical FDT systems, however, where the PCI
endpoints are probed dynamically the initial leaf node represents the
'bus' itself, and this logic means we fail to consider any "dma-ranges"
describing the host bridge itself. Rework the logic such that
of_dma_get_range() also works correctly starting from a bus node
containing "dma-ranges".
While this does mean "dma-ranges" could incorrectly be in a device leaf
node, there isn't really any way in this function to ensure that a leaf
node is or isn't a bus node.
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
[robh: Allow for the bus child node to still be passed in]
Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Reviewed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Tested-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Rob Herring [Wed, 4 Sep 2019 10:43:30 +0000 (11:43 +0100)]
of/address: Translate 'dma-ranges' for parent nodes missing 'dma-ranges'
commit
81db12ee15cb83926e290a8a3654a2dfebc80935 upstream.
'dma-ranges' frequently exists without parent nodes having 'dma-ranges'.
While this is an error for 'ranges', this is fine because DMA capable
devices always have a translatable DMA address. Also, with no
'dma-ranges' at all, the assumption is that DMA addresses are 1:1 with
no restrictions unless perhaps the device itself has implicit
restrictions.
Cc: Robin Murphy <robin.murphy@arm.com>
Tested-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Rob Herring <robh@kernel.org>
Robin Murphy [Tue, 2 Jul 2019 17:42:39 +0000 (18:42 +0100)]
of: Factor out #{addr,size}-cells parsing
In some cases such as PCI host controllers, we may have a "parent bus"
which is an OF leaf node, but still need to correctly parse ranges from
the point of view of that bus. For that, factor out variants of the
"#addr-cells" and "#size-cells" parsers which do not assume they have a
device node and thus immediately traverse upwards before reading the
relevant property.
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
[robh: don't make of_bus_n_{addr,size}_cells() public]
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Rob Herring <robh@kernel.org>
(cherry picked from commit
b68ac8dc22ebbf003e26e44bf4dd3030c076df5a)
Robin Murphy [Wed, 3 Jul 2019 13:47:31 +0000 (14:47 +0100)]
of: address: Follow DMA parent for "dma-coherent"
commit
c60bf3eb888a362100aa1bdbea351dab681e262a upstream.
Much like for address translation, when checking for DMA coherence we
should be sure to walk up the DMA hierarchy, rather than the MMIO one,
now that we can accommodate them being different.
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Tested-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Rob Herring <robh@kernel.org>
Robin Murphy [Wed, 3 Jul 2019 17:23:01 +0000 (18:23 +0100)]
of/address: Introduce of_get_next_dma_parent() helper
commit
862ab5578f754117742c8b8c8e5ddf98bdb190ba upstream.
Add of_get_next_dma_parent() helper which is similar to
__of_get_dma_parent(), but can be used in iterators and decrements the
ref count on the prior parent.
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Rob Herring <robh@kernel.org>
Phil Elwell [Thu, 12 Mar 2020 14:06:04 +0000 (14:06 +0000)]
Revert "dma-direct: check for overflows on 32 bit DMA addresses"
This reverts commit
e44850bd4205a8cf17f23c44668c0f8d28ad40b1.
Phil Elwell [Thu, 12 Mar 2020 12:16:18 +0000 (12:16 +0000)]
Revert "arm64/mm: Limit the DMA zone for arm64"
This reverts commit
47fec0dcefa53f44985e95785021447d646daa2b.
Phil Elwell [Mon, 9 Mar 2020 10:10:54 +0000 (10:10 +0000)]
Revert "PCI: brcmstb: Add Broadcom STB PCIe host controller driver"
This reverts commit
79624ca23c53064fefee774a89952a587b72cc01.
Phil Elwell [Mon, 9 Mar 2020 10:08:49 +0000 (10:08 +0000)]
Revert "PCI: brcmstb: Add dma-range mapping for inbound traffic"
This reverts commit
d45590eb858ac7a2578d477791881ba7ffb1e615.
Phil Elwell [Mon, 9 Mar 2020 10:08:35 +0000 (10:08 +0000)]
Revert "PCI: brcmstb: Add MSI capability"
This reverts commit
b1619c83208e7b804e2c3547dbf24bb02b3be239.
Phil Elwell [Mon, 9 Mar 2020 10:07:39 +0000 (10:07 +0000)]
Revert "pcie-brcmstb: Changes for BCM2711"
This reverts commit
1dab5ded41ed07adc12f26e529aa64209a7c44b6.
Phil Elwell [Mon, 9 Mar 2020 10:07:15 +0000 (10:07 +0000)]
Revert "bcm2835-dma: Add proper 40-bit DMA support"
This reverts commit
773a2db89ad2785d72b215673d87c0a51d769f61.
Phil Elwell [Mon, 9 Mar 2020 10:06:59 +0000 (10:06 +0000)]
Revert "bcm2835-dma: Correct SoC name"
This reverts commit
f498861a16d0b9a189a329080da1aa64d6e9bda7.
Phil Elwell [Fri, 6 Mar 2020 17:00:16 +0000 (17:00 +0000)]
Revert "pcie-brcmstb: Don't set DMA ops for root complex"
This reverts commit
510a127017a0aada2734dbf57d25aaa0189198ff.
Phil Elwell [Fri, 6 Mar 2020 17:00:01 +0000 (17:00 +0000)]
Revert "Ported pcie-brcmstb bounce buffer implementation to ARM64. (#3144)"
This reverts commit
60f3db31d4cb785befed715b80c430f60f647701.
Phil Elwell [Fri, 6 Mar 2020 16:59:51 +0000 (16:59 +0000)]
Revert "pcie-brcmstb-bounce64.c: dev_err() -> dev_info() for info messages"
This reverts commit
2340a88a493d750dc3fcfa48de880fc4b8e479d2.
Phil Elwell [Fri, 6 Mar 2020 16:59:39 +0000 (16:59 +0000)]
Revert "pcie-brcmstb: Eliminate arch_dma_ops error message"
This reverts commit
27cf0ad95cdf30f52a5fc6c69014a0d7bf5a1222.
Phil Elwell [Fri, 6 Mar 2020 16:59:23 +0000 (16:59 +0000)]
Revert "pcie-brcmstb: Bounce buffer support is for BCM2711B0"
This reverts commit
58ac2d4474e531300f9f83773aa4d09e95ee2626.
Phil Elwell [Fri, 6 Mar 2020 16:59:11 +0000 (16:59 +0000)]
Revert "pcie-brcmstb: Correct SoC name"
This reverts commit
900b4ad0814df7dbacb01318bf49af5bab605fa0.
Phil Elwell [Tue, 3 Mar 2020 09:43:41 +0000 (09:43 +0000)]
overlays: sc16ic750-i2c: Fix xtal parameter
The xtal parameter is targetting the wrong node - fix it.
See: https://github.com/raspberrypi/linux/issues/3156
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Wed, 5 Feb 2020 17:25:52 +0000 (17:25 +0000)]
configs: Add KVM support to arm64 bcm2711_defconfig
See: https://github.com/raspberrypi/linux/issues/3035
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Thu, 27 Feb 2020 11:23:09 +0000 (11:23 +0000)]
configs: Add CONFIG_EXT4_ENCRYPTION=y
Enable EXT4 encryption support for all configurations except those
based on the original BCM2835, i.e. not on B+, Zero, etc. This
exception is because it would consume at least an additional 68KB,
which is a lot on a platform that may only have 128MB.
See: https://github.com/raspberrypi/linux/issues/2486
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Mon, 24 Feb 2020 11:13:09 +0000 (11:13 +0000)]
configs: Add CONFIG_HID_STEAM=m
See: https://github.com/raspberrypi/linux/issues/3344
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Thu, 6 Feb 2020 12:23:15 +0000 (12:23 +0000)]
of: overlay: Correct symbol path fixups
When symbols from overlays are added to the live tree their paths must
be rebased. The translated symbol is normally the result of joining
the fragment-relative path (with a leading "/") to the target path
(either copied directly from the "target-path" property or resolved
from the phandle). This translation fails when the target is the root
node (a common case for Raspberry Pi overlays) because the resulting
path starts with a double slash. For example, if target-path is "/" and
the fragment adds a node called "newnode", the label associated with
that node will be assigned the path "//newnode", which can't be found
in the tree.
Fix the failure case by explicitly replacing a target path of "/" with
an empty string.
Fixes:
d1651b03c2df ("of: overlay: add overlay symbols to live device tree")
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Matthias Reichl [Mon, 10 Feb 2020 17:21:02 +0000 (18:21 +0100)]
bcmrpi3_defconfig: align RC config with bcm2711_defconfig
Signed-off-by: Matthias Reichl <hias@horus.com>
Matthias Reichl [Mon, 10 Feb 2020 14:47:07 +0000 (15:47 +0100)]
defconfigs: enable CONFIG_BPF_LIRC_MODE2
This enables support for IR decoding via BPF programs.
Signed-off-by: Matthias Reichl <hias@horus.com>
Phil Elwell [Fri, 7 Feb 2020 09:51:31 +0000 (09:51 +0000)]
overlays: Add timeout_ms parameter to gpio-poweroff
The timeout_ms parameter specifies in milliseconds how long the kernel
waits for power-down before issuing a WARN. The default value is 3000 ms.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Naushir Patuck [Thu, 30 Jan 2020 12:35:44 +0000 (12:35 +0000)]
staging: vc04_services: Fix vcsm overflow bug when counting transactions
The response block and local state were using u16 and u32 respectively
to represent transaction id. When the former would wrap, there is a
mismatch and subsequent transactions will be marked as failures.
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Phil Elwell [Fri, 28 Feb 2020 11:22:40 +0000 (11:22 +0000)]
ARM: dts: overlays: Create custom clocks in /
Change [1] removes the simple-bus compatible string from the "/clocks"
node, preventing any custom clocks placed there from being initialised.
Rather than reinstate the compatible string and trigger DT warnings at
kernel build time, change the overlays to instantiate those clocks under
the root node ("/").
See: https://github.com/raspberrypi/linux/issues/3481
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
[1]
4b2d24662126 ("ARM: dts: bcm283x: Remove simple-bus from fixed clocks")
Phil Elwell [Fri, 28 Feb 2020 10:22:48 +0000 (10:22 +0000)]
Revert "ARM: dts: bcm283x: Restore simple-bus to /clocks"
This reverts commit
894dece014e4df68c9f6a11a0761fba1fcfc844f.
Phil Elwell [Thu, 27 Feb 2020 13:34:08 +0000 (13:34 +0000)]
ARM: dts: bcm283x: Restore simple-bus to /clocks
Commit [1] ([2] upstream) removed the "simple-bus" compatible string,
"#address-cells" and "#size-cells" to fix some DT scheme warnings. In
doing so it prevented the child clocks from being instantiated - the
node might as well be absent.
Fix the problem (at least with regards to functionality) by restoring
"simple-bus" and the sizes.
See: https://github.com/raspberrypi/linux/issues/3481
Fixes: [1]
238506ebdea7 ("ARM: dts: bcm283x: Remove simple-bus from fixed clocks")
Fixes: [2]
4b2d24662126 ("ARM: dts: bcm283x: Remove simple-bus from fixed clocks")
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Mon, 3 Feb 2020 17:03:29 +0000 (17:03 +0000)]
ARM: dts: Move audio node under the vchiq parent
VCHIQ kernel clients are now instantiated as platform drivers rather
than using DT, but the children of the vchiq device can optionally be
given a sub-node of the vchiq parent for configuration and to disable
them.
Move the existing audio node beneath the vchiq parent, to prevent
multiple instantiation and unpleasant warnings. Note that the node
name has to match the module name - "bcm2835_audio".
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Mon, 3 Feb 2020 17:33:01 +0000 (17:33 +0000)]
staging: vchiq_arm: Add a matching unregister call
All the registered children of vchiq have a corresponding call to
platform_device_unregister except bcm2835_audio. Fix that.
Fixes:
25c7597af20d ("staging: vchiq_arm: Register a platform device for audio")
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Mon, 3 Feb 2020 17:30:46 +0000 (17:30 +0000)]
staging: vchiq_arm: Give vchiq children DT nodes
vchiq kernel clients are now instantiated as platform drivers rather
than using DT, but the children of the vchiq interface may still
benefit from access to DT properties. Give them the option of a
a sub-node of the vchiq parent for configuration and to allow
them to be disabled.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Stefan Wahren [Thu, 6 Dec 2018 18:28:55 +0000 (19:28 +0100)]
staging: vchiq_arm: Register a platform device for audio
Following Eric's commit
37b7b3087a2f ("staging/vc04_services: Register a
platform device for the camera driver.") this register the audio driver as
a platform device, too.
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Phil Elwell [Sat, 1 Feb 2020 08:58:11 +0000 (08:58 +0000)]
ARM: dts: Remove CMA allocation from Pi 4 dts
The 5.5 tree includes a patch to disable the CMA command line
parameter and replace it with properties from a DT node.
The upstream Pi 4 .dts, now used downstream with modifications,
includes the "linux,cma" node, but only reserves 32MB which is
often not enough.
Temporarily remove the "linux,cma" node to reenable the command line
parameter.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Fri, 31 Jan 2020 15:24:59 +0000 (15:24 +0000)]
ARM: dts: Correct SoC name
The Pi 4 SoC is called BCM2711, not BCM2838.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Fri, 31 Jan 2020 09:39:40 +0000 (09:39 +0000)]
pcie-brcmstb: Correct SoC name
The Pi 4 SoC is called BCM2711, not BCM2838.
Fixes: "bcm2835-dma: Add proper 40-bit DMA support"
Fixes: "Ported pcie-brcmstb bounce buffer implementation to ARM64."
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Fri, 31 Jan 2020 09:36:57 +0000 (09:36 +0000)]
hwrng: iproc-rng200: Correct SoC name
The Pi 4 SoC is called BCM2711, not BCM2838.
Fixes: "hwrng: iproc-rng200: Add BCM2838 support"
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Fri, 31 Jan 2020 09:33:40 +0000 (09:33 +0000)]
thermal: brcmstb_thermal: Correct SoC name
The Pi 4 SoC is called BCM2711, not BCM2838.
Fixes: "thermal: brcmstb_thermal: Add BCM2838 support"
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Fri, 31 Jan 2020 09:28:57 +0000 (09:28 +0000)]
bcm2835-dma: Correct SoC name
The Pi 4 SoC is called BCM2711, not BCM2838.
Fixes: "bcm2835-dma: Add proper 40-bit DMA support"
Phil Elwell [Fri, 31 Jan 2020 09:26:18 +0000 (09:26 +0000)]
staging/vchiq_arm: Fix bcm2711 compatible string
Fixes: "vchiq: Add 36-bit address support"
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Phil Elwell [Fri, 31 Jan 2020 15:47:43 +0000 (15:47 +0000)]
Revert "bcm2711: Retain support for old dtbs"
This reverts commit
61a505c739150c8dbb57a73db5c6c720d5160157.
Phil Elwell [Thu, 30 Jan 2020 15:48:00 +0000 (15:48 +0000)]
ARM: dts: Rebuild downstream DTS files
Refactor the tree of downstream DTS files to achieve approximately the
same end result but wihout modifying upstream files (except for
bcm2711-rpi-4-b.dts).
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Nicolas Saenz Julienne [Wed, 4 Dec 2019 12:56:33 +0000 (13:56 +0100)]
ARM: dts: bcm2711: fix soc's node dma-ranges
Raspberry Pi's firmware has a feature to select how much memory to
reserve for its GPU called 'gpu_mem'. The possible values go from 16MB
to 944MB, with a default of 64MB. This memory resides in the topmost
part of the lower 1GB memory area and grows bigger expanding towards the
begging of memory.
It turns out that with low 'gpu_mem' values (16MB and 32MB) the size of
the memory available to the system in the lower 1GB area can outgrow the
interconnect's dma-range as its size was selected based on the maximum
system memory available given the default gpu_mem configuration. This
makes that memory slice unavailable for DMA. And may cause nasty kernel
warnings if CMA happens to include it.
Change soc's dma-ranges to really reflect it's HW limitation, which is
being able to only DMA to the lower 1GB area.
Fixes:
7dbe8c62ceeb ("ARM: dts: Add minimal Raspberry Pi 4 support")
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Phil Elwell <phil@raspberrypi.org>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Stefan Wahren [Mon, 11 Nov 2019 19:49:26 +0000 (20:49 +0100)]
ARM: dts: bcm2711-rpi-4: Enable GENET support
This enables the Gigabit Ethernet support on the Raspberry Pi 4.
The defined PHY mode is equivalent to the default register settings
in the downstream tree.
Signed-off-by: Matthias Brugger <mbrugger@suse.com>
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Nicolas Saenz Julienne [Wed, 6 Nov 2019 09:59:44 +0000 (10:59 +0100)]
ARM: dts: bcm2711: force CMA into first GB of memory
arm64 places the CMA in ZONE_DMA32, which is not good enough for the
Raspberry Pi 4 since it contains peripherals that can only address the
first GB of memory. Explicitly place the CMA into that area.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Acked-by: Stefan Wahren <wahrenst@gmx.net>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Stefan Wahren [Sun, 6 Oct 2019 13:41:25 +0000 (15:41 +0200)]
ARM: dts: Add minimal Raspberry Pi 4 support
This adds minimal support for the new Raspberry Pi 4 without the
fancy stuff like GENET, PCIe, xHCI, 40 bit DMA and V3D. The RPi 4 is
available in 3 different variants (1, 2 and 4 GB RAM), so leave the memory
size to zero and let the bootloader take care of it. The DWC2 is still
usable as peripheral via the USB-C port.
Other differences to the Raspberry Pi 3:
- additional GIC 400 Interrupt controller
- new thermal IP and HWRNG
- additional MMC interface (emmc2)
- additional UART, I2C, SPI and PWM interfaces
- clock stretching bug in I2C IP has been fixed
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Acked-by: Eric Anholt <eric@anholt.net>
Acked-by: Florian Fanelli <f.fainelli@gmail.com>